From: snickersun Date: Fri, 19 Mar 2021 08:55:24 +0000 (+0800) Subject: release 765 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=dacf1cb49227be45b210345d7d90cc0c9aa4ea1d;p=protocol_srv.git release 765 为Protocol Fzd 添加 UD2 续传功能。 --- diff --git a/app/release/ICSer_V764_2103181125_release.apk b/app/release/ICSer_V765_2103191651_release.apk similarity index 78% rename from app/release/ICSer_V764_2103181125_release.apk rename to app/release/ICSer_V765_2103191651_release.apk index 7599d137..99870756 100644 Binary files a/app/release/ICSer_V764_2103181125_release.apk and b/app/release/ICSer_V765_2103191651_release.apk differ diff --git a/app/release/output.json b/app/release/output.json index 9e00cd19..59525fba 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -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 diff --git a/app/src/main/java/com/enqualcomm/support/service/Deliver.java b/app/src/main/java/com/enqualcomm/support/service/Deliver.java index bbbb2b03..476409c9 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -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()) 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 de045fd7..df8be225 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -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) { diff --git a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java index 590018d8..cdd21bb0 100644 --- a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java +++ b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java @@ -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; + } + } diff --git a/app/src/main/java/com/ic/protocols/protocol_fzd.java b/app/src/main/java/com/ic/protocols/protocol_fzd.java index 60b9020a..a8e7fea3 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -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绑定信息"); diff --git a/app/version_code.properties b/app/version_code.properties index 10507bc9..02dedc4a 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -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