bll_imu.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #ifndef __BLL_IMU_H__
  2. #define __BLL_IMU_H__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. /*Includes ------------------------------------------------------*/
  7. #include <stdbool.h>
  8. #include <stdint.h>
  9. #include <string.h>
  10. #include "sdk_common.h"
  11. #include "SEGGER_RTT.h"
  12. #include "usr_config.h"
  13. #include "fml_imu.h"
  14. /*Private macro ------------------------------------------------------------------------------------------------------------------------------------*/
  15. /*STRUCTION ----------------------------------------------------*/
  16. typedef fml_imu_param_t bll_imu_one_way_param_t;
  17. typedef fml_imu_data_t bll_imu_data_t;
  18. typedef fml_imu_data_notify_cb bll_imu_data_notify_cb;
  19. typedef enum{
  20. BLL_IMU_DATA_NOTIFY_CB_PRIORITY_0 = 0, //优先级 - 0 优先级越大,级别越高
  21. BLL_IMU_DATA_NOTIFY_CB_PRIORITY_1 = 1, //优先级 - 1 优先级越大,级别越高
  22. BLL_IMU_DATA_NOTIFY_CB_PRIORITY_NUM //优先级数量
  23. } BLL_IMU_DATA_NOTIFY_CB_PRIORITY_e;
  24. typedef enum{
  25. BLL_IMU_DIR_FRONT = FML_IMU_DIR_FRONT, //方向 - 前脚
  26. BLL_IMU_DIR_BACK = FML_IMU_DIR_BACK, //方向 - 后脚
  27. BLL_IMU_DIR_NUM = FML_IMU_DIR_NUM, //方向 - 方向数量
  28. } BLL_IMU_DIR_e;
  29. typedef struct
  30. {
  31. const bll_imu_one_way_param_t *config_param[FML_IMU_DIR_NUM]; //配置参数
  32. } bll_imu_param_t;
  33. typedef enum{
  34. BLL_IMU_CONFIG_FAIL=0x0,
  35. BLL_IMU_CONFIG_DOING=(1<<6),
  36. BLL_IMU_CONFIG_FINISH=(2<<6),
  37. BLL_IMU_CONFIG_VAILERROR=(3<<6),
  38. } BLL_IMU_CONFIG_RESULT;
  39. /*API -------------------------------------------------------*/
  40. /**
  41. @brief 初始化IMU业务逻辑层
  42. @param 无
  43. @return 错误代码 - [out] -1失败,0成功
  44. */
  45. int bll_imu_Init(void);
  46. /**
  47. @brief 注册IMU要进行配置的参数
  48. @param param - [in] IMU要进行配置的参数地址
  49. @return 错误代码 - [out] 0失败,成功返回参数地址
  50. */
  51. const bll_imu_param_t* bll_imu_Resume_config_param(const bll_imu_param_t *param);
  52. /**
  53. @brief 注销已注册的IMU配置参数并重新配置IMU
  54. @param param - [in] IMU配置参数的地址
  55. @return 错误代码 - [out] 0成功,-1地址异常,-2没有该注册的IMU配置参数
  56. */
  57. int bll_imu_Resume_unregister_config_param(const bll_imu_param_t* param);
  58. /**
  59. @brief 注册IMU数据通知回调函数
  60. @param priority - [in] 回调优先级
  61. @param cb - [in] 回调函数
  62. @return 错误代码 - [out] -1失败,0成功
  63. */
  64. int bll_imu_register_data_notify_callback(BLL_IMU_DATA_NOTIFY_CB_PRIORITY_e priority, bll_imu_data_notify_cb cb);
  65. /**
  66. @brief 开始配置。根据已注册IMU参数筛选出最高优先级进行配置,且只配置一次。
  67. @param 无
  68. @return 错误代码 - [out] -1失败,0成功
  69. */
  70. int bll_imu_start_config(void);
  71. /**
  72. @brief 查询IMU配置参数是否准备好
  73. @param dir - [in] 方向
  74. @param param - [in] 需要查询的IMU配置参数
  75. @return 查询结果 - [out] [7:6]是状态,0:失败,1:配置中,2:成功,3:当前最高配置参数小于输入的配置参数或方向不符合; [0:5]是配置步骤.
  76. */
  77. uint8_t bll_imu_query_config_param_is_ready(BLL_IMU_DIR_e dir, const bll_imu_param_t *param);
  78. /**
  79. @brief 读取当前IMU数据的数量
  80. @param dir - [in] 方向
  81. @return 返回当前IMU数据的数量
  82. */
  83. int bll_imu_get_data_num(BLL_IMU_DIR_e dir);
  84. /**
  85. @brief 获取当前IMU数据
  86. @param dir - [in] 方向
  87. @param index - [in] 数据索引
  88. @param pdata - [out] 返回的IMU数据指针
  89. @return 错误代码 - [out] -1失败,0成功
  90. */
  91. int bll_imu_get_data(BLL_IMU_DIR_e dir, int index, bll_imu_data_t *pdata);
  92. /**
  93. @brief 关闭IMU
  94. @return 错误代码 - [out] -1失败,0成功
  95. */
  96. int bll_imu_close(void);
  97. #ifdef __cplusplus
  98. }
  99. #endif
  100. #endif