|
|
@@ -56,8 +56,6 @@ object BusinessManager {
|
|
|
|
|
|
// 已连接的蓝牙钥匙集合
|
|
|
var deviceList: MutableList<BleBean> = mutableListOf()
|
|
|
- // 待连接的钥匙Mac集合 TODO 待和connectListeners合并
|
|
|
- val notConnectedList: MutableList<String> = mutableListOf()
|
|
|
// TODO 是否正在进行准备流程
|
|
|
private var isPreparing: Boolean = false
|
|
|
|
|
|
@@ -71,9 +69,9 @@ object BusinessManager {
|
|
|
// 蓝牙连接准备监听
|
|
|
class ConnectListener(
|
|
|
val mac: String,
|
|
|
- val callBack: ((Boolean, BleBean?) -> Unit)?
|
|
|
+ val callBack: ((Boolean, BleBean?) -> Unit)? = null
|
|
|
)
|
|
|
- // TODO 待和notConnectedList合并
|
|
|
+ // 蓝牙连接准备监听集合,全是待准备连接的,准备完毕的会移除
|
|
|
private val connectListeners = mutableListOf<ConnectListener>()
|
|
|
|
|
|
// TODO 归还设备是否需要登录
|
|
|
@@ -150,15 +148,9 @@ object BusinessManager {
|
|
|
}
|
|
|
// ModBusController.controlKeyBuckle(false, isLeft = true, dockBean.addr.toInt() - 1)
|
|
|
} else {
|
|
|
- // 移出待连集合,移出监听集合,防止connectKey循环失败
|
|
|
+ // 移出待连监听集合,防止connectKey循环失败
|
|
|
keyBean.mac?.let {
|
|
|
- if (notConnectedList.contains(it)) {
|
|
|
- notConnectedList.remove(it)
|
|
|
- }
|
|
|
- if (connectListeners.any { listener -> listener.mac == it }) {
|
|
|
- val listener = connectListeners.first { listener -> listener.mac == it }
|
|
|
- connectListeners.remove(listener)
|
|
|
- }
|
|
|
+ unregisterConnectListener(it)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -359,7 +351,6 @@ object BusinessManager {
|
|
|
* 注册连接监听
|
|
|
*/
|
|
|
private fun registerConnectListener(mac: String, callBack: ((Boolean, BleBean?) -> Unit)? = null) {
|
|
|
- notConnectedList.add(mac)
|
|
|
connectListeners.add(ConnectListener(mac, callBack))
|
|
|
if (connectListeners.size == 1) {
|
|
|
connectKey()
|
|
|
@@ -370,12 +361,10 @@ object BusinessManager {
|
|
|
* 连接监听反注册
|
|
|
*/
|
|
|
fun unregisterConnectListener(mac: String, bleBean: BleBean? = null) {
|
|
|
- if (notConnectedList.contains(mac)) {
|
|
|
- notConnectedList.remove(mac)
|
|
|
- connectListeners.find { it.mac == mac }?.let {
|
|
|
- it.callBack?.invoke(true, bleBean)
|
|
|
- connectListeners.remove(it)
|
|
|
- }
|
|
|
+ connectListeners.find { it.mac == mac }?.let {
|
|
|
+ // TODO 移除的时候是否要回调待定
|
|
|
+// it.callBack?.invoke(true, bleBean)
|
|
|
+ connectListeners.remove(it)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -383,7 +372,7 @@ object BusinessManager {
|
|
|
* 连接钥匙,单个mac走完prepare再进行下一个
|
|
|
*/
|
|
|
private fun connectKey() {
|
|
|
- if (notConnectedList.isEmpty()) {
|
|
|
+ if (connectListeners.isEmpty()) {
|
|
|
return
|
|
|
}
|
|
|
if (isPreparing) {
|
|
|
@@ -393,29 +382,23 @@ object BusinessManager {
|
|
|
return
|
|
|
}
|
|
|
isPreparing = true
|
|
|
- val mac = notConnectedList[0]
|
|
|
- prepareBle(mac, ActivityUtils.currentActivity() as BaseActivity<*>, null) { isDone, bleBean ->
|
|
|
+ val listener = connectListeners[0]
|
|
|
+ prepareBle(listener.mac, ActivityUtils.currentActivity() as BaseActivity<*>, null) { isDone, bleBean ->
|
|
|
Executor.runOnMain {
|
|
|
isPreparing = false
|
|
|
if (!isDone) {
|
|
|
// 判断是否仍然待连,防止拿走;移到末尾,防止循环影响
|
|
|
- if (notConnectedList.contains(mac)) {
|
|
|
- notConnectedList.remove(mac)
|
|
|
- notConnectedList.add(mac)
|
|
|
- }
|
|
|
- connectKey()
|
|
|
+ unregisterConnectListener(listener.mac)
|
|
|
+ registerConnectListener(listener.mac, listener.callBack)
|
|
|
return@runOnMain
|
|
|
}
|
|
|
// 判断是否仍然待连,防止拿走
|
|
|
- if (notConnectedList.contains(mac)) {
|
|
|
- notConnectedList.remove(mac)
|
|
|
- // TODO 暂时只处理准备成功
|
|
|
- connectListeners.find { it.mac == mac }?.let {
|
|
|
- it.callBack?.invoke(true, bleBean)
|
|
|
- connectListeners.remove(it)
|
|
|
- }
|
|
|
+ // TODO 暂时只处理准备成功
|
|
|
+ if (connectListeners.contains(listener)) {
|
|
|
+ listener.callBack?.invoke(true, bleBean)
|
|
|
+ unregisterConnectListener(listener.mac)
|
|
|
}
|
|
|
- if (notConnectedList.isNotEmpty()) {
|
|
|
+ if (connectListeners.isNotEmpty()) {
|
|
|
connectKey()
|
|
|
}
|
|
|
}
|
|
|
@@ -453,9 +436,9 @@ object BusinessManager {
|
|
|
}
|
|
|
|
|
|
override fun onScanning(bleDevice: BleDevice?) {
|
|
|
+ LogUtil.i("onScanning:${bleDevice?.mac}")
|
|
|
bleDevice?.let {
|
|
|
- LogUtil.i("onScanning:${it.mac}")
|
|
|
- if (notConnectedList.any { itMac -> itMac == bleDevice.mac }) {
|
|
|
+ if (connectListeners.any { itData -> itData.mac == bleDevice.mac }) {
|
|
|
doConnect(it, loadingCallBack, prepareDoneCallBack)
|
|
|
}
|
|
|
}
|