You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

193 lines
3.0 KiB

  1. #pragma once
  2. #ifndef __NANOLOG_H__
  3. #define __NANOLOG_H__
  4. #include "Arduino.h"
  5. // #define LOG(severity, msg) p msg;
  6. // void p(const char *fmt, ... )
  7. // {
  8. // static char tmp[128]; // resulting string limited to 128 chars.
  9. // va_list args;
  10. // va_start (args, fmt );
  11. // vsnprintf(tmp, 128, fmt, args);
  12. // va_end (args);
  13. // Serial.println(tmp);
  14. // delay(1);
  15. // }
  16. inline void LOG_SPACE_IMPL();
  17. inline void LOG_SET_IMPL(int8_t i);
  18. inline void LOG_SET_IMPL(int16_t i);
  19. inline void LOG_SET_IMPL(int32_t i);
  20. inline void LOG_SET_IMPL(int64_t i);
  21. inline void LOG_SET_IMPL(uint8_t i);
  22. inline void LOG_SET_IMPL(uint16_t i);
  23. inline void LOG_SET_IMPL(uint32_t i);
  24. inline void LOG_SET_IMPL(uint64_t i);
  25. inline void LOG_SET_IMPL(char c);
  26. inline void LOG_SET_IMPL(String s);
  27. inline void LOG_SET_IMPL(float f);
  28. inline void LOG_SET_IMPL(double d);
  29. inline void LOG_NEW_LINE_IMPL();
  30. #ifdef LOG_ENABLED
  31. #define LOG(P) LOG_SET_IMPL(P)
  32. #define LOG_NEW_LINE LOG_NEW_LINE_IMPL();
  33. #define LOG_SPACE LOG_SPACE_IMPL()
  34. #else
  35. #define LOG(P)
  36. #define LOG_NEW_LINE
  37. #define LOG_SPACE
  38. #endif
  39. inline void LOG_INIT()
  40. {
  41. #if defined (LOG_ENABLED)
  42. Serial.begin(115200);
  43. LOG("Initialized: SERIAL_LOG64");
  44. LOG_NEW_LINE;
  45. #endif
  46. #if defined (EEPROM_LOG_ENABLED)
  47. LOG_EEPROM_READ;
  48. EEPROM_LOG_ADDR_PTR = EEPROM_LOG_Start_Address;
  49. #endif
  50. }
  51. inline void LOG_SPACE_IMPL()
  52. {
  53. Serial.print(" ");
  54. }
  55. inline void LOG_SET_IMPL(int8_t i)
  56. {
  57. Serial.print(i);
  58. LOG_SPACE;
  59. }
  60. inline void LOG_SET_IMPL(int16_t i)
  61. {
  62. Serial.print(i);
  63. LOG_SPACE;
  64. }
  65. inline void LOG_SET_IMPL(int32_t i)
  66. {
  67. Serial.print(i);
  68. LOG_SPACE;
  69. }
  70. inline void LOG_SET_IMPL(uint8_t i)
  71. {
  72. Serial.print(i);
  73. LOG_SPACE;
  74. }
  75. inline void LOG_SET_IMPL(uint16_t i)
  76. {
  77. Serial.print(i);
  78. LOG_SPACE;
  79. }
  80. inline void LOG_SET_IMPL(uint32_t i)
  81. {
  82. Serial.print(i);
  83. LOG_SPACE;
  84. }
  85. inline void LOG_SET_IMPL(char c)
  86. {
  87. Serial.print(c);
  88. LOG_SPACE;
  89. }
  90. inline void LOG_SET_IMPL(String s)
  91. {
  92. Serial.print(s);
  93. LOG_SPACE;
  94. }
  95. inline void LOG_SET_IMPL(float f)
  96. {
  97. Serial.print(f);
  98. LOG_SPACE;
  99. }
  100. inline void LOG_SET_IMPL(double d)
  101. {
  102. Serial.print(d);
  103. LOG_SPACE;
  104. }
  105. inline void LOG_NEW_LINE_IMPL()
  106. {
  107. Serial.println(" ");
  108. }
  109. inline void LOG_SET_IMPL(uint64_t n)
  110. {
  111. unsigned char buf[16 * sizeof(long)];
  112. if (n == 0)
  113. {
  114. Serial.print((char)'0');
  115. LOG_SPACE;
  116. return;
  117. }
  118. for (uint16_t i = 0; n > 0; i++)
  119. {
  120. buf[i] = n % 10;
  121. n /= 10;
  122. }
  123. for (uint16_t i = 0; i > 0; i--)
  124. {
  125. Serial.print((char) (buf[i - 1] < 10 ? ('0' + buf[i - 1]) : ('A' + buf[i - 1] - 10)));
  126. }
  127. LOG_SPACE;
  128. }
  129. inline void LOG_SET_IMPL(int64_t n)
  130. {
  131. unsigned char buf[16 * sizeof(long)]; ;
  132. if (n == 0)
  133. {
  134. Serial.print((char)'0');
  135. LOG_SPACE;
  136. return;
  137. }
  138. if (n < 0)
  139. {
  140. Serial.print((char)'-');
  141. n = n * (-1);
  142. }
  143. for (uint16_t i = 0; n > 0; i++)
  144. {
  145. buf[i] = n % 10;
  146. n /= 10;
  147. }
  148. for (uint16_t i = 0; i > 0; i--)
  149. {
  150. Serial.print((char) (buf[i - 1] < 10 ? ('0' + buf[i - 1]) : ('A' + buf[i - 1] - 10)));
  151. }
  152. LOG_SPACE;
  153. }
  154. #endif // __NANOLOG_H__