switch(Config.protocol_no)\r
{\r
case Config.PROTOCOL_JIAI:\r
- ret=null;\r
+ ret=protocol_jiai.AP50(runtime);\r
break;\r
case Config.PROTOCOL_BEEHOME:\r
ret=protocol_beehome.APTP(temp_adusted,body_temp);\r
switch(Config.protocol_no)\r
{\r
case Config.PROTOCOL_JIAI:\r
- ret=protocol_jiai.APHT(runtime);\r
+ ret=protocol_jiai.APHP(runtime);\r
break;\r
case Config.PROTOCOL_BEEHOME:\r
ret=protocol_beehome.APHP(runtime);\r
break;\r
case Config.PROTOCOL_IC:\r
- if(Config.getProtocolServerHost(runtime.getContextProxy().context).equals(protocol_jiai.defaultServerIP))\r
- {\r
- //为了兼容即爱的服务器而设定。\r
- ret=protocol_ic.APHT(runtime);\r
- }else {\r
- ret = protocol_ic.APHP(runtime);\r
- }\r
+ ret = protocol_ic.APHP(runtime);\r
break;\r
case Config.PROTOCOL_FZD:\r
ret=null;\r
switch(Config.protocol_no)\r
{\r
case Config.PROTOCOL_JIAI:\r
- ret=protocol_jiai.APHT(ppg,bph,bpl);\r
+ ret=protocol_jiai.APHP(ppg,bph,bpl,spo2);\r
break;\r
case Config.PROTOCOL_BEEHOME:\r
ret=protocol_beehome.APHP(ppg,bph,bpl,spo2);\r
break;\r
case Config.PROTOCOL_IC:\r
- if(Config.getProtocolServerHost(runtime.getContextProxy().context).equals(protocol_jiai.defaultServerIP))\r
- {\r
- ret=protocol_ic.APHT(ppg,bph,bpl);\r
-\r
- }else {\r
- ret = protocol_ic.APHP(ppg, bph, bpl, spo2);\r
- }\r
+ ret = protocol_ic.APHP(ppg, bph, bpl, spo2);\r
break;\r
case Config.PROTOCOL_FZD:\r
ret=null;\r
}\r
return ret;\r
}\r
+ public static StringMessage getWeatherMSG(Runtime runtime){\r
+ if (is_protocol_not_Initialled()) return null;\r
\r
+ StringMessage ret=null;\r
+ switch(Config.protocol_no)\r
+ {\r
+ case Config.PROTOCOL_JIAI:\r
+ ret=protocol_jiai.APWT();\r
+ break;\r
+ case Config.PROTOCOL_BEEHOME:\r
+ ret=null;\r
+ break;\r
+ case Config.PROTOCOL_IC:\r
+ ret = null;\r
+ break;\r
+ case Config.PROTOCOL_FZD:\r
+ ret=null;\r
+ break;\r
+ case Config.PROTOCOL_MQTT:\r
+ ret=null;\r
+ break;\r
+ }\r
+ return ret;\r
+ }\r
\r
public static String getDefaultServerIP(){\r
\r
import android.content.Intent;\r
import android.net.Uri;\r
import android.os.Environment;\r
+import android.text.TextUtils;\r
\r
import com.enqualcomm.support.Config;\r
import com.enqualcomm.support.CoreService;\r
BP10,\r
AP49,//心率上传\r
BP49,\r
+ AP50,//体温上传\r
+ BP50,\r
APHT,//心率血压上传\r
BPHT,\r
+ APHP,//心率血压血氧上传\r
+ BPHP,\r
APTM,//基站校时及获取定位\r
BPTM,\r
+ APWT,//同步天气\r
+ BPWT,\r
AP94,//消息已读\r
BP94,\r
/* 服务器发起*/\r
BP85,//设置闹钟\r
AP86,\r
BP86,//心率血压测试周期\r
+ AP87,\r
+ BP87,//体温测试周期\r
AP89,\r
BP89,//心率血压阀值设置\r
AP93,\r
BP93,//服务器下发文本\r
+ APXT,\r
+ BPXT,//服务器下发测量体温\r
UNKNOWN_CMD,\r
}\r
\r
cmdMap.put(CMD_TYPE.BP10, "BP10");\r
cmdMap.put(CMD_TYPE.AP49, "AP49");\r
cmdMap.put(CMD_TYPE.BP49, "BP49");\r
+ cmdMap.put(CMD_TYPE.AP50, "AP50");\r
+ cmdMap.put(CMD_TYPE.BP50, "BP50");\r
cmdMap.put(CMD_TYPE.APHT, "APHT");\r
cmdMap.put(CMD_TYPE.BPHT, "BPHT");\r
+ cmdMap.put(CMD_TYPE.APHP, "APHP");\r
+ cmdMap.put(CMD_TYPE.BPHP, "BPHP");\r
cmdMap.put(CMD_TYPE.APTM, "APTM");\r
cmdMap.put(CMD_TYPE.BPTM, "BPTM");\r
+ cmdMap.put(CMD_TYPE.APWT, "APWT");\r
+ cmdMap.put(CMD_TYPE.BPWT, "BPWT");\r
cmdMap.put(CMD_TYPE.AP94, "AP94");\r
cmdMap.put(CMD_TYPE.BP94, "BP94");\r
cmdMap.put(CMD_TYPE.AP12, "AP12");\r
cmdMap.put(CMD_TYPE.BP85, "BP85");\r
cmdMap.put(CMD_TYPE.AP86, "AP86");\r
cmdMap.put(CMD_TYPE.BP86, "BP86");\r
+ cmdMap.put(CMD_TYPE.AP87, "AP87");\r
+ cmdMap.put(CMD_TYPE.BP87, "BP87");\r
cmdMap.put(CMD_TYPE.AP89, "AP89");\r
cmdMap.put(CMD_TYPE.BP89, "BP89");\r
cmdMap.put(CMD_TYPE.AP93, "AP93");\r
cmdMap.put(CMD_TYPE.BP93, "BP93");\r
+ cmdMap.put(CMD_TYPE.APXT, "APXT");\r
+ cmdMap.put(CMD_TYPE.BPXT, "BPXT");\r
}\r
\r
private Connection mConnection=null;\r
\r
}\r
\r
+/***\r
+ * 9温度数据上传(上行协议号:AP50,响应:BP50)\r
+ * 示例:\r
+ * IWAP50,36.7,90#\r
+ * 说明:\r
+ * IW:标识符\r
+ * AP50 : 命令字符\r
+ * 36.7:温度\r
+ * 90:电量\r
+ * 平台响应: IWBP50#\r
+ * 说明: 本消息适用所有终端\r
+ */\r
+public static StringMessage AP50(Runtime ds){\r
+ //示例数据:IWAP50,36.7,90#\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP50),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP50))\r
+ .append(CMDSPLIT).append(ds.tempInfo.currentBodyTemp)\r
+ .append(CMDSPLIT).append("100")\r
+ .append(CMDEND).toString());\r
\r
-\r
+}\r
\r
/**\r
* 返回上传心率血压的协议字串\r
.append(CMDSPLIT).append(bpl)\r
.append(CMDEND).toString());\r
}\r
+ public static StringMessage APHP(Runtime ds){\r
+ //IWAPHP,60,130,85,95,90, , , , , , , , #\r
+ //IW:标识符\r
+ //APHT : 命令字符\r
+ //60 : 表示心率\r
+ //130: 血压高压 [收缩压]\r
+ //85 : 血压低压 [舒张压]\r
+ //95:血氧\r
+ //90:血糖\r
+// 本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空\r
+ return genStringMessage(cmdMap.get(protocol_ic.CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_ic.CMD_TYPE.APHP))\r
+ .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
+ .append(CMDSPLIT).append(ds.getHRS().getBPH())\r
+ .append(CMDSPLIT).append(ds.getHRS().getBPL())\r
+ .append(CMDSPLIT).append(ds.getHRS().getSpo2())\r
+ .append(CMDSPLIT).append(0)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDEND).toString());\r
+ }\r
+ public static StringMessage APHP(int ppg,int bph, int bpl, int spo2){\r
+ //IWAPHP,60,130,85,95,90, , , , , , , , #\r
+ //IW:标识符\r
+ //APHT : 命令字符\r
+ //60 : 表示心率\r
+ //130: 血压高压 [收缩压]\r
+ //85 : 血压低压 [舒张压]\r
+ //95:血氧\r
+ //90:血糖\r
+// 本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空\r
+ return genStringMessage(cmdMap.get(protocol_ic.CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_ic.CMD_TYPE.APHP))\r
+ .append(CMDSPLIT).append(ppg)\r
+ .append(CMDSPLIT).append(bph)\r
+ .append(CMDSPLIT).append(bpl)\r
+ .append(CMDSPLIT).append(spo2)\r
+ .append(CMDSPLIT).append(0)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDSPLIT)\r
+ .append(CMDEND).toString());\r
+ }\r
+\r
\r
+ public void handleBPHP(){\r
+\r
+ ICLogger.i("服务器收到APHP 心率血压血氧 !");\r
+\r
+ }\r
\r
//立即定位反馈\r
public static StringMessage AP16(String cmdindex){\r
\r
}\r
\r
+\r
public void handleBP94(){\r
\r
}\r
\r
+ public static StringMessage APWT(){\r
+\r
+ return genStringMessage("APWT",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APWT)).append(CMDEND).toString());\r
+\r
+ }\r
+\r
+ public void handleBPWT(Connection connection,Runtime runtime , String cmd) {\r
+/**\r
+ * 14同步天气(上行协议号:APWT,响应:BPWT)\r
+ * 示例:\r
+ * IWAPWT#\r
+ * 说明:\r
+ * IW:标识符\r
+ * APWT : 命令字符\r
+ * 平台响应: IWBPWT, 深圳, 2018-12-24 16:45:5, 2018-12-25,1, 3,1,晴, 2018-12-26, -1,4,2, 阴, 2018-12-27,3,7, 3,小雨#\r
+ * 实际返回需要转换为unicode:\r
+ * IWBPWT, 6df15733, 2018-12-24 16:45:5, 2018-12-25,1, 3, 1, 6674, 2018-12-26, -1,4, 2, 9634, 2018-12-27,3,7, 3, 5c0f96e8#\r
+ * 深圳,所在城市,\r
+ * 2018-12-24 16:45:51 预报时间\r
+ * 2018-12-25: 当天日期\r
+ * 1:当天最低温度,表示1度\r
+ * 3:当天最高温度,表示3度\r
+ * 1:天气大类(1-晴、2-多云、3-雨、4-雪、5-未知)\r
+ * 晴:当天天气小类,中文描述\r
+ * 2018-12-26:第二天日期\r
+ * -1:第二天最低温度,表示-1度\r
+ * 4:第二天最高温度,表示4度\r
+ * 2:天气大类(1-晴、2-多云、3-雨、4-雪、5-未知)\r
+ * 阴:第二天天气\r
+ * 2018-12-27:第三天日期\r
+ * 3:第三天最低温度,表示3度\r
+ * 7:第三天最高温度,表示7度\r
+ * 3:天气大类(1-晴、2-多云、3-雨、4-雪、5-未知)\r
+ * 小雨:第三天天气\r
+ * 注:城市、天气为HEX的UNICODE编码,非明文;\r
+ * 在没有定位数据的情况下,则无法取到天气\r
+ * 如果未取到天气,则相关栏位留空,注意城市也有可能为空\r
+ * 说明: 本消息适用所有终端\r
+ */\r
+ String tmp,City,forecastTime,day1,day2,day3;\r
+ int temp_h_day1,temp_h_day2,temp_h_day3;\r
+ int temp_l_day1,temp_l_day2,temp_l_day3;\r
+ int temp_type_day1,temp_type_day2,temp_type_day3;\r
+ String temp_str_day1,temp_str_day2,temp_str_day3;\r
+\r
+ temp_h_day1=temp_h_day2=temp_h_day3=0;\r
+ temp_l_day1=temp_l_day2=temp_l_day3=0;\r
+ temp_type_day1=temp_type_day2=temp_type_day3=1;\r
+\r
+\r
+ String list[]=cmd.split(CMDSPLIT);\r
+\r
+ if (list.length==18){\r
+ try {\r
+ City = Util.decodeUnicode2Utf8(list[1]);\r
+ forecastTime = list[2];\r
+ day1 = list[3];\r
+ tmp = list[4];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_h_day1 = Integer.parseInt(tmp);\r
+ }\r
+ tmp = list[5];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_l_day1 = Integer.parseInt(tmp);\r
+ }\r
+ tmp = list[6];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_type_day1 = Integer.parseInt(tmp);\r
+ }\r
+ temp_str_day1=Util.decodeUnicode2Utf8(list[7]);\r
+ day2=list[8];\r
+ tmp = list[9];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_h_day2 = Integer.parseInt(tmp);\r
+ }\r
+ tmp = list[10];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_l_day2 = Integer.parseInt(tmp);\r
+ }\r
+ tmp = list[11];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_type_day2 = Integer.parseInt(tmp);\r
+ }\r
+ temp_str_day2=Util.decodeUnicode2Utf8(list[12]);\r
+ day3=list[13];\r
+ tmp = list[14];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_h_day3 = Integer.parseInt(tmp);\r
+ }\r
+ tmp = list[15];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_l_day3 = Integer.parseInt(tmp);\r
+ }\r
+ tmp = list[16];\r
+ if (Util.isNumeric(tmp.trim().replace("-",""))) {\r
+ temp_type_day3 = Integer.parseInt(tmp);\r
+ }\r
+ temp_str_day3=Util.decodeUnicode2Utf8(list[17]);\r
+\r
+ ICLogger.i("天气预报城市 "+City+", 预报时间 "+forecastTime+",\n第一天 "+day1+", 最高温度 "+temp_h_day1+",最低温度 "+temp_l_day1+",天气类型 "+temp_type_day1+" "+temp_str_day1\r
+ +", \n第二天 "+day2+", 最高温度 "+temp_h_day2+",最低温度 "+temp_l_day2+",天气类型 "+temp_type_day2+" "+temp_str_day2\r
+ +", \n第三天 "+day3+", 最高温度 "+temp_h_day3+",最低温度 "+temp_l_day3+",天气类型 "+temp_type_day3+" "+temp_str_day3 );\r
+ }catch (Exception e){\r
+ e.printStackTrace();\r
+ ICLogger.i("BPWT format error!"+e.getMessage());\r
+ }\r
+\r
+ }else{\r
+ ICLogger.i("BPWT format error!");\r
+ }\r
+ }\r
+\r
+\r
public boolean handleCmd(CMD_TYPE type, String cmd) {\r
\r
//普通非二进制命令用此函数处理\r
case BP01: //gps定位包\r
handleBP01(cmd);\r
ICLogger.i("服务器收到定位AP01");\r
- mConnection.DeliverCMDMessageToSystem("AP01",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("AP01",cmd);//通知下面线程服务器收到指令\r
break;\r
case BP02:// wifi定位包\r
handleBP02(cmd);\r
ICLogger.i("服务器收到定位AP02");\r
- mConnection.DeliverCMDMessageToSystem("AP02",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("AP02",cmd);//通知下面线程服务器收到指令\r
break;\r
case BP03: //心跳包\r
handleBP03(cmd);\r
break;\r
case BP10:\r
//报警包\r
- mConnection.DeliverCMDMessageToSystem("AP10",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("AP10",cmd);//通知下面线程服务器收到指令\r
break;\r
\r
case BPTM:\r
//校时命令\r
handleBPTM(cmd);\r
ICLogger.i("服务器收到校时命令APTM");\r
- mConnection.DeliverCMDMessageToSystem("APTM",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("APTM",cmd);//通知下面线程服务器收到指令\r
break;\r
case BP85://设置闹钟\r
handleBP85(cmd,mConnection,mRuntime);\r
ICLogger.i("收到服务器设置闹钟命令BP85");\r
- mConnection.DeliverCMDMessageToSystem("AP85",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("AP85",cmd);//通知下面线程服务器收到指令\r
break;\r
case BP33:\r
//设置工作模式\r
ICLogger.i("收到服务器血压校准命令");\r
break;\r
case BPHT:\r
- ICLogger.i("服务器收到上传的心率血压");\r
+ ICLogger.i("服务器收到上传的心率血压APHT");\r
+ mConnection.DeliverCMDMessageToSystem("APHT",cmd);//通知下面线程服务器收到指令\r
+ break;\r
+ case BPHP:\r
+ ICLogger.i("服务器收到上传的心率血压血氧APHP");\r
+ mConnection.DeliverCMDMessageToSystem("APHP",cmd);//通知下面线程服务器收到指令\r
+ break;\r
+\r
+ case BP50:\r
+ ICLogger.i("服务器收到体温AP50");\r
+ mConnection.DeliverCMDMessageToSystem("AP50",cmd);//通知下面线程服务器收到指令\r
break;\r
case BP84:\r
handleBP84(cmd,mConnection);\r
case BP86:\r
//心率血压周期设置\r
handleBP86(cmd,mConnection,mRuntime);\r
-// ICLogger.i("");\r
+\r
break;\r
case BP89:\r
//心率/血压阀值\r
\r
case BP94:\r
handleBP94();\r
+ mConnection.DeliverCMDMessageToSystem("AP94",cmd);//通知下面线程状态变化\r
break;\r
case BP93:\r
//服务器下发文版\r
handleBP93(mConnection,mRuntime,cmd);\r
break;\r
+\r
+ case BPWT:\r
+ //心率/血压阀值\r
+ handleBPWT(mConnection,mRuntime,cmd);\r
+ break;\r
+\r
}\r
\r
return ret;\r