parse alarm data.
authorTrillGates <williamtrillgates@gmail.com>
Thu, 29 Jul 2021 09:25:40 +0000 (17:25 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Thu, 29 Jul 2021 09:25:40 +0000 (17:25 +0800)
app/src/main/java/com/enqualcomm/support/LocationClient.java
app/src/main/java/com/enqualcomm/support/utils/DBHelper.java
app/src/main/java/com/ic/protocols/protocolAPIHelper.java
app/src/main/java/com/ic/protocols/protocol_gator.java

index 6f16850..37b8355 100644 (file)
@@ -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 进入区域内,且上次不在区域内,报警!");
 
index 467a7ca..f3c38a5 100644 (file)
@@ -803,7 +803,7 @@ public class DBHelper {
         this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE"));
     }
 
-    public void saveSilent(ArrayList<Silent> slist) {
+    public void saveSilent(ArrayList<Silent> 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);
index b2890ab..4882ccd 100644 (file)
@@ -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:
 
index 4599ce4..521e95e 100644 (file)
@@ -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<Alarm> 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<Silent> slist = new ArrayList<>();
+        ArrayList<Silent> 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);
 
 
     }