/******************** (C) COPYRIGHT 2020 VIVO************************************
* File Name          : simulator_location_pdr.h
* Department         : Sensor Algorithm Team
* Current Version    : V1.2
* Author             : ZhangJingrui@vivo.com
* Date of Issued     : 2020.7.4
* Comments           : PDR 输出轨迹平滑的功能函数
********************************************************************************/
#ifndef _PDR_TRACK_SMOOTHING_H_
#define	_PDR_TRACK_SMOOTHING_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "pdr_linearFit.h"
#include "pdr_sensor.h"


#define FITTING_DOCK_SIZE  3

typedef struct DoublePair {
	double x;
	double y;
} DoublePair;

/**----------------------------------------------------------------------
* Function    : trackSmoothingSlideWindowSet
* Description : 使用平滑模块时首先调用的函数，设定轨迹平滑窗口大小。也可以通过此函
*               数重新设定滑动窗口大小。
* Input       : slideWindowSize: 滑动窗口的大小
* Output      : size : 当前滑动窗口的大小，一般大于0,当返回大小为0时说明设置滑动
 *              窗口为0或是内存申请失败。
* Date        : 2020/7/4 yuanlin_rjyb@vivo.com
*---------------------------------------------------------------------**/
int setTrackSmoothWindow(size_t slideWindowSize);

/**----------------------------------------------------------------------
* Function    : trackSmoothing
* Description : 轨迹平滑模块关闭后需要使用此函数释放资源
* Input       : lat: 输入纬度
*               lon: 输入经度
* Output      : outLat: 输出纬度存储变量指针
*               outLon: 输出经度存储变量指针
*               return: 返回处理状态
* Date        : 2020/7/4 yuanlin_rjyb@vivo.com
*---------------------------------------------------------------------**/
int pdr_trackSmooth(double lat, double lon, double *outLat, double *outLon);

/**----------------------------------------------------------------------
* Function    : trackSmoothSlideWindowFree
* Description : 轨迹平滑模块关闭后需要使用此函数释放资源
* Date        : 2020/7/4 yuanlin_rjyb@vivo.com
*---------------------------------------------------------------------**/
int freeTrackSmooth(void);

#ifdef __cplusplus
}
#endif

#endif // !_TRACK_SMOOTHING_MODULE_H_