From edc694498e7ca9a0475bbf5576729aedfc88d3f0 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期一, 13 一月 2020 14:04:50 +0800
Subject: [PATCH] s

---
 lib/src/main/cpp/master/comm_if.h          |   19 ++++++
 lib/src/main/cpp/master/comm_if.cpp        |   95 +++++++++++++++++++++++++++++++
 Documents/模拟驾考APP内部通讯.docx                 |    0 
 lib/src/main/cpp/rtk_module/rtk.cpp        |   39 ++++++++-----
 lib/src/main/cpp/rtk_platform/platform.cpp |    4 
 5 files changed, 140 insertions(+), 17 deletions(-)

diff --git "a/Documents/\346\250\241\346\213\237\351\251\276\350\200\203APP\345\206\205\351\203\250\351\200\232\350\256\257.docx" "b/Documents/\346\250\241\346\213\237\351\251\276\350\200\203APP\345\206\205\351\203\250\351\200\232\350\256\257.docx"
index 9b9dd8b..63a4ab7 100644
--- "a/Documents/\346\250\241\346\213\237\351\251\276\350\200\203APP\345\206\205\351\203\250\351\200\232\350\256\257.docx"
+++ "b/Documents/\346\250\241\346\213\237\351\251\276\350\200\203APP\345\206\205\351\203\250\351\200\232\350\256\257.docx"
Binary files differ
diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp
index ee203d4..360227d 100644
--- a/lib/src/main/cpp/master/comm_if.cpp
+++ b/lib/src/main/cpp/master/comm_if.cpp
@@ -11,6 +11,7 @@
 #include "../rtk_platform/platform.h"
 #include "../utils/xconvert.h"
 #include "../driver_test.h"
+#include "../defs.h"
 
 #include <string>
 #include <iostream>
@@ -33,9 +34,14 @@
 #define ID_MS_SENSOR_CFG        0x8008
 #define ID_MS_START_EXAM        0x8009
 #define ID_SM_EXAM_STATUS       0x0009
+#define ID_MS_IND_ONOFF         0x800A
 #define ID_SM_GPS_BRIEF         0x000A
 #define ID_SM_RTK_BRIEF         0x000B
 #define ID_SM_EXAM_BRIEF         0x000C
+#define ID_SM_ENTER_MAP         0x000D
+#define ID_SM_CAR               0x000E
+
+static int OnOff = 0;
 
 void MA_NdkStart(void)
 {
@@ -136,6 +142,9 @@
 
 void MA_SendGpsBrief(const struct gpsBrief *brief)
 {
+    if (!(OnOff & BV(0)))
+        return;
+
     StringBuffer sb;
     Writer<StringBuffer> writer(sb);
 
@@ -163,6 +172,9 @@
 
 void MA_SendRtkBrief(const struct rtkBrief *brief)
 {
+    if (!(OnOff & BV(1)))
+        return;
+
     char a[2] = {brief->coord_x_dir, 0};
     char b[2] = {brief->coord_y_dir, 0};
 
@@ -197,6 +209,76 @@
 void MA_SendExamWrong(vector<int>&err)
 {
 
+}
+
+void MA_SendCarPosition(const struct carBrief *brief)
+{
+    if (!(OnOff & BV(2))) return;
+
+    StringBuffer sb;
+    Writer<StringBuffer> writer(sb);
+
+    writer.StartObject();
+
+    writer.Key("utc");
+    writer.String(brief->utc);
+    writer.Key("qf");
+    writer.Int(brief->qf);
+    writer.Key("map_id");
+    writer.Int(brief->map_id);
+    writer.Key("move");
+    writer.Int(brief->move);
+    writer.Key("speed");
+    writer.Double(brief->speed);
+    writer.Key("heading");
+    writer.Double(brief->heading);
+
+    writer.Key("main_ant");
+    writer.StartArray();
+    writer.Double(brief->main_ant[0]);
+    writer.Double(brief->main_ant[1]);
+    writer.EndArray();
+
+    writer.Key("axial");
+    writer.StartArray();
+    writer.Int(brief->axial[0]);
+    writer.Int(brief->axial[1]);
+    writer.EndArray();
+
+    writer.Key("left_front_tire");
+    writer.StartArray();
+    writer.Int(brief->left_front_tire[0]);
+    writer.Int(brief->left_front_tire[1]);
+    writer.EndArray();
+
+    writer.Key("right_front_tire");
+    writer.StartArray();
+    writer.Int(brief->right_front_tire[0]);
+    writer.Int(brief->right_front_tire[1]);
+    writer.EndArray();
+
+    writer.Key("left_rear_tire");
+    writer.StartArray();
+    writer.Int(brief->left_rear_tire[0]);
+    writer.Int(brief->left_rear_tire[1]);
+    writer.EndArray();
+
+    writer.Key("right_rear_tire");
+    writer.StartArray();
+    writer.Int(brief->right_rear_tire[0]);
+    writer.Int(brief->right_rear_tire[1]);
+    writer.EndArray();
+
+    writer.Key("point");
+    writer.StartArray();
+    for (int i = 0; i < brief->pointNum; ++i) {
+        writer.Double(brief->point[i*2]);
+        writer.Double(brief->point[i*2+1]);
+    }
+    writer.EndArray();
+    writer.EndObject();
+
+    SendMsgToMainProc(ID_SM_CAR, sb.GetString());
 }
 
 void MA_MainProcMsgEntry(int cmd, const char *value)
@@ -461,6 +543,19 @@
             }
             break;
         }
+        case ID_MS_IND_ONOFF: {
+            Document doc;
+            doc.Parse(value);
+            if (!doc.HasParseError()) {
+                if (doc.HasMember("on_off")) {
+                    Value& s = doc["on_off"];
+                    do {
+                        OnOff = s.GetInt();
+                    } while (OnOff != s.GetInt());
+                }
+            }
+            break;
+        }
         default:break;
     }
 }
