From: snickersun Date: Sun, 26 Jul 2020 09:50:56 +0000 (+0800) Subject: BPDE BPDF BPTU 中间版本,协议解析完了,但是逻辑还没实现完毕 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.js?a=commitdiff_plain;h=e551ce1312f363ae5235dcf6a263b429a5ee9d12;p=protocol_srv.git BPDE BPDF BPTU 中间版本,协议解析完了,但是逻辑还没实现完毕 --- diff --git a/app/src/main/java/com/enqualcomm/support/bean/SleepInfo.java b/app/src/main/java/com/enqualcomm/support/bean/SleepInfo.java index d053061e..515e136d 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/SleepInfo.java +++ b/app/src/main/java/com/enqualcomm/support/bean/SleepInfo.java @@ -36,7 +36,7 @@ public class SleepInfo { * @param sleepstart * 系统设置的 睡眠开始监测时间 例如晚上9点开始 * @param sleepend - * 系统设置的 睡眠停止监测时间 例如第二天早9点 + * 系统设置的 睡眠停止监测时间 例如第二天早7点 * @param step_in_minutes * 系统当前的 心跳间隔时间,单位分钟 */ @@ -60,6 +60,8 @@ public class SleepInfo { System.currentTimeMillis(); if (turnovertime <= DEEP_TURN_LEVEL){ deepsleep_minutes+=step_for_each_record_in_minutes; + }else if (turnovertime > DEEP_TURN_LEVEL && turnovertime =4){ - String index=list[2]; - String imei=list[1]; - connection.send(genStringMessage("APS4",APS4(index))); + String sb=new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP07)) + .append(CMDSPLIT).append(6654111) + .append(CMDSPLIT).append(packetTime) + .append(CMDSPLIT).append(filetype) + .append(CMDSPLIT).append(datatype) + .append(CMDSPLIT).append(count) + .append(CMDSPLIT).append(index) + .append(CMDSPLIT).append(datalen) + .append(CMDSPLIT).toString(); - String setting1; - switch(list.length){ - case 10: - setting1=list[9]; - ICLogger.i("set 7th alarm "+setting1); - case 9: - setting1=list[8]; - ICLogger.i("set 6th alarm "+setting1); - case 8: - setting1=list[7]; - ICLogger.i("set 5th alarm "+setting1); - case 7: - setting1=list[6]; - ICLogger.i("set 4th alarm "+setting1); - case 6: - setting1=list[5]; - ICLogger.i("set 3rd alarm "+setting1); - case 5: - setting1=list[4]; - ICLogger.i("set 2nt alarm "+setting1); - case 4: - setting1=list[3]; - ICLogger.i("set 1st alarm "+setting1); - break; + byte[] sentbuf=new byte[sb.length()+datalen+1]; + System.arraycopy(sb.getBytes(),0,sentbuf,0,sb.length()); + System.arraycopy(amrdata,0,sentbuf,sb.length(),datalen); + sentbuf[sb.length()+datalen]='#'; + + return sentbuf; + + } + + + public void handleBPTU(String cmd , NettyConnection connection ){ +/*** + * 平台响应 + * IWBPTU,6654111,080835,1,1,6,1,1# + * IW:标识符 + * APCU : 命令字符 + * 6654111:语音图片文字目标 + * 080835 :流水号 + * 1:文件类型 + * 1:内容类型 + * 6:内容总包数 + * 1:当前包序号 + * 1:成功 (0:失败) + */ + String[] cmdlist=cmd.split(CMDSPLIT); + if (cmdlist.length==8){ + String time=cmdlist[2]; + String filetype=cmdlist[3]; + String datatype=cmdlist[4]; + String count=cmdlist[5]; + String index=cmdlist[6]; + String success=cmdlist[7]; + int ftype=Integer.valueOf(filetype); + int dtype=Integer.valueOf(datatype); + int packetCount=Integer.valueOf(count); + int packetIndex=Integer.valueOf(index); + int receiveSuccess=Integer.valueOf(success); + ICLogger.i("服务器在收到 index "+time+", 文件类型 "+ftype+",内容类型 "+dtype+" "+packetIndex+"/"+packetCount+" "+ (receiveSuccess==1?"成功":"失敗")); + if (receiveSuccess == 1){ + //如果服务器接收 语音成功,则设置下一个要发送的语音包Index,当index == packetCount的时候表示所有包发送完毕,停止继续发送 + voicePacket.getInstanceSent().setCurrentIndexToSent(packetIndex); } + //发送消息,再次检查要发送的语音包,确认其发送完毕 + + connection.DeliverCMDMessageToSystem("BPTU","SentBPFilePacket"); - ICLogger.i("Handle BPX1 IMEI "+imei+",index "+index+", get "+(list.length-3) +" settings"); }else{ - ICLogger.i("BPX1 format error!"); + ICLogger.i(" BPTU Format error!"); } } @@ -2121,20 +2190,19 @@ public class protocol_ic { ICLogger.i("收到 提醒设置(时间段)"); mConnection.DeliverCMDMessageToSystem("IWAPS4",cmd);//通知下面线程状态变化 break; - - case BPTU: - handleBPTU(cmd,mConnection,mRuntime); - ICLogger.i("服务器 收到 语音图片信息!"); - mConnection.DeliverCMDMessageToSystem("IWAPTU",cmd);//通知下面线程状态变化 - break; case BPDE: - handleBPDE(); + handleBPDE(mConnection,cmd,mRuntime); ICLogger.i(" 收到 进出围栏通知!"); mConnection.DeliverCMDMessageToSystem("IWAPDE",cmd);//通知下面线程状态变化 break; + case BPTU: + handleBPTU(cmd, mConnection); + ICLogger.i("收到服务器 图片语音 消息 BPTU"); + mConnection.DeliverCMDMessageToSystem("BPTU", "");//通知下面线程状态变化 + break; case BPDF: - handleBPDF(); + handleBPDF(mConnection,cmd,mRuntime); ICLogger.i(" 收到 体温阈值设置!"); mConnection.DeliverCMDMessageToSystem("IWAPDF",cmd);//通知下面线程状态变化 break; @@ -2147,7 +2215,7 @@ public class protocol_ic { public boolean handleCmd(CMD_TYPE type, String cmd, byte[] bytes) { - //只有需要传递二级制数据的才需要这个函数,目前只有BP28需要 + //只有需要传递二进制数据的才需要这个函数,目前只有BP28需要 boolean ret=true; ICLogger.i("handleCmd "+type.name() + " "+cmd+" bytelen="+bytes.length ); if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " +new String(bytes));