hal_imu.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef __hal_imu_h__
  2. #define __hal_imu_h__
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. #include <string.h>
  6. #include "sdk_common.h"
  7. #include "SEGGER_RTT.h"
  8. #include "usr_config.h"
  9. #define IMU_BUFF_SIZE (LowPower_Interval * 2/10) //乘以2是为了防止fifo会满,导致fifo溢出。
  10. #define IMU_INIT_TIMES 20 //如果IMU初始化失败,重复初始化的次数
  11. #define IMU_SIGNAL_ON 1 //信号开启
  12. #define IMU_SIGNAL_OFF 0 //信号关闭
  13. //定义状态
  14. enum imu_state
  15. {
  16. STATE_SELF_CHECK_MODE = 1, //鞋子自检模式
  17. STATE_LOW_POWER_MODE, //鞋子低功耗模式
  18. STATE_FULL_POWER_MODE, //鞋子全功率模式
  19. STATE_STANDBY_POWER_MODE //鞋子待机模式
  20. };
  21. //定义事件
  22. enum imu_event
  23. {
  24. EVENT_ENTER_SELF_CHECK_MODE = 1, //开启自检模式
  25. EVENT_ENTER_FULL_POWER_MODE, //开启全功率模式
  26. EVENT_ENTER_LOW_POWER_MODE, //开启低功耗模式
  27. EVENT_ENTER_STANDBY_POWER_MODE //开启待机模式
  28. };
  29. //定义信号
  30. typedef enum
  31. {
  32. SIGNAL_SELF_CHECK = 1, //自检信号
  33. SIGNAL_LOW_POWER, //低功耗信号
  34. SIGNAL_FULL_POWER, //全功率信号
  35. SIGNAL_STANDBY_POWER //待机信号
  36. }imu_signal;
  37. void IMU_Initialize(uint8_t is_host);
  38. void IMU_SetSlaveData(uint8_t* pdat,uint8_t len);
  39. int16_t IMU_Get_Front_Data_Num(void);
  40. void IMU_Get_Front_Data(int16_t index, int16_t *gry, int16_t *acc, int16_t *mag, int32_t *timestamp);
  41. void IMU_Get_Back_Data(int16_t *mag);
  42. /*------------------------------------------------------------------------------------------------------------------------*/
  43. void IMU_SetSignal(imu_signal signal, uint8_t on_off);
  44. uint8_t IMU_IsNoSignal(void);
  45. uint8_t IMU_GetCurrentMode(void);
  46. void IMU_PowerOffProcess(void);
  47. #endif