bll_imu.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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_FINISH = 0,
  35. BLL_IMU_CONFIG_DOING,
  36. BLL_IMU_CONFIG_VAILERROR,
  37. BLL_IMU_CONFIG_FAIL_FRONT_SIX_AXIS,
  38. BLL_IMU_CONFIG_FAIL_FRONT_MAG,
  39. BLL_IMU_CONFIG_FAIL_BACK_MAG,
  40. } BLL_IMU_CONFIG_RESULT;
  41. /*API -------------------------------------------------------*/
  42. /**
  43. @brief 初始化IMU业务逻辑层
  44. @param 无
  45. @return 错误代码 - [out] -1失败,0成功
  46. */
  47. int bll_imu_Init(void);
  48. /**
  49. @brief 注册IMU要进行配置的参数
  50. @param param - [in] IMU要进行配置的参数地址
  51. @return 错误代码 - [out] 0失败,成功返回参数地址
  52. */
  53. const bll_imu_param_t* bll_imu_Resume_config_param(const bll_imu_param_t *param);
  54. /**
  55. @brief 注销已注册的IMU配置参数并重新配置IMU
  56. @param param - [in] IMU配置参数的地址
  57. @return 错误代码 - [out] 0成功,-1地址异常,-2没有该注册的IMU配置参数
  58. */
  59. int bll_imu_Resume_unregister_config_param(const bll_imu_param_t* param);
  60. /**
  61. @brief 注册IMU数据通知回调函数
  62. @param priority - [in] 回调优先级
  63. @param cb - [in] 回调函数
  64. @return 错误代码 - [out] -1失败,0成功
  65. */
  66. int bll_imu_register_data_notify_callback(BLL_IMU_DATA_NOTIFY_CB_PRIORITY_e priority, bll_imu_data_notify_cb cb);
  67. /**
  68. @brief 开始配置。根据已注册IMU参数筛选出最高优先级进行配置,且只配置一次。
  69. @param 无
  70. @return 错误代码 - [out] -1失败,0成功
  71. */
  72. int bll_imu_start_config(void);
  73. /**
  74. @brief 查询IMU配置参数是否准备好
  75. @param dir - [in] 方向
  76. @param param - [in] 需要查询的IMU配置参数
  77. @return 查询结果 - [out] BLL_IMU_CONFIG_RESULT
  78. */
  79. BLL_IMU_CONFIG_RESULT bll_imu_query_config_param_is_ready(BLL_IMU_DIR_e dir, const bll_imu_param_t *param);
  80. /**
  81. @brief 读取当前IMU数据的数量
  82. @param dir - [in] 方向
  83. @return 返回当前IMU数据的数量
  84. */
  85. int bll_imu_get_data_num(BLL_IMU_DIR_e dir);
  86. /**
  87. @brief 获取当前IMU数据
  88. @param dir - [in] 方向
  89. @param index - [in] 数据索引
  90. @param pdata - [out] 返回的IMU数据指针
  91. @return 错误代码 - [out] -1失败,0成功
  92. */
  93. int bll_imu_get_data(BLL_IMU_DIR_e dir, int index, bll_imu_data_t *pdata);
  94. /**
  95. @brief 关闭IMU
  96. @return 错误代码 - [out] -1失败,0成功
  97. */
  98. int bll_imu_close(void);
  99. #ifdef __cplusplus
  100. }
  101. #endif
  102. #endif