diff --git a/lib/src/main/cpp/master/comm_if.h b/lib/src/main/cpp/master/comm_if.h
index 33c6f32..ab839e6 100644
--- a/lib/src/main/cpp/master/comm_if.h
+++ b/lib/src/main/cpp/master/comm_if.h
@@ -29,6 +29,23 @@
     double roll;
 };
 
+struct carBrief {
+    char utc[32];
+    int qf;
+    int map_id;
+    int move;
+    double speed;
+    double heading;
+    double main_ant[2];
+    int axial[2];
+    int left_front_tire[2];
+    int right_front_tire[2];
+    int left_rear_tire[2];
+    int right_rear_tire[2];
+    double *point;
+    int pointNum;
+};
+
 void MA_MainProcMsgEntry(int cmd, const char *value);
 
 void MA_NdkStart(void);
@@ -42,5 +59,7 @@
 void MA_SendExamStatus(int start, int errorCode);
 void MA_SendGpsBrief(const struct gpsBrief *brief);
 void MA_SendRtkBrief(const struct rtkBrief *brief);
+void MA_SendCarPosition(const struct carBrief *brief);
+
 
 #endif //MYAPPLICATION2_COMM_IF_H
diff --git a/lib/src/main/cpp/rtk_module/rtk.cpp b/lib/src/main/cpp/rtk_module/rtk.cpp
index 8515bb4..08adcc0 100644
--- a/lib/src/main/cpp/rtk_module/rtk.cpp
+++ b/lib/src/main/cpp/rtk_module/rtk.cpp
@@ -37,8 +37,6 @@
 
 static gpsStatus_t gpsStatus;
 
-static int tra_hh, tra_mm, tra_ss, tra_dss;
-
 static rtk_info CurrRTKInfo;
 
 static void CheckPjkParam(void);
@@ -52,7 +50,8 @@
     DEBUG("ConfigRTKModule");
 
     memset(&CurrRTKInfo, 0, sizeof(CurrRTKInfo));
-    tra_hh = tra_mm = tra_ss = tra_dss = 0;
+    CurrRTKInfo.hh = -1;
+
     memset(&gpsStatus, 0, sizeof(gpsStatus));
     gpsStatus.hh = -1;
 
