From 60256c53ae45de03d522befe3958913f6bbf3095 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期一, 16 三月 2020 15:54:05 +0800
Subject: [PATCH] 解决初次安装(卸载后安装)不发送rtk配置的bug

---
 app/src/main/java/safeluck/drive/evaluation/app.java                                      |    5 -
 app/src/main/java/safeluck/drive/evaluation/MainActivity.java                             |   23 -------
 app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java           |    2 
 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt         |   68 ++++++++++++++++++----
 app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java |   34 +++++++++++
 5 files changed, 91 insertions(+), 41 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java
index aaa42eb..1f172d2 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java
@@ -29,7 +29,7 @@
 
     public AppStatusWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
         super(context, workerParams);
-        MyLog.d(TAG,"鍒濆鍖朅ppStatusDao");
+        MyLog.d(TAG,"鍒濆鍖朅ppStatusWorker");
         appStatusDao = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getAppStatusDao();
     }
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt
index fca1875..e2ea10d 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt
@@ -8,6 +8,8 @@
 import com.anyun.exam.lib.AYSdk
 import com.anyun.exam.lib.MyLog
 import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.google.gson.stream.JsonReader
 import org.json.JSONException
 import org.json.JSONObject
 import safeluck.drive.evaluation.DB.Constant
@@ -15,6 +17,8 @@
 import safeluck.drive.evaluation.DB.rtktb.RTKConfig
 import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig
 import safeluck.drive.evaluation.bean.SignalConfigRemote
+import java.io.IOException
+import java.io.InputStreamReader
 
 class ExamStatusOutWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
     val TAG:String = "ExamStatusOutWorker"
@@ -23,18 +27,9 @@
     private var singalConfigs :List<SingalConfig> = ArrayList()
     override fun doWork(): Result {
         val examType =WorkRoomDataBase.getWorkRoomDataBase(applicationContext).examStatusDao.startExamInt;
-        singalConfigs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao._getSignalConfigs()
 
-        sendRtkConfigInfo(WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig())
-        for (i in singalConfigs.indices) {
-            val signalConfigRemote = SignalConfigRemote()
-            signalConfigRemote.func_id = i
-            signalConfigRemote.gpio_num = singalConfigs.get(i).getIndex()
-            signalConfigRemote.level = singalConfigs.get(i).getHighLevel()
-            signalConfiglist.add(signalConfigRemote)
-        }
-        var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs
-        sendSignalConfigsToRemote(indexs)
+
+
         MyLog.i(TAG,"鏌ュ埌鐨勮�冭瘯type="+examType)
         val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build()
         if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) {
@@ -48,6 +43,55 @@
                 e.printStackTrace()
             }
         }
+        var rtk =  WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig()
+        if (rtk == null){
+            try {
+                MyLog.i("璇绘枃浠跺彂閫丷TK閰嶇疆")
+                val inputStream = applicationContext.assets.open(safeluck.drive.evaluation.Constant.RTK_CONFIG_JSON)
+                val inputStreamReader = InputStreamReader(inputStream)
+                val jsonReader = JsonReader(inputStreamReader)
+                val gson = Gson()
+                val type = object : TypeToken<RTKConfig?>() {}.type
+                val mstus = gson.fromJson<RTKConfig>(jsonReader, type)
+                rtk = mstus
+            } catch (e: IOException) {
+                e.printStackTrace()
+            }
+        }else{
+
+        }
+        sendRtkConfigInfo(rtk)
+        singalConfigs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao._getSignalConfigs()
+        if (singalConfigs ==null){
+            MyLog.i("璇绘枃浠跺彂閫佷俊鍙烽厤缃�")
+            try {
+                val inputStream = applicationContext.assets.open("signal_config_file.json")
+                val inputStreamReader = InputStreamReader(inputStream)
+                val jsonReader = JsonReader(inputStreamReader)
+                val gson = Gson()
+                val type = object : TypeToken<List<SingalConfig?>?>() {}.type
+                val mstus = gson.fromJson<List<SingalConfig>>(jsonReader, type)
+                singalConfigs = mstus
+            } catch (e: IOException) {
+                e.printStackTrace()
+            }
+        }else{
+
+        }
+        for (i in singalConfigs.indices) {
+            val signalConfigRemote = SignalConfigRemote()
+            signalConfigRemote.func_id = i
+            signalConfigRemote.gpio_num = singalConfigs.get(i).getIndex()
+            signalConfigRemote.level = singalConfigs.get(i).getHighLevel()
+            signalConfiglist.add(signalConfigRemote)
+        }
+
+
+        var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs
+
+        sendSignalConfigsToRemote(indexs)
+
+
         return Result.success(data)
     }
 
@@ -89,7 +133,7 @@
             jsonObject!!.remove("_id")
             rtkjson = null
             rtkjson = jsonObject.toString()
-            MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�$rtkjson")
+            MyLog.i(TAG, "NDK_start RTK閰嶇疆淇℃伅")
             AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_RTK_PLATFORM_INFO, rtkjson)
         } else {
             MyLog.d(TAG, "RTKConfig鏈彇鍒版暟鎹�")
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java
index 63b07e4..7d0b280 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java
@@ -1,11 +1,13 @@
 package safeluck.drive.evaluation.DB.signalConfigdb;
 
 import android.content.Context;
+import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.work.Worker;
 import androidx.work.WorkerParameters;
 
+import com.anyun.exam.lib.AYSdk;
 import com.anyun.exam.lib.MyLog;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
@@ -15,20 +17,25 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.List;
 
 import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+import safeluck.drive.evaluation.bean.SignalConfigRemote;
 
 public class SignalConfigInitWorker extends Worker {
     private static final String TAG = "SignalConfigInitWorker";
+    private List<SignalConfigRemote> signalConfiglist = new ArrayList<>();
+    private Gson gson;
     public SignalConfigInitWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
         super(context, workerParams);
+        gson = new Gson();
     }
 
     @NonNull
     @Override
     public Result doWork() {
-        MyLog.i(TAG,"淇″彿閰嶇疆琛ㄥ垵濮嬪寲");
+        MyLog.i("淇″彿閰嶇疆琛ㄥ垵濮嬪寲");
 
         try {
             InputStream inputStream = getApplicationContext().getAssets().open("signal_config_file.json");
@@ -46,4 +53,29 @@
         }
         return Result.success();
     }
+
+    private void sendSignalConfigsToRemote(List<Integer> indexs) {
+        if (signalConfiglist.size() > 0) {
+            if (listContainsSameValue(indexs)) {
+                Log.i(TAG, "sendSignalConfigsToRemote: 鏈夌浉鍚岀殑index锛屼笉鑳藉彂閫�" + gson.toJson(signalConfiglist));
+            } else {
+                AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.SEND_CONFIG_SIGNAL, gson.toJson(signalConfiglist));
+            }
+        }
+    }
+
+    private boolean listContainsSameValue(List<Integer> indexs) {
+        for (int i=0;i<indexs.size();i++) { //鍙互榛樿鏄�0  0涓嶅垽鏂槸鍚︽湁鐩稿悓鐨刬ndex
+            if (indexs.get(i) == 0) {
+                continue;
+            }
+            for (int j =i + 1 ;j<indexs.size();j++) {
+                if (indexs.get(i) == indexs.get(j)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
index 3526318..3d3028e 100644
--- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
+++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -105,29 +105,6 @@
     };
     private List<SignalConfigRemote> signalConfiglist = new ArrayList<>();
 
-    private void sendMcuUprgrade() {
-        CThreadPoolExecutor.runInBackground(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    byte[] datas = FileUtil.readLocalFile(MainActivity.this,Constant.MCU_FILE_NAME);
-                    if (datas != null){
-                        Log.i(TAG, ByteUtil.byte2hex(datas));
-
-                        String strs = new String(datas, Charset.forName("ISO-8859-1"));
-                        MyLog.i(TAG, "mcu upgrade datas.legnth=="+strs.getBytes("ISO-8859-1").length);
-                        AYSdk.getInstance().sendCmd(Constant.UPGRADE_MCU_CONTENT_FILE, strs);
-//                        FileUtil.deleteFile("",Constant.MCU_FILE_NAME);
-                    }else{
-                        MyLog.i(TAG,"mcu鍗囩骇鏂囦欢涓嶅瓨鍦�");
-                    }
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-        });
-
-    }
 
 public ExamPlatformModel examPlatformModel;
     @Override
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index f3c0e31..6fc62f7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -78,7 +78,6 @@
     private Gson gson;
     RTKConfig rtkConfig;
     FailedProjRepository failedProjRepository;//澶辫触椤圭洰琛ㄦ暟鎹簱
-    RTKWorkRepository rtkWorkRepository;//淇濆瓨RTK閰嶇疆琛�
     Random random = new Random();
     private static Context appContext=null;
     @Override
@@ -109,7 +108,6 @@
             MyLog.i(TAG, "onCreate111");
             FileUtil.createdirs(getApplicationContext());
             failedProjRepository = new FailedProjRepository(this);
-            rtkWorkRepository = new RTKWorkRepository(this);
             MyLog.i(TAG,"鎷疯礉assert鐩綍涓嬬殑map" +
                     "鍜寁echile json鍒板寘鐩綍涓�");
             new Thread(new Runnable() {
@@ -165,7 +163,6 @@
 
 
 
-//                CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json);
                 break;
             case Constant.RTK_PLATFORM_REGISTER_STATUS:
                 CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json);
@@ -297,7 +294,7 @@
 
                 }else{
                     if (TextUtils.isEmpty(lastSn)){
-                        lastSn =sn;
+                        lastSn ="123";
                         return;
                     }
                     lastSn = sn;

--
Gitblit v1.8.0