| | |
| | | #include "../rtk_platform/platform.h" |
| | | #include "../utils/xconvert.h" |
| | | #include "../driver_test.h" |
| | | #include "../defs.h" |
| | | |
| | | #include <string> |
| | | #include <iostream> |
| | |
| | | #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) |
| | | { |
| | |
| | | |
| | | void MA_SendGpsBrief(const struct gpsBrief *brief) |
| | | { |
| | | if (!(OnOff & BV(0))) |
| | | return; |
| | | |
| | | StringBuffer sb; |
| | | Writer<StringBuffer> writer(sb); |
| | | |
| | |
| | | |
| | | 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}; |
| | | |
| | |
| | | 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) |
| | |
| | | } |
| | | 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; |
| | | } |
| | | } |