s
yy1717
2020-01-10 c64da51ae481dfc2a25e5a6e39bb94f22d65428a
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;