import com.enqualcomm.support.utils.ICLogger;\r
import com.enqualcomm.support.utils.MD5;\r
import com.enqualcomm.support.utils.NettyConnection;\r
+import com.enqualcomm.support.utils.TemperatureUtil;\r
import com.enqualcomm.support.utils.TimeUtil;\r
import com.enqualcomm.support.utils.Util;\r
import com.enqualcomm.support.utils.regexUtil;\r
VOICE,//上传语音\r
WG,//请求位置信息\r
DLT,//解绑\r
- temp,//temp\r
+ temp,//体温上传\r
/* 服务器发起*/\r
UPLOAD,//数据上传间隔设置\r
CENTER,//中心号码设置\r
REMIND,//闹钟设置指令\r
TK,//对讲功能(微聊发送语音)\r
PHL,//设置电话本+白名单(最多 50 条)\r
+ wdstart,//远程测温\r
+ bldstart,//远程测血压\r
+ hrtstart,//远程测量心率\r
+ BOOTOFF,//定时关机\r
+ oxygen,//血氧上传\r
+ blood,//血压上传\r
+ heart,//心率上传\r
UNKNOWN_CMD,\r
}\r
\r
cmdMap.put(CMD_TYPE.REMIND, "REMIND");\r
cmdMap.put(CMD_TYPE.TK, "TK");\r
cmdMap.put(CMD_TYPE.PHL, "PHL");\r
+ cmdMap.put(CMD_TYPE.wdstart, "wdstart");\r
+ cmdMap.put(CMD_TYPE.bldstart, "bldstart");\r
+ cmdMap.put(CMD_TYPE.hrtstart, "hrtstart");\r
+ cmdMap.put(CMD_TYPE.BOOTOFF, "BOOTOFF");\r
+ cmdMap.put(CMD_TYPE.oxygen, "oxygen");\r
+ cmdMap.put(CMD_TYPE.blood, "blood");\r
+ cmdMap.put(CMD_TYPE.heart, "heart");\r
}\r
\r
private NettyConnection mConnection=null;\r
// handleCmd(key, cmdlist[i], bytes);\r
// }\r
// } else {\r
+ if (data.startsWith(CMDSPLIT)) data=data.substring(1);\r
handleCmd(key, cmd_msgbuf,data);\r
cmdbuf.delete(0,cmdbuf.length());//处理后清空\r
// }\r
}\r
\r
\r
- public static void handlePing(Runtime runtime,String cmd){\r
+ public static void handlePing(Runtime runtime,String data){\r
// [IC*YYYYYYYYYYYYYYY*LEN*PING,是否绑定(0 表示未绑定,1 表示绑定)]\r
// 实例:[IC*334588000000156*0006*PING,0]或[IC*334588000000156*0006*PING,1]\r
- String[] cmdlist=cmd.split(CMDSPLIT);\r
- if (cmdlist.length==2){\r
- int bind=Integer.parseInt(cmdlist[1]);\r
- if (bind==0){\r
- ICLogger.i("设备未绑定!");\r
- runtime.BindingStatus=false;\r
- }else{\r
- ICLogger.i("设备已绑定!");\r
- runtime.BindingStatus=true;\r
- }\r
+ int bind=Integer.parseInt(data);\r
+ if (bind==0){\r
+ ICLogger.i("设备未绑定!");\r
+ runtime.BindingStatus=false;\r
+ }else{\r
+ ICLogger.i("设备已绑定!");\r
+ runtime.BindingStatus=true;\r
}\r
+\r
}\r
\r
public static String KA(Runtime runtime){\r
\r
public static String UPLOAD(){\r
\r
- return new StringBuffer("").toString();\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
+ public static String POWEROFF(){\r
+ return genFZDCMD(cmdMap.get(CMD_TYPE.POWEROFF));\r
+ }\r
+ public void handlePOWEROFF(Connection connection) {\r
+\r
+ connection.send(genStringMessage("POWEROFF",POWEROFF()));\r
+ }\r
+ public static String CR(){\r
+ return genFZDCMD(cmdMap.get(CMD_TYPE.CR));\r
+ }\r
+ public void handleCR(Connection connection) {\r
+\r
+ connection.send(genStringMessage("CR",CR()));\r
+ }\r
+ public static String bldstart(){\r
+ return genFZDCMD(cmdMap.get(CMD_TYPE.bldstart));\r
}\r
+ public void handleBldstart(Connection connection) {\r
+\r
+ connection.send(genStringMessage("bldstart",bldstart()));\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
+ 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
+ public static String FIND(){\r
+ return genFZDCMD(cmdMap.get(CMD_TYPE.FIND));\r
+ }\r
+ public void handleFIND(Connection connection) {\r
+\r
+ connection.send(genStringMessage("FIND",FIND()));\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
public static String PHL(){\r
return genFZDCMD(cmdMap.get(CMD_TYPE.PHL));\r
}\r
* 5F204E09--->张三,是使用 unicode 编码\r
* 终端回复:[IC*334588000000156*0003*PHL]\r
*/\r
- StringBuilder tmp=new StringBuilder(data);\r
- if (tmp.toString().startsWith(CMDSPLIT)) tmp.deleteCharAt(0);\r
- String list[]=tmp.toString().split(CMDSPLIT);\r
+\r
+ String list[]=data.split(CMDSPLIT);\r
int listlen=list.length;\r
boolean ispared= (( listlen >0) && (listlen%2 == 0));\r
if (ispared){\r
\r
//普通非二进制命令用此函数处理\r
boolean ret=true;\r
- ICLogger.i("handleCmd "+type.name() + " strLen="+cmd.length());\r
+ ICLogger.i("handleCmd "+type.name() + " strLen="+data.length());\r
if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", " recv " + cmd +" "+ data);\r
switch (type){\r
case LK: //登录包\r
break;\r
\r
case PING:\r
- handlePing(mRuntime,cmd);\r
+ handlePing(mRuntime,data);\r
ICLogger.i("服务器返回Ping绑定信息");\r
break;\r
case CR:\r
//立即定位指令(长链接有效)\r
- //handleBP16(mConnection,mRuntime,cmd);\r
+ handleCR(mConnection);\r
mConnection.DeliverCMDMessageToSystem("StartLocate",cmd);//通知下面线程状态变化\r
break;\r
\r
// ICLogger.i("收到服务器设置闹钟命令BP85");\r
// mConnection.DeliverCMDMessageToSystem("AP85",cmd);//通知下面线程状态变化\r
// break;\r
-// case BP33:\r
-// //设置工作模式\r
-// handleBP33(mConnection,mRuntime,cmd);\r
-// mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化\r
+ case UPLOAD:\r
+ //设置工作模式\r
+ handleUPLOAD(mConnection,mRuntime,cmd,data);\r
+ mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化\r
//\r
// break;\r
// case BP34:\r
//// API.handleBP05(cmd);\r
//// break;\r
//\r
-// case BP12:\r
-// //收到设置SOS号码\r
-// handleBP12(mConnection,cmd,mRuntime);\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
// mConnection.DeliverCMDMessageToSystem("Reboot",cmd);//通知下面线程状态变化\r
// break;\r
//\r
-// case BP31:\r
-// //收到关机\r
-// handleBP31(mConnection,cmd);\r
-// ICLogger.i("收到服务器关机命令BP31");\r
-// mConnection.DeliverCMDMessageToSystem("poweroff",cmd);//通知下面线程状态变化\r
-// break;\r
+ case POWEROFF:\r
+ //收到关机\r
+ handlePOWEROFF(mConnection);\r
+ ICLogger.i("收到服务器关机命令BP31");\r
+ mConnection.DeliverCMDMessageToSystem("poweroff",cmd);//通知下面线程状态变化\r
+ break;\r
// case BP40:\r
// //服务器推送文本\r
// handleBP40(mConnection,mRuntime,cmd);\r
// mConnection.DeliverCMDMessageToSystem("showTxt",cmd);//通知下面线程状态变化\r
// break;\r
//\r
-// case BPXL:\r
-// handleBPXL(cmd,mConnection);\r
-// ICLogger.i("收到服务器心率检测命令");\r
-// HeartRateManager.triggerPPGtest();\r
-// break;\r
-// case BPXY:\r
-// handleBPXY(cmd,mConnection);\r
-// ICLogger.i("收到服务器血压检测命令");\r
-// HeartRateManager.triggerPPGtest();\r
-// break;\r
-// case BPJZ:\r
-// handleBPJZ(cmd,mConnection,mRuntime);\r
-// ICLogger.i("收到服务器血压校准命令");\r
-// break;\r
-// case BPHT:\r
-// ICLogger.i("服务器收到上传的心率血压");\r
-// mConnection.DeliverCMDMessageToSystem("APHT",cmd);//通知下面线程状态变化\r
-// break;\r
+ case hrtstart:\r
+ handleHrtstart(mConnection);\r
+ ICLogger.i("收到服务器心率检测命令");\r
+ HeartRateManager.triggerPPGtest();\r
+ break;\r
+ case bldstart:\r
+ handleBldstart(mConnection);\r
+ ICLogger.i("收到服务器血压检测命令");\r
+ HeartRateManager.triggerPPGtest();\r
+ break;\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
//\r
// break;\r
//\r
-// case BP88:\r
-// //收到查找设备消息\r
-// handleBP88(cmd,mConnection);\r
-// mConnection.DeliverCMDMessageToSystem("findDev",cmd);//通知下面线程状态变化\r
-// break;\r
+ case FIND:\r
+ //收到查找设备消息\r
+ handleFIND(mConnection);\r
+ mConnection.DeliverCMDMessageToSystem("findDev",cmd);//通知下面线程状态变化\r
+ break;\r
// case BP89:\r
// //心率/血压阀值\r
// handleBP89(cmd,mConnection);\r