ZuluSCSI_log.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Helpers for log messages.
  2. #pragma once
  3. #include <stdint.h>
  4. #include <stddef.h>
  5. // Get total number of bytes that have been written to log
  6. uint32_t azlog_get_buffer_len();
  7. // Get log as a string.
  8. // If startpos is given, continues log reading from previous position and updates the position.
  9. const char *azlog_get_buffer(uint32_t *startpos);
  10. // Whether to enable debug messages
  11. extern bool g_azlog_debug;
  12. // Firmware version string
  13. extern const char *g_azlog_firmwareversion;
  14. // Log string
  15. void azlog_raw(const char *str);
  16. // Log byte as hex
  17. void azlog_raw(uint8_t value);
  18. // Log integer as hex
  19. void azlog_raw(uint32_t value);
  20. // Log integer as hex
  21. void azlog_raw(uint64_t value);
  22. // Log integer as decimal
  23. void azlog_raw(int value);
  24. // Log array of bytes
  25. struct bytearray {
  26. bytearray(const uint8_t *data, size_t len): data(data), len(len) {}
  27. const uint8_t *data;
  28. size_t len;
  29. };
  30. void azlog_raw(bytearray array);
  31. inline void azlog_raw()
  32. {
  33. // End of template recursion
  34. }
  35. extern "C" unsigned long millis();
  36. // Variadic template for printing multiple items
  37. template<typename T, typename T2, typename... Rest>
  38. inline void azlog_raw(T first, T2 second, Rest... rest)
  39. {
  40. azlog_raw(first);
  41. azlog_raw(second);
  42. azlog_raw(rest...);
  43. }
  44. // Format a complete log message
  45. template<typename... Params>
  46. inline void azlog(Params... params)
  47. {
  48. azlog_raw("[", (int)millis(), "ms] ");
  49. azlog_raw(params...);
  50. azlog_raw("\n");
  51. }
  52. // Format a complete debug message
  53. template<typename... Params>
  54. inline void azdbg(Params... params)
  55. {
  56. if (g_azlog_debug)
  57. {
  58. azlog_raw("[", (int)millis(), "ms] DBG ");
  59. azlog_raw(params...);
  60. azlog_raw("\n");
  61. }
  62. }