#ifndef __PDR_LOCATION_H__
#define __PDR_LOCATION_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "pdr_base.h"

#define HIST_GPS_NUM          8
#define ACCURACY_THRES        0.6f            // 精度阈值
#define YAW_THRES             10.0f           // Yaw角范围阈值


/**---------------------------------------------------------------------
* Function    : pdr_navSysInit
* Description : PDR导航系统初始化
* Date        : 2020/2/1 
* 
* 
* 
* 
* 
* 
*---------------------------------------------------------------------**/
void NavSys_Init(void);

int pdr_insLocation(imu *ss_data,  KfPara *kf);


/**----------------------------------------------------------------------
* Function    : pdr_noGpsPredict
* Description : 在没有gps信息时预测GPS位置,最多预测10个点
* Date        : 2020/07/08 logzhan
*---------------------------------------------------------------------**/
void pdr_noGpsPredict(KfPara* kf, lct_fs* result, PDR* g_pdr);

/**----------------------------------------------------------------------
* Function    : pdr_nmea2Gnss
* Description : nmea数据结构转gnss数据
* Date        : 2020/07/08 logzhan
*---------------------------------------------------------------------**/
void pdr_nmea2Gnss(lct_nmea* nmea_data, gnss* pgnss);


/**----------------------------------------------------------------------
* Function    : pdr_detectFixMode
* Description : 检测当前PDR处于的模式,如果是车载和静止模式,根据情况选择输出
*               原始GPS或者不输出
* Date        : 2020/07/08 logzhan
*               2020/02/08 logzhan : 修改-1为INVAILD_GPS_YAW,提高
*               代码的可读性
*---------------------------------------------------------------------**/
int pdr_detectFixMode(gnss* pgnss, KfPara* kf, PDR* g_pdr, lct_fs* result);

/**----------------------------------------------------------------------
* Function    : pdr_getGpsHeading
* Description : 获取GPS偏航角
* Date        : 2020/07/08 logzhan
*---------------------------------------------------------------------**/
double pdr_getGpsHeading(gnss* pgnss);

/**----------------------------------------------------------------------
* Function    : calPdrHeadingOffset
* Description : 利用GPS信号较好时的偏航角修正磁力计计算方向键的偏移
* Date        : 2020/07/08 logzhan
*---------------------------------------------------------------------**/
void calPdrHeadingOffset(lct_nmea* nmea_data, PDR* p_pdr);

/**---------------------------------------------------------------------
* Function    : pdr_resetSysStatus
* Description : PDS 重设系统状态
* Date        : 2020/2/1 logzhan
*---------------------------------------------------------------------**/
void pdr_resetSysStatus(KfPara* kf);

/**----------------------------------------------------------------------
* Function    : pdr_gnssInsLocation
* Description : PDR GPS融合INS惯性定位
* Date        : 2021/01/29 logzhan
*---------------------------------------------------------------------**/
int pdr_gnssInsLocation(lct_nmea* nmea_data, KfPara* kf, lct_fs* result);

/**---------------------------------------------------------------------
* Function    : pdr_initGnssInfo
* Description : PDS GNSS定位信息初始化
* Date        : 2020/2/1 logzhan
*---------------------------------------------------------------------**/
void  pdr_initGnssInfo(void);

void  pdr_gnssUpdate(gnss* gps, lct_nmea* nmea);


#ifdef __cplusplus
}
#endif

#endif