Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / resource / csdk / connectivity / common / inc / logger.h
index b19b037..bf6f130 100644 (file)
@@ -18,8 +18,8 @@
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-#ifndef _U_LOGGER_H_
-#define _U_LOGGER_H_
+#ifndef U_LOGGER_H_
+#define U_LOGGER_H_
 
 #include <stdint.h>
 #include <stdio.h>
 
 #ifdef __ANDROID__
 #include <android/log.h>
+#elif defined(__TIZEN__)
+#include <dlog.h>
 #elif defined ARDUINO
 #include "Arduino.h"
-#include <avr/pgmspace.h>
+#include "avr/pgmspace.h"
 #endif
 
 #ifdef __cplusplus
@@ -42,22 +44,38 @@ extern "C"
 // Use the PCF macro to wrap strings stored in FLASH on the Arduino
 // Example:  OC_LOG(INFO, TAG, PCF("Entering function"));
 #ifdef ARDUINO
+
+#ifdef __cplusplus
 #define PCF(str)  ((PROGMEM const char *)(F(str)))
 #else
+#define PCF(str)  ((PROGMEM const char *)(PSTR(str)))
+#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)
 
 // Log levels
+#ifndef __TIZEN__
 typedef enum
 {
     DEBUG = 0, INFO, WARNING, ERROR, FATAL
 } LogLevel;
+#else
+#define DEBUG DLOG_DEBUG
+#define INFO DLOG_INFO
+#define WARNING DLOG_WARNING
+#define ERROR DLOG_ERROR
+#define FATAL DLOG_ERROR
+#endif
 
-#ifndef ARDUINO
-
+#ifdef __TIZEN__
+#define OICLog(level,tag,mes) LOG(level,tag,mes)
+#define OICLogv(level,tag,fmt,args...) LOG(level,tag,fmt,##args)
+#elif defined(ANDROID) || defined(__linux__) || defined(__APPLE__)
 /**
  * Configure logger to use a context that defines a custom logger function
  *
@@ -85,7 +103,7 @@ void OICLogShutdown();
  * @param tag    - Module name
  * @param logStr - log string
  */
-void OICLog(LogLevel level, const char * tag, const char * logStr);
+void OICLog(LogLevel level, const char *tag, const char *logStr);
 
 /**
  * Output a variable argument list log string with the specified priority level.
@@ -95,7 +113,7 @@ void OICLog(LogLevel level, const char * tag, const char * logStr);
  * @param tag    - Module name
  * @param format - variadic log string
  */
-void OICLogv(LogLevel level, const char * tag, const char * format, ...);
+void OICLogv(LogLevel level, const char *tag, const char *format, ...);
 
 /**
  * Output the contents of the specified buffer (in hex) with the specified priority level.
@@ -105,8 +123,8 @@ void OICLogv(LogLevel level, const char * tag, const char * format, ...);
  * @param buffer     - pointer to buffer of bytes
  * @param bufferSize - max number of byte in buffer
  */
-void OICLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint16_t bufferSize);
-#else
+void OICLogBuffer(LogLevel level, const char *tag, const uint8_t *buffer, uint16_t bufferSize);
+#else  // For arduino platforms
 /**
  * Initialize the serial logger for Arduino
  * Only defined for Arduino
@@ -121,7 +139,8 @@ void OICLogInit();
  * @param tag    - Module name
  * @param logStr - log string
  */
-void OICLog(LogLevel level, PROGMEM const char * tag, PROGMEM const char * logStr);
+void OICLog(LogLevel level, PROGMEM const char *tag, const int16_t lineNum,
+              PROGMEM const char *logStr);
 
 /**
  * Output the contents of the specified buffer (in hex) with the specified priority level.
@@ -131,7 +150,7 @@ void OICLog(LogLevel level, PROGMEM const char * tag, PROGMEM const char * logSt
  * @param buffer     - pointer to buffer of bytes
  * @param bufferSize - max number of byte in buffer
  */
