bll_imu.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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 enum{
  17. BLL_IMU_DATA_NOTIFY_CB_PRIORITY_0 = 0, //优先级 - 0 优先级越大,级别越高
  18. BLL_IMU_DATA_NOTIFY_CB_PRIORITY_1 = 1, //优先级 - 1 优先级越大,级别越高
  19. BLL_IMU_DATA_NOTIFY_CB_PRIORITY_NUM //优先级数量
  20. } BLL_IMU_DATA_NOTIFY_CB_PRIORITY_e;
  21. typedef enum{
  22. BLL_IMU_DIR_FRONT = FML_IMU_DIR_FRONT, //方向 - 前脚
  23. BLL_IMU_DIR_BACK = FML_IMU_DIR_BACK, //方向 - 后脚
  24. BLL_IMU_DIR_NUM = FML_IMU_DIR_NUM, //方向 - 方向数量
  25. } BLL_IMU_DIR_e;
  26. typedef struct
  27. {
  28. fml_imu_param_t config_param[FML_IMU_DIR_NUM]; //配置参数
  29. } bll_imu_param_t;
  30. typedef fml_imu_data_t bll_imu_data_t;
  31. typedef fml_imu_data_notify_cb bll_imu_data_notify_cb;
  32. /*API -------------------------------------------------------*/
  33. /**
  34. @brief 初始化IMU业务逻辑层
  35. @param 无
  36. @return 错误代码 - [out] -1失败,0成功
  37. */
  38. int bll_imu_Init(void);
  39. /**
  40. @brief 注册IMU要进行配置的参数
  41. @param param - [in] IMU要进行配置的参数
  42. @return 返回该配置参数的句柄,-1返回失败,0~19返回成功。
  43. */
  44. int bll_imu_register_config_param(const bll_imu_param_t *param);
  45. /**
  46. @brief 注销已注册的IMU配置参数
  47. @param handle - [in] IMU配置参数的句柄
  48. @return 错误代码 - [out] -1失败,0成功
  49. */
  50. int bll_imu_unregister_config_param(int handle);
  51. /**
  52. @brief 开始配置。根据已注册IMU参数筛选出最高优先级进行配置,且只配置一次。
  53. @param 无
  54. @return 错误代码 - [out] -1失败,0成功
  55. */
  56. int bll_imu_start_config(void);
  57. /**
  58. @brief 查询IMU配置参数是否准备好
  59. @param param - [in] 需要查询的IMU配置参数
  60. @return 查询结果 - [out] [7:6]是状态,0:失败,1:配置中,2:成功,3:当前最高配置参数与输入的配置参数不匹配; [0:5]是配置步骤.
  61. */
  62. uint8_t bll_imu_query_config_param_is_ready(bll_imu_param_t *param);
  63. /**
  64. @brief 读取当前IMU数据的数量
  65. @param dir - [in] 方向
  66. @return 返回当前IMU数据的数量
  67. */
  68. int bll_imu_get_data_num(BLL_IMU_DIR_e dir);
  69. /**
  70. @brief 获取当前IMU数据
  71. @param dir - [in] 方向
  72. @param index - [in] 数据索引
  73. @param pdata - [out] 返回的IMU数据指针
  74. @return 错误代码 - [out] -1失败,0成功
  75. */
  76. int bll_imu_get_data(BLL_IMU_DIR_e dir, int index, bll_imu_data_t *pdata);
  77. /**
  78. @brief 注册IMU数据通知回调函数
  79. @param priority - [in] 回调优先级,最高是1,最低是0
  80. @param cb - [in] 回调函数
  81. @return 错误代码 - [out] -1失败,0成功
  82. */
  83. int bll_imu_register_data_notify_callback(BLL_IMU_DATA_NOTIFY_CB_PRIORITY_e priority, bll_imu_data_notify_cb cb);
  84. /**
  85. @brief 关闭IMU
  86. @return 错误代码 - [out] -1失败,0成功
  87. */
  88. int bll_imu_close(void);
  89. #ifdef __cplusplus
  90. }
  91. #endif
  92. #endif