From: TrillGates Date: Mon, 26 Apr 2021 07:18:58 +0000 (+0800) Subject: complted anan base protocol content. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=ad9619877838b93b04a8ca99ae58a6a3edf69320;p=protocol_srv.git complted anan base protocol content. --- diff --git a/app/src/main/java/com/ic/protocols/protocol_anan.java b/app/src/main/java/com/ic/protocols/protocol_anan.java index ccab10a6..58cc0a4c 100644 --- a/app/src/main/java/com/ic/protocols/protocol_anan.java +++ b/app/src/main/java/com/ic/protocols/protocol_anan.java @@ -10,20 +10,27 @@ import android.os.Environment; import android.telephony.TelephonyManager; import com.enqualcomm.support.Config; +import com.enqualcomm.support.CoreService; +import com.enqualcomm.support.R; +import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.bean.Content; +import com.enqualcomm.support.bean.ICLocation; import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.StringMessage; import com.enqualcomm.support.bean.VoiceContent; import com.enqualcomm.support.bean.voicePacket; +import com.enqualcomm.support.service.HeartRateManager; import com.enqualcomm.support.utils.Connection; import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; import java.io.File; +import java.util.ArrayList; import java.util.HashMap; import java.util.Locale; +import static com.enqualcomm.support.Constants.FROM_SERVER; import static com.enqualcomm.support.bean.Contact.GROUP_ALL; import static java.lang.Math.abs; @@ -171,7 +178,10 @@ public class protocol_anan { AP16/*立即定位*/, AP17/*恢复出厂设置*/, AP18/*重启上行*/, - AP31/*关机上行*/ + AP31/*关机上行*/, + AP12/*SOS名单上行*/, + APXL/*血压心率 上行*/, + APXY, AP88, AP15, AP84, AP14/*白名单电话本上行*/ } @@ -544,9 +554,411 @@ public class protocol_anan { ICLogger.i("收到服务器关机命令BP31"); mConnection.DeliverCMDMessageToSystem("poweroff", cmd);//通知下面线程状态变化 break; + case BP14: + //收到设置白名单号码 + handleBP14(mConnection, cmd, mRuntime); + ICLogger.i("收到服务器设置白名单号码命令BP14"); + break; + case BP12: + //收到设置SOS号码 + handleBP12(mConnection, cmd, mRuntime); + ICLogger.i("收到服务器设置SOS号码命令BP12"); + break; + case BPXL: + handleBPXL(cmd, mConnection); + ICLogger.i("收到服务器心率检测命令"); + if (mRuntime.check_stat_do_ppg_test()) + HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER); + break; + case BPXY: + handleBPXY(cmd, mConnection); + ICLogger.i("收到服务器血压检测命令"); + if (mRuntime.check_stat_do_ppg_test()) + HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER); + break; + case BP88: + //收到查找设备消息 + handleBP88(cmd, mConnection); + mConnection.DeliverCMDMessageToSystem("findDev", cmd);//通知下面线程状态变化 + break; + case BP15: + handleBP15(cmd, mConnection, mRuntime); + ICLogger.i("收到服务器设置定位命令BP15"); + break; + case BP84: + handleBP84(cmd, mConnection); + ICLogger.i("收到服务器白名单命令"); + break; + case BP07: + //收到发送的语音包 + handleBP07(cmd, mConnection); + break; + + } + } + + public void handleBP07(String cmd, Connection connection) { +//平台响应: IWBP07,20140818064408,6,1,1# +//20140818064408:设备语音时间,yyyyMMddHHmmss 格式的年月日时分秒 +//6:语音包分包总数 +//1:当前设备收到的是第几个包 +//1:表示服务器接受数据成功,0表示服务器接受数据失败 + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 5) { + try { + String time = cmdlist[1]; + int packetCount = Integer.parseInt(cmdlist[2]); + int packetIndex = Integer.parseInt(cmdlist[3]); + int receiveSuccess = Integer.parseInt(cmdlist[4]); + ICLogger.i("服务器在" + time + " 收到语音 " + + packetIndex + "/" + packetCount + " " + (receiveSuccess == 1 ? "成功" : "失敗")); + if (receiveSuccess == 1) { + //如果服务器接收 语音成功,则设置下一个要发送的语音包Index,当index == packetCount的时候表示所有包发送完毕,停止继续发送 + voicePacket.getInstanceSent().setCurrentIndexToSent(packetIndex); + } + //发送消息,再次检查要发送的语音包,确认其发送完毕 + connection.DeliverCMDMessageToSystem("SentVoicePacket", "SentVoicePacket"); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); + } + } else { + ICLogger.i(" BP07 Format error!"); + } + } + + + public void handleBP84(String cmd, Connection connection) { +//示例: + //IWBP84,353456789012345,080835,1# + //说明: + //IW:标识符 + //BP84 : 命令字符 + //353456789012345:IMEI号,设备唯一ID + //080835 :指令流水号 + //1: 表示白名单开,0 表示白名单关 + String[] list = cmd.split(CMDSPLIT); + + if (list.length == 4) { + String index = list[2]; + String whitelist_switch = list[3]; + connection.send(AP84(index, 1)); + + if (whitelist_switch.equals("1")) { + Util.setSystemProperties("persist.sys.whitelist.enable", "true"); + } else { + Util.setSystemProperties("persist.sys.whitelist.enable", "false"); + } + ICLogger.i("收到服务器指令:白名单" + (whitelist_switch.equals("1") ? "开" : "关")); + + } else { + + ICLogger.i("BP84 format error!"); + } + + } + + + //白名单开关(下行协议号:BP84,响应:AP84) + public static StringMessage AP84(String index, int success) { + + //设备响应: IWAP80,080835,1# + //080835:指令流水号 + //1:表示设备执行成功,0 表示设备执行失败 + return genStringMessage("AP84", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84)) + .append(CMDSPLIT).append(index) + .append(CMDSPLIT).append(success) + .append(CMDEND).toString()); + } + + + //设置定位周期 + public void handleBP15(String cmd, Connection connection, Runtime runtime) { +// IWBP15, 353456789012345, 080835, 30# +// 353456789012345:IMEI号,设备唯一ID +// 080835 :指令流水号 +// 30: 表示频率为30分钟 + + String[] list = cmd.split(CMDSPLIT); + + if (list.length == 4) { + String index = list[2]; + String time = list[3]; + connection.send(AP15(index)); + ICLogger.i("BP15 , 定位周期=" + time + "秒"); + + try { + Config.setLocationMode(runtime.getContextProxy().context, ICLocation.CUSTOM_MOD8_GPS); + Config.setLocationCycle(runtime.getContextProxy().context, Integer.parseInt(time)); + runtime.getLocationInstance().setWorkingMod(Config.getLocationMode(runtime.getContextProxy().context)); + runtime.getLocationInstance().setLocation_cycle(Config.getLocationCycle(runtime.getContextProxy().context)); + //set AlarmCycle and trigger Location + CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); + } + } else { + ICLogger.i("BP15 format error"); + } + + } + + public static StringMessage AP15(String index) { +//IWAP15, 080835# +//080835:指令流水号 + return genStringMessage("AP15", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15)) + .append(CMDSPLIT).append(index) + .append(CMDEND).toString()); + } + + + public static void handleBP88(String cmd, Connection connection) { +// IWBP88,080835# + String[] list = cmd.split(CMDSPLIT); + + if (list.length == 2) { + String index = list[1]; + connection.send(AP88(index)); + ICLogger.i("收到服务器消息:查询设备"); + + } else { + ICLogger.i("BP88 format error!"); + } + } + + + public static StringMessage AP88(String index) { + //设备响应: IWAP88, 080835# + //080835:指令流水号 + return genStringMessage("AP88", + new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88)) + .append(CMDSPLIT).append(index) + .append(CMDEND).toString()); + } + + /** + * 测量血压 + * + * @param cmd + * @param connection + */ + public void handleBPXY(String cmd, Connection connection) { + //IWBPXY,353456789012345,080835# + //说明: + //IW:标识符 + //BPXL : 命令字符 + //353456789012345:IMEI号,设备唯一ID + //080835 :指令流水号 + //设备响应: IWAPXY,080835# + //080835:指令流水号 + String[] list = cmd.split(CMDSPLIT); + if (list.length == 3) { + String index = list[2]; + String imei = list[1]; + ICLogger.i("Handle BPXY IMEI " + imei + ",index " + index); + connection.send(APXY(index)); + } else { + ICLogger.i("BPXY format error!"); + } + + } + + public static StringMessage APXY(String id) { +//设备响应: IWAPXY,080835# + //080835:指令流水号 + return genStringMessage(cmdMap.get(CMD_TYPE.APXY), + new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY)) + .append(CMDSPLIT).append(id) + .append(CMDEND).toString()); + } + + /** + * 测量心率 + * + * @param cmd + * @param connection + */ + public void handleBPXL(String cmd, Connection connection) { + //IWBPXL,353456789012345,080835# + //说明: + //IW:标识符 + //BPXL : 命令字符 + //353456789012345:IMEI号,设备唯一ID + //080835 :指令流水号 + //设备响应: IWAPXL,080835# + //080835:指令流水号 + String[] list = cmd.split(CMDSPLIT); + if (list.length == 3) { + String index = list[2]; + String imei = list[1]; + ICLogger.i("Handle BPXL IMEI " + imei + ",index " + index); + connection.send(APXL(index)); + } else { + ICLogger.i("BPXL format error!"); + } + + } + + public static StringMessage APXL(String id) { +//设备响应: IWAPXL,080835# + //080835:指令流水号 + return genStringMessage(cmdMap.get(CMD_TYPE.APXL), + new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL)) + .append(CMDSPLIT).append(id) + .append(CMDEND).toString()); + } + + + //设置SOS号码 + public static StringMessage AP12(String index, String phNum1, String phNum2, String phNum3) { + return genStringMessage("AP12", + new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12)) + .append(CMDSPLIT).append(index) + .append(CMDSPLIT).append(phNum1) + .append(CMDSPLIT).append(phNum2) + .append(CMDSPLIT).append(phNum3) + .append(CMDEND).toString()); + } + + //设置SOS号码 + public void handleBP12(Connection connection, String cmd, Runtime runtime) { + // IWBP12,353456789012345,080835,135XXXXXXXX,135XXXXXXXX,135XXXXXXXX# + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length >= 3) { + String index = cmdlist[2]; + String phNum1 = cmdlist.length == 3 ? "" : cmdlist[3]; + String phNum2 = cmdlist.length > 3 ? (cmdlist.length == 4 ? "" : cmdlist[4]) : ""; + String phNum3 = (cmdlist.length > 4) ? (cmdlist.length == 5 ? "" : cmdlist[5]) : ""; + ICLogger.i(new StringBuffer().append("get Emegency Numbs " + phNum1 + "," + phNum2 + "," + phNum3).toString()); + connection.send(AP12(index, phNum1, phNum2, phNum3)); + + ArrayList contactArray = new ArrayList(); +// if(Config.custom_branch_name.equals("AK")){ +// +// contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", "07522312120")); +// if (!phNum1.isEmpty()) +// contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum1)); +// if (!phNum2.isEmpty()) +// contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum2)); +// }else { + if (!phNum1.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", phNum1)); + if (!phNum2.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum2)); + if (!phNum3.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum3)); +// } + runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true); + } else { + ICLogger.i(" BP12 format error!"); } } + //设置通讯录,白名单(10个) + public void handleBP14(Connection connection, String cmd, Runtime runtime) { +// IWBP14,867155030001063,357444,9b44529b|13554820016,,,,,,,,, +/** + * IWBP14,353456789012345,080835, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx, + * D3590D54|135xxxxxxxxxx# + */ + String[] cmdlist = cmd.split(CMDSPLIT); + String[] phnums = new String[]{"", "", "", "", "", "", "", "", "", ""}; + StringBuffer sb = new StringBuffer().append("recv phone Numbs "); + if (cmdlist.length >= 3) { + switch (cmdlist.length) { + case 13: + phnums[9] = cmdlist[12]; + sb.append(phnums[9]).append(","); + case 12: + phnums[8] = cmdlist[11]; + sb.append(phnums[8]).append(","); + case 11: + phnums[7] = cmdlist[10]; + sb.append(phnums[7]).append(","); + case 10: + phnums[6] = cmdlist[9]; + sb.append(phnums[6]).append(","); + case 9: + phnums[5] = cmdlist[8]; + sb.append(phnums[5]).append(","); + case 8: + phnums[4] = cmdlist[7]; + sb.append(phnums[4]).append(","); + case 7: + phnums[3] = cmdlist[6]; + sb.append(phnums[3]).append(","); + case 6: + phnums[2] = cmdlist[5]; + sb.append(phnums[2]).append(","); + case 5: + phnums[1] = cmdlist[4]; + sb.append(phnums[1]).append(","); + case 4: + phnums[0] = cmdlist[3]; + sb.append(phnums[0]).append(","); + + } + + String index = cmdlist[2]; + ICLogger.i(sb.toString()); + connection.send(AP14(index, phnums)); + ArrayList contactArray = new ArrayList(); + + if (Config.custom_name.equals("YT")) { + ICLogger.i("=====add hotline 96885 "); + contactArray.add(new Contact(Contact.CATEGORY_CALL, runtime.getContextProxy().context.getResources().getString(R.string.hotline), "96885")); + } + for (int i = 0; i < phnums.length; i++) { + String[] tmp = phnums[i].split("\\|"); + if (tmp.length == 2) { + String name = Util.decodeUnicode2Utf8(tmp[0]); + String phonem = tmp[1]; + ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length + " , name=" + name + ",-" + phonem); + contactArray.add(new Contact(Contact.CATEGORY_CALL, name, phonem)); + } else { + ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length); + + } + } +// contactArray.add(new Contact(Contact.CATEGORY_GROUP,"All","666")); +// contactArray.add(new Contact(Contact.CATEGORY_PARTNER,"PARTNER","666")); +// contactArray.add(new Contact(Contact.CATEGORY_CARE,"CARE","666")); +// contactArray.add(new Contact(Contact.CATEGORY_VOLTE,"VOLTE","666")); + + runtime.getDbHelper().saveContacts(contactArray, false, false, true, false, false, false); + + } else { + ICLogger.i(" BP14 format error!"); + } + + } + + + public static StringMessage AP14(String index, String[] phnumbs) { + return genStringMessage("AP14", new StringBuffer(CMDHEADER).append( + cmdMap.get(CMD_TYPE.AP14)) + .append(CMDSPLIT).append(index) + .append(CMDSPLIT).append(phnumbs[0]) + .append(CMDSPLIT).append(phnumbs[1]) + .append(CMDSPLIT).append(phnumbs[2]) + .append(CMDSPLIT).append(phnumbs[3]) + .append(CMDSPLIT).append(phnumbs[4]) + .append(CMDSPLIT).append(phnumbs[5]) + .append(CMDSPLIT).append(phnumbs[6]) + .append(CMDSPLIT).append(phnumbs[7]) + .append(CMDSPLIT).append(phnumbs[8]) + .append(CMDSPLIT).append(phnumbs[9]) + .append(CMDEND).toString()); + } + public void handleBP31(Connection connection, String cmd) { diff --git a/app/src/main/java/com/ic/protocols/protocol_beehome.java b/app/src/main/java/com/ic/protocols/protocol_beehome.java index d403edb3..52039478 100644 --- a/app/src/main/java/com/ic/protocols/protocol_beehome.java +++ b/app/src/main/java/com/ic/protocols/protocol_beehome.java @@ -27,7 +27,6 @@ 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.Constants.FROM_SERVER; import static com.enqualcomm.support.LocationClient.LOCATION_MODE; import static com.enqualcomm.support.bean.Contact.GROUP_ALL; @@ -2021,7 +2020,6 @@ public class protocol_beehome { handleBP84(cmd, mConnection); ICLogger.i("收到服务器白名单命令"); break; - case BP86: //绑定解绑消息 handleBP86(cmd, mConnection, mRuntime);