-void OICLogBuffer(LogLevel level, PROGMEM const char * tag, const uint8_t * buffer, uint16_t bufferSize);
+void OICLogBuffer(LogLevel level, const char *tag, const uint8_t *buffer, uint16_t bufferSize);
 
 /**
  * Output a variable argument list log string with the specified priority level.
@@ -140,28 +159,44 @@ void OICLogBuffer(LogLevel level, PROGMEM const char * tag, const uint8_t * buff
  * @param tag    - Module name
  * @param format - variadic log string
  */
-void OICLogv(LogLevel level, const char * tag, const char * format, ...);
+void OICLogv(LogLevel level, PROGMEM const char *tag, const int16_t lineNum,
+               PROGMEM const char *format, ...);
 #endif
 
 #ifdef TB_LOG
-// These macros are defined for Linux, Android, and Arduino
+
+#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)
+#else // These macros are defined for Linux, Android, and Arduino
 #define OIC_LOG_INIT()    OICLogInit()
-#define OIC_LOG(level, tag, logStr)  OICLog((level), (tag), (logStr))
-#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize)  OICLogBuffer((level), (tag), (buffer), (bufferSize))
+#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize)\
+    OICLogBuffer((level), (tag), (buffer), (bufferSize))
 
 #ifdef ARDUINO
 #define OIC_LOG_CONFIG(ctx)
 #define OIC_LOG_SHUTDOWN()
-// Use full namespace for logInit to avoid function name collision
-#define OIC_LOG_INIT()    OICLogInit()
-// Don't define variable argument log function for Arduino
-#define OIC_LOG_V(level, tag, ...) OICLogv((level), (tag), __VA_ARGS__)
+#define OIC_LOG(level, tag, logStr) OICLog((level), PCF(tag), __LINE__, PCF(logStr))
+#define OIC_LOG_V(level, tag, ...)
+// To enable OIC_LOG_V, uncomment the below
+//#define OIC_LOG_V(level, tag, format, ...)  OICLogv((level), PCF(tag), __LINE__, PCF(format), __VA_ARGS__)
 #else
 #define OIC_LOG_CONFIG(ctx)    OICLogConfig((ctx))
 #define OIC_LOG_SHUTDOWN()     OICLogShutdown()
-// Define variable argument log function for Linux and Android
-#define OIC_LOG_V(level, tag, ...)  OICLogv((level), (tag), __VA_ARGS__)
-#endif
+#define OIC_LOG(level, tag, logStr)  OICLog((level), (tag), (logStr))
+#define OIC_LOG_V(level, tag, ...) OICLogv((level), (tag), __VA_ARGS__)
+#endif //ARDUINO
+#endif //__TIZEN__
+#else //TB_LOG
+
+#ifdef __ANDROID__
+#define OIC_LOG_CONFIG(ctx)
+#define OIC_LOG_SHUTDOWN()
+#define OIC_LOG_BUFFER(level, tag, buffer, bufferSize)
+#define OIC_LOG_INIT()
+#define OIC_LOG(level,tag,mes) __android_log_print(ANDROID_LOG_INFO, tag, mes)
+#define OIC_LOG_V(level,tag,fmt,args...) __android_log_print(ANDROID_LOG_INFO, tag, fmt,##args)
 
 #else
 #define OIC_LOG_CONFIG(ctx)
@@ -170,9 +205,12 @@ void OICLogv(LogLevel level, const char * tag, const char * format, ...);
 #define OIC_LOG_V(level, tag, ...)
 #define OIC_LOG_BUFFER(level, tag, buffer, bufferSize)
 #define OIC_LOG_INIT()
-#endif
+#endif //__ANDROID__
+#endif // TB_LOG
+
 
 #ifdef __cplusplus
 }
 #endif // __cplusplus
-#endif /* _U_LOGGER_H_ */
+#endif /* U_LOGGER_H_ */
+