Переглянути джерело

chagne decition_brain_sf. for add group.

HAPO-9# 3 роки тому
батько
коміт
061c592231

+ 7 - 0
src/decition/common/common/car_status.h

@@ -26,6 +26,9 @@
 
 #include "common/tracepointstation.h"
 
+#include "groupmsg.pb.h"
+#include <QMutex>
+
 #define RADAR_OBJ_NUM 64
 
 #ifdef linux
@@ -204,6 +207,10 @@ namespace iv {
         double mObsSpeed=0;
         //hapo station 2021/02/05
         iv::StationCmd   stationCmd;
+
+        iv::group::groupinfo mgroupgrpcinfo;
+        QMutex mMutexgroupgrpc;
+        qint64 mgroupgrpcupdatetime = 0;
     };
     typedef boost::serialization::singleton<iv::CarStatus> CarStatusSingleton;//非线程安全,注意多线程加锁,单例模式
 }

+ 7 - 0
src/decition/decition_brain_sf/decition/brain.cpp

@@ -1383,8 +1383,15 @@ void iv::decition::BrainDecition::UpdateGRPCGroupMsg(const char *strdata, const
     mMutexGroupgrpc.lock();
     mnGroupgrpcUpdateTime = QDateTime::currentMSecsSinceEpoch();
     mgroupgrpcInfo.CopyFrom(xgroupinfo);
+
     mMutexGroupgrpc.unlock();
 
+    ServiceCarStatus.mMutexgroupgrpc.lock();
+    ServiceCarStatus.mgroupgrpcupdatetime = QDateTime::currentMSecsSinceEpoch();
+    ServiceCarStatus.mgroupgrpcinfo.CopyFrom(xgroupinfo);
+    ServiceCarStatus.mMutexgroupgrpc.unlock();
+
+
 }
 
 void iv::decition::BrainDecition::UpdateChassis(const char *strdata, const unsigned int nSize, const unsigned int index, const QDateTime *dt, const char *strmemname)

+ 12 - 1
src/decition/decition_brain_sf/decition/decide_gps_00.cpp

@@ -197,6 +197,8 @@ static int obstacle_avoid_flag=0;
 
 //日常展示
 
+#include <QDateTime>
+
 iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_gps_ins,
                                                                    const std::vector<GPSData> gpsMapLine,
                                                                    iv::LidarGridPtr lidarGridPtr,
@@ -209,7 +211,16 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
     Decition gps_decition(new DecitionBasic);
     //    vector<iv::Point2D> fpTraceTmp;
 
-
+    bool bgroupgrpc = false;
+    qint64 ngrpcvalid = 3000;
+    iv::group::groupinfo xgroupgrpcinfo;
+    if((QDateTime::currentMSecsSinceEpoch() - ServiceCarStatus.mgroupgrpcupdatetime ) < ngrpcvalid)
+    {
+        ServiceCarStatus.mMutexgroupgrpc.lock();
+        xgroupgrpcinfo.CopyFrom(ServiceCarStatus.mgroupgrpcinfo);
+        ServiceCarStatus.mMutexgroupgrpc.unlock();
+        bgroupgrpc = true;
+    }
 
 
     //如果useFrenet、useOldAvoid两者不互为相异,则采用原来的方法。“^”为异或运算符。