2022-09-15 16:35:25 +08:00
# pragma once
/******************** (C) COPYRIGHT 2017 Geek************************************
* File Name : Steps_Algorithm . h
* Department : Sensor Team
* Current Version : V1 .0
* Author : Xiaoyong Li
* Date of Issued : 2017.05 .8
* Comments : step counter algorithm added
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR REFERENCE OR
* EDUCATION . AS A RESULT , Geek SOFTWARE SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT , INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH SOFTWARE AND / OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Release Log
*
* Comments : step counter algorithm released
* Version Number : V1 .0
* Author : Xiaoyong Li
* Date of Issued : 2017.05 .8
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifdef __cplusplus
extern " C " {
# endif
# ifndef _STEPS_ALGORITHM_H_
# define _STEPS_ALGORITHM_H_
# include "pdr_sensor.h"
# define ACC_SAMPLE_RATE_100HZ
//#define ACC_SAMPLE_RATE_25HZ
# ifdef ACC_SAMPLE_RATE_25HZ
# define DownResampleTimes 1
# define ACC_SAMPLE_TIME 40
# define SAMPLE_TIME_MIN 36
# else
# define DOWN_SAMPLE_TIMES 4
# define ACC_SAMPLE_TIME 10 //origin acc sampleFrequency is 100 hz
# define GYRO_SAMPLE_TIME 10
# define SAMPLE_TIME_MIN 9
# endif
# define SampleFrequency 25
# define SampleFrequencyFour 100
# define SampleFrequencydouble 50
# define SampleFrequencyOPF (37.5l)
# define SampleFrequencySix 150
# define AvergeFilterOrder 5
# define AxisNumber 4
# define FiltDifNumber 4
# define AxisNumberFiltOut 16 //(AxisNumber * FiltDifNumber)
# define AxisNumberStepSaveState 20 //(AxisNumberFiltOut + FiltDifNumber)
# define AccelerationNumber 39
# define ORI_ACC_SAMPLE_RATE 100 //origin acc sampleFrequency is 100 hz
# define WIN_LENGTH_AVE_DEVI 50 //
# define PI2A (180 / 3.1415926)
//#define NSTOS 1000000000
# define MS2S 1000
# define ACC_INSPECT_TIMEWIDTH 200 //origin acc sampleFrequency is 100 hz
# define WINDOW_LENGTH_MIN2MAX (ACC_INSPECT_TIMEWIDTH / 2 - 1) //25hz , 1 second
//#define WINDOW_LENGTH_IN_VEHICLE
# define STARTSTEPS 8
/*#define PLATFORM_ANDROID_QCOM_AP*/
/*#define PLATFORM_ANDROID_QCOM_ADSP*/
# define PLATFORM_PC_WINDOWS
//#define PLATFORM_PC_LINUX
# if defined PLATFORM_ANDROID_QCOM_ADSP
# define STEPLIB_MEMSET SNS_OS_MEMSET
# if 1
# define SAM_STEP_LIB_NAME "steplib"
# define SAM_STEP_LIB_MSG_0(msg) UMSG(MSG_SSID_SNS,DBG_ERROR_PRIO, SAM_STEP_LIB_NAME" - "msg)
# define SAM_STEP_LIB_MSG_1(msg,p1) UMSG_1(MSG_SSID_SNS,DBG_ERROR_PRIO, SAM_STEP_LIB_NAME" - "msg,p1)
# define SAM_STEP_LIB_MSG_2(msg,p1,p2) UMSG_2(MSG_SSID_SNS,DBG_ERROR_PRIO, SAM_STEP_LIB_NAME" - "msg,p1,p2)
# define SAM_STEP_LIB_MSG_3(msg,p1,p2,p3) UMSG_3(MSG_SSID_SNS,DBG_ERROR_PRIO, SAM_STEP_LIB_NAME" - "msg,p1,p2,p3)
# define SAM_STEP_LIB_MSG_4(msg,p1,p2,p3,p4) UMSG_4(MSG_SSID_SNS,DBG_ERROR_PRIO, SAM_STEP_LIB_NAME" - "msg,p1,p2,p3,p4)
# else
# define SAM_STEP_LIB_MSG_0(msg)
# define SAM_STEP_LIB_MSG_1(msg,p1)
# define SAM_STEP_LIB_MSG_2(msg,p1,p2)
# define SAM_STEP_LIB_MSG_3(msg,p1,p2,p3)
# define SAM_STEP_LIB_MSG_4(msg,p1,p2,p3,p4)
# endif
# elif defined PLATFORM_ANDROID_QCOM_AP || defined PLATFORM_PC_WINDOWS || defined PLATFORM_PC_LINUX || defined PLATFORM_ANDROID_MTK || defined PLATFORM_ANDROID_QCOM_SLPI845
# define STEPLIB_MEMSET memset
# endif
# if defined PLATFORM_ANDROID_MTK
# define ABS_INT abs_value
# else
# define ABS_INT abs
# endif
typedef struct {
unsigned long walkSteps ;
} stepsRe ;
typedef struct {
double walk ;
double walkRealTime ;
double nD ;
} stepsDfine ;
typedef enum {
nonSteps = 0 ,
walk ,
} enumState ;
typedef struct {
unsigned char sign ;
enumState state ;
unsigned long long stateStartTime ;
unsigned long long stepsStartTime ;
} stateNowDfine ;
typedef struct {
enumState state ;
unsigned long long startTimeStamp ;
} stateDfine ;
typedef struct {
int flag ;
double ax ;
double ay ;
double az ;
} downSample ;
/**---------------------------------------------------------------------
* Function : getPedometerLibVersion
* Description : <EFBFBD> <EFBFBD> ȡ <EFBFBD> Ʋ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 汾
* Date : 2020 / 2 / 20
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * */
const char * getPedometerLibVersion ( void ) ;
/**---------------------------------------------------------------------
* Function : initPedometer
* Description : PDR <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD> <EFBFBD> Ʋ <EFBFBD> <EFBFBD> <EFBFBD>
* Date : 2020 / 2 / 20 logzhan
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * */
void Pedometer_Init ( void ) ;
/**---------------------------------------------------------------------
* Function : reinitPedometer
* Description : PDR <EFBFBD> <EFBFBD> <EFBFBD> ³ <EFBFBD> ʼ <EFBFBD> <EFBFBD> <EFBFBD> Ʋ <EFBFBD> <EFBFBD> <EFBFBD>
* Date : 2020 / 2 / 20 logzhan
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * */
void reinitPedometer ( void ) ;
/**---------------------------------------------------------------------
* Function : updatePedometer
* Description : PDR <EFBFBD> Ʋ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ <EFBFBD> <EFBFBD> ٶ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <EFBFBD> <EFBFBD> ͨ <EFBFBD> <EFBFBD> ָ <EFBFBD> 뷵 <EFBFBD> <EFBFBD> <EFBFBD> û <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* Date : 2020 / 2 / 1 logzhan
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * */
2022-09-19 23:05:00 +08:00
void UpdatePedometer ( imu * ss_data , unsigned long * step ) ;
2022-09-15 16:35:25 +08:00
void Steps_State_Detect ( enumState * state ) ;
/**---------------------------------------------------------------------
* Function : detVehicleMode
* Description : PDR <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ģ ʽ , <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ǽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ģ ʽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ô <EFBFBD> <EFBFBD> <EFBFBD> Ʋ <EFBFBD> <EFBFBD> <EFBFBD>
* Date : 2020 / 2 / 1 logzhan
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * */
void detVehicleMode ( double ax , double ay , double az ) ;
# endif
# ifdef __cplusplus
}
# endif