PAS CO2 Sensor  1.0.3
C++ library for Infineon Photoacoustic Spectroscopy (PAS) XENSIV™ CO2 miniaturized sensor
pas-co2-logger.hpp
Go to the documentation of this file.
1 
10 #ifndef PAS_CO2_LOGGER_HPP_
11 #define PAS_CO2_LOGGER_HPP_
12 
13 #include "pas-co2-conf.hpp"
14 
15 #if (PAS_CO2_LOGGER_ENABLED == 1)
16 
17 #include <stdint.h>
18 #include "pas-co2-pal-logger.hpp"
19 
20 namespace pasco2
21 {
22 
23 class Logger
24 {
25  public:
26 
27  Logger ();
28  Logger (LoggerPAL *logpal);
29  ~Logger ();
30  void init ();
31  void deinit ();
32  void print (const char * format,
33  ...);
34  void printfModule (const char * format,
35  const char * module,
36  const char * color,
37  ...);
38  void printModuleHex (const uint8_t * array,
39  uint32_t length,
40  const char * module,
41  const char * color);
42 
43  private:
44  LoggerPAL * logpal;
45 };
46 
50 extern Logger cotwo_log;
51 
55 #define PAS_CO2_LOGGER_COLOR_RED "\x1b[31m"
56 #define PAS_CO2_LOGGER_COLOR_GREEN "\x1b[32m"
57 #define PAS_CO2_LOGGER_COLOR_YELLOW "\x1b[33m"
58 #define PAS_CO2_LOGGER_COLOR_BLUE "\x1b[34m"
59 #define PAS_CO2_LOGGER_COLOR_MAGENTA "\x1b[35m"
60 #define PAS_CO2_LOGGER_COLOR_CYAN "\x1b[36m"
61 #define PAS_CO2_LOGGER_COLOR_LIGHT_GREY "\x1b[90m"
62 #define PAS_CO2_LOGGER_COLOR_LIGHT_RED "\x1b[91m"
63 #define PAS_CO2_LOGGER_COLOR_LIGHT_GREEN "\x1b[92m"
64 #define PAS_CO2_LOGGER_COLOR_LIGHT_YELLOW "\x1b[93m"
65 #define PAS_CO2_LOGGER_COLOR_LIGHT_BLUE "\x1b[94m"
66 #define PAS_CO2_LOGGER_COLOR_LIGHT_MAGENTA "\x1b[95m"
67 #define PAS_CO2_LOGGER_COLOR_LIGHT_CYAN "\x1b[96m"
68 #define PAS_CO2_LOGGER_COLOR_DEFAULT "\x1b[0m"
69 
77 #define PAS_CO2_LOGGER_ERROR_COLOR PAS_CO2_LOGGER_COLOR_RED
78 #define PAS_CO2_LOGGER_WARNING_COLOR PAS_CO2_LOGGER_COLOR_YELLOW
79 
80 
81 #define PAS_CO2_LOG_INIT()\
82 {\
83  cotwo_log.init();\
84 }
85 
86 #define PAS_CO2_LOG_DEINIT()\
87 {\
88  cotwo_log.deinit();\
89 }
90 
94 #if (PAS_CO2_CORE_LOGGER_ENABLED == 1)
95 
96 #define PAS_CO2_LOGGER_SERVICE "[pasco2] : "
97 #define PAS_CO2_LOGGER_COLOR PAS_CO2_LOGGER_COLOR_GREEN
98 
99 #define PAS_CO2_LOG_MSG(str)\
100 {\
101  cotwo_log.printfModule(str, PAS_CO2_LOGGER_SERVICE, PAS_CO2_LOGGER_COLOR);\
102 }
103 
104 #define PAS_CO2_LOG_RETURN(ret)\
105 {\
106  if( 0 > ret)\
107  {\
108  cotwo_log.printfModule("fail with return code %i", PAS_CO2_LOGGER_SERVICE, PAS_CO2_LOGGER_ERROR_COLOR, ret);\
109  }\
110  else\
111  {\
112  cotwo_log.printfModule("pass", PAS_CO2_LOGGER_SERVICE, PAS_CO2_LOGGER_COLOR);\
113  }\
114 }
115 
116 #else
117 
118 #define PAS_CO2_LOG_MSG(str) { }
119 #define PAS_CO2_LOG_RETURN(ret) { }
120 
121 #endif /* PAS_CO2_CORE_LOGGER_ENABLED */
122 
126 #if (PAS_CO2_SERIAL_LOGGER_ENABLED == 1)
127 
132 #define PAS_CO2_SERIAL_LOGGER_SERVICE "[pasco2 serial] : "
133 #define PAS_CO2_SERIAL_LOGGER_COLOR PAS_CO2_LOGGER_COLOR_BLUE
134 
135 #define PAS_CO2_SERIAL_LOG_MSG(str)\
136 {\
137  cotwo_log.printfModule(str, PAS_CO2_SERIAL_LOGGER_SERVICE, PAS_CO2_SERIAL_LOGGER_COLOR);\
138 }
139 
140 #define PAS_CO2_SERIAL_LOG_RETURN(ret)\
141 {\
142  if( 0 > ret)\
143  {\
144  cotwo_log.printfModule("fail with return code %i", PAS_CO2_SERIAL_LOGGER_SERVICE, PAS_CO2_SERIAL_LOGGER_COLOR, ret);\
145  }\
146  else\
147  {\
148  cotwo_log.printfModule("pass", PAS_CO2_SERIAL_LOGGER_SERVICE, PAS_CO2_SERIAL_LOGGER_COLOR);\
149  }\
150 }
151 
152 #else
153 
154 #define PAS_CO2_SERIAL_LOG_MSG(str) { }
155 #define PAS_CO2_SERIAL_LOG_RETURN(ret) { }
156 
157 #endif /* PAS_CO2_SERIAL_LOGGER_ENABLED */
158 
162 #if (PAS_CO2_PULSE_LOGGER_ENABLED == 1)
163 
168 #define PAS_CO2_PULSE_LOGGER_SERVICE "[pasco2 pulse] : "
169 #define PAS_CO2_PULSE_LOGGER_COLOR PAS_CO2_LOGGER_COLOR_BLUE
170 
171 #define PAS_CO2_PULSE_LOG_MSG(str)\
172 {\
173  cotwo_log.printfModule(str, PAS_CO2_PULSE_LOGGER_SERVICE, PAS_CO2_PULSE_LOGGER_COLOR);\
174 }
175 
176 #define PAS_CO2_PULSE_LOG_RETURN(ret)\
177 {\
178  if( 0 > ret)\
179  {\
180  cotwo_log.printfModule("fail with return code %i", PAS_CO2_PULSE_LOGGER_SERVICE, PAS_CO2_PULSE_LOGGER_COLOR, ret);\
181  }\
182  else\
183  {\
184  cotwo_log.printfModule("pass", PAS_CO2_PULSE_LOGGER_SERVICE, PAS_CO2_PULSE_LOGGER_COLOR);\
185  }\
186 }
187 
188 #else
189 
190 #define PAS_CO2_PULSE_LOG_MSG(str) { }
191 #define PAS_CO2_PULSE_LOG_RETURN(ret) { }
192 
193 #endif /* PAS_CO2_PULSE_LOGGER_ENABLED */
194 
198 #if (PAS_CO2_I2C_LOGGER_ENABLED == 1)
199 
200 #define PAS_CO2_I2C_LOGGER_SERVICE "[pasco2 i2c] : "
201 #define PAS_CO2_I2C_LOGGER_WRITE_SERVICE "[pasco2 i2c] : >>> "
202 #define PAS_CO2_I2C_LOGGER_READ_SERVICE "[pasco2 i2c] : <<< "
203 #define PAS_CO2_I2C_LOGGER_COLOR PAS_CO2_LOGGER_COLOR_CYAN
204 
205 #define PAS_CO2_I2C_LOG_MSG(str)\
206 {\
207  cotwo_log.printfModule(str, PAS_CO2_I2C_LOGGER_SERVICE, PAS_CO2_I2C_LOGGER_COLOR);\
208 }
209 
210 #define PAS_CO2_I2C_LOG_RETURN(ret)\
211 {\
212  if( 0 > ret)\
213  {\
214  cotwo_log.printfModule("fail with return code %i", PAS_CO2_I2C_LOGGER_SERVICE, PAS_CO2_LOGGER_ERROR_COLOR, ret);\
215  }\
216  else\
217  {\
218  cotwo_log.printfModule("pass", PAS_CO2_I2C_LOGGER_SERVICE, PAS_CO2_I2C_LOGGER_COLOR);\
219  }\
220 }
221 
222 #define PAS_CO2_I2C_LOG_READ_HEX(array, length)\
223 {\
224  cotwo_log.printModuleHex(array, length, PAS_CO2_I2C_LOGGER_READ_SERVICE, PAS_CO2_I2C_LOGGER_COLOR);\
225 }
226 
227 #define PAS_CO2_I2C_LOG_WRITE_HEX(array, length)\
228 {\
229  cotwo_log.printModuleHex(array, length, PAS_CO2_I2C_LOGGER_WRITE_SERVICE, PAS_CO2_I2C_LOGGER_COLOR);\
230 }
231 
232 #else
233 
234 #define PAS_CO2_I2C_LOG_MSG(str) { }
235 #define PAS_CO2_I2C_LOG_RETURN(ret) { }
236 #define PAS_CO2_I2C_LOG_READ_HEX(array, length) { }
237 #define PAS_CO2_I2C_LOG_WRITE_HEX(array, length) { }
238 
239 #endif /* PAS_CO2_I2C_LOGGER_ENABLED */
240 
244 #if (PAS_CO2_UART_LOGGER_ENABLED == 1)
245 
246 #define PAS_CO2_UART_LOGGER_SERVICE "[pasco2 uart] : "
247 #define PAS_CO2_UART_LOGGER_WRITE_SERVICE "[pasco2 uart] : >>> "
248 #define PAS_CO2_UART_LOGGER_READ_SERVICE "[pasco2 uart] : <<< "
249 #define PAS_CO2_UART_LOGGER_COLOR PAS_CO2_LOGGER_COLOR_LIGHT_GREY
250 
251 #define PAS_CO2_UART_LOG_MSG(str)\
252 {\
253  cotwo_log.printfModule(str, PAS_CO2_UART_LOGGER_SERVICE, PAS_CO2_UART_LOGGER_COLOR);\
254 }
255 
256 #define PAS_CO2_UART_LOG_RETURN(ret)\
257 {\
258  if( 0 > ret)\
259  {\
260  cotwo_log.printfModule("fail with return code %i", PAS_CO2_UART_LOGGER_SERVICE, PAS_CO2_LOGGER_ERROR_COLOR, ret);\
261  }\
262  else\
263  {\
264  cotwo_log.printfModule("pass", PAS_CO2_UART_LOGGER_SERVICE, PAS_CO2_UART_LOGGER_COLOR);\
265  }\
266 }
267 
268 #define PAS_CO2_UART_LOG_READ_HEX(array, length)\
269 {\
270  cotwo_log.printModuleHex(array, length, PAS_CO2_UART_LOGGER_READ_SERVICE, PAS_CO2_UART_LOGGER_COLOR);\
271 }
272 
273 #define PAS_CO2_UART_LOG_WRITE_HEX(array, length)\
274 {\
275  cotwo_log.printModuleHex(array, length, PAS_CO2_UART_LOGGER_WRITE_SERVICE, PAS_CO2_UART_LOGGER_COLOR);\
276 }
277 
278 #else
279 
280 #define PAS_CO2_UART_LOG_MSG(str) { }
281 #define PAS_CO2_UART_LOG_RETURN(ret) { }
282 #define PAS_CO2_UART_LOG_READ_HEX(array, length) { }
283 #define PAS_CO2_UART_LOG_WRITE_HEX(array, length) { }
284 #endif /* PAS_CO2_UART_LOGGER_ENABLED */
285 
286 
291 #if (PAS_CO2_PWM_LOGGER_ENABLED == 1)
292 
297 #define PAS_CO2_PWM_LOGGER_SERVICE "[pasco2 pwm] : "
298 #define PAS_CO2_PWM_LOGGER_COLOR PAS_CO2_LOGGER_COLOR_BLUE
299 
300 #define PAS_CO2_PWM_LOG_MSG(str)\
301 {\
302  cotwo_log.printfModule(str, PAS_CO2_PWM_LOGGER_SERVICE, PAS_CO2_PULSE_LOGGER_COLOR);\
303 }
304 
305 #define PAS_CO2_PWM_LOG_RETURN(ret)\
306 {\
307  if( 0 > ret)\
308  {\
309  cotwo_log.printfModule("fail with return code %i", PAS_CO2_PWM_LOGGER_SERVICE, PAS_CO2_PULSE_LOGGER_COLOR, ret);\
310  }\
311  else\
312  {\
313  cotwo_log.printfModule("pass", PAS_CO2_PWM_LOGGER_SERVICE, PAS_CO2_PULSE_LOGGER_COLOR);\
314  }\
315 }
316 
317 #else
318 
319 #define PAS_CO2_PWM_LOG_MSG(str) { }
320 #define PAS_CO2_PWM_LOG_RETURN(ret) { }
321 
322 #endif /* PAS_CO2_PWM_INTF */
323 
327 #if (PAS_CO2_REG_LOGGER_ENABLED == 1)
328 
329 #define PAS_CO2_REG_LOGGER_SERVICE "[pasco2 reg] : "
330 #define PAS_CO2_REG_LOGGER_COLOR PAS_CO2_LOGGER_COLOR_GREEN
331 
332 #define PAS_CO2_REG_LOG_MSG(str)\
333 {\
334  cotwo_log.printfModule(str, PAS_CO2_REG_LOGGER_SERVICE, PAS_CO2_REG_LOGGER_COLOR);\
335 }
336 
337 #define PAS_CO2_REG_LOG_RETURN(ret)\
338 {\
339  if( 0 > ret)\
340  {\
341  cotwo_log.printfModule("fail with return code %i", PAS_CO2_REG_LOGGER_SERVICE, PAS_CO2_LOGGER_ERROR_COLOR, ret);\
342  }\
343  else\
344  {\
345  cotwo_log.printfModule("pass", PAS_CO2_REG_LOGGER_SERVICE, PAS_CO2_REG_LOGGER_COLOR);\
346  }\
347 }
348 
349 #define PAS_CO2_REG_VALUE_HEX(addr_ptr)\
350 {\
351  cotwo_log.printModuleHex(addr_ptr, 1, PAS_CO2_REG_LOGGER_SERVICE, PAS_CO2_REG_LOGGER_COLOR);\
352 }
353 
354 #define PAS_CO2_REG_BITF_VALUE(map, addr, bitf)\
355 {\
356  cotwo_log.printfModule("%x :: 0x%02x -> bfield 0x%02x", PAS_CO2_REG_LOGGER_SERVICE, PAS_CO2_REG_LOGGER_COLOR, addr, map[addr], bitf);\
357 }
358 
359 #define PAS_CO2_REG_MAP_HEX(map, length, addr)\
360 {\
361  cotwo_log.print("%s%s", PAS_CO2_REG_LOGGER_COLOR, PAS_CO2_REG_LOGGER_SERVICE);\
362  cotwo_log.print("%x :: 0x%02x\r\n", 0, map[0]);\
363  for(uint8_t i = 1; i < length; i++)\
364  {\
365  cotwo_log.print("%17x :: ", i);\
366  cotwo_log.print("0x%02x", map[i]);\
367  if(i == addr)\
368  cotwo_log.print("<---");\
369  \
370  cotwo_log.print("\r\n");\
371  }\
372  cotwo_log.print("%s", PAS_CO2_LOGGER_COLOR_DEFAULT);\
373 }
374 
375 #else
376 
377 #define PAS_CO2_REG_VALUE_HEX(addr_ptr) { }
378 #define PAS_CO2_REG_BITF_VALUE(map, addr, bitf) { }
379 #define PAS_CO2_REG_MAP_HEX(map, length, addr) { }
380 
381 
382 #endif /* PAS_CO2_REG_LOGGER_ENABLED */
383 
387 #if (PAS_CO2_APP_LOGGER_ENABLED == 1)
388 
392 #define PAS_CO2_APP_LOGGER_ERROR_COLOR PAS_CO2_LOGGER_COLOR_RED
393 #define PAS_CO2_APP_LOGGER_WARNING_COLOR PAS_CO2_LOGGER_COLOR_YELLOW
394 
395 
396 #define PAS_CO2_APP_LOGGER_SERVICE "[pasco2 app] : "
397 #define PAS_CO2_APP_LOGGER_COLOR PAS_CO2_LOGGER_COLOR_MAGENTA
398 
399 #define PAS_CO2_APP_LOG_MSG(str)\
400 {\
401  cotwo_log.printfModule(str, PAS_CO2_APP_LOGGER_SERVICE, PAS_CO2_APP_LOGGER_COLOR);\
402 }
403 
404 #define PAS_CO2_APP_LOG_VAR(str, var)\
405 {\
406  cotwo_log.printfModule(str, PAS_CO2_APP_LOGGER_SERVICE, PAS_CO2_APP_LOGGER_COLOR, var);\
407 }\
408 
409 #define PAS_CO2_APP_LOG_RETURN(ret)\
410 {\
411  if( 0 > ret)\
412  {\
413  cotwo_log.printfModule("fail with return code %i", PAS_CO2_APP_LOGGER_SERVICE, PAS_CO2_APP_LOGGER_ERROR_COLOR, ret);\
414  }\
415  else\
416  {\
417  cotwo_log.printfModule("pass", PAS_CO2_APP_LOGGER_SERVICE, PAS_CO2_APP_LOGGER_COLOR);\
418  }\
419 }
420 
421 #else
422 
423 #define PAS_CO2_APP_LOG_MSG(str) {}
424 #define PAS_CO2_APP_LOG_VAR(str, var) {}
425 #define PAS_CO2_APP_LOG_RETURN(ret) {}
426 
427 #endif /* PAS_CO2_APP_LOGGER_ENABLED */
428 
429 }
430 
431 #else
432 
437 #define PAS_CO2_LOG_INIT() { }
438 #define PAS_CO2_LOG_DEINIT() { }
439 
440 #define PAS_CO2_LOG_MSG(str) { }
441 #define PAS_CO2_LOG_RETURN(ret) { }
442 
443 #define PAS_CO2_SERIAL_LOG_MSG(str) { }
444 #define PAS_CO2_SERIAL_LOG_RETURN(ret) { }
445 
446 #define PAS_CO2_PULSE_LOG_MSG(str) { }
447 #define PAS_CO2_PULSE_LOG_RETURN(ret) { }
448 
449 #define PAS_CO2_I2C_LOG_MSG(str) { }
450 #define PAS_CO2_I2C_LOG_RETURN(ret) { }
451 #define PAS_CO2_I2C_LOG_READ_HEX(array, length) { }
452 #define PAS_CO2_I2C_LOG_WRITE_HEX(array, length) { }
453 
454 #define PAS_CO2_UART_LOG_MSG(str) { }
455 #define PAS_CO2_UART_LOG_RETURN(ret) { }
456 #define PAS_CO2_UART_LOG_READ_HEX(array, length) { }
457 #define PAS_CO2_UART_LOG_WRITE_HEX(array, length){ }
458 
459 #define PAS_CO2_PWM_LOG_MSG(str) { }
460 #define PAS_CO2_PWM_LOG_RETURN(ret) { }
461 
462 #define PAS_CO2_REG_LOG_MSG(str) { }
463 #define PAS_CO2_REG_LOG_RETURN(ret) { }
464 #define PAS_CO2_REG_VALUE_HEX(addr_ptr) { }
465 #define PAS_CO2_REG_BITF_VALUE(map, addr, bitf) { }
466 #define PAS_CO2_REG_MAP_HEX(map, length, addr) { }
467 
468 #define PAS_CO2_APP_LOG_MSG(str) { }
469 #define PAS_CO2_APP_LOG_VAR(str, var) { }
470 #define PAS_CO2_APP_LOG_RETURN(ret) { }
471 
472 #endif /* PAS_CO2_LOGGER_ENABLED */
473 
474 #endif /* PAS_CO2_LOGGER_HPP_ */
Logger cotwo_log
Library logger.
void print(const char *format,...)
Definition: pas-co2-logger.cpp:49
Definition: pas-co2-pal-logger.hpp:28
Definition: pas-co2-i2c.hpp:21
~Logger()
Definition: pas-co2-logger.cpp:28
Logger()
Definition: pas-co2-logger.cpp:23
Definition: pas-co2-logger.hpp:23
void printModuleHex(const uint8_t *array, uint32_t length, const char *module, const char *color)
Definition: pas-co2-logger.cpp:99
PAS CO2 Logger Platform Abstraction Layer.
void printfModule(const char *format, const char *module, const char *color,...)
Definition: pas-co2-logger.cpp:68
PAS CO2 Library Configuration.
void init()
Definition: pas-co2-logger.cpp:39
void deinit()
Definition: pas-co2-logger.cpp:44