From: snickersun Date: Mon, 31 Aug 2020 23:58:40 +0000 (+0800) Subject: protocol mqtt X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=82d95e64246d17a0b1c81b0a519ea526ce644b6b;p=protocol_srv.git protocol mqtt 完成协议YG-WBG100 蓝牙GPS手表通讯协议_v1.2 指定的所有功能解析。 --- diff --git a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java index 945a99f8..fd68618a 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java +++ b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java @@ -152,6 +152,11 @@ public class Runtime { return alarmType; } + + public String fzdAlarmStatus="00000000"; + public String getDeviceAlarmStatusFZD(){ + return fzdAlarmStatus; + } //0 代表没有出围栏,如果出围栏则置1,每次报警再加1 public int Fence_Warning_flag=0; diff --git a/app/src/main/java/com/ic/protocols/protocol_mqtt.java b/app/src/main/java/com/ic/protocols/protocol_mqtt.java index 9d7d2dd0..859ebb33 100644 --- a/app/src/main/java/com/ic/protocols/protocol_mqtt.java +++ b/app/src/main/java/com/ic/protocols/protocol_mqtt.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START; import static com.enqualcomm.support.LocationClient.LOCATION_MODE; import static java.lang.Math.abs; @@ -430,114 +431,421 @@ public class protocol_mqtt { } StringBuilder sb = new StringBuilder(); String cmd = cmdMap.get(CMD_TYPE.AL); - sb.append(runtime.bleInfo.ble_area_id); + sb.append(TimeUtil.getUTCSystemDateYYMMDD()) + .append(CMDSPLIT).append(TimeUtil.getUTCSystemTimeHHmmss()) +// .append(CMDSPLIT).append(runtime.getDeviceAlarmStatusFZD()) + .append(CMDSPLIT).append(runtime.getFZDGPSData()) + .append(CMDSPLIT).append(String.format("%03d", abs(runtime.getSignalStrength()))) + .append(CMDSPLIT).append(runtime.getBattery()) + .append(CMDSPLIT).append(runtime.getTotalStepCount()) + .append(CMDSPLIT).append(runtime.getRolltimes()) + .append(CMDSPLIT).append(runtime.getFZDDevStatus()) + .append(CMDSPLIT).append(runtime.getFZDLBSMultiStationData()) + .append(CMDSPLIT).append(runtime.getFZDWifiData()) + .append(CMDSPLIT).append(runtime.bleInfo.is_in_area ? "1" : "0") + .append(CMDSPLIT).append(runtime.bleInfo.ble_area_id); return genMqttCMDMsg(cmd, sb.toString(), runtime.IMEI()); } -// -// public static String UPLOAD(){ -// -// return genFZDCMD(cmdMap.get(CMD_TYPE.UPLOAD)); -// } -// -// public void handleUPLOAD(Connection connection,Runtime runtime,String cmd,String data){ -// connection.send(genStringMessage("UPLOAD",UPLOAD())); -// int timesecond=Integer.parseInt(data); -// int mod=runtime.getLocationInstance().getWorkingMod(); -// log("LOCATION_MODE "+LOCATION_MODE+" mod "+ mod); -// Config.setLocationMode(runtime.getContextProxy().context,mod); -// Config.setLocationCycle(runtime.getContextProxy().context,timesecond); -// runtime.getLocationInstance().setLocation_cycle(timesecond); -// runtime.getLocationInstance().setWorkingMod(mod); -//// CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); -// //此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。 -// -// } -// -// public static String heart(int hrt){ -// return genFZDCMD(cmdMap.get(CMD_TYPE.heart),String.valueOf(hrt)); -// } -// public static String oxygen(int ox){ -// return genFZDCMD(cmdMap.get(CMD_TYPE.oxygen),String.valueOf(ox)); -// } -// -// public static String blood(int pbl,int pbh){ -// String data=pbh+CMDSPLIT+pbl; -// return genFZDCMD(cmdMap.get(CMD_TYPE.blood),data); -// } -// -// public static String temp(double temp){ -// return genFZDCMD(cmdMap.get(CMD_TYPE.temp),String.format("%.1f",temp)); -// } -// -// public static String wdstart(){ -// return genFZDCMD(cmdMap.get(CMD_TYPE.wdstart)); -// } -// public void handleWdstart(Connection connection,Runtime runtime ,String data) { -// -// connection.send(genStringMessage("wdstart",wdstart())); -// int freq=Integer.parseInt(data); -// -// -// Config.setTemperatureTestCycle(runtime,freq); -// CoreService.getInstance().setTempAlarm(); -// -// TemperatureUtil.doTempTestInThread(); -//// -//// double wrist_temp,body_temp; -//// wrist_temp= TemperatureUtil.get_temp_value_adjusted(); -//// body_temp=TemperatureUtil.getBodyTemp(wrist_temp,26.0f); -//// String temperatureMsg=temp(body_temp); -//// connection.send(genStringMessage("temp",temperatureMsg)); -// } -// public static String hrtstart(){ -// return genFZDCMD(cmdMap.get(CMD_TYPE.hrtstart)); -// } -// public void handleHrtstart(Connection connection) { -// -// connection.send(genStringMessage("hrtstart",hrtstart())); -// } -// -// public static String SOS(){ -// return genFZDCMD(cmdMap.get(CMD_TYPE.SOS)); -// } -// -// -// public void handleSOS(Connection connection,Runtime runtime,String cmd,String data) { -// -// connection.send(genStringMessage("SOS",SOS())); -// if (data!=null && data.length()>0) { -// String list[] = data.split(CMDSPLIT); -// if (list.length==1){ -// ArrayList contactArray=new ArrayList(); -// if (regexUtil.isMobileNumber( list[0]) || regexUtil.isPhoneNumber(list[0])) -// { -// contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",list[0])); -// ICLogger.i("find SOS1 number "+list[0]); -// } -// }else if (list.length==2){ -// -// ArrayList contactArray=new ArrayList(); -// if (regexUtil.isMobileNumber( list[0]) || regexUtil.isPhoneNumber(list[0])) -// { -// contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",list[0])); -// ICLogger.i("find SOS1 number "+list[0]); -// } -// if (regexUtil.isMobileNumber( list[1]) || regexUtil.isPhoneNumber(list[1])) -// { -// contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos2",list[1])); -// ICLogger.i("find SOS2 number "+list[1]); -// } -// -// runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); -// -// } -// } -// -// -// } + public static StringMessage UPLOAD(Runtime runtime){ + + + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.UPLOAD),runtime.bleInfo.ble_area_id,runtime.IMEI()); + } + + public void handleUPLOAD(Connection connection,Runtime runtime,String cmd,String data){ + /** + * 数据上传间隔设置(UPLOAD) + * 平台发布(终端订阅): + * 平台向“WBG100/v1/ID_手表IMEI/UPLOAD”的主题发布 [LEN, 时间间隔] + * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为UPLOAD + * + * 终端发布(平台订阅): + * 终端收到数据,向“WBG100/v1/ID_手表IMEI/UPLOAD”的主题发布回应 + * [LEN,区域id] + */ + connection.send(UPLOAD(runtime)); + String[] list=data.split(CMDSPLIT); + if (TextUtils.isDigitsOnly(list[1])) { + int timesecond = Integer.parseInt(list[1]); + int mod = runtime.getLocationInstance().getWorkingMod(); + log("LOCATION_MODE " + LOCATION_MODE + " mod " + mod +" cycle "+timesecond); + Config.setLocationMode(runtime.getContextProxy().context, mod); + Config.setLocationCycle(runtime.getContextProxy().context, timesecond); + runtime.getLocationInstance().setLocation_cycle(timesecond); + runtime.getLocationInstance().setWorkingMod(mod); + CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); + //此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。 + }else{ + ICLogger.i("UPLOAD format error!"); + } + } + + public static StringMessage heart(int hrt,Runtime runtime){ + /*** + * 终端心率上传(heart) + * 终端发布(平台订阅): + * 终端向“WBG100/v1/heart/ID_手表IMEI”的主题发布 [LEN,x,区域id] + * x 表示每分钟的心跳次数 + * + * 平台不需要回复 + * 说明:终端按照设定间隔上报,不需要平台回复. + */ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.heart),String.valueOf(hrt),runtime.IMEI()); + } + public static StringMessage oxygen(int ox ,Runtime runtime){ + /*** + * + * 上传血氧数据(oxygen) + * 终端发布(平台订阅): + * 终端向“WBG100/v1/oxygen/ID_手表IMEI”的主题发布 [LEN,x,区域id] + * x 表示血氧饱和度 + * + * 平台不需要回复 + * 说明:终端按照设定间隔上报,不需要平台回复. + */ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.oxygen),String.valueOf(ox),runtime.IMEI()); + } + + public static StringMessage blood(int pbl,int pbh, Runtime runtime){ + /*** + * 上传血压数据(blood) + * 终端发布(平台订阅): + * 终端向“WBG100/v1/blood/ID_手表IMEI”的主题发布 [LEN,x,y,区域id] + * x 是收缩压(高压) + * y 是舒张压(低压) + * + * 平台不需要回复 + * 说明:终端按照设定间隔上报,不需要平台回复. + * + */ + String data=pbh+CMDSPLIT+pbl; + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.blood),data,runtime.IMEI()); + } + + public static StringMessage temp(double temp,Runtime runtime){ + /*** + * 上传体温数据(temp) + * 终端发布(平台订阅): + * 终端向“WBG100/v1/temp/ID_手表IMEI”的主题发布 [LEN,x.x,区域id] + * X.X: 当前测到温度值,若测到温度为36.2,则 x.x=36.2 + * + * 平台不需要回复 + * 说明:终端按照设定间隔上报,不需要平台回复. + */ + + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.temp),String.format("%.1f",temp ),runtime.IMEI()); + } + + public static StringMessage wdstart(Runtime runtime){ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.wdstart),runtime.bleInfo.ble_area_id,runtime.IMEI()); + } + public void handleWdstart(Connection connection,Runtime runtime ,String data) { + +/*** + * 设置体温上传频率(wdstart) + * 平台向“WBG100/v1/ID_手表IMEI/wdstart”的主题发布 [LEN, x] + * x 为上传间隔时间,单位秒,连续上传时最小时间不小于300 秒,最大不超过65535. + * x 为1 则代表终端心率单次上传,上传完后自动关闭。 + * x 为0 则代表终端心率上传关闭。 + * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为wdstart + * + * 终端发布(平台订阅): + * 终端收到数据,向“WBG100/v1/ID_手表IMEI/ wdstart”的主题发布回应 + * [LEN,区域id] + */ + connection.send(wdstart(runtime)); + String[] list=data.split(CMDSPLIT); + if (list.length==2){ + String cycle=list[1]; + if (TextUtils.isDigitsOnly(cycle)){ + int cycle_int=Integer.parseInt(cycle); + ICLogger.i("收到服务器指令:设置体温上传频率 "+cycle+"秒"); + + Config.setTemperatureTestCycle(runtime,cycle_int); + CoreService.getInstance().setTempAlarm(); + TemperatureUtil.doTempTestInThread(); + + }else + { + ICLogger.i("wdstart Format Error!"); + } + }else + { + ICLogger.i("wdstart Format Error!"); + } + } + public static StringMessage hrtstart(Runtime runtime){ + return genStringMessage(cmdMap.get(CMD_TYPE.hrtstart),runtime.bleInfo.ble_area_id); + } + public void handleHrtstart(Connection connection,Runtime runtime, String data) { + /*** + * 设置心率、血氧、血压上传频率(hrtstart) + * 平台发布(终端订阅): + * 平台向“WBG100/v1/ID_手表IMEI/hrtstart”的主题发布 [LEN, x] + * x 为上传间隔时间,单位秒,连续上传时最小时间不小于300 秒,最大不超过65535. + * x 为1 则代表终端心率单次上传,上传完后自动关闭。 + * x 为0 则代表终端心率上传关闭。 + * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为hrtstart + * + * 终端发布(平台订阅): + * 终端收到数据,向“WBG100/v1/ID_手表IMEI/ hrtstart”的主题发布回应 + * [LEN,区域id] + */ + connection.send(hrtstart(runtime)); + String[] list=data.split(CMDSPLIT); + if (list.length==2){ + String cycle=list[1]; + if (TextUtils.isDigitsOnly(cycle)){ + int cycle_int=Integer.parseInt(cycle); + ICLogger.i("收到服务器指令:设置心率血压周期 "+cycle+"秒"+cycle_int/60+"分钟"); + + //发送重置PPGCycle的广播,会在CoreServer里面执行 + Intent intent = new Intent(); + intent.putExtra("PPGTestCycle",cycle_int/60); + runtime.getContextProxy().sendBrodcast(ACTION_HEATR_RATE_START,intent); + }else + { + ICLogger.i("Hrtstart Format Error!"); + } + + }else{ + ICLogger.i("Hrtstart Format Error!"); + } + + } + + public static StringMessage SOS(Runtime runtime){ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.SOS),runtime.bleInfo.ble_area_id,runtime.IMEI()); + } + + + public void handleSOS(Connection connection,Runtime runtime,String cmd,String data) { +/*** + * 设置SOS 号码(SOS) + * 平台发布(终端订阅): + * 平台向“WBG100/v1/ID_手表IMEI/SOS”的主题发布 [LEN,电话号码,电话号码] + * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为SOS + * + * 终端发布(平台订阅): + * 终端收到数据,向“WBG100/v1/ID_手表IMEI/SOS”的主题发布回应 + * [LEN,区域id] + * + * 说明:设置SOS 号码后,触发sos 警情时,终端向设置的几个号码拨打电话,一直没有接听,则循环拨打两轮,接听后则不再继续拨打电话,同时发送报警短信给2 个sos 号码. + */ + connection.send(SOS(runtime)); + if (data!=null && data.length()>0) { + String list[] = data.split(CMDSPLIT); + if (list.length==2){ + ArrayList contactArray=new ArrayList(); + if (regexUtil.isMobileNumber( list[1]) || regexUtil.isPhoneNumber(list[1])) + { + contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",list[1])); + ICLogger.i("find SOS1 number "+list[1]); + runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); + } + }else if (list.length==3){ + + ArrayList contactArray=new ArrayList(); + if (regexUtil.isMobileNumber( list[1]) || regexUtil.isPhoneNumber(list[1])) + { + contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",list[1])); + ICLogger.i("find SOS1 number "+list[1]); + } + if (regexUtil.isMobileNumber( list[2]) || regexUtil.isPhoneNumber(list[2])) + { + contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos2",list[2])); + ICLogger.i("find SOS2 number "+list[2]); + } + + runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); + + }else{ + ICLogger.i("SOS Format Error!"); + } + }else + ICLogger.i("SOS Format Error!"); + + + } + + public static StringMessage FACTORY(Runtime runtime){ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.FACTORY),runtime.bleInfo.ble_area_id,runtime.IMEI()); + } + + + public void handleFactory(Connection connection,Runtime runtime,String cmd,String data) { +/*** + * 恢复出厂设置(FACTORY) + * 平台发布(终端订阅): + * 平台向“WBG100/v1/ID_手表IMEI/FACTORY”的主题发布 [LEN,FACTORY] + * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为FACTORY + * + * 终端发布(平台订阅): + * 终端收到数据,向“WBG100/v1/ID_手表IMEI/FACTORY”的主题发布回应 + * [LEN,区域id] + * + * 说明:终端恢复出厂设置,里面设置的号码都将清空 + */ + connection.send(FACTORY(runtime)); + } + + + public static StringMessage MSGDOWN(Runtime runtime,String index){ + String data=new StringBuffer(index).append(CMDSPLIT).append(runtime.bleInfo.ble_area_id).toString(); + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.MSGDOWN),data,runtime.IMEI()); + } + + + public void handleMSGDOWN(Connection connection,Runtime runtime,String cmd,String data) { + +/** + * 消息下发到指定手表(MSGDOWN) + * 平台发布(终端订阅): + * 平台向“WBG100/v1/ID_手表IMEI/MSGDOWN”的主题发布 [LEN,包序号,具体消息] + * 具体消息采用 Unicode 编码下发给终端,例如,“你好”转为Unicode通常为“\u4f60\u597d”,实际传输要去掉\u,即传输具体消息为“4f60597d” + * + * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为MSGDOWN + * + * 终端发布(平台订阅): + * 终端收到数据,向“WBG100/v1/ID_手表IMEI/MSGDOWN”的主题发布回应 + * [LEN,包序号,区域id] + * + * 说明: + * 终端回应的包序号与平台发送的包序号一致,每次发送平台包需要加1,确保每包消息的包序号唯一。 + * 具体消息为英文,ASCII格式,长度不超过512个字节 + */ + + String[] cmdlist=data.split(CMDSPLIT); + if (cmdlist.length == 3){ + String cmdindex=cmdlist[1]; + String txtmsg=cmdlist[2]; + StringMessage msg=MSGDOWN(runtime,cmdindex); + connection.send(msg); + ICLogger.i("received Txt Msg "+txtmsg); + runtime.getContextProxy().sendMsgBroadcast(txtmsg,0); + runtime.getContextProxy().saveMstToSMSDB(txtmsg); + }else{ + ICLogger.i("MSGDOWN format error!"); + } + } + public static StringMessage REMOVE(Runtime runtime){ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.REMOVE),runtime.bleInfo.ble_area_id,runtime.IMEI()); + } + + + public void handleREMOVE(Connection connection,Runtime runtime,String cmd,String data) { + + /** + * 取下手环报警开关(REMOVE) + * 平台发布(终端订阅): + * 平台向“WBG100/v1/ID_手表IMEI/REMOVE”的主题发布 [LEN,0 或者1] + * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为REMOVE + * + * 终端发布(平台订阅): + * 终端收到数据,向“WBG100/v1/ID_手表IMEI/REMOVE”的主题发布回应 + * [LEN,区域id] + * + * 说明:手表拆除报警的开关,1 打开,0 关闭. + */ + connection.send(REMOVE(runtime)); + String[] cmdlist=data.split(CMDSPLIT); + if (cmdlist.length == 2){ + String cmdindex=cmdlist[1]; + ICLogger.i("设置REMOVE "+cmdindex); + }else{ + ICLogger.i("REMOVE format error!"); + } + } + + public static StringMessage PEDO(Runtime runtime){ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.PEDO),runtime.bleInfo.ble_area_id,runtime.IMEI()); + } + + + public void handlePEDO(Connection connection,Runtime runtime,String cmd,String data) { + + /*** + * 计步功能开关(PEDO) + * 平台发布(终端订阅): + * 平台向“WBG100/v1/ID_手表IMEI/PEDO”的主题发布 [LEN,0 或者1] + * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为PEDO + * + * 终端发布(平台订阅): + * 终端收到数据,向“WBG100/v1/ID_手表IMEI/PEDO”的主题发布回应 + * [LEN,区域id] + * + * 说明: 终端计步功能的开关.1 打开,0 关闭 + */ + connection.send(PEDO(runtime)); + String[] cmdlist=data.split(CMDSPLIT); + if (cmdlist.length == 2){ + String cmdindex=cmdlist[1]; + ICLogger.i("设置PEDO "+cmdindex); + }else{ + ICLogger.i("PEDO format error!"); + } + } + + public static StringMessage MONITOR(Runtime runtime){ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.MONITOR),runtime.bleInfo.ble_area_id,runtime.IMEI()); + } + + + public void handleMONITOR(Connection connection,Runtime runtime,String cmd,String data) { + + /*** + 监听(MONITOR) + 平台发布(终端订阅): + 平台向“WBG100/v1/ID_手表IMEI/MONITOR”的主题发布 [LEN,电话号码] + 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为MONITOR + + 终端发布(平台订阅): + 终端收到数据,向“WBG100/v1/ID_手表IMEI/ MONITOR”的主题发布回应 + [LEN,区域id] + + 说明:终端收到该指令后会自动回拨给设置的电话号码,电话号码为CENTER时,回拨给中心号码. + */ + connection.send(MONITOR(runtime)); + String[] cmdlist=data.split(CMDSPLIT); + if (cmdlist.length == 2){ + String cmdindex=cmdlist[1]; + ICLogger.i("设置MONITOR 号码 "+cmdindex); + }else{ + ICLogger.i("MONITOR format error!"); + } + } + + + public static StringMessage CENTER(Runtime runtime){ + return genMqttCMDMsg(cmdMap.get(CMD_TYPE.CENTER),runtime.bleInfo.ble_area_id,runtime.IMEI()); + } + + + public void handleCENTER(Connection connection,Runtime runtime,String cmd,String data) { + + /*** + 中心号码设置(CENTER) + 平台发布(终端订阅): + 平台向“WBG100/v1/ID_手表IMEI/CENTER”的主题发布 [LEN,电话号码] + 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为CENTER + + 终端发布(平台订阅): + 终端收到数据,向“WBG100/v1/ID_手表IMEI/CENTER”的主题发布回应 + [LEN,区域id] + 说明:设置中心号码,通过该手机号码可发送短信指令。同时终端的各种报警短信会发送到该号码的手机上面 + */ + connection.send(CENTER(runtime)); + String[] cmdlist=data.split(CMDSPLIT); + if (cmdlist.length == 2){ + String cmdindex=cmdlist[1]; + ICLogger.i("设置CENTER 号码 "+cmdindex); + }else{ + ICLogger.i("CENTER format error!"); + } + } public void sendBroadcast(String cmd, Runtime dev) { ComponentName componentName = new ComponentName("com.eqc.watch", "com.eqc.watch.launcher.ChatActivity"); @@ -576,6 +884,29 @@ public class protocol_mqtt { mConnection.DeliverCMDMessageToSystem("UD",cmd);//通知下面线程状态变化 break; + case AL: + mConnection.DeliverCMDMessageToSystem("AL",cmd);//通知下面线程状态变化 + break; + + case PEDO: + handlePEDO(mConnection,mRuntime,cmd,data); + mConnection.DeliverCMDMessageToSystem("PEDO",cmd);//通知下面线程状态变化 + break; + + case REMOVE: + handleREMOVE(mConnection,mRuntime,cmd,data); + mConnection.DeliverCMDMessageToSystem("REMOVE",cmd);//通知下面线程状态变化 + break; + case CENTER: + handleCENTER(mConnection,mRuntime,cmd,data); + mConnection.DeliverCMDMessageToSystem("CENTER",cmd);//通知下面线程状态变化 + + break; + case MONITOR: + handleMONITOR(mConnection,mRuntime,cmd,data); + mConnection.DeliverCMDMessageToSystem("MONITOR",cmd);//通知下面线程状态变化 + + break; // case CR: // //立即定位指令(长链接有效) // handleCR(mConnection); @@ -602,12 +933,12 @@ public class protocol_mqtt { // ICLogger.i("收到服务器设置闹钟命令BP85"); // mConnection.DeliverCMDMessageToSystem("AP85",cmd);//通知下面线程状态变化 // break; -// case UPLOAD: -// //设置工作模式 -// handleUPLOAD(mConnection,mRuntime,cmd,data); -// mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化 -// -// break; + case UPLOAD: + //设置工作模式 + handleUPLOAD(mConnection,mRuntime,cmd,data); + mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化 + + break; // case BP34: // //设置工作模式 // handleBP34(mConnection,mRuntime,cmd); @@ -619,11 +950,11 @@ public class protocol_mqtt { //// API.handleBP05(cmd); //// break; // -// case SOS: -// //收到设置SOS号码 -// handleSOS(mConnection,mRuntime,cmd,data); -// ICLogger.i("收到服务器设置SOS号码命令BP12"); -// break; + case SOS: + //收到设置SOS号码 + handleSOS(mConnection,mRuntime,cmd,data); + ICLogger.i("收到服务器设置SOS号码命令BP12"); + break; // case PHL: // //收到设置白名单号码 // ICLogger.i("收到服务器设置白名单号码命令BP14"); @@ -633,12 +964,12 @@ public class protocol_mqtt { // handleBP15(cmd,mConnection,mRuntime); // ICLogger.i("收到服务器设置定位命令BP15"); // break; -// case BP17: -// //收到恢复出厂设置 -// handleBP17(mConnection,cmd); -// ICLogger.i("收到服务器恢复出厂设置命令BP17"); -// mConnection.DeliverCMDMessageToSystem("FactoryReset",cmd);//通知下面线程状态变化 -// break; + case FACTORY: + //收到恢复出厂设置 + handleFactory(mConnection,mRuntime,cmd,data); + ICLogger.i("收到服务器恢复出厂设置命令"); + mConnection.DeliverCMDMessageToSystem("FactoryReset",cmd);//通知下面线程状态变化 + break; // // case BP18: // //收到重启 @@ -648,39 +979,39 @@ public class protocol_mqtt { // break; // -// case BP40: -// //服务器推送文本 -// handleBP40(mConnection,mRuntime,cmd); -// ICLogger.i("收到服务器推送文本消息"); + case MSGDOWN: + //服务器推送文本 + handleMSGDOWN(mConnection,mRuntime,cmd,data); + ICLogger.i("收到服务器推送文本消息"); // mConnection.DeliverCMDMessageToSystem("showTxt",cmd);//通知下面线程状态变化 -// break; -// -// case hrtstart: -// handleHrtstart(mConnection); -// ICLogger.i("收到服务器心率检测命令"); -// HeartRateManager.triggerPPGtest(); -// break; -// -// case wdstart: -// handleWdstart(mConnection,mRuntime,data); -// ICLogger.i("收到服务器体温测试及设置命令"); -// break; -// case blood: -// ICLogger.i("服务器收到上传的血压"); -// mConnection.DeliverCMDMessageToSystem("blood",cmd);//通知下面线程状态变化 -// break; -// case oxygen: -// ICLogger.i("服务器收到上传的血氧"); -// mConnection.DeliverCMDMessageToSystem("oxygen",cmd);//通知下面线程状态变化 -// break; -// case temp: -// ICLogger.i("服务器收到上传的体温"); -// mConnection.DeliverCMDMessageToSystem("temp",cmd);//通知下面线程状态变化 -// break; -// case heart: -// ICLogger.i("服务器收到上传的心率heart"); -// mConnection.DeliverCMDMessageToSystem("heart",cmd);//通知下面线程状态变化 -// break; + break; + + case hrtstart: + handleHrtstart(mConnection,mRuntime,data); + ICLogger.i("收到服务器心率检测命令"); + HeartRateManager.triggerPPGtest(); + break; + + case wdstart: + handleWdstart(mConnection,mRuntime,data); + ICLogger.i("收到服务器体温测试及设置命令"); + break; + case blood: + ICLogger.i("服务器收到上传的血压"); + mConnection.DeliverCMDMessageToSystem("blood",cmd);//通知下面线程状态变化 + break; + case oxygen: + ICLogger.i("服务器收到上传的血氧"); + mConnection.DeliverCMDMessageToSystem("oxygen",cmd);//通知下面线程状态变化 + break; + case temp: + ICLogger.i("服务器收到上传的体温"); + mConnection.DeliverCMDMessageToSystem("temp",cmd);//通知下面线程状态变化 + break; + case heart: + ICLogger.i("服务器收到上传的心率heart"); + mConnection.DeliverCMDMessageToSystem("heart",cmd);//通知下面线程状态变化 + break; // case BP84: // handleBP84(cmd,mConnection); // ICLogger.i("收到服务器白名单命令");