1 //******************************************************************
3 // Copyright 2014 Intel Corporation All Rights Reserved.
4 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
14 #include <android/log.h>
17 #include <avr/pgmspace.h>
20 // Use the PCF macro to wrap strings stored in FLASH on the Arduino
21 // Example: OC_LOG(INFO, TAG, PCF("Entering function"));
23 #define PCF(str) ((const prog_char*)(F(str)))
28 // Max buffer size used in variable argument log function
29 #define MAX_LOG_V_BUFFER_SIZE (256)
41 #if defined(__ANDROID__) || defined(__linux__)
43 * Output a variable argument list log string with the specified priority level.
44 * Only defined for Linux and Android
46 * @param level - DEBUG, INFO, WARNING, ERROR, FATAL
47 * @param tag - Module name
48 * @param format - variadic log string
50 void OCLogv(LogLevel level, const char * tag, const char * format, ...);
53 * Output a log string with the specified priority level.
54 * Only defined for Linux and Android
56 * @param level - DEBUG, INFO, WARNING, ERROR, FATAL
57 * @param tag - Module name
58 * @param logStr - log string
60 void OCLog(LogLevel level, const char * tag, const char * logStr);
63 * Output the contents of the specified buffer (in hex) with the specified priority level.
65 * @param level - DEBUG, INFO, WARNING, ERROR, FATAL
66 * @param tag - Module name
67 * @param buffer - pointer to buffer of bytes
68 * @param bufferSize - max number of byte in buffer
70 void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint16_t bufferSize);
75 * Initialize the serial logger for Arduino
76 * Only defined for Arduino
81 * Output a log string with the specified priority level.
82 * Only defined for Arduino. Uses PROGMEM strings
84 * @param level - DEBUG, INFO, WARNING, ERROR, FATAL
85 * @param tag - Module name
86 * @param logStr - log string
88 void OCLog(LogLevel level, const prog_char * tag, const prog_char * logStr);
91 * Output the contents of the specified buffer (in hex) with the specified priority level.
93 * @param level - DEBUG, INFO, WARNING, ERROR, FATAL
94 * @param tag - Module name
95 * @param buffer - pointer to buffer of bytes
96 * @param bufferSize - max number of byte in buffer
98 void OCLogBuffer(LogLevel level, const prog_char * tag, const uint8_t * buffer, uint16_t bufferSize);
102 // These macros are defined for Linux, Android, and Arduino
103 #define OC_LOG(level, tag, logStr) OCLog((level), (tag), (logStr))
104 #define OC_LOG_BUFFER(level, tag, buffer, bufferSize) OCLogBuffer((level), (tag), (buffer), (bufferSize))
107 // Use full namespace for logInit to avoid function name collision
108 #define OC_LOG_INIT() OCLogInit()
109 // Don't define variable argument log function for Arduino
110 #define OC_LOG_V(level, tag, ...)
112 // Don't define LOG_INIT for Linux and Android
113 #define OC_LOG_INIT()
114 // Define variable argument log function for Linux and Android
115 #define OC_LOG_V(level, tag, ...) OCLogv((level), (tag), __VA_ARGS__)
119 #define OC_LOG(level, tag, logStr)
120 #define OC_LOG_V(level, tag, ...)
121 #define OC_LOG_BUFFER(level, tag, buffer, bufferSize)
122 #define OC_LOG_INIT()
125 #endif /* LOGGER_H_ */