X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Flogger%2Finclude%2Flogger.h;h=af95bc81bffbe3ae02f04441e2539acaa247c126;hb=7f00f942c39b7bc27c7eeecf213a239c3fe4173c;hp=0b42ead7b8ceebf6d1c192ef9d7f3ec4d6d1a575;hpb=ec3cb98be11c5a3cc0f98e8c6a475ae498323970;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/logger/include/logger.h b/resource/csdk/logger/include/logger.h index 0b42ead..af95bc8 100644 --- a/resource/csdk/logger/include/logger.h +++ b/resource/csdk/logger/include/logger.h @@ -21,11 +21,10 @@ #ifndef LOGGER_H_ #define LOGGER_H_ -#define IOTIVITY_VERSION "1.1.1" - #include #include #include +#include #include "logger_types.h" #ifdef __ANDROID__ @@ -42,6 +41,14 @@ extern "C" { #endif +/** +* Helper for unused warning. +*/ +#ifndef UNUSED +#define UNUSED(x) (void)(x) +#endif + + // Use the PCF macro to wrap strings stored in FLASH on the Arduino // Example: OIC_LOG(INFO, TAG, PCF("Entering function")); #ifdef ARDUINO @@ -52,7 +59,7 @@ extern "C" #endif //__cplusplus #else #define PCF(str) str -#endif +#endif // ARDUINO // Max buffer size used in variable argument log function #define MAX_LOG_V_BUFFER_SIZE (256) @@ -60,11 +67,14 @@ extern "C" // Log levels #ifdef __TIZEN__ typedef enum { - DEBUG = DLOG_DEBUG, + DEBUG = DLOG_INFO, // DLOG_INFO : 4 INFO = DLOG_INFO, - WARNING = DLOG_WARN, - ERROR = DLOG_ERROR, - FATAL = DLOG_ERROR + WARNING = DLOG_WARN, // DLOG_WARN : 5 + ERROR = DLOG_ERROR, // DLOG_ERROR : 6 + FATAL = DLOG_ERROR, + DEBUG_LITE = DLOG_INFO, + INFO_LITE = DLOG_INFO, + INFO_PRIVATE = 255, } LogLevel; #else @@ -78,10 +88,47 @@ typedef enum { INFO, WARNING, ERROR, - FATAL + FATAL, + DEBUG_LITE, // The DEBUG log for Lite device + INFO_LITE, // The INFO log for Lite device + INFO_PRIVATE, // The log contained private data } LogLevel; + +#endif // __TIZEN__ + +#ifdef SET_LOG_DEBUG +#define IF_OC_PRINT_LOG_LEVEL(level) if (DEBUG <= (level)) +#elif defined(SET_LOG_INFO) +#define IF_OC_PRINT_LOG_LEVEL(level) if (INFO <= (level)) +#elif defined(SET_LOG_ERROR) +#define IF_OC_PRINT_LOG_LEVEL(level) if (ERROR <= (level) && INFO_PRIVATE != (level)) +#elif defined(SET_LOG_WARNING) +#define IF_OC_PRINT_LOG_LEVEL(level) if (WARNING <= (level) && INFO_PRIVATE != (level)) +#elif defined(SET_LOG_FATAL) +#define IF_OC_PRINT_LOG_LEVEL(level) if (FATAL <= (level) && INFO_PRIVATE != (level)) +#else +#define IF_OC_PRINT_LOG_LEVEL(level) if (DEBUG <= (level)) #endif +#define IF_OC_PRINT_PRIVATE_LOG_LEVEL(level) \ + if (false == OCGetPrivateLogLevel() || (true == OCGetPrivateLogLevel() && INFO_PRIVATE != (level))) \ + +#define MAX_LOG_BUFFER_SIZE (4096) + +/** + * Set log level and privacy log to print. + * + * @param level - log level. + * @param hidePrivateLogEntries - Hide Private Log. + */ +void OCSetLogLevel(LogLevel level, bool hidePrivateLogEntries); + +/** + * get private log flag. + * @return private log flag + */ +bool OCGetPrivateLogLevel(); + #ifdef __TIZEN__ /** * Output the contents of the specified buffer (in hex) with the specified priority level. @@ -92,6 +139,8 @@ typedef enum { * @param[in] bufferSize max number of byte in buffer */ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint16_t bufferSize); +void OCPrintCALogBuffer(LogLevel level, const char *tag, const uint8_t *buffer, + uint16_t bufferSize, uint8_t isHeader); #define OCLog(level,tag,mes) LOG_(LOG_ID_MAIN, (level), (tag), mes) #define OCLogv(level,tag,fmt,args...) LOG_(LOG_ID_MAIN, (level),tag,fmt,##args) @@ -148,6 +197,10 @@ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint1 * @param bufferSize - max number of byte in buffer */ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint16_t bufferSize); + + void OCPrintCALogBuffer(LogLevel level, const char *tag, const uint8_t *buffer, + uint16_t bufferSize, uint8_t isHeader); + #else // For arduino platforms /** * Initialize the serial logger for Arduino @@ -196,48 +249,108 @@ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint1 #ifdef TB_LOG #ifdef __TIZEN__ - -#define OIC_LOG(level,tag,mes) LOG_(LOG_ID_MAIN, (level), (tag), mes) -#define OIC_LOG_V(level,tag,fmt,args...) LOG_(LOG_ID_MAIN, level, tag, fmt, ##args) -#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize)\ - OCLogBuffer((level), (tag), (buffer), (bufferSize)) - -#else // These macros are defined for Linux, Android, Win32, and Arduino - +#define OIC_LOG(level,tag,mes) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + IF_OC_PRINT_PRIVATE_LOG_LEVEL((level)) \ + { \ + if ((level) == INFO_PRIVATE) \ + LOG_(LOG_ID_MAIN, DLOG_INFO, (tag), mes); \ + else \ + LOG_(LOG_ID_MAIN, (level), (tag), mes); \ + } \ + } while(0) + +#define OIC_LOG_V(level,tag,fmt,args...) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + IF_OC_PRINT_PRIVATE_LOG_LEVEL((level)) \ + { \ + if ((level) == INFO_PRIVATE) \ + LOG_(LOG_ID_MAIN, DLOG_INFO, (tag), fmt, ##args); \ + else \ + LOG_(LOG_ID_MAIN, (level), (tag), fmt, ##args); \ + } \ + } while(0) + +#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCLogBuffer((level), (tag), (buffer), (bufferSize)); \ + } while(0) + +#define OIC_LOG_CA_BUFFER(level, tag, buffer, bufferSize, isHeader) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCPrintCALogBuffer((level), (tag), (buffer), (bufferSize), (isHeader)); \ + } while(0) + +#else // NO __TIZEN__ - These macros are defined for Linux, Android, Win32, and Arduino #define OIC_LOG_INIT() OCLogInit() #ifdef ARDUINO +#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCLogBuffer((level), PCF(tag), (buffer), (bufferSize)); \ + } while(0) -#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize) OCLogBuffer((level), PCF(tag), (buffer), (bufferSize)) // Don't define variable argument log function for Arduino -#define OIC_LOG_V(level, tag, format, ...) OCLogv((level), PCF(tag), __LINE__, PCF(format),__VA_ARGS__) +#define OIC_LOG_V(level, tag, format, ...) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCLogv((level), PCF(tag), __LINE__, PCF(format),__VA_ARGS__); \ + } while(0) #define OIC_LOG_CONFIG(ctx) #define OIC_LOG_SHUTDOWN() -#define OIC_LOG(level, tag, logStr) OCLog((level), PCF(tag), __LINE__, PCF(logStr)) +#define OIC_LOG(level, tag, logStr) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCLog((level), PCF(tag), __LINE__, PCF(logStr)); \ + } while(0) + #define OIC_LOG_V(level, tag, ...) -#else +#else // NO ARDUINO +#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCLogBuffer((level), (tag), (buffer), (bufferSize)); \ + } while(0) + +#define OIC_LOG_CA_BUFFER(level, tag, buffer, bufferSize, isHeader) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCPrintCALogBuffer((level), (tag), (buffer), (bufferSize), (isHeader)); \ + } while(0) -#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize) OCLogBuffer((level), (tag), (buffer), (bufferSize)) #define OIC_LOG_CONFIG(ctx) OCLogConfig((ctx)) #define OIC_LOG_SHUTDOWN() OCLogShutdown() -#define OIC_LOG(level, tag, logStr) OCLog((level), (tag), (logStr)) -// Define variable argument log function for Linux, Android, and Win32 -#define OIC_LOG_V(level, tag, ...) OCLogv((level), (tag), __VA_ARGS__) - -#endif //ARDUINO -#endif //__TIZEN__ - -#else //TB_LOG +#define OIC_LOG(level, tag, logStr) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCLog((level), (tag), (logStr)); \ + } while(0) +// Define variable argument log function for Linux, Android, and Win32 +#define OIC_LOG_V(level, tag, ...) \ + do { \ + IF_OC_PRINT_LOG_LEVEL((level)) \ + OCLogv((level), (tag), __VA_ARGS__); \ + } while(0) + +#endif // ARDUINO +#endif // __TIZEN__ +#else // NO TB_LOG #define OIC_LOG_CONFIG(ctx) #define OIC_LOG_SHUTDOWN() #define OIC_LOG(level, tag, logStr) #define OIC_LOG_V(level, tag, ...) #define OIC_LOG_BUFFER(level, tag, buffer, bufferSize) +#define OIC_LOG_CA_BUFFER(level, tag, buffer, bufferSize, isHeader) #define OIC_LOG_INIT() -#endif +#endif // TB_LOG #ifdef __cplusplus }