#ifndef __BLL_IMU_H__ #define __BLL_IMU_H__ #ifdef __cplusplus extern "C" { #endif /*Includes ------------------------------------------------------*/ #include #include #include #include "sdk_common.h" #include "SEGGER_RTT.h" #include "usr_config.h" #include "fml_imu.h" /*Private macro ------------------------------------------------------------------------------------------------------------------------------------*/ /*STRUCTION ----------------------------------------------------*/ 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 { fml_imu_param_t config_param[FML_IMU_DIR_NUM]; //配置参数 } bll_imu_param_t; typedef fml_imu_data_t bll_imu_data_t; typedef fml_imu_data_notify_cb bll_imu_data_notify_cb; /*API -------------------------------------------------------*/ /** @brief 初始化IMU业务逻辑层 @param 无 @return 错误代码 - [out] -1失败,0成功 */ int bll_imu_Init(void); /** @brief 注册IMU要进行配置的参数 @param param - [in] IMU要进行配置的参数 @return 返回该配置参数的句柄,-1返回失败,0~19返回成功。 */ int bll_imu_register_config_param(const bll_imu_param_t *param); /** @brief 注销已注册的IMU配置参数 @param handle - [in] IMU配置参数的句柄 @return 错误代码 - [out] -1失败,0成功 */ int bll_imu_unregister_config_param(int handle); /** @brief 开始配置。根据已注册IMU参数筛选出最高优先级进行配置,且只配置一次。 @param 无 @return 错误代码 - [out] -1失败,0成功 */ int bll_imu_start_config(void); /** @brief 查询IMU配置参数是否准备好 @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_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数据通知回调函数 @param priority - [in] 回调优先级,最高是1,最低是0 @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 @return 错误代码 - [out] -1失败,0成功 */ int bll_imu_close(void); #ifdef __cplusplus } #endif #endif