From 9c703b74e66c33a68f7013f21cf198d242475ba1 Mon Sep 17 00:00:00 2001 From: Frank Herchet Date: Wed, 29 Feb 2012 14:14:26 +0100 Subject: * add command line argument "-V: print DLT logs to stdout" if compile flag WITH_DLT undefined --- AudioManagerDaemon/src/main.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp index dee5edb..5020a1f 100644 --- a/AudioManagerDaemon/src/main.cpp +++ b/AudioManagerDaemon/src/main.cpp @@ -72,6 +72,9 @@ const char* USAGE_DESCRIPTION = "Usage:\tAudioManagerDaemon [options]\n" "\t-h: print this message\t\n" "\t-i: info about current settings \t\n" "\t-v: print version\t\n" +#ifndef WITH_DLT + "\t-V: print DLT logs to stdout\t\n" +#endif "\t-d: daemonize AudioManager \t\n" "\t-p path for sqlite database (default is in memory)\t\n" "\t-t port for telnetconnection\t\n" @@ -89,6 +92,7 @@ std::string databasePath = std::string(":memory:"); unsigned int telnetport = DEFAULT_TELNETPORT; unsigned int maxConnections = MAX_TELNETCONNECTIONS; int fd0, fd1, fd2; +bool enableNoDLTDebug = false; void OutOfMemoryHandler() { @@ -149,7 +153,11 @@ void parseCommandLine(int argc, char **argv) { while (optind < argc) { +#ifdef WITH_DLT int option = getopt(argc, argv, "h::v::c::l::r::L::R::d::t::m::i::p::"); +#else + int option = getopt(argc, argv, "h::v::V::c::l::r::L::R::d::t::m::i::p::"); +#endif switch (option) { @@ -202,6 +210,12 @@ void parseCommandLine(int argc, char **argv) printf("AudioManagerDaemon Version: %s\n", DAEMONVERSION); exit(-1); break; +#ifndef WITH_DLT + case 'V': + printf("[DLT] debug output to stdout enabled\n"); + enableNoDLTDebug = true; + break; +#endif case 'h': default: printf("AudioManagerDaemon Version: %s\n", DAEMONVERSION); @@ -225,17 +239,17 @@ static void signalHandler(int sig, siginfo_t *siginfo, void *context) int main(int argc, char *argv[]) { - DLTWrapper::instance()->registerApp("AudioManagerDeamon", "AudioManagerDeamon"); - DLTWrapper::instance()->registerContext(AudioManager, "Main", "Main Context"); - logInfo("The Audiomanager is started"); - log(&AudioManager, DLT_LOG_ERROR, "The version of the Audiomanager", DAEMONVERSION); - listCommandPluginDirs.push_back(std::string(DEFAULT_PLUGIN_COMMAND_DIR)); listRoutingPluginDirs.push_back(std::string(DEFAULT_PLUGIN_ROUTING_DIR)); //parse the commandline options parseCommandLine(argc, (char**) argv); + DLTWrapper::instance(enableNoDLTDebug)->registerApp("AudioManagerDeamon", "AudioManagerDeamon"); + DLTWrapper::instance()->registerContext(AudioManager, "Main", "Main Context"); + logInfo("The Audiomanager is started"); + log(&AudioManager, DLT_LOG_ERROR, "The version of the Audiomanager", DAEMONVERSION); + //now the signal handler: struct sigaction signalAction; memset(&signalAction, '\0', sizeof(signalAction)); -- cgit v1.2.1 From 792540e42b356074b968149284985c3686b75139 Mon Sep 17 00:00:00 2001 From: Frank Herchet Date: Wed, 29 Feb 2012 15:42:08 +0100 Subject: * fix debug output to stdout if WITH_DLT undefined --- AudioManagerDaemon/src/DLTWrapper.cpp | 19 +++++++------------ includes/DLTWrapper.h | 6 +++--- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/AudioManagerDaemon/src/DLTWrapper.cpp b/AudioManagerDaemon/src/DLTWrapper.cpp index ad03692..cd03fcc 100644 --- a/AudioManagerDaemon/src/DLTWrapper.cpp +++ b/AudioManagerDaemon/src/DLTWrapper.cpp @@ -101,9 +101,10 @@ void DLTWrapper::send() dlt_user_log_write_finish(&mDltContextData); #else if(mEnableNoDLTDebug) - std::cout << "[" << mDltContext.contextID << "] " << std::string(mDltContextData.buffer) << std::endl; + std::cout << "[" << mDltContext.contextID << "] " << mDltContextData.buffer.str().c_str() << std::endl; - mDltContextData.size = 0; + mDltContextData.buffer.str(""); + mDltContextData.buffer.clear(); #endif } @@ -161,13 +162,12 @@ void DLTWrapper::append(const uint32_t value) #endif } -void DLTWrapper::append(const char*& value) +void DLTWrapper::append(const char* &value) { #ifdef WITH_DLT dlt_user_log_write_string(&mDltContextData, value); #else - memcpy((mDltContextData.buffer+mDltContextData.size),value,strlen(value)); - mDltContextData.size += strlen(value); + mDltContextData.buffer << value; #endif } @@ -176,8 +176,7 @@ void DLTWrapper::append(const std::string& value) #ifdef WITH_DLT dlt_user_log_write_string(&mDltContextData, value.c_str()); #else - memcpy((mDltContextData.buffer+mDltContextData.size),value.c_str(),value.size()); - mDltContextData.size += value.size(); + mDltContextData.buffer << value; #endif } @@ -193,11 +192,7 @@ void DLTWrapper::append(const bool value) #ifndef WITH_DLT template void DLTWrapper::appendNoDLT(T value) { - if((mDltContextData.size + sizeof(value)) < DLT_USER_BUF_MAX_SIZE) - { - memcpy((mDltContextData.buffer+mDltContextData.size),&(value),sizeof(value)); - mDltContextData.size += sizeof(value); - } + mDltContextData.buffer << value; } void DLTWrapper::enableNoDLTDebug(const bool enableNoDLTDebug) diff --git a/includes/DLTWrapper.h b/includes/DLTWrapper.h index 3a9482a..a133f38 100644 --- a/includes/DLTWrapper.h +++ b/includes/DLTWrapper.h @@ -32,6 +32,7 @@ #else #include +#include #define DLT_USER_BUF_MAX_SIZE 2048 @@ -65,8 +66,7 @@ typedef enum typedef struct { DltContext *handle; /**< pointer to DltContext */ - char buffer[DLT_USER_BUF_MAX_SIZE]; /**< buffer for building log message*/ - int32_t size; /**< payload size */ + std::stringstream buffer; /**< buffer for building log message*/ int32_t log_level; /**< log level */ int32_t trace_status; /**< trace status */ int32_t args_num; /**< number of arguments for extended header*/ @@ -81,7 +81,7 @@ DltContext CONTEXT; #define DLT_IMPORT_CONTEXT(CONTEXT) \ extern DltContext CONTEXT; -#endif +#endif // WITH_DLT #include -- cgit v1.2.1