release 711
authorsnickersun <scy@incartech.cn>
Thu, 19 Nov 2020 10:29:51 +0000 (18:29 +0800)
committersnickersun <scy@incartech.cn>
Thu, 19 Nov 2020 10:29:51 +0000 (18:29 +0800)
兼容重试5次丢弃数据和不丢弃数据两种盲点缓存逻辑。暂时改为默认5次丢弃数据。
有网络时重试上传5次服务器没响应则丢弃数据,没有网络不重试上传。

app/release/ICSer_V711_2011191829_release.apk [moved from app/release/ICSer_V708_2011181543_release.apk with 78% similarity]
app/release/output.json
app/src/main/java/com/enqualcomm/support/Config.java
app/src/main/java/com/enqualcomm/support/service/Deliver.java
app/src/main/java/com/enqualcomm/support/utils/DBHelper.java
app/version_code.properties

similarity index 78%
rename from app/release/ICSer_V708_2011181543_release.apk
rename to app/release/ICSer_V711_2011191829_release.apk
index 121afff..638d41e 100644 (file)
Binary files a/app/release/ICSer_V708_2011181543_release.apk and b/app/release/ICSer_V711_2011191829_release.apk differ
index 09f2675..cbb9371 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":708,"versionName":"2011181543","enabled":true,"outputFile":"ICSer_V708_2011181543_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V708_2011181543_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":711,"versionName":"2011191829","enabled":true,"outputFile":"ICSer_V711_2011191829_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V711_2011191829_release.apk","properties":{}}]
\ No newline at end of file
index 56a18d8..78215cc 100644 (file)
@@ -30,6 +30,10 @@ public class Config {
   public static int defaultHeartbeatCycle=5;\r
   public static int sw_release_no = -1;\r
 \r
+\r
+  //如果重试都失败,则丢弃命令不进行盲点续传\r
+  public static boolean discard_cmd_after_retryfailed=true;\r
+\r
   public static boolean forceMoveCheck=true;\r
   public static boolean forceWearCheck=true;\r
 \r
index 6b6950e..c96b77b 100644 (file)
@@ -214,6 +214,15 @@ public class Deliver extends AbstractConnectionService {
             //尝试次数大于5 ,可能是还没有发送过数据,或者超过重试次数,暂停提取queue中数据进,下次心跳再开始发送\r
             if (CheckCount > 5) {\r
               ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip ");\r
+\r
+              //C5要的临时版本,去掉盲点续传。\r
+\r
+              if( Config.discard_cmd_after_retryfailed) {\r
+                if (msgWait.getIndex() >= 0) {\r
+                  mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 3);//设置为盲点不发送\r
+                }\r
+                dumpMessage(msgWait);\r
+              }\r
               if (Config.LOG_TOFILE)\r
                 ICLogger.logToFile("APILog", "response timeout skip!  ");\r
               CheckCount = 0;\r
@@ -226,7 +235,23 @@ public class Deliver extends AbstractConnectionService {
 \r
           StringBuilder stringBuilder = new StringBuilder();\r
           if (checkNetwork()) {\r
-            StringMessage msgSent=mRuntime.getDbHelper().queryNotSentCMDRecord();\r
+            StringMessage msgSent;\r
+            if( Config.discard_cmd_after_retryfailed) {\r
+              //如果可以丢弃数据,则直接查找没发送的数据即可\r
+              msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord();\r
+            }else{\r
+              //如果有盲点续传问题,不丢弃,则先查找丢掉的数据(重试失败的)先进行重传。\r
+              msgSent = mRuntime.getDbHelper().queryDiscardCMDRecord();\r
+              if(msgSent==null) {\r
+                //如果没有丢弃的数据,直接查找未发送的数据进行\r
+                msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord();\r
+              }else{\r
+                //有些协议需要修改,在此对数据修改后再发出。\r
+                if (msgSent.haveSent()==3){\r
+                  //发送前,可能需要修改命令,修改后再发送。\r
+                }\r
+              }\r
+            }\r
             dumpMessage(msgSent);\r
             if (msgSent != null) {\r
               String cmd = msgSent.isFromCache();\r
@@ -275,8 +300,17 @@ public class Deliver extends AbstractConnectionService {
     //正常应该只有一个在wait的记录,如果开机的时候,可能需要处理一下第一条记录\r
     StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord();\r
     dumpMessage(msgWait);\r
-    if (msgWait!=null)\r
-      mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(),0);//设置为未发送\r
+    if (msgWait!=null) {\r
+      if( Config.discard_cmd_after_retryfailed) {\r
+        while(msgWait!=null) {\r
+          //所有缓存数据都设置为放弃发送\r
+          mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 3);\r
+          msgWait=mRuntime.getDbHelper().queryWaitCMDRecord();\r
+        }\r
+      }else {\r
+        mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);//设置为未发送\r
+      }\r
+    }\r
   }\r
   public static void sendLocationMSG( String Msg){\r
 \r
index 930277e..848b2d6 100644 (file)
@@ -1042,9 +1042,16 @@ public class DBHelper {
     ContentResolver pcr = this.cr;\r
     Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI;\r
     StringBuilder where = new StringBuilder();\r
-    where.append("FLAG=2");\r
-    ICLogger.i("delete cmdRecords have sent ");\r
-    pcr.delete(table, where.toString(), (String[])null);\r
+    where.append("FLAG>1");\r
+    Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null);\r
+    if(cmdrecords!=null){\r
+      if(cmdrecords.getCount()>500) {\r
+        pcr.delete(table, where.toString(), (String[]) null);\r
+        ICLogger.i("delete cmdRecords have sent ");\r
+      }else{\r
+        ICLogger.i("cmdRecords less than 500 , skip delete ");\r
+      }\r
+    }\r
   }\r
 \r
   public StringMessage queryNotSentCMDRecord(){\r
@@ -1083,6 +1090,7 @@ public class DBHelper {
     return msg;\r
   }\r
 \r
+\r
   public StringMessage queryWaitCMDRecord(){\r
     ContentResolver pcr = this.cr;\r
     Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI;\r
@@ -1120,6 +1128,41 @@ public class DBHelper {
   }\r
 \r
 \r
+  public StringMessage queryDiscardCMDRecord(){\r
+    ContentResolver pcr = this.cr;\r
+    Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI;\r
+    StringBuilder where = new StringBuilder();\r
+    where.append("FLAG=3");\r
+    // ICLogger.i("Query cmdRecords "+where);\r
+    Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null);\r
+    StringMessage msg=null;\r
+    if (cmdrecords != null) {\r
+      int score=0;\r
+      if (cmdrecords.getCount()> 0) {\r
+        if (cmdrecords.moveToFirst()) {\r
+          String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC"));\r
+          String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD"));\r
+          String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE"));\r
+          String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME"));\r
+          int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG"));\r
+          int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id"));\r
+\r
+          msg=new StringMessage(new String[]{topic});\r
+          msg.refresh(cmd);\r
+          msg.setDate(date,time);\r
+          msg.setSentFlag(flag);\r
+          msg.setIndex(index);\r
+          ICLogger.i("get cmd Record discarded response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd);\r
+        }\r
+      }\r
+      cmdrecords.close();\r
+\r
+      if (msg==null)\r
+        ICLogger.i("no cmd record in wait status !");\r
+    }\r
+    return msg;\r
+  }\r
+\r
 \r
 \r
 }\r
index acf4d83..5080984 100644 (file)
@@ -1,2 +1,2 @@
-#Wed Nov 18 15:43:27 CST 2020\r
-VERSION_CODE=708\r
+#Thu Nov 19 18:29:05 CST 2020\r
+VERSION_CODE=711\r