common.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #pragma once
  2. #define _GNU_SOURCE 1
  3. /* Standard C headers */
  4. #include <inttypes.h>
  5. #include <stdarg.h>
  6. #include <stdbool.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. /* Arduino headers */
  11. #include <Arduino.h>
  12. #include <FreeRTOS.h>
  13. /* ESP-IDF headers */
  14. #include <sdkconfig.h>
  15. #include <esp_err.h>
  16. #include <esp_event.h>
  17. #include <esp_log.h>
  18. #ifdef __cplusplus
  19. # define extern_c extern "C"
  20. # define EXTERN_C(...) extern "C" { __VA_ARGS__ }
  21. #else
  22. # define extern_c extern
  23. # define EXTERN_C(...) __VA_ARGS__
  24. #endif
  25. #define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
  26. #ifndef MODULE
  27. # define MODULE ""
  28. #endif
  29. #if DEBUG
  30. # define CMSG(...) printf(__VA_ARGS__)
  31. #else
  32. # define CMSG(...) ((void)0)
  33. #endif
  34. #define MSG(...) CMSG(MODULE ": " __VA_ARGS__)
  35. /*
  36. * Common types for callbacks
  37. */
  38. typedef void *token_t;
  39. typedef int (*read_func_t)(token_t token, void *buf, size_t len);
  40. typedef int (*write_func_t)(token_t token, const void *buf, size_t len);
  41. /*
  42. * Sleep thread...
  43. */
  44. static inline void suspend(void)
  45. {
  46. vTaskSuspend(NULL);
  47. }
  48. /*
  49. * Reboot system
  50. */
  51. extern_c void reboot_now(void);
  52. extern_c int reboot_delayed(void);
  53. /*
  54. * Board version
  55. */
  56. extern_c uint8_t max80_board_version;