From c64da51ae481dfc2a25e5a6e39bb94f22d65428a Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期五, 10 一月 2020 13:33:09 +0800
Subject: [PATCH] s

---
 lib/src/main/cpp/master/comm_if.cpp |   95 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 93 insertions(+), 2 deletions(-)

diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp
index 5301d23..ee203d4 100644
--- a/lib/src/main/cpp/master/comm_if.cpp
+++ b/lib/src/main/cpp/master/comm_if.cpp
@@ -14,8 +14,10 @@
 
 #include <string>
 #include <iostream>
+#include <vector>
 
 using namespace rapidjson;
+using namespace std;
 
 #define ID_SM_NDK_START         0x0001
 #define ID_SM_REQ_RTK_PLAT_CFG         0x0002
@@ -33,7 +35,7 @@
 #define ID_SM_EXAM_STATUS       0x0009
 #define ID_SM_GPS_BRIEF         0x000A
 #define ID_SM_RTK_BRIEF         0x000B
-#define ID_SM_EXAM_BRIEF         0x000B
+#define ID_SM_EXAM_BRIEF         0x000C
 
 void MA_NdkStart(void)
 {
@@ -113,6 +115,88 @@
 void MA_ReadSensor(void)
 {
     SendMsgToMainProc(ID_SM_READ_SENSOR_CFG, NULL);
+}
+
+void MA_SendExamStatus(int start, int errorCode)
+{
+    StringBuffer sb;
+    Writer<StringBuffer> writer(sb);
+
+    writer.StartObject();
+
+    writer.Key("exam");
+    writer.Int(start);
+    writer.Key("error");
+    writer.Int(errorCode);
+
+    writer.EndObject();
+
+    SendMsgToMainProc(ID_SM_EXAM_STATUS, sb.GetString());
+}
+
+void MA_SendGpsBrief(const struct gpsBrief *brief)
+{
+    StringBuffer sb;
+    Writer<StringBuffer> writer(sb);
+
+    writer.StartObject();
+
+    writer.Key("utc");
+    writer.String(brief->utc);
+    writer.Key("sat_num");
+    writer.Int(brief->sat_num);
+    writer.Key("qf");
+    writer.Int(brief->qf);
+    writer.Key("latitude");
+    writer.Double(brief->latitude);
+    writer.Key("longitude");
+    writer.Double(brief->longitude);
+    writer.Key("altitude");
+    writer.Double(brief->altitude);
+    writer.Key("speed");
+    writer.Double(brief->speed);
+
+    writer.EndObject();
+
+    SendMsgToMainProc(ID_SM_GPS_BRIEF, sb.GetString());
+}
+
+void MA_SendRtkBrief(const struct rtkBrief *brief)
+{
+    char a[2] = {brief->coord_x_dir, 0};
+    char b[2] = {brief->coord_y_dir, 0};
+
+    StringBuffer sb;
+    Writer<StringBuffer> writer(sb);
+
+    writer.StartObject();
+
+    writer.Key("utc");
+    writer.String(brief->utc);
+    writer.Key("qf");
+    writer.Int(brief->qf);
+    writer.Key("coord_x");
+    writer.Double(brief->coord_x);
+    writer.Key("coord_x_dir");
+    writer.String(a);
+    writer.Key("coord_y");
+    writer.Double(brief->coord_y);
+    writer.Key("coord_y_dir");
+    writer.String(b);
+    writer.Key("heading");
+    writer.Double(brief->heading);
+    writer.Key("pitch");
+    writer.Double(brief->pitch);
+    writer.Key("roll");
+    writer.Double(brief->roll);
+    writer.EndObject();
+
+    SendMsgToMainProc(ID_SM_RTK_BRIEF, sb.GetString());
+}
+
+void MA_SendExamWrong(vector<int>&err)
+{
+
 }
 
 void MA_MainProcMsgEntry(int cmd, const char *value)
@@ -367,7 +451,14 @@
             break;
         }
         case ID_MS_START_EXAM: {
-
+            Document doc;
+            doc.Parse(value);
+            if (!doc.HasParseError()) {
+                if (doc.HasMember("exam")) {
+                    Value& s = doc["exam"];
+                    StartDriverExam(s.GetInt());
+                }
+            }
             break;
         }
         default:break;

--
Gitblit v1.8.0