release 765
authorsnickersun <scy@incartech.cn>
Fri, 19 Mar 2021 08:55:24 +0000 (16:55 +0800)
committersnickersun <scy@incartech.cn>
Fri, 19 Mar 2021 08:55:24 +0000 (16:55 +0800)
为Protocol Fzd 添加 UD2 续传功能。

app/release/ICSer_V765_2103191651_release.apk [moved from app/release/ICSer_V764_2103181125_release.apk with 78% similarity]
app/release/output.json
app/src/main/java/com/enqualcomm/support/service/Deliver.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_fzd.java
app/version_code.properties

similarity index 78%
rename from app/release/ICSer_V764_2103181125_release.apk
rename to app/release/ICSer_V765_2103191651_release.apk
index 7599d13..9987075 100644 (file)
Binary files a/app/release/ICSer_V764_2103181125_release.apk and b/app/release/ICSer_V765_2103191651_release.apk differ
index 9e00cd1..59525fb 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":764,"versionName":"2103181125","enabled":true,"outputFile":"ICSer_V764_2103181125_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V764_2103181125_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":765,"versionName":"2103191651","enabled":true,"outputFile":"ICSer_V765_2103191651_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V765_2103191651_release.apk","properties":{}}]
\ No newline at end of file
index bbbb2b0..476409c 100644 (file)
@@ -232,20 +232,20 @@ public class Deliver extends AbstractConnectionService {
                 }
 
                 StringBuilder stringBuilder = new StringBuilder();
