/*******************************************************************************/ /** ****************************************************************************** * @file EPMotion.h * @author ycwang@miramems.com * @version V2.0 * @date 2019-01-31 * @brief ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, MiraMEMS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * */ /*******************************************************************************/ #ifndef __EPMOTION_h #define __EPMOTION_h /******************************************************************************* Includes ********************************************************************************/ #include "mira_std.h" /******************************************************************************* Macro definitions - Algorithm Build Options ********************************************************************************/ #define D_TAP_ENABLE 1 #define M_TAP_ENABLE 1 #define STEP_ENABLE 1 /******************************************************************************* Typedef definitions ********************************************************************************/ enum { DEBUG_ERR = 1, DEBUG_MSG = 1 << 1, DEBUG_DATA = 1 << 2, DEBUG_RAW = 1 << 3, }; typedef enum { PIN_NONE, PIN_ONE, PIN_TWO } tPIN_NUM; typedef enum { PIN_LEVEL_NONE, PIN_LEVEL_LOW, PIN_LEVEL_HIGH } tPIN_LEVEL; typedef enum { NO_LATCHED, LATCHED_250MS, LATCHED_500MS, LATCHED_1S, LATCHED_2S, LATCHED_4S, LATCHED_8S, LATCHED_1MS = 10, LATCHED_2MS, LATCHED_25MS, LATCHED_50MS, LATCHED_100MS, LATCHED } tLATCH_MODE; typedef enum { TEVENT_NONE, TEVENT_TAP_NOTIFY, } EPMotion_EVENT; typedef enum { NONE_T, D_TAP_T, M_TAP_T, STEP_T, } tAlgorithm; typedef enum { DISABLE_T, ENABLE_T } tSwitchCmd; struct tInt_Pin_Config { tPIN_NUM num; tPIN_LEVEL level; }; struct tREG_Func { s8_m(*read)(u8_m addr, u8_m *data_m, u8_m len); s8_m(*write)(u8_m addr, u8_m data_m); }; struct tDEBUG_Func { s32_m(*myprintf)(const char *fmt, ...); }; struct EPMotion_op_s { struct tInt_Pin_Config pin; s8_m(*mir3da_event_handle)(EPMotion_EVENT event, u8_m data_m); struct tREG_Func reg; struct tDEBUG_Func debug; }; /******************************************************************************* Global variables and functions ********************************************************************************/ /******************************************************************************* * Function Name: EPMotion_Init * Description : This function initializes the EPMotion. * Arguments : EPMotion_op_s *ops * Return Value : 0: OK; -1: Type Error; -2: OP Error; -3: Chip Error ********************************************************************************/ s8_m EPMotion_Init(struct EPMotion_op_s *ops); /******************************************************************************* * Function Name: EPMotion_Tap_Set_Parma * Description : This function sets tap parmas. * Arguments : * threshold - set interrupt threshold 0~31 ,(threshold*125)mg * default is 21(2625mg) * latch_mode - set interrupt latched mode ,(tLATCH_MODE) * default is NO_LATCHED * duration - set interrupt duration 0~7(50~700)ms, * default is 0(50ms) * Return Value : None ********************************************************************************/ void EPMotion_Tap_Set_Parma(u8_m threshold, tLATCH_MODE latch_mode, u8_m duration); #if D_TAP_ENABLE /******************************************************************************* * Function Name: EPMotion_Tap_Set_Filter * Description : This function sets filter. * Arguments : * level - set level of checking data 1~3 ,default is 1 * ths - set the value of filter ,(ths*1)mg * Return Value : None ********************************************************************************/ void EPMotion_D_Tap_Set_Filter(u8_m level, u16_m ths); #endif #if M_TAP_ENABLE /******************************************************************************* * Function Name: EPMotion_M_Tap_Set_Dur * Description : This function sets M tap duration. * Arguments : * m_dur_int - set interrupt duration 20~70,(m_dur_int*10)ms, * default is 50(500ms) * m_dur_event - set m tap event duration 20~6000,(m_dur_event*10)ms, * default is 100(1000ms) *EPMotion_M_Tap_Set_Dur第一个参数是设置两次敲击间隔的最大时间 第二参数是连续多次敲击总的有效时间 * Return Value : None ********************************************************************************/ void EPMotion_M_Tap_Set_Dur(u8_m m_dur_int, u16_m m_dur_event); #endif /******************************************************************************* * Function Name: EPMotion_Reset_Tap_INT * Description : This function reset tap INT. * Arguments : None * Return Value : None ********************************************************************************/ void EPMotion_Reset_Tap_INT(void); /******************************************************************************* * Function Name: EPMotion_Resume_Tap_INT * Description : This function resume tap INT. * Arguments : None * Return Value : None ********************************************************************************/ void EPMotion_Resume_Tap_INT(void); #if STEP_ENABLE /******************************************************************************* * Function Name: EPMotion_Reset_Step * Description : This function reset step counter. * Arguments : None * Return Value : None ********************************************************************************/ void EPMotion_Reset_Step(void); /******************************************************************************* * Function Name: EPMotion_Get_Step * Description : This function gets the step. * Arguments : None * Return Value : step ********************************************************************************/ u16_m EPMotion_Get_Step(void); #endif /******************************************************************************* * Function Name: EPMotion_Control * Description : This function initializes the xMotion. * Arguments : name - select which algorithm to control cmd - enable/disable * Return Value : 0->Success, -1->Init Fail£¬-2£¬No Supported ********************************************************************************/ s8_m EPMotion_Control(tAlgorithm name, tSwitchCmd cmd); /******************************************************************************* * Function Name: EPMotion_Process_Data * Description : This function runs the EPMotion Algorithm. * Arguments : None * Return Value : None ********************************************************************************/ void EPMotion_Process_Data(s8_m int_active); /******************************************************************************* * Function Name: EPMotion_Chip_Read_XYZ * Description : This function reads the chip xyz. * Arguments : x, y, z - acc data * Return Value : 0: OK; -1: Error ********************************************************************************/ s8_m EPMotion_Chip_Read_XYZ(s16_m *x, s16_m *y, s16_m *z); /******************************************************************************* * Function Name: EPMotion_Get_Version * Description : This function gets EPMotion version. * Arguments : ver - EPMotion version Num * Return Value : None ********************************************************************************/ void EPMotion_Get_Version(u8_m *ver); /******************************************************************************* * Function Name: EPMotion_Chip_Power_On * Description : This function enables the chip. * Arguments : None * Return Value : 0: OK; -1: Error ********************************************************************************/ s8_m EPMotion_Chip_Power_On(void); /******************************************************************************* * Function Name: EPMotion_Chip_Power_Off * Description : This function disables on the chip. * Arguments : None * Return Value : 0: OK; -1: Error ********************************************************************************/ s8_m EPMotion_Chip_Power_Off(void); /******************************************************************************* * Function Name: EPMotion_Set_Debug_level * Description : This function sets the debug log level * Arguments : Log level * Return Value : None ********************************************************************************/ void EPMotion_Set_Debug_level(u8_m level); #endif