#ifndef __DETECTOR_H #define __DETECTOR_H #ifdef __cplusplus extern "C" { #endif /* Header File Including ------------------------------------------------------------------------ */ #include #include #include #include "pdr_base.h" #include "buffer.h" #include "AHRS.h" /* Macro Declaration ---------------------------------------------------------------------------- */ #define DETECTOR_NO_ERROR 0 #define DETECTOR_OUT_OF_MEMORY 1 #define MAG_BUF_LEN 256 #define MAG_LEN 6 /* Struct Declaration --------------------------------------------------------------------------- */ typedef void (*DETECTOR_update_callback)(Detector_t *detector); /* Global Variable Declaration ------------------------------------------------------------------ */ extern BUFFER_SHORT g_acc_frq_buf[3]; extern BUFFER_SHORT g_acc_amp_buf[3]; extern BUFFER_SHORT g_gyr_frq_buf[3]; extern BUFFER_SHORT g_gyr_amp_buf[3]; /* Function Declaration ------------------------------------------------------------------------- */ /**--------------------------------------------------------------------- * Function : GetDetectorObj * Description : 获取PDR运动分类器对象 * Date : 2020/02/16 logzhan *---------------------------------------------------------------------**/ Detector_t *GetDetectorObj(void); /**--------------------------------------------------------------------- * Function : Detector_Init * Description : 初始化运动分类器,识别用户处于哪一种运动模式 * Date : 2022/09/23 logzhan *---------------------------------------------------------------------**/ Detector_t* Detector_Init(void); /**--------------------------------------------------------------------- * Function : DetectorReset * Description : 重置PDR运动分类器 * Date : 2022/09/23 logzhan *---------------------------------------------------------------------**/ void DetectorReset(void); /**--------------------------------------------------------------------- * Function : DetectMotionType * Description : pdr运动类型检测 * Date : 2020/7/20 *---------------------------------------------------------------------**/ int DetectMotionType(void); /**--------------------------------------------------------------------- * Function : predict * Description : 判断手机携带方式(静止、手持、摆手等) * Date : 2020/7/20 logzhan *---------------------------------------------------------------------**/ int pdr_detectorPredict(float* feature); void mag_calibration(IMU *imu); void mag_m_trans(float a[MAG_BUF_LEN][3], float r[3][MAG_BUF_LEN]); void mag_min(float a[MAG_BUF_LEN], float *mag_min); void mag_max(float a[MAG_BUF_LEN], float *mag_max); void mag_rand(float r[6]); /**--------------------------------------------------------------------- * Function : DetectorUpdateIMU * Description : 更新运动类型检测器的imu信息,如果到达一定的时间间隔,则会检测 * 用户的运动类型 * Date : 2022/09/23 *---------------------------------------------------------------------**/ void DetectorUpdateIMU(IMU_t* imu); #ifdef __cplusplus } #endif #endif