#ifndef __HAL_SER_IMU_MODE_MANAGE_H__
#define __HAL_SER_IMU_MODE_MANAGE_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 "hal_ser_imu.h"																

/*STRUCTION ----------------------------------------------------*/
typedef enum
{
	HAL_SER_IMU_MODE_MANAGE_IMU_MODE_ON 	= true,																												//模式开启
	
	HAL_SER_IMU_MODE_MANAGE_IMU_MODE_OFF 	= false,																											//模式关闭
	
} HAL_SER_IMU_MODE_MANAGE_IMU_MODE_SWITCH_e;
typedef enum 
{
	HAL_SER_IMU_MODE_MANAGE_STANDBY = 0,																																//待机模式（不穿鞋）
	
	HAL_SER_IMU_MODE_MANAGE_NORMAL,																																			//正常模式（穿鞋）
	
	HAL_SER_IMU_MODE_MANAGE_SELF_CHECK,																																	//自检模式
	
	HAL_SER_IMU_MODE_MANAGE_GAME,																																				//游戏模式
	
	HAL_SER_IMU_MODE_MANAGE_REALSTEP,																																		//实时计步模式
	
	HAL_SER_IMU_MODE_MANAGE_CALIBRATION,																																//校准模式
	
	HAL_SER_IMU_MODE_MANAGE_NUM,																																				//模式数量
	
} HAL_SER_IMU_MODE_MANAGE_e;

/*API -------------------------------------------------------*/
/**
	@brief 		初始化模式管理服务
	@param 		无
	@return 	错误代码					- [out]	-1失败，0成功
*/
int	hal_ser_imu_mode_manage_Init(void);
/**
	@brief 		请求需要的模式
	@param 		mode							-	[in]	需要请求的模式
	@param 		imu_mode_switch		-	[in]	请求的模式开关
	@return 	错误代码					- [out]	-1失败，0成功
*/
int	hal_ser_imu_mode_manage_set_required(HAL_SER_IMU_MODE_MANAGE_e mode, HAL_SER_IMU_MODE_MANAGE_IMU_MODE_SWITCH_e imu_mode_switch);
/**
	@brief 		模式是否准备好
	@return 	错误代码					- [out]	-1失败，0成功
*/
int	hal_ser_imu_mode_manage_get_ready(HAL_SER_IMU_MODE_MANAGE_e mode);
/**
	@brief 		获取当前模式的IMU当前数据数量
	@param 		mode							-	[in]	需要的模式
	@param 		dir 							- [in]	IMU方向 - 前/后脚
	@return 	错误代码					- [out]	返回数据数量
*/
int	hal_ser_imu_mode_manage_get_data_num(SER_IMU_DIR_e dir);
/**
	@brief 		获取当前模式的IMU数据
	@param 		dir 							- [in]	IMU方向 - 前/后脚
	@param 		index 						- [in]	第几组数据
	@param 		pdata 						- [out]	IMU数据
	@return 	错误代码					- [out]	-1失败，0成功
*/
int	hal_ser_imu_mode_manage_get_data(SER_IMU_DIR_e dir, int index, ser_imu_data_t *pdata);

/**
	@brief 		查询当前是否挂起模式
	@return 	错误代码					- [out]	-1 非挂起模式，0 挂起模式
*/
int	hal_ser_imu_mode_IsSuspend(void);






#ifdef __cplusplus
}
#endif

#endif

















