From: TrillGates Date: Thu, 29 Jul 2021 09:25:40 +0000 (+0800) Subject: parse alarm data. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=5ccc079b2f2533dcc2ca2c478ebe2bc789aaee3d;p=protocol_srv.git parse alarm data. --- diff --git a/app/src/main/java/com/enqualcomm/support/LocationClient.java b/app/src/main/java/com/enqualcomm/support/LocationClient.java index 6f16850f..37b83557 100644 --- a/app/src/main/java/com/enqualcomm/support/LocationClient.java +++ b/app/src/main/java/com/enqualcomm/support/LocationClient.java @@ -246,7 +246,7 @@ public class LocationClient { } else { ICLogger.i("BT 在区域内,直接发送区域坐标即可!"); runtime.updateFZDDevStatusEscape(false); - if (runtime.bleInfo.last_is_in_area == false) { + if (!runtime.bleInfo.last_is_in_area) { //上一次不在区域内,这次进区域要报警 ICLogger.i("BT 进入区域内,且上次不在区域内,报警!"); diff --git a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java index 467a7cab..f3c38a50 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -803,7 +803,7 @@ public class DBHelper { this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE")); } - public void saveSilent(ArrayList slist) { + public void saveSilent(ArrayList sList) { Cursor cursor = this.cr.query(ICContentProvider.SILENT_URI, (String[]) null, (String) null, (String[]) null, (String) null); String current_sys_status; if (cursor != null) { @@ -818,12 +818,12 @@ public class DBHelper { } this.cr.delete(ICContentProvider.SILENT_URI, (String) null, (String[]) null); - int count = slist.size(); + int count = sList.size(); if (count != 0) { ContentValues[] contentValueslist = new ContentValues[count]; for (int row = 0; row < count; ++row) { - Silent silent = (Silent) slist.get(row); + Silent silent = (Silent) sList.get(row); ContentValues contentValues = new ContentValues(); contentValueslist[row] = contentValues; contentValues.put("START_TIME", silent.start); diff --git a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java index b2890abe..4882ccde 100644 --- a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java +++ b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java @@ -430,7 +430,7 @@ public class protocolAPIHelper { ret = protocol_s123.AP10(runtime); break; case Config.PROTOCOL_GATOR: - ret = null; + ret = protocol_gator.BP30(runtime); break; } return ret; @@ -564,8 +564,9 @@ public class protocolAPIHelper { } return ret; } - public static void sendVoice(int duration, String remoteNum, String content, String voiceId){ - if (is_protocol_not_Initialled()) return ; + + public static void sendVoice(int duration, String remoteNum, String content, String voiceId) { + if (is_protocol_not_Initialled()) return; switch (Config.protocol_no) { case Config.PROTOCOL_JIAI: @@ -575,7 +576,7 @@ public class protocolAPIHelper { case Config.PROTOCOL_IC: break; case Config.PROTOCOL_FZD: - protocolfzd_handler.sendVoice(duration,remoteNum,content,voiceId); + protocolfzd_handler.sendVoice(duration, remoteNum, content, voiceId); break; case Config.PROTOCOL_MQTT: @@ -587,13 +588,14 @@ public class protocolAPIHelper { break; case Config.PROTOCOL_GATOR: - protocolgator_handler.sendVoicePackage(duration,remoteNum,content,voiceId); + protocolgator_handler.sendVoicePackage(duration, remoteNum, content, voiceId); break; } } + public static void sendPicture(String remoteNum, String imagePath, String imageId) { - if (is_protocol_not_Initialled()) return ; + if (is_protocol_not_Initialled()) return; switch (Config.protocol_no) { case Config.PROTOCOL_JIAI: @@ -603,7 +605,7 @@ public class protocolAPIHelper { case Config.PROTOCOL_IC: break; case Config.PROTOCOL_FZD: - protocolfzd_handler.sendPicture(remoteNum,imagePath,imageId); + protocolfzd_handler.sendPicture(remoteNum, imagePath, imageId); break; case Config.PROTOCOL_MQTT: @@ -620,6 +622,7 @@ public class protocolAPIHelper { } } + public static byte[] getVoicePacketItem(String sender, String durationHEX, String packetTime, @@ -670,7 +673,7 @@ public class protocolAPIHelper { } break; case Config.PROTOCOL_GATOR: - ret = protocol_gator.BP34_Raw(sender,packetTime,durationHEX,count,index,datalen,amrdata); + ret = protocol_gator.BP34_Raw(sender, packetTime, durationHEX, count, index, datalen, amrdata); break; } return ret; @@ -1152,6 +1155,7 @@ public class protocolAPIHelper { /** * 获取VideoCall 联系人列表 + * * @param runtime * @return */ @@ -1187,9 +1191,9 @@ public class protocolAPIHelper { return ret; } - public static void requestServerReady(){ + public static void requestServerReady() { if (is_protocol_not_Initialled()) return; - switch (Config.protocol_no){ + switch (Config.protocol_no) { case Config.PROTOCOL_FZD: protocolfzd_handler.getServerReady(); return; @@ -1198,6 +1202,7 @@ public class protocolAPIHelper { /** * 获取VideoCall ID + * * @param runtime * @return */ @@ -1235,12 +1240,13 @@ public class protocolAPIHelper { /** * 拒接VideoCall + * * @param runtime * @param remoteId * @param type * @return */ - public static StringMessage rejectVideoCall(Runtime runtime,String remoteId, int type) { + public static StringMessage rejectVideoCall(Runtime runtime, String remoteId, int type) { if (is_protocol_not_Initialled()) return null; StringMessage ret = null; switch (Config.protocol_no) { @@ -1271,7 +1277,8 @@ public class protocolAPIHelper { } return ret; } - public static StringMessage dialVideoCall(Runtime runtime,int type, int remoteUserId) { + + public static StringMessage dialVideoCall(Runtime runtime, int type, int remoteUserId) { if (is_protocol_not_Initialled()) return null; StringMessage ret = null; switch (Config.protocol_no) { @@ -1400,7 +1407,7 @@ public class protocolAPIHelper { } public static void updateEnvState(Runtime runtime, int state) { - if (is_protocol_not_Initialled()) return ; + if (is_protocol_not_Initialled()) return; switch (Config.protocol_no) { case Config.PROTOCOL_JIAI: @@ -1413,7 +1420,7 @@ public class protocolAPIHelper { break; case Config.PROTOCOL_FZD: - protocolfzd_handler.updateEnvState(state); + protocolfzd_handler.updateEnvState(state); break; case Config.PROTOCOL_MQTT: diff --git a/app/src/main/java/com/ic/protocols/protocol_gator.java b/app/src/main/java/com/ic/protocols/protocol_gator.java index 4599ce40..521e95e2 100644 --- a/app/src/main/java/com/ic/protocols/protocol_gator.java +++ b/app/src/main/java/com/ic/protocols/protocol_gator.java @@ -7,6 +7,7 @@ import android.net.Uri; import android.os.Environment; import android.os.Handler; import android.os.HandlerThread; +import android.util.Log; import com.enqualcomm.support.Config; import com.enqualcomm.support.CoreService; @@ -651,37 +652,15 @@ public class protocol_gator { int alarmswitch = 1 /*1为开,0 为关*/; int alarmcount = 0 /*表示闹钟个数*/; String alarmtime = "";//0900表示早上09:00 - StringBuilder repeat = new StringBuilder();// //0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六 // 0x01|0x02|0x04|0x08|0x10|0x20|0x40=0x7F do_cmd = cmdlist[1];//0删除、1添加(修改)闹钟功能 alarmtime = cmdlist[5]; //HHMMSS alarmindex = Integer.parseInt(cmdlist[2]); String repeatStr = cmdlist[3]; - //转成int,再转成2进进制,1表示开启,0表示不开启,111111表示7天都开启,0000001表示周一开启 - int repeatInt = Integer.parseInt(repeatStr); - StringBuilder repeatCountStr = new StringBuilder(Integer.toBinaryString(repeatInt)); - int repeatLen = 7 - repeatCountStr.length(); - for (int i = 0; i < repeatLen; i++) { - repeatCountStr.insert(0, "0"); - } - String repeatStrRev = repeatCountStr.reverse().toString(); - char[] chars = repeatStrRev.toCharArray(); - for (int i = 0; i < chars.length; i++) { - // ICLogger.d("item ==> " + chars[i]); - //第一个如果是1,直接插入7 - if (i == 0 && '1' == chars[i]) { - repeat.insert(0, "7"); - } else if ('1' == chars[i]) { - repeat.append(i); - } - } - if (repeat.length() == 0) { - repeat.append("0"); - } - ICLogger.d("repeatCount == > " + repeat.toString()); + String repeat = parseWeek(repeatStr); ArrayList alarmList = new ArrayList<>(); if ("1".equals(do_cmd)) { - alarmList.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat.toString(), "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃")); + alarmList.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃")); } //do clean and set alarm things runtime.getDbHelper().saveAlarm(alarmList); @@ -704,6 +683,34 @@ public class protocol_gator { } + private String parseWeek(String repeatStr) { + ICLogger.d("repeatStr == > " + repeatStr); + StringBuilder repeat = new StringBuilder();// //0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六 + //转成int,再转成2进进制,1表示开启,0表示不开启,111111表示7天都开启,0000001表示周一开启 + int repeatInt = Integer.parseInt(repeatStr); + StringBuilder repeatCountStr = new StringBuilder(Integer.toBinaryString(repeatInt)); + int repeatLen = 7 - repeatCountStr.length(); + for (int i = 0; i < repeatLen; i++) { + repeatCountStr.insert(0, "0"); + } + String repeatStrRev = repeatCountStr.reverse().toString(); + char[] chars = repeatStrRev.toCharArray(); + for (int i = 0; i < chars.length; i++) { + // ICLogger.d("item ==> " + chars[i]); + //第一个如果是1,直接插入7 + if (i == 0 && '1' == chars[i]) { + repeat.insert(0, "7"); + } else if ('1' == chars[i]) { + repeat.append(i); + } + } + if (repeat.length() == 0) { + repeat.append("0"); + } + ICLogger.d("repeatCount == > " + repeat.toString()); + return repeat.toString(); + } + //静音设置 public void handleAP10(Runtime ds, Connection connection, String cmd) { @@ -926,12 +933,12 @@ public class protocol_gator { //状态上报,当做心跳用 public static StringMessage BP33(Runtime ds) { -//(00520106357593060153353BP33,0,000000FF,5,46000024820000DE127,151028,163100,0,0,0) -//报警类型:0x0 无报警;0x02 SOS报警;0x08 电池低电量报警;0x20 设备脱离 -//总步数:000000FF -//电量等级:5 -//基站接入点:46000024820000DE127 -//日期时间:151028,163100 + //(00520106357593060153353BP33,0,000000FF,5,46000024820000DE127,151028,163100,0,0,0) + //报警类型:0x0 无报警;0x02 SOS报警;0x08 电池低电量报警;0x20 设备脱离 + //总步数:000000FF + //电量等级:5 + //基站接入点:46000024820000DE127 + //日期时间:151028,163100 int batstat = 0; int batlevel = ds.getBatterylevel(); if (batlevel > 0 && batlevel <= 15) { @@ -1231,7 +1238,6 @@ SOS报警上行WIFI、LBS混合定位数据,步数为255步,电量等级5,数 //隐身时段 public void handleAP22(Runtime runtime, Connection connection, String cmd) { - ICLogger.d(cmd); //AP22,A,B,起始时间(HHMM),结束时间(HHMM) ,C //A:总开关,分别用0、1表示(类型%d) //B: 对应时间段小开关,分别用0、1表示(类型%d) @@ -1246,37 +1252,46 @@ SOS报警上行WIFI、LBS混合定位数据,步数为255步,电量等级5,数 //4、14:00-15:00开启隐身时段,周一、二、三、四、五重复 //5、15:30-16:00开启隐身时段,周一、二、三、四、五重复 String[] silent_items = cmd.split(CMDSPLIT); - ArrayList slist = new ArrayList<>(); + ArrayList sList = new ArrayList<>(); + Log.d(TAG, "handleAP22 cmd == > " + cmd); - if (silent_items.length == 19) { + if (silent_items.length == 3) { + //关闭的,它只给了3个长度 +// 002C357593061269893AP22,0,1696323A43B1F744 + String index = silent_items[2]; + connection.send(BPXX_REPLY(runtime, CMD_TYPE.BP22, index, true)); + } else if (silent_items.length == 19) { String index = silent_items[18]; -// for (String si : silent_items) { -// String[] sl = si.split("-"); -// if (sl.length == 4) { -// String start, end, status; -// start = "ST" + sl[0]; -// end = "ST" + sl[1]; -// status = sl[2].equals("1") ? "ON" : "OFF"; -// char[] week = sl[3].toCharArray(); -// StringBuilder week_sb = new StringBuilder(); -// for (int i = 0; i < week.length; i++) { -// if (week[i] == '1') { -// week_sb.append(i + 1); -// } -// } -// Silent silent = new Silent(start, end, week_sb.toString(), status); -// slist.add(silent); -// ICLogger.i("set silence " + start + " " + end + " " + week_sb.toString() + " " + status); -// } else { -// ICLogger.i("免打扰时间格式错误,skip"); -// } -// } + //0066357593061269893AP22, + // 1//总开关 + // 1,0000,0000,10,//小段开关,0000开始时间,0000结束时间,10循环周期,1,2,4,8,16,32,64 + // 1,0000,0004,2, + // 1,0004,0000,48, + // 0,0000,0000,0, + // 16963269728F25A4 + if ("1".equals(silent_items[1])) { + //需要开的才去解析,否则就是关的,那么干掉所有的数据 + int startI = 2; + for (int i = 0; i < 4; i++) { + //解析数据 + String trigger = silent_items[startI]; + String startTime = silent_items[startI + 1]; + String endTime = silent_items[startI + 2]; + String weekValue = silent_items[startI + 3]; + String weekStr = parseWeek(weekValue); + ICLogger.d("weekValue ==> " + weekValue); + ICLogger.d("weekStr ==> " + weekStr); + Silent silent = new Silent("ST" + startTime, "ST" + endTime, + weekStr, trigger.equals("1") ? "ON" : "OFF"); + startI += 4; + } + } connection.send(BPXX_REPLY(runtime, CMD_TYPE.BP22, index, true)); } else { ICLogger.i("免打扰时间格式错误,skip"); } - runtime.getDbHelper().saveSilent(slist); + runtime.getDbHelper().saveSilent(sList); }