-[{"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
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
//尝试次数大于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
\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
//正常应该只有一个在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
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
return msg;\r
}\r
\r
+\r
public StringMessage queryWaitCMDRecord(){\r
ContentResolver pcr = this.cr;\r
Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI;\r
}\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
-#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