encoder_interface.c 834 B

12345678910111213141516171819202122232425262728293031323334
  1. #include "interface/encoder_interface.h"
  2. typedef void (* motion_function_t)(void);
  3. typedef struct {
  4. os_timer_t motion_timer;
  5. uint32_t motion_timeout;
  6. motion_function_t motion_cb;
  7. } Encoder_t;
  8. static Encoder_t encoder;
  9. void ICACHE_FLASH_ATTR Encoder_Shutdown(void)
  10. {
  11. Light_Shutdown();
  12. IO_Shutdown();
  13. }
  14. void ICACHE_FLASH_ATTR Encoder_Motion_SetCallback(motion_function_t motion_cb)
  15. {
  16. encoder.motion_cb = motion_cb;
  17. os_timer_setfn(&encoder.motion_timer, (os_timer_func_t *)encoder.motion_cb, NULL);
  18. }
  19. void ICACHE_FLASH_ATTR Encoder_Motion_StartTimer(uint32_t timeout)
  20. {
  21. encoder.motion_timeout = timeout;
  22. os_timer_arm(&encoder.motion_timer, encoder.motion_timeout, false);
  23. }
  24. void ICACHE_FLASH_ATTR Encoder_Motion_StopTimer()
  25. {
  26. os_timer_disarm(&encoder.motion_timer);
  27. }