Quellcode durchsuchen

refactor(更新) :
- 优化钥匙连接策略,优先连接已连接或者连接中的钥匙
- 如果已连接和连接中的设备不在钥匙列表中,直接断开连接

周文健 vor 2 Monaten
Ursprung
Commit
a4deb44dd1

+ 5 - 0
app/src/main/java/com/grkj/iscs_mars/ble/BleQueueDispatcher.kt

@@ -176,6 +176,11 @@ abstract class BleQueueDispatcher {
      */
     fun isConnecting(mac: String): Boolean = activeMacs.containsKey(mac)
 
+    /**
+     * 获取已连接的设备
+     */
+    fun getConnectedAndConnecting(): List<String> = activeMacs.map { it.key } + connectedMacs
+
     /**
      * 是否在队列中
      */

+ 5 - 0
app/src/main/java/com/grkj/iscs_mars/modbus/ModBusController.kt

@@ -1074,6 +1074,11 @@ object ModBusController {
         if (keyList.isEmpty()) {
             return null
         }
+        val sendConnectingAndConnected = BleSendDispatcher.getConnectedAndConnecting()
+        //如果已连接和连接中的设备不在钥匙列表中,直接断开连接让路
+        sendConnectingAndConnected.filter { it !in keyList.map { it.mac } }.forEach {
+            BleSendDispatcher.scheduleDisconnect(it)
+        }
         keyList = keyList.sortedWith(
             compareByDescending<DockBean.KeyBean> {
                 BleSendDispatcher.isConnected(it.mac ?: "") || BleSendDispatcher.isConnecting(