123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #ifndef __BLL_IMU_H__
- #define __BLL_IMU_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*Includes ------------------------------------------------------*/
- #include <stdbool.h>
- #include <stdint.h>
- #include <string.h>
- #include "sdk_common.h"
- #include "SEGGER_RTT.h"
- #include "usr_config.h"
- #include "fml_imu.h"
- /*Private macro ------------------------------------------------------------------------------------------------------------------------------------*/
- /*STRUCTION ----------------------------------------------------*/
- typedef fml_imu_param_t bll_imu_one_way_param_t;
- typedef fml_imu_data_t bll_imu_data_t;
- typedef fml_imu_data_notify_cb bll_imu_data_notify_cb;
- typedef enum{
-
- BLL_IMU_DATA_NOTIFY_CB_PRIORITY_0 = 0, //优先级 - 0 优先级越大,级别越高
-
- BLL_IMU_DATA_NOTIFY_CB_PRIORITY_1 = 1, //优先级 - 1 优先级越大,级别越高
-
- BLL_IMU_DATA_NOTIFY_CB_PRIORITY_NUM //优先级数量
-
- } BLL_IMU_DATA_NOTIFY_CB_PRIORITY_e;
- typedef enum{
- BLL_IMU_DIR_FRONT = FML_IMU_DIR_FRONT, //方向 - 前脚
-
- BLL_IMU_DIR_BACK = FML_IMU_DIR_BACK, //方向 - 后脚
-
- BLL_IMU_DIR_NUM = FML_IMU_DIR_NUM, //方向 - 方向数量
-
- } BLL_IMU_DIR_e;
- typedef struct
- {
- const bll_imu_one_way_param_t *config_param[FML_IMU_DIR_NUM]; //配置参数
- } bll_imu_param_t;
- typedef enum{
- BLL_IMU_CONFIG_FAIL=0x0,
-
- BLL_IMU_CONFIG_DOING=(1<<6),
-
- BLL_IMU_CONFIG_FINISH=(2<<6),
-
- BLL_IMU_CONFIG_VAILERROR=(3<<6),
-
- } BLL_IMU_CONFIG_RESULT;
- /*API -------------------------------------------------------*/
- /**
- @brief 初始化IMU业务逻辑层
- @param 无
- @return 错误代码 - [out] -1失败,0成功
- */
- int bll_imu_Init(void);
- /**
- @brief 注册IMU要进行配置的参数
- @param param - [in] IMU要进行配置的参数地址
- @return 错误代码 - [out] 0失败,成功返回参数地址
- */
- const bll_imu_param_t* bll_imu_Resume_config_param(const bll_imu_param_t *param);
- /**
- @brief 注销已注册的IMU配置参数并重新配置IMU
- @param param - [in] IMU配置参数的地址
- @return 错误代码 - [out] 0成功,-1地址异常,-2没有该注册的IMU配置参数
- */
- int bll_imu_Resume_unregister_config_param(const bll_imu_param_t* param);
- /**
- @brief 注销已注册的IMU配置参数
- @param param - [in] IMU配置参数的地址
- @return 错误代码 - [out] 0成功,-1地址异常,-2没有该注册的IMU配置参数
- */
- int bll_imu_Resume_unregister_config_param(const bll_imu_param_t* param);
- /**
- @brief 注册IMU要进行配置的参数,并重新设置IMU
- @param param - [in] IMU要进行配置的参数地址
- @return 错误代码 - [out] 0失败,成功返回参数地址
- */
- const bll_imu_param_t* bll_imu_Resume_config_param(const bll_imu_param_t *param);
- /**
- @brief 注册IMU数据通知回调函数
- @param priority - [in] 回调优先级
- @param cb - [in] 回调函数
- @return 错误代码 - [out] -1失败,0成功
- */
- int bll_imu_register_data_notify_callback(BLL_IMU_DATA_NOTIFY_CB_PRIORITY_e priority, bll_imu_data_notify_cb cb);
- /**
- @brief 开始配置。根据已注册IMU参数筛选出最高优先级进行配置,且只配置一次。
- @param 无
- @return 错误代码 - [out] -1失败,0成功
- */
- int bll_imu_start_config(void);
- /**
- @brief 查询IMU配置参数是否准备好
- @param dir - [in] 方向
- @param param - [in] 需要查询的IMU配置参数
- @return 查询结果 - [out] [7:6]是状态,0:失败,1:配置中,2:成功,3:当前最高配置参数小于输入的配置参数或方向不符合; [0:5]是配置步骤.
- */
- uint8_t bll_imu_query_config_param_is_ready(BLL_IMU_DIR_e dir, const bll_imu_param_t *param);
- /**
- @brief 读取当前IMU数据的数量
- @param dir - [in] 方向
- @return 返回当前IMU数据的数量
- */
- int bll_imu_get_data_num(BLL_IMU_DIR_e dir);
- /**
- @brief 获取当前IMU数据
- @param dir - [in] 方向
- @param index - [in] 数据索引
- @param pdata - [out] 返回的IMU数据指针
- @return 错误代码 - [out] -1失败,0成功
- */
- int bll_imu_get_data(BLL_IMU_DIR_e dir, int index, bll_imu_data_t *pdata);
- /**
- @brief 关闭IMU
- @return 错误代码 - [out] -1失败,0成功
- */
- int bll_imu_close(void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|