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