#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 : 获取计步器版本 * Date : 2020/2/20 *---------------------------------------------------------------------**/ const char* getPedometerLibVersion(void); /**--------------------------------------------------------------------- * Function : initPedometer * Description : PDR 初始化计步器 * Date : 2020/2/20 logzhan *---------------------------------------------------------------------**/ void Pedometer_Init(void); /**--------------------------------------------------------------------- * Function : reinitPedometer * Description : PDR 重新初始化计步器 * Date : 2020/2/20 logzhan *---------------------------------------------------------------------**/ void reinitPedometer(void); /**--------------------------------------------------------------------- * Function : updatePedometer * Description : PDR 计步器的加速度输入, 并通过指针返回用户步数 * Date : 2020/2/1 logzhan *---------------------------------------------------------------------**/ void UpdatePedometer(imu* ss_data, unsigned long* step); void Steps_State_Detect(enumState* state); /**--------------------------------------------------------------------- * Function : detVehicleMode * Description : PDR 检测汽车模式, 如果是检测到汽车模式,那么不计步数 * Date : 2020/2/1 logzhan *---------------------------------------------------------------------**/ void detVehicleMode(double ax, double ay, double az); #endif #ifdef __cplusplus } #endif