Imported Upstream version 1.0.0
[platform/upstream/iotivity.git] / resource / csdk / connectivity / common / inc / logger.h
index b19b037..e48ee7c 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,46 @@ 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
+#ifdef __TIZEN__
+typedef enum {
+    DEBUG = DLOG_DEBUG,
+    INFO = DLOG_INFO,
+    WARNING = DLOG_WARN,
+    ERROR = DLOG_ERROR,
+    FATAL = DLOG_ERROR
+} LogLevel;
+#else
 typedef enum
 {
     DEBUG = 0, INFO, WARNING, ERROR, FATAL
 } LogLevel;
+#endif
 
-#ifndef ARDUINO
+#ifdef __TIZEN__
+#define OC_LOG(level,tag,mes) LOG_(LOG_ID_MAIN, level, tag, mes)
+#define OC_LOG_V(level,tag,fmt,args...) LOG_(LOG_ID_MAIN, level, tag, fmt,##args)
+#define OC_LOG_BUFFER(level, tag, buffer, bufferSize)
+#endif
 
+#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 +111,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 +121,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 +131,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 +147,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 +158,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,39 +167,48 @@ 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
 
-#else
 #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_INIT()
-#endif
+
+#endif // TB_LOG
+
 
 #ifdef __cplusplus
 }
 #endif // __cplusplus
-#endif /* _U_LOGGER_H_ */
+#endif /* U_LOGGER_H_ */
\ No newline at end of file