-                if (checkNetwork()) {
-                    StringMessage msgSent;
-                    if (Config.discard_cmd_after_retryfailed) {
-                        //如果可以丢弃数据,则直接查找没发送的数据即可
+                StringMessage msgSent;
+                if (Config.discard_cmd_after_retryfailed) {
+                    //如果可以丢弃数据,则直接查找没发送的数据即可
+                    msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord();
+                } else {
+                    //如果有盲点续传问题,不丢弃,则先查找丢掉的数据(重试失败的)先进行重传。
+                    msgSent = mRuntime.getDbHelper().queryDiscardCMDRecord();
+                    if (msgSent == null) {
+                        //如果没有丢弃的数据,直接查找未发送的数据进行
                         msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord();
-                    } else {
-                        //如果有盲点续传问题,不丢弃,则先查找丢掉的数据(重试失败的)先进行重传。
-                        msgSent = mRuntime.getDbHelper().queryDiscardCMDRecord();
-                        if (msgSent == null) {
-                            //如果没有丢弃的数据,直接查找未发送的数据进行
-                            msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord();
-                        }
                     }
-                    dumpMessage(msgSent);
+                }
+                dumpMessage(msgSent);
+                if (checkNetwork()) { //网络服务器链接正常 则进行正常操作
                     if (msgSent != null) {
                         String cmd = msgSent.isFromCache();
                         String topic = msgSent.cmd();
@@ -276,9 +276,13 @@ public class Deliver extends AbstractConnectionService {
                     } else {
                         stringBuilder.append("no message!\n");
                     }
+                    str = stringBuilder.toString();
+                    ICLogger.i("send cached cmd : \n" + str);
+                }else{ //如果网络服务器未链接,则表示数据不需要传,
+                    //但是有些协议要求此数据 需要转变为 盲点续传数据(已经是盲点的跳过)
+                    mRuntime.getDbHelper().updateCMDRecordForUD2(0,msgSent); //未发送
                 }
-                str = stringBuilder.toString();
-                ICLogger.i("send cached cmd : \n" + str);
+
                 //ICLogger.i("\n"+queue.size()+" left in Queue!");
             } finally {
                 if (mLock != null && mLock.isLocked())
index de045fd..df8be22 100644 (file)
@@ -30,6 +30,7 @@ import com.enqualcomm.support.bean.SleepRecord;
 import com.enqualcomm.support.bean.StheartRate;
 import com.enqualcomm.support.bean.StringMessage;
 import com.enqualcomm.support.bean.Weather;
+import com.ic.protocols.protocolAPIHelper;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -1051,7 +1052,32 @@ public class DBHelper {
         return raw_contactID;
     }
 
-
+    public void updateCMDRecordForUD2(int flag,StringMessage msg) {
+        String WhereClause = null;
+        if(msg!=null) {
+            int id = msg.getIndex();
+            String topic = msg.cmd();
+            if (id >= 0 && topic.equals("UD")) {
+                StringMessage UD2 = protocolAPIHelper.genMissedUD2Msg(msg);
+                if (UD2 != null) {
+                    WhereClause = new StringBuilder("_id=").append(id).toString();
+                    ContentValues flagcontent = new ContentValues();
+                    flagcontent.put("FLAG", flag);
+                    flagcontent.put("TOPIC", UD2.cmd());
+                    flagcontent.put("CMD", UD2.isFromCache());
+                    this.cr.update(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, flagcontent, WhereClause, null);
+
+                    ICLogger.d(" 更新 UD " + msg.isFromCache() + "\nto UD2 " + UD2.isFromCache());
+                } else {
+                    ICLogger.e("genMissedUD2Msg failed, skip gen UD2 msg");
+                }
+            } else {
+                ICLogger.e("not UD or id <0 , skip gen UD2 msg");
+            }
+        }else{
+            ICLogger.e("msg is null , skip gen UD2 msg");
+        }
+    }
     public void updateCMDRecord(int id, int flag) {
         String WhereClause = null;
         if (id >= 0) {
index 590018d..cdd21bb 100644 (file)
@@ -701,4 +701,28 @@ public class protocolAPIHelper {
         }
         return ret;
     }
+
+    public static StringMessage genMissedUD2Msg(StringMessage msg){
+        if (is_protocol_not_Initialled()) return null;
+        StringMessage ret = null;
+        switch (Config.protocol_no) {
+            case Config.PROTOCOL_JIAI:
+                ret = null;
+                break;
+            case Config.PROTOCOL_BEEHOME:
+                ret = null;
+                break;
+            case Config.PROTOCOL_IC:
+                ret = null;
+                break;
+            case Config.PROTOCOL_FZD:
+                ret = protocolfzd_handler.genUD2FromUD(msg);
+                break;
+            case Config.PROTOCOL_MQTT:
+                ret = null;
+                break;
+        }
+        return ret;
+    }
+
 }
index 60b9020..a8e7fea 100644 (file)
@@ -48,7 +48,7 @@ public class protocol_fzd {
     private static final String CMDHEADERSPLIT = "*";
     private static final String CMDSPLIT = ",";
     private static final boolean doEncryption = Util.getSystemProperties("persist.sys.encrypt_fzd", "true").equals("true");
-    public static final String defaultServerIP = "fzd.xcloudtech.com";
+    public static final String defaultServerIP = "api.xcloudtech.com";
     public static final int defaultServerPort = 9000;
     private final SharedPreferences sharedPreferences;
 
@@ -227,6 +227,20 @@ public class protocol_fzd {
             return "";
     }
 
+    //[6fb043e7f6bb5f107319e3f3822d7124IC*860316012050026*0126*UD,210318,163421,A,33.0227161,N,114.0202817,E,2.98,0.0,0.0,5,039,095,35,00,0100018,5,1,460,00,18899,190839372,44,18899,81,43,18899,56,39,18899,458,38,18899,497,33,5,AP1,fc:d7:33:c8:77:d2,-57,AP2,1c:60:de:28:03:b4,-65,AP3,a4:2b:8c:89:62:91,-68,AP4,cc:2d:21:e2:46:a8,-68,AP5,be:dd:c2:47:04:2b,-70]
+    public StringMessage genUD2FromUD(StringMessage ud){
+        String cmd,data,tmp;
+        tmp=ud.isFromCache();
+        if(isCmdStr(tmp).equals("UD")) {
+            cmd = ud.cmd().equals("UD") ? "UD2" : ud.cmd();
+            tmp=ud.isFromCache().replace("]","");
+            int index=tmp.indexOf("UD,");
+            data=tmp.substring(index+3);
+            return genFZDCMD("UD2",data);
+        }else{
+            return null;
+        }
+    }
     /*
     返回true 表示 cmd 全部解析成功
     返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用
@@ -805,6 +819,12 @@ public class protocol_fzd {
             case PRACTICE:
                 mConnection.DeliverCMDMessageToSystem("PRACTICE", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
                 break;
+            case UD:
+                mConnection.DeliverCMDMessageToSystem("UD", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+                break;
+            case UD2:
+                mConnection.DeliverCMDMessageToSystem("UD2", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+                break;
             case PING:
                 handlePing(mRuntime, data);
                 ICLogger.i("服务器返回Ping绑定信息");
index 10507bc..02dedc4 100644 (file)
@@ -1,2 +1,2 @@
-#Thu Mar 18 11:25:58 CST 2021
-VERSION_CODE=764
+#Fri Mar 19 16:51:35 CST 2021
+VERSION_CODE=765