yuchuli 3 роки тому
батько
коміт
fbf46992f6

+ 2 - 0
src/driver/driver_group_grpc_client/driver_group_grpc_client.pro

@@ -20,6 +20,7 @@ system(protoc -I=./../../include/proto3 --cpp_out=./../../include/msgtype   ./..
 
 SOURCES += \
         ../../include/msgtype/brainstate.pb.cc \
+        ../../include/msgtype/carstate.pb.cc \
         ../../include/msgtype/decition.pb.cc \
         ../../include/msgtype/gps.pb.cc \
         ../../include/msgtype/gpsimu.pb.cc \
@@ -38,6 +39,7 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
 
 HEADERS += \
     ../../include/msgtype/brainstate.pb.h \
+    ../../include/msgtype/carstate.pb.h \
     ../../include/msgtype/decition.pb.h \
     ../../include/msgtype/gps.pb.h \
     ../../include/msgtype/gpsimu.pb.h \

+ 21 - 0
src/driver/driver_group_grpc_client/groupclient.cpp

@@ -14,6 +14,10 @@ groupclient::groupclient()
     ModuleExtFun fungpsimu = std::bind(&groupclient::ListenGPSIMU,this,std::placeholders::_1);
     mpagpsimu->RegisterRecvPlus(mstrgpsimumsgname.data(),fungpsimu);
 
+    mpacarstate= new iv::modulecommext::modulecommmsg<iv::brain::carstate>();
+    ModuleExtFun funcarstate = std::bind(&groupclient::ListenCarState,this,std::placeholders::_1);
+    mpacarstate->RegisterRecvPlus(mstrcarstate.data(),funcarstate);
+
     mpagroup = new iv::modulecommext::modulecommmsg<iv::group::groupinfo>();
     mpagroup->RegisterSend(mstrgroupmsgname.data(),100000,1);
 
@@ -43,6 +47,14 @@ void groupclient::ListenGPSIMU(google::protobuf::Message &xmsg)
     mMutexGPSIMU.unlock();
 }
 
+void groupclient::ListenCarState(google::protobuf::Message &xmsg)
+{
+    mMutexCarState.lock();
+    mncarstate = QDateTime::currentMSecsSinceEpoch();
+    mcarstate.CopyFrom(xmsg);
+    mMutexCarState.unlock();
+}
+
 void groupclient::run()
 {
     int ninterval = mnInterval;
@@ -122,6 +134,15 @@ void groupclient::run()
                 xmsg.set_allocated_mgpsimu(pgps);
             }
 
+            if((nNow - mncarstate) < mnMsgValidTime)
+            {
+                iv::brain::carstate * pcarstate = new iv::brain::carstate;
+                mMutexCarState.lock();
+                pcarstate->CopyFrom(mcarstate);
+                mMutexCarState.unlock();
+                xmsg.set_allocated_mcarstate(pcarstate);
+            }
+
             int nbytesize = xmsg.ByteSize();
             char * strbuf = new char[nbytesize];
             std::shared_ptr<char> pstrbuf;

+ 7 - 0
src/driver/driver_group_grpc_client/groupclient.h

@@ -47,6 +47,7 @@ private:
     iv::modulecommext::modulecommmsg<iv::brain::brainstate> * mpabrain;
     iv::modulecommext::modulecommmsg<iv::brain::decition> * mpadecition;
     iv::modulecommext::modulecommmsg<iv::gps::gpsimu> * mpagpsimu;
+    iv::modulecommext::modulecommmsg<iv::brain::carstate> * mpacarstate;
 
     iv::modulecommext::modulecommmsg<iv::group::groupinfo> * mpagroup;
 
@@ -55,26 +56,32 @@ private:
     std::string mstrdecitionmsgname = "decition";
     std::string mstrgpsimumsgname = "hcp2_gpsimu";
     std::string mstrgroupmsgname = "groupmsg";
+    std::string mstrcarstate = "carstate";
 
 private:
     qint64 mnbrainupdate = 0;
     qint64 mndecitionupdate = 0;
     qint64 mngpsimuupdate = 0;
+    qint64 mncarstate = 0;
 
 private:
     iv::brain::brainstate mbrainstate;
     iv::brain::decition mdecition;
     iv::gps::gpsimu mgpsimu;
+    iv::brain::carstate mcarstate;
+
 
 private:
     QMutex mMutexBrain;
     QMutex mMutexDecition;
     QMutex mMutexGPSIMU;
+    QMutex mMutexCarState;
 
 private:
     void ListenBrain(google::protobuf::Message & xmsg);
     void ListenDecition(google::protobuf::Message & xmsg);
     void ListenGPSIMU(google::protobuf::Message & xmsg);
+    void ListenCarState(google::protobuf::Message & xmsg);
 
 private:
     qint64 mnMsgValidTime = 1000;

+ 2 - 0
src/driver/driver_group_grpc_server/driver_group_grpc_server.pro

@@ -18,6 +18,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
 
 SOURCES += \
         ../../include/msgtype/brainstate.pb.cc \
+        ../../include/msgtype/carstate.pb.cc \
         ../../include/msgtype/decition.pb.cc \
         ../../include/msgtype/gpsimu.pb.cc \
         ../../include/msgtype/groupmsg.pb.cc \
@@ -46,6 +47,7 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
 
 HEADERS += \
     ../../include/msgtype/brainstate.pb.h \
+    ../../include/msgtype/carstate.pb.h \
     ../../include/msgtype/decition.pb.h \
     ../../include/msgtype/gpsimu.pb.h \
     ../../include/msgtype/groupmsg.pb.h \

+ 11 - 0
src/include/proto/carstate.proto

@@ -0,0 +1,11 @@
+syntax = "proto2";
+
+package iv.brain;
+
+message carstate
+{
+  optional int32 mState = 1;
+  optional int32 mAvoidX = 2;
+  optional double mObsDistance = 3;
+  optional double mObsSpeed = 4;
+};

+ 2 - 0
src/include/proto/groupmsg.proto

@@ -5,6 +5,7 @@ package iv.group;
 import "brainstate.proto";
 import "decition.proto";
 import "gpsimu.proto";
+import "carstate.proto";
 
 message vehicleinfo
 {
@@ -21,6 +22,7 @@ message vehicleinfo
 	optional int32  groupid = 6;
 	optional int32  intragroupid = 7;
 	optional int64	latency = 8;
+	optional iv.brain.carstate mcarstate = 9;
 }