@@ -338,10 +337,10 @@
 void handlePJK(const struct nmea *s) {
     DEBUG("handlePJK num = %d", s->nmea_num);
 
-    CurrRTKInfo.hh = str2int(s->nmea_value[0].data, 2);
-    CurrRTKInfo.mm = str2int(s->nmea_value[0].data + 2, 2);
-    CurrRTKInfo.ss = str2int(s->nmea_value[0].data + 4, 2);
-    CurrRTKInfo.dss = str2int(s->nmea_value[0].data + 7, 2);
+    int hh = str2int(s->nmea_value[0].data, 2);
+    int mm = str2int(s->nmea_value[0].data + 2, 2);
+    int ss = str2int(s->nmea_value[0].data + 4, 2);
+    int dss = str2int(s->nmea_value[0].data + 7, 2);
 
     CurrRTKInfo.MM = str2int(s->nmea_value[1].data, 2);
     CurrRTKInfo.DD = str2int(s->nmea_value[1].data + 2, 2);
@@ -373,36 +372,46 @@
 //        yy -= 0.02 * (by2 - by1) / (bx2 - bx1);
 //    }
 
-    if (CurrRTKInfo.hh == tra_hh && CurrRTKInfo.mm == tra_mm && CurrRTKInfo.ss == tra_ss && CurrRTKInfo.dss == tra_dss) {
+    if (CurrRTKInfo.hh == hh && CurrRTKInfo.mm == mm && CurrRTKInfo.ss == ss && CurrRTKInfo.dss == dss) {
         PlatformStatusChanged(RTK_UPDATE_EVT, (uint8_t *)&CurrRTKInfo, sizeof(CurrRTKInfo));
-        UpdateRTKInfo(&CurrRTKInfo);
+//        UpdateRTKInfo(&CurrRTKInfo);
 //        up_num++;
         /*if ((up_num % 5) == 0)*/ {
 //            NewMgrEvent(DRIVER_UPDATE_EVT);
         }
     }
+    CurrRTKInfo.hh = hh;
+    CurrRTKInfo.mm = mm;
+    CurrRTKInfo.ss = ss;
+    CurrRTKInfo.dss = dss;
 }
 
 void handleGPTRA(const struct nmea *s) {
     DEBUG("handleGPTRA num = %d", s->nmea_num);
 
-    tra_hh = str2int(s->nmea_value[0].data, 2);
-    tra_mm = str2int(s->nmea_value[0].data + 2, 2);
-    tra_ss = str2int(s->nmea_value[0].data + 4, 2);
-    tra_dss = str2int(s->nmea_value[0].data + 7, 2);
+    int hh = str2int(s->nmea_value[0].data, 2);
+    int mm = str2int(s->nmea_value[0].data + 2, 2);
+    int ss = str2int(s->nmea_value[0].data + 4, 2);
+    int dss = str2int(s->nmea_value[0].data + 7, 2);
 
     str2float(&CurrRTKInfo.heading, s->nmea_value[1].data, s->nmea_value[1].length);
+    str2float(&CurrRTKInfo.pitch, s->nmea_value[2].data, s->nmea_value[2].length);
+    str2float(&CurrRTKInfo.roll, s->nmea_value[3].data, s->nmea_value[3].length);
 
 //    CurrRTKInfo.heading = 60;
 
-    if (CurrRTKInfo.hh == tra_hh && CurrRTKInfo.mm == tra_mm && CurrRTKInfo.ss == tra_ss && CurrRTKInfo.dss == tra_dss) {
+    if (CurrRTKInfo.hh == hh && CurrRTKInfo.mm == mm && CurrRTKInfo.ss == ss && CurrRTKInfo.dss == dss) {
         PlatformStatusChanged(RTK_UPDATE_EVT, (uint8_t *)&CurrRTKInfo, sizeof(CurrRTKInfo));
-        UpdateRTKInfo(&CurrRTKInfo);
+//        UpdateRTKInfo(&CurrRTKInfo);
 //        up_num++;
         /*if ((up_num % 5) == 0)*/ {
 //            NewMgrEvent(DRIVER_UPDATE_EVT);
         }
     }
+    CurrRTKInfo.hh = hh;
+    CurrRTKInfo.mm = mm;
+    CurrRTKInfo.ss = ss;
+    CurrRTKInfo.dss = dss;
 }
 
 static void CheckPjkParam(void)
diff --git a/lib/src/main/cpp/rtk_platform/platform.cpp b/lib/src/main/cpp/rtk_platform/platform.cpp
index 9658a15..6869143 100644
--- a/lib/src/main/cpp/rtk_platform/platform.cpp
+++ b/lib/src/main/cpp/rtk_platform/platform.cpp
@@ -279,7 +279,6 @@
         MA_RtkPlatformLogin(data[0]);
     }
     if (events & GPS_UPDATE_EVT) {
-        DEBUG("GPS_UPDATE_EVT");
         const gpsStatus_t *gps = (gpsStatus_t *)data;
         struct gpsBrief brief;
 
@@ -295,7 +294,6 @@
         RequestRtkDownload(gps, 1);
     }
     if (events & RTK_UPDATE_EVT) {
-        DEBUG("RTK_UPDATE_EVT");
         const rtk_info *rtk = (rtk_info *)data;
         struct rtkBrief brief;
 
@@ -465,6 +463,8 @@
 
 void ReceivedRtk(const uint8_t *data, int length)
 {
+    DEBUG("ReceivedRtk length %d", length);
+
     AppTimer_delete(RequestRtkNoResp);
     // 姹囨姤缁欏崟鐗囨満
     if (length > 0) {

--
Gitblit v1.8.0