}\r
\r
\r
+ public static StringMessage AL(Runtime runtime){\r
+ /***\r
+ * [IC*334588000000156*00CD*AL,180916,064153,A,22.570512,N,113.8623267,E,0.00,154.8,0.0,11,10 0,100,0,0,00100018,7,0,460,1,9529,21809,155,9529,21242,132,9529,21405,131,9529,63554,131,9\r
+ * 529,63555,130,9529,63556,118,9529,21869,116,0,12.4]\r
+ * 平台回复:\r
+ * [IC*YYYYYYYYYYYYYYY*LEN*AL]\r
+ * 实例:[IC*334588000000156*0002*AL]\r
+ * 说明:终端产生警情后发送报警信息到平台,若终端没有收到回复,则定时上报直到收到报警确认为止.\r
+ */\r
+ return null;\r
+\r
+ }\r
+\r
public static StringMessage UPLOAD(){\r
\r
return genFZDCMD(cmdMap.get(CMD_TYPE.UPLOAD));\r
KA, // 心跳连接\r
LGZONE, // 获取服务器端时间\r
UD, // 位置数据上报\r
- AL, // 报警数据上报\r
+ AL, // 报警位置数据上报\r
+ ALARM, // 报警数据上报\r
temp, // 上传体温数据\r
heart, // 终端心率上传\r
blood, // 上传血压数据\r
cmdMap.put(CMD_TYPE.LGZONE, "LGZONE");\r
cmdMap.put(CMD_TYPE.UD, "UD");\r
cmdMap.put(CMD_TYPE.AL, "AL");\r
+ cmdMap.put(CMD_TYPE.AL, "ALARM");\r
cmdMap.put(CMD_TYPE.temp, "temp");\r
cmdMap.put(CMD_TYPE.heart, "heart");\r
cmdMap.put(CMD_TYPE.blood, "blood");\r
if (CoreService.getInstance() != null)\r
imei = CoreService.getInstance().getRuntime().IMEI();\r
String cmdtype = msg.cmd().replace(projName + "/" + protocolVersion + "/", "").replace("/" + imei, "");\r
- ICLogger.i("mqtt isCmdStr topic " + msg.cmd() + " ,cmd " + cmdtype);\r
+// ICLogger.i("mqtt isCmdStr topic " + msg.cmd() + " ,cmd " + cmdtype);\r
for (CMD_TYPE key : cmdMap.keySet()) {\r
- ICLogger.i("mqtt isCmdStr cmd " + msg.cmd() + " key " + cmdMap.get(key));\r
+// ICLogger.i("mqtt isCmdStr cmd " + msg.cmd()+" " +cmdtype +" key " + cmdMap.get(key));\r
if (cmdMap.get(key).equals(cmdtype)) {\r
+// ICLogger.i("Find cmd "+cmdtype);\r
return cmdtype;\r
}\r
}\r
*/\r
public boolean parserCmd(String cmdtype, byte[] bytes) {\r
String cmd_msgbuf = new String(bytes);\r
- log("bytes.size " + bytes.length);\r
- cmdbuf.append(cmd_msgbuf);\r
- log("cmdbuf.size " + cmdbuf.length() + " " + cmdbuf.toString());\r
- cmd_msgbuf = cmd_msgbuf.replace(CMDHEADER, "").replace(CMDEND, "");\r
- for (CMD_TYPE key : cmdMap.keySet()) {\r
- if (cmdMap.get(key).toString().equals(cmdtype)) {\r
- handleCmd(key, cmdtype, cmd_msgbuf);\r
- return true;\r
+ log(cmdtype+" bytes.size " + bytes.length+" "+cmd_msgbuf);\r
+// cmdbuf.append(cmd_msgbuf);\r
+// log("cmdbuf.size " + cmdbuf.length() + " " + cmdbuf.toString());\r
+\r
+// String[] cmdlist=cmdbuf.toString().split(CMDEND+CMDHEADER);\r
+\r
+// for ( String cmditem : cmdlist ) {\r
+ cmd_msgbuf = cmd_msgbuf.replace(CMDHEADER, "").replace(CMDEND, "").replace("'","");\r
+ for (CMD_TYPE key : cmdMap.keySet()) {\r
+ if (cmdMap.get(key).toString().equals(cmdtype)) {\r
+ handleCmd(key, cmdtype, cmd_msgbuf);\r
+ return true;\r
+ }\r
}\r
- }\r
+// }\r
+\r
return false;\r
}\r
\r
.append("/").append(protocolVersion)\r
.append("/").append(cmdtype)\r
.append("/").append(imei);\r
-\r
return genStringMessage(sbtopic.toString(), sb.toString());\r
}\r
\r
* 平台发布的子主题为:KA\r
* 回应的消息为:[LEN,KA]\r
*/\r
+ if(runtime.bleInfo.ble_area_id.isEmpty()){\r
+ return null;\r
+ }\r
StringBuilder sb = new StringBuilder();\r
String cmd = cmdMap.get(CMD_TYPE.KA);\r
sb.append(TimeUtil.getUTCSystemDateYYMMDD()).append(CMDSPLIT)\r
* 123456789,为区域id\r
*/\r
\r
-\r
+ if(runtime.bleInfo.ble_area_id.isEmpty()){\r
+ return null;\r
+ }\r
StringBuilder sb = new StringBuilder();\r
String cmd = cmdMap.get(CMD_TYPE.UD);\r
sb.append(TimeUtil.getUTCSystemDateYYMMDD()).append(CMDSPLIT)\r
* 实例表示:东八区,上午8 点整\r
\r
*/\r
+ if(runtime.bleInfo.ble_area_id.isEmpty()){\r
+ return null;\r
+ }\r
StringBuilder sb = new StringBuilder();\r
String cmd = cmdMap.get(CMD_TYPE.LGZONE);\r
sb.append(runtime.bleInfo.ble_area_id);\r
*/\r
String[] list=data.split(CMDSPLIT);\r
if (list.length==4){\r
- String timeZone=list[1];\r
- String date=list[3];\r
- String time=list[2];\r
+ String timeZone=list[1].trim();\r
+ String date=list[3].trim();\r
+ String time=list[2].trim();\r
Date datetime= TimeUtil.parseDatetiime(date,time);\r
- int timezone=Integer.parseInt(timeZone.replace("+",""));\r
+\r
+ int timezone;\r
+ try\r
+ {\r
+ timezone=Integer.parseInt(timeZone.replace("+","").trim());\r
+ }catch (Exception e){\r
+ ICLogger.e("timezone",e);\r
+ timezone=8;\r
+ }\r
+\r
if (datetime!=null){\r
ICLogger.i("==="+timezone+" "+TimeUtil.getDefaultTimeZone());\r
TimeUtil.setTimeZone(timezone);\r
\r
\r
}\r
+\r
+ public static StringMessage AL(Runtime runtime){\r
+/***\r
+ * 报警数据上报(AL)\r
+ * 终端发布(平台订阅):\r
+ * 终端向“WBG100/v1/AL/ID_手表IMEI”的主题发布 [LEN,位置数据(见附录一),区域id]\r
+ *\r
+ * 终端订阅(平台发布):\r
+ * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,会收到平台的回应\r
+ * 平台发布的子主题为:AL\r
+ * 回应的消息为:[LEN, AL]\r
+ *\r
+ * 说明:终端产生警情后发送报警信息到平台,若终端没有收到回复,则定时上报直到收到报警确认为止.\r
+ */\r
+ if(runtime.bleInfo.ble_area_id.isEmpty()){\r
+ return null;\r
+ }\r
+ StringBuilder sb = new StringBuilder();\r
+ String cmd = cmdMap.get(CMD_TYPE.AL);\r
+ sb.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
\r
//普通非二进制命令用此函数处理\r
boolean ret=true;\r
- ICLogger.i("handleCmd "+type.name() + " strLen="+data.length());\r
- if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", " recv " + cmd +" "+ data);\r
+ ICLogger.i("mqtt handleCmd "+type.name() + " strLen="+data.length());\r
+ if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", "mqtt recv " + cmd +" "+ data);\r
switch (type){\r
\r
case KA:\r
ICLogger.i("服务器收到登录包BREQ");\r
mConnection.DeliverCMDMessageToSystem("login",cmd);//通知下面线程状态变化\r
break;\r
+ case LGZONE:\r
+ handleLGZONE(mConnection,mRuntime,data);\r
+ break;\r
+\r
+ case UD:\r
+ mConnection.DeliverCMDMessageToSystem("UD",cmd);//通知下面线程状态变化\r
+ break;\r
+\r
// case CR:\r
// //立即定位指令(长链接有效)\r
// handleCR(mConnection);\r