#ifndef IVDECISION_H #define IVDECISION_H #include "ivmodule.h" #include "modulecomm.h" #include "gps_type.h" #include "obstacle_type.h" #include "gpsimu.pb.h" #include "radarobjectarray.pb.h" #include "mobileye.pb.h" #include "hmi.pb.h" #include "decition.pb.h" #include "vbox.pb.h" #include "v2x.pb.h" #include "ultrasonic.pb.h" #include "brainstate.pb.h" #include "radio_send.pb.h" #include "chassis.pb.h" #include #include namespace iv { class ivdecision : public ivmodule { public: ivdecision(); public: virtual void modulerun(); public: virtual int getdecision(iv::brain::decition & xdecition,iv::brain::brainstate & xbs) = 0; void sharemsg(iv::brain::decition & xdecition,iv::brain::brainstate & xbs); private: std::string mstrgpsmsgname = "hcp2_gpsimu"; std::string mstrlidarmsgname = "lidar_obs"; std::string mstrradarmsgname = "radar"; std::string mstrmapmsgname = "tracemap"; std::string mstrmobileyemsgname = "mobileye"; std::string mstrhmimsgname = "hmi"; std::string mstrpadmsgname = "pad"; std::string mstrp900msgname = "p900_send"; std::string mstrv2xmsgname = "v2x"; std::string mstrultramsgname = "ultra"; std::string mstrvboxmsgname = "vbox"; std::string mstrchassismsgname = "chassis"; std::string mstrdecisionmsgname = "deciton"; std::string mstrbrainstatemsgname = "brainstate"; private: void * mpagpsmsg; void * mpalidarmsg; void * mparadarmsg; void * mpamapmsg; void * mpamobileyemsg; void * mpahmimsg; void * mpapadmsg; void * mpap900msg; void * mpav2xmsg; void * mpaultramsg; void * mpavboxmsg; void * mpachassismsg; void * mpaDecition; void * mpaVechicleState; private: void UpdateGPS(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void UpdateRADAR(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void UpdateLIDAR(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void UpdateMAP(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void UpdateMobileye(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void UpdateHMI(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void UpdateVbox(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void Updatev2x(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void Updateultrasonic(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void Updatep900(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); void UpdatepChassis(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname); private: iv::GPSData mNowGPS; std::shared_ptr mGPSIMUptr = 0; qint64 mnGPSUpdateTime = 0; QMutex mMutexGPS; std::shared_ptr mRADAR = 0; qint64 mnRADARUpdateTime = 0; QMutex mMutexRADAR; std::shared_ptr > mlidar_obs; qint64 mnLIDARUpdateTime = 0; QMutex mMutexLIDAR; std::vector mnavigation_data; //导航数据,GPS结构体数组 qint64 mnMAPUpdateTime = 0; QMutex mMutexMAP; std::shared_ptr mmobileye; qint64 mnmobileyeUpdateTime = 0; QMutex mMutexmobileye; std::shared_ptr mHMImsg; qint64 mnHMIUpdateTime = 0; QMutex mMutexHMI; std::shared_ptr mvboxmsg; qint64 mnvboxUpdateTime = 0; QMutex mMutexvbox; std::shared_ptr mv2xmsg; qint64 mnv2xUpdateTime = 0; QMutex mMutexv2x; std::shared_ptr multrasonicmsg; qint64 mnultrasonicUpdateTime = 0; QMutex mMutexultrasonic; std::shared_ptr mp900msg; qint64 mnp900UpdateTime = 0; QMutex mMutexp900; std::shared_ptr mchassismsg; qint64 mnchassisUpdateTime = 0; QMutex mMutexchassis; private: const qint64 mnNewThresh = 1000; //1 seconds public: bool GetGPS(iv::GPSData & xGPSData); bool GetRADAR(std::shared_ptr & xRADAR); bool GetLIDARGrid(iv::LidarGridPtr & lidargridptr); bool GetLIDARObs(std::shared_ptr > & xlidar_obs); bool IsMAPUpdate(qint64 & nLastUpdateTime); bool GetMAP(std::vector & navigation_data,qint64 & nLastUpdateTime); bool GetMobileye(std::shared_ptr & xmobileye); bool GetHMImsg(std::shared_ptr & xhmimsg); bool Getvboxmsg(std::shared_ptr & xvboxmsg); bool Getv2xmsg(std::shared_ptr & xv2xmsg); bool Getultrasonic(std::shared_ptr & xultramsg); bool Getp900(std::shared_ptr & xp900msg); bool Getchassis(std::shared_ptr & xchassismsg); // void GetLidarPtr(); // void GetRadar(); // void GetMap(); // bool IsMapUpdate(); // void GetMobileye(); }; } #endif // IVDECISION_H