encoder_interface.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include "interface/encoder_interface.h"
  2. typedef void (* motion_function_t)(void);
  3. typedef void (* battery_function_t)(void);
  4. typedef struct {
  5. os_timer_t motion_timer;
  6. uint32_t motion_timeout;
  7. motion_function_t motion_cb;
  8. uint16_t vcell;
  9. uint16_t soc;
  10. os_timer_t battery_timer;
  11. uint32_t battery_timeout;
  12. battery_function_t battery_cb;
  13. } Encoder_t;
  14. //static Encoder_t encoder;
  15. void ICACHE_FLASH_ATTR Encoder_Shutdown(void)
  16. {
  17. Light_Shutdown();
  18. IO_Shutdown();
  19. system_deep_sleep(0);
  20. }
  21. void ICACHE_FLASH_ATTR Encoder_Factory_Reset(void)
  22. {
  23. system_restore();
  24. }
  25. void ICACHE_FLASH_ATTR Encoder_Restart(void)
  26. {
  27. Light_Restart();
  28. system_restart();
  29. }
  30. /* Motion Functions */
  31. // void ICACHE_FLASH_ATTR Encoder_MotionSetCallback(motion_function_t motion_cb)
  32. // {
  33. // encoder.motion_cb = motion_cb;
  34. // os_timer_setfn(&encoder.motion_timer, (os_timer_func_t *)encoder.motion_cb, NULL);
  35. // }
  36. // void ICACHE_FLASH_ATTR Encoder_MotionStartTimer(uint32_t timeout)
  37. // {
  38. // encoder.motion_timeout = timeout;
  39. // os_timer_arm(&encoder.motion_timer, encoder.motion_timeout, false);
  40. // }
  41. // void ICACHE_FLASH_ATTR Encoder_MotionStopTimer()
  42. // {
  43. // os_timer_disarm(&encoder.motion_timer);
  44. // }
  45. /* Battery Monitor Functions */
  46. #define VOLTAGE_CUTOFF 2800 // v_cutoff = 3.5V / 1.25mV
  47. // static void ICACHE_FLASH_ATTR encoder_battery_monitor_cb(void)
  48. // {
  49. // // measure battery voltage and store
  50. // //LSM6DS3_Enable_I2C_Bridge(true);
  51. // encoder.vcell = max17043_getVoltage();
  52. // encoder.soc = max17043_getSOC();
  53. // if (encoder.battery_cb != NULL)
  54. // encoder.battery_cb();
  55. // if (encoder.vcell < VOLTAGE_CUTOFF)
  56. // Encoder_Shutdown();
  57. // }
  58. // void ICACHE_FLASH_ATTR Encoder_SetBatteryFailureCallback(battery_function_t function)
  59. // {
  60. // encoder.battery_cb = function;
  61. // }
  62. // void ICACHE_FLASH_ATTR Encoder_StartBatteryMonitor(uint32_t battery_monitor_rate)
  63. // {
  64. // encoder.battery_timeout = battery_monitor_rate;
  65. // os_timer_disarm(&encoder.battery_timer);
  66. // os_timer_setfn(&encoder.battery_timer, (os_timer_func_t *)encoder.battery_cb, NULL);
  67. // os_timer_arm(&encoder.battery_timer, encoder.battery_timeout, true);
  68. // }
  69. // void ICACHE_FLASH_ATTR Encoder_StopBatteryMonitor(void)
  70. // {
  71. // os_timer_disarm(&encoder.battery_timer);
  72. // }
  73. // uint16_t ICACHE_FLASH_ATTR Encoder_GetVoltage(void)
  74. // {
  75. // return encoder.vcell;
  76. // }
  77. // uint16_t ICACHE_FLASH_ATTR Encoder_GetSOC(void)
  78. // {
  79. // return encoder.soc;
  80. // }