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.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 95 insertions(+), 0 deletions(-) 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; } } -- Gitblit v1.8.0