log.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include "log.h"
  2. #include <stm32wbxx_hal.h>
  3. #include "check.h"
  4. typedef struct {
  5. FuriLogLevel log_level;
  6. FuriLogPrint print;
  7. FuriLogVPrint vprint;
  8. FuriLogTimestamp timetamp;
  9. } FuriLogParams;
  10. static FuriLogParams furi_log;
  11. void furi_log_init() {
  12. // Set default logging parameters
  13. furi_log.log_level = FURI_LOG_LEVEL;
  14. furi_log.print = printf;
  15. furi_log.vprint = vprintf;
  16. furi_log.timetamp = HAL_GetTick;
  17. }
  18. void furi_log_print(FuriLogLevel level, const char* format, ...) {
  19. va_list args;
  20. va_start(args, format);
  21. if(level <= furi_log.log_level) {
  22. furi_log.print("%lu ", furi_log.timetamp());
  23. furi_log.vprint(format, args);
  24. }
  25. va_end(args);
  26. }
  27. void furi_log_set_level(FuriLogLevel level) {
  28. furi_log.log_level = level;
  29. }
  30. FuriLogLevel furi_log_get_level(void) {
  31. return furi_log.log_level;
  32. }
  33. void furi_log_set_print(FuriLogPrint print, FuriLogVPrint vprint) {
  34. furi_assert(print);
  35. furi_assert(vprint);
  36. furi_log.print = print;
  37. furi_log.vprint = vprint;
  38. }
  39. void furi_log_set_timestamp(FuriLogTimestamp timestamp) {
  40. furi_assert(timestamp);
  41. furi_log.timetamp = timestamp;
  42. }