#ifndef SIMMODEL_H #define SIMMODEL_H #include #include #include "gpsimu.pb.h" #include "modulecomm.h" class simmodel { public: simmodel(); ~simmodel(); enum SHIFT_GEER { PARK = 0, REVERSE = 1, DRIVE = 2 }; protected: double mx; double my; double mhdg; SHIFT_GEER mshift; double macc; double mwheelsteer; double mvel; double mlon0,mlat0; bool mbInitOK = false; public: double GetX(); double GetY(); double Gethdg(); SHIFT_GEER GetShift(); double Getacc(); double Getwheelsteer(); double Getvel(); virtual void CalcModel() = 0; protected: double mfcmd_acc; double mfcmd_torque; double mfcmd_brake; double mfcmd_wheelangle; int64_t mlastcmdtime = 0; //chrono ns public: void SetCMD(double facc,double ftorque,double fbrake,double fwheelangle); void SetX(double fx); void SetY(double fy); void Sethdg(double fhdg); void SetShift(SHIFT_GEER sg); void Setacc(double facc); void Setwheelsteer(double fwheelsteer); void Setvel(double fvel); void SetLon0Lat0(double flon0,double flat0); private: std::thread * mpthread; bool mbrun = true; void threadupdate(); std::thread * mpthreadstate; void threadstate(); void * mpa; }; #endif // SIMMODEL_H