// // Created by YY on 2020/1/7. // #include "comm_if.h" #include "../native-lib.h" #include "../rapidjson/document.h" #include "../rapidjson/writer.h" #include "../rapidjson/stringbuffer.h" #include "../rtk_platform/platform.h" #include "../utils/xconvert.h" #include #include using namespace rapidjson; #define ID_SM_NDK_START 0x0001 #define ID_SM_REQ_RTK_PLAT_CFG 0x0002 #define ID_MS_RTK_PLAT_CFG 0x8002 #define ID_SM_RTK_PLAT_CONN 0x0003 #define ID_SM_RTK_PLAT_REG 0x0004 #define ID_SM_RTK_PLAT_LOGIN 0x0005 void MA_NdkStart(void) { SendMsgToMainProc(ID_SM_NDK_START, NULL); } void MA_ReqRtkPlatformConfig(void) { SendMsgToMainProc(ID_SM_REQ_RTK_PLAT_CFG, NULL); } void MA_RtkPlatformConnect(int conn, const char *ip, int port) { StringBuffer sb; Writer writer(sb); writer.StartObject(); writer.Key("connected"); writer.Int(conn); writer.Key("ip"); writer.String(ip); writer.Key("port"); writer.Int(port); writer.EndObject(); SendMsgToMainProc(ID_SM_RTK_PLAT_CONN, sb.GetString()); } void MA_RtkPlatformRegister(int reg, const uint8_t *pwd, int length) { StringBuffer sb; Writer writer(sb); writer.StartObject(); writer.Key("register_code"); writer.Int(reg); if (reg == 0 && length > 0) { writer.Key("password"); char *str = new char[length*2 + 1]; ConvertHex2String(str, pwd, length); writer.String(str); delete[]str; } writer.EndObject(); SendMsgToMainProc(ID_SM_RTK_PLAT_REG, sb.GetString()); } void MA_RtkPlatformLogin(int login) { StringBuffer sb; Writer writer(sb); writer.StartObject(); writer.Key("password"); writer.Int(login); writer.EndObject(); SendMsgToMainProc(ID_SM_RTK_PLAT_LOGIN, sb.GetString()); } void MA_MainProcMsgEntry(int cmd, const char *value) { switch (cmd) { case ID_MS_RTK_PLAT_CFG: { rtk_platform_cfg_t cfg; memset(&cfg, 0, sizeof(cfg)); Document d; d.Parse(value); if (d.HasMember("ip")) { Value& s = d["ip"]; strcpy(cfg.domain_name, s.GetString()); } if (d.HasMember("port")) { Value& s = d["port"]; cfg.port = s.GetInt(); } if (d.HasMember("province")) { Value& s = d["province"]; cfg.province = s.GetInt(); } if (d.HasMember("city")) { Value& s = d["city"]; cfg.city = s.GetInt(); } if (d.HasMember("model")) { Value& s = d["model"]; strcpy(cfg.device_model, s.GetString()); } if (d.HasMember("sn")) { Value& s = d["sn"]; strcpy(cfg.device_sn, s.GetString()); } if (d.HasMember("imei")) { Value& s = d["imei"]; strcpy(cfg.imei, s.GetString()); } if (d.HasMember("phone")) { Value& s = d["phone"]; strcpy(cfg.phone, s.GetString()); } if (d.HasMember("password")) { Value& s = d["password"]; strcpy(cfg.password, s.GetString()); } if (d.HasMember("registered")) { Value& s = d["registered"]; cfg.registered = s.GetInt(); } if (d.HasMember("interval")) { Value& s = d["interval"]; cfg.rtk_interval = s.GetInt(); } ConfigPlatform(&cfg); break; } } }