From d4feb21868458d2db8275a7e8440922e5807ed0f Mon Sep 17 00:00:00 2001
From: lzw <lzw@github.aaej.cn>
Date: 星期三, 28 二月 2024 16:09:16 +0800
Subject: [PATCH] 两次枚举 usb ,防止枚举不出来设备

---
 app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java |   42 +++++++++++++++++++++++++++---------------
 1 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java b/app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java
index e0ce41b..e45618b 100644
--- a/app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java
+++ b/app/src/main/java/com/fwupgrade/saymanss/FwUpgradeService.java
@@ -61,6 +61,7 @@
     private static final int UPGRADE_FAIL = 3;
     private static final int UPGRADE_SUCCESS = 4;
 
+
     private CameraInfo mCamInfo = null;
     private static final String TAG = FwUpgradeService.class.getCanonicalName();
     private IFwAidlInterface.Stub mBinder = new IFwAidlInterface.Stub() {
@@ -83,6 +84,7 @@
         super.onCreate();
         Log.i(TAG,"onCreate");
         initTarget();
+
         initData();
         initDeviceSDK();
         UStorageTestModule.getInstance().initUStorageDeviceModuleWithVirtualDisk(AppPathInfo.getLogPath());
@@ -117,13 +119,17 @@
 
                 case USB_DEVICE_DETACHED:
 
-                    boolean isSuccessful1 = (boolean) msg.obj;
-                    if (isSuccessful1) {
-                        Toast.makeText(FwUpgradeService.this, "USB璁惧鏉冮檺鐢宠鎴愬姛", Toast.LENGTH_SHORT).show();
-                    } else {
-                        Log.i(TAG,"鍙戦�佸け璐ョ粨鏋滃箍鎾粰椹惧煿");
-                        sendToDriveTrainByBroadCast(0,1);
-                        sendToNewDriveTrainByBroadCast(0,1);
+                    int count = (int) msg.obj;
+                    Log.i(TAG,"count="+count);
+                    if (count<2) {
+                        tty.clear();
+                        initTarget();
+                        int ret = UstorageDeviceInstance.getInstance().tryAgain(FwUpgradeService.this);
+                        if (ret==1){
+                            Log.i(TAG,"鍙戦�佸け璐ョ粨鏋滃箍鎾粰椹惧煿");
+                            sendToDriveTrainByBroadCast(0,1);
+                            sendToNewDriveTrainByBroadCast(0,1);
+                        }
                     }
 
                     break;
@@ -150,7 +156,7 @@
                     int errCode = msg.arg1;
                     int succ_num = 0, fail_num = 0;
 
-                    Log.d("fwup","Upgrade result:" + devName + ", errCode: " + errCode);
+                    Log.d("fwup","Upgrade result:" + devName + ", errCode: " + errCode+".ttySize="+tty.size());
 
                     if (tty.containsKey(devName)) {
                         tty.put(devName, errCode == 0? UPGRADE_SUCCESS:UPGRADE_FAIL);
@@ -207,8 +213,10 @@
         for (UsbDevice usbDevice: targets) {
             if (usbDevice.getDeviceName().compareTo(min) < 0) {
                 min = usbDevice.getDeviceName();
+
             }
         }
+        Log.i(TAG,"min="+min);
         tty.put(min, UPGRADE_PRESET);
     }
 
@@ -244,16 +252,19 @@
      * UstorageDeviceSDK鍒濆鍖�.
      */
     private void initDeviceSDK() {
+        int count = 0 ;
         int ret = UstorageDeviceInstance.getInstance().tryAttcheDeviceHandle(FwUpgradeService.this, FwUpgradeService.this);
         Log.i(TAG,"initDeviceSDk,ret="+ret);
         if (ret==1){
+
+            ++count;
+            Log.i(TAG,"鍐嶆鐨勫垵濮嬪寲");
             Message message = Message.obtain();
-            message.obj = false;
+            message.obj = count;
             message.what = USB_DEVICE_DETACHED;
             mHander.sendMessageDelayed(message,1000);
-
-
         }
+
     }
 
     @Override
@@ -298,7 +309,7 @@
 
         String serial = ctrlBlock.getSerial();
 
-        Log.d(TAG,"sonixCamInit " + String.format("vendorId:%d productId:%d fileDescriptor:%d busNum:%d devNum:%d usbfsName:%s devName:%s serial:%s", vendorId, productId, fileDescriptor, busNum, devNum, usbfsName, devName, serial));
+        Log.d(TAG,"sonixCamInit " + String.format("vendorId:%d productId:%d fileDescriptor:%d busNum:%d devNum:%d usbfsName:%s devName:%s serial:%s,tty.size=%d", vendorId, productId, fileDescriptor, busNum, devNum, usbfsName, devName, serial,tty.size()));
 
 
         if (tty.containsKey(devName) && tty.get(devName) == 0) {
@@ -306,16 +317,17 @@
             tty.put(devName, 1);
         }
 
+
+
         if (!isTarget) {
+
             Log.d(TAG,"Not sonixCam, close");
             ctrlBlock.close();
-            sendToDriveTrainByBroadCast(0,1);
-            sendToNewDriveTrainByBroadCast(0,1);
+
             return;
         }
 
         Log.d(TAG,"Is sonixCam, upgrade!");
-
         Message msg = Message.obtain();
         //msg.obj = errCode == 0;
         msg.obj = new CameraInfo(vendorId, productId, fileDescriptor, busNum, devNum, usbfsName, devName);

--
Gitblit v1.8.0