io.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef _IO_H
  2. #define _IO_H
  3. #include "esp_common.h"
  4. #include "driver/gpio16.h"
  5. #define STATUS_LED 0
  6. #define SWITCH_A 5
  7. #define SWITCH_B 2
  8. #define LDO_SHUTDOWN 4
  9. #define STATUS_LED_MUX PERIPHS_IO_MUX_GPIO0_U
  10. #define SWITCH_A_MUX PERIPHS_IO_MUX_GPIO5_U
  11. #define SWITCH_B_MUX PERIPHS_IO_MUX_GPIO2_U
  12. #define LDO_SHUTDOWN_MUX PERIPHS_IO_MUX_GPIO4_U
  13. #define STATUS_LED_FUNC FUNC_GPIO0
  14. #define SWITCH_A_FUNC FUNC_GPIO5
  15. #define SWITCH_B_FUNC FUNC_GPIO2
  16. #define LDO_SHUTDOWN_FUNC FUNC_GPIO4
  17. #define DEBOUNCEDELAY 10 // ms
  18. typedef enum {
  19. IMU_NO_INTERRUPT = 0,
  20. IMU_FIFO_FULL,
  21. IMU_FIFO_OVERFLOW,
  22. IMU_MOTION
  23. } IMU_Interrupt_et;
  24. typedef void (* switch_function_t)(uint32_t);
  25. typedef void (* imu_function_t)(IMU_Interrupt_et);
  26. typedef struct {
  27. os_timer_t switch_a_timer;
  28. os_timer_t switch_b_timer;
  29. switch_function_t switch_a_cb;
  30. switch_function_t switch_b_cb;
  31. imu_function_t imu_cb;
  32. uint32_t debounce_delay;
  33. bool debounce_timer;
  34. } IO_config_t;
  35. void ICACHE_FLASH_ATTR IO_InitIO(void);
  36. void ICACHE_FLASH_ATTR IO_Shutdown(void);
  37. void ICACHE_FLASH_ATTR IO_Restart(void);
  38. void ICACHE_FLASH_ATTR IO_DisableIOInterrupts(void);
  39. void ICACHE_FLASH_ATTR IO_EnableIOInterrupts(void);
  40. void ICACHE_FLASH_ATTR IO_SetSwitchCallback(switch_function_t, switch_function_t);
  41. void ICACHE_FLASH_ATTR IO_SetIMUCallback(imu_function_t);
  42. #endif