#ifndef IVPARK_SIMPLE_H
#define IVPARK_SIMPLE_H

#include "ivif_park.h"


#include "gps_type.h"

class ivpark_simple : public ivif_park
{
public:
    ivpark_simple();

public:
    virtual bool IsBocheEnable(double fLon, double fLat, double fHeading);

    virtual int GetBocheDecision(double fLon,double fLat,double fHeading,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate,bool bbocheMode);

private:
    iv::GPS_INS maimgps;

    VehState mlastvehstate;

    double mCircleWheel = 0;

private:

/*
    垂直泊车过程:
    直倒-圆弧倒车-直倒-抵达

    侧方泊车过程:
    直倒-第一段圆弧倒车-直倒-第二段圆弧倒车-直倒-抵达
*/

    void reversingcarFun(iv::GPS_INS nowgps,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate);  //直倒
    void reverseCircleFun(iv::GPS_INS nowgps,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate);// 圆弧
    void reverseDirectFun(iv::GPS_INS nowgps,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate); // 直倒
    void reverseArrFun(iv::GPS_INS nowgps,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate); // 抵达

    void dRever0Fun(iv::GPS_INS nowgps,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate); // 直倒
    void dRever1Fun(iv::GPS_INS nowgps,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate); // 第一段弧
    void dRever2Fun(iv::GPS_INS nowgps,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate); // 连接直倒
    void dRever3Fun(iv::GPS_INS nowgps,double fSpeed,double & fAcc,double & fWheel,int & nshift,double & fdSpeed,double & fdSecSpeed,VehState & xvehstate); // 第二段弧


private:
    double GetDistance(iv::GPS_INS p1,iv::GPS_INS p2);

};

#endif // IVPARK_SIMPLE_H