|
@@ -323,6 +323,7 @@ object BleConnectionManager {
|
|
|
if (scanMac.equals(mac, ignoreCase = true)) {
|
|
if (scanMac.equals(mac, ignoreCase = true)) {
|
|
|
// 找到目标设备,马上停止扫描
|
|
// 找到目标设备,马上停止扫描
|
|
|
logger.info("找到目标设备 $mac,停止扫描并尝试连接")
|
|
logger.info("找到目标设备 $mac,停止扫描并尝试连接")
|
|
|
|
|
+ BleUtil.instance?.stopScan()
|
|
|
// 立刻调用 doConnect,下一步进入连接流程
|
|
// 立刻调用 doConnect,下一步进入连接流程
|
|
|
doConnect(
|
|
doConnect(
|
|
|
newDevice,
|
|
newDevice,
|
|
@@ -449,6 +450,7 @@ object BleConnectionManager {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 获取当前钥匙的状态
|
|
* 获取当前钥匙的状态
|
|
|
|
|
+ * todo 取消获取状态发送的超时
|
|
|
*/
|
|
*/
|
|
|
@SuppressLint("MissingPermission")
|
|
@SuppressLint("MissingPermission")
|
|
|
fun getCurrentStatus(
|
|
fun getCurrentStatus(
|
|
@@ -458,42 +460,6 @@ object BleConnectionManager {
|
|
|
timeoutCallBack: ((Boolean) -> Unit)? = null
|
|
timeoutCallBack: ((Boolean) -> Unit)? = null
|
|
|
) {
|
|
) {
|
|
|
logger.info("getCurrentStatus - ${bleDevice.mac} - from : $from")
|
|
logger.info("getCurrentStatus - ${bleDevice.mac} - from : $from")
|
|
|
- var isTimeout = true
|
|
|
|
|
- // 加1秒防止早于onWriteFailure开始处理导致多次处理
|
|
|
|
|
- ThreadUtils.runOnMainDelayed((BleUtil.OPERATE_TIMEOUT + 1).toLong()) {
|
|
|
|
|
- if (isTimeout) {
|
|
|
|
|
- logger.error("getCurrentStatus timeout : mac = ${bleDevice.mac}, retryCount = $retryCount")
|
|
|
|
|
- if (retryCount > 0) {
|
|
|
|
|
- if (from != 4) {
|
|
|
|
|
- val canConnect = BleSendDispatcher.canConnect()
|
|
|
|
|
- logger.info("发送队列是否可以连接:${canConnect}")
|
|
|
|
|
- if (BleSendDispatcher.isConnected(bleDevice.mac)) {
|
|
|
|
|
- BleSendDispatcher.scheduleDisconnect(bleDevice.mac)
|
|
|
|
|
- }
|
|
|
|
|
- BleSendDispatcher.submit(bleDevice.mac) {
|
|
|
|
|
- getCurrentStatus(
|
|
|
|
|
- from, bleDevice, retryCount - 1, timeoutCallBack
|
|
|
|
|
- )
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- BleReturnDispatcher.clearNotInBusyConnectedDevice()
|
|
|
|
|
- BleReturnDispatcher.scheduleDisconnect(bleDevice.mac)
|
|
|
|
|
- BleReturnDispatcher.submit(bleDevice.mac) {
|
|
|
|
|
- getCurrentStatus(
|
|
|
|
|
- from, bleDevice, retryCount - 1, timeoutCallBack
|
|
|
|
|
- )
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- BleSendDispatcher.scheduleDisconnect(bleDevice.mac)
|
|
|
|
|
- BleReturnDispatcher.scheduleDisconnect(bleDevice.mac)
|
|
|
|
|
- HardwareMode.getCurrentHardwareMode().getRfidByKeyMac(bleDevice.mac)?.let {
|
|
|
|
|
- addExceptionKey(it)
|
|
|
|
|
- timeoutCallBack?.invoke(true)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
BleCmdManager.getCurrentStatus(bleDevice, object : CustomBleWriteCallback() {
|
|
BleCmdManager.getCurrentStatus(bleDevice, object : CustomBleWriteCallback() {
|
|
|
override fun onWriteSuccess(
|
|
override fun onWriteSuccess(
|
|
|
bleDevice: BleDevice,
|
|
bleDevice: BleDevice,
|
|
@@ -504,7 +470,6 @@ object BleConnectionManager {
|
|
|
data: ByteArray
|
|
data: ByteArray
|
|
|
) {
|
|
) {
|
|
|
logger.info("getCurrentStatus success : ${bleDevice.mac}")
|
|
logger.info("getCurrentStatus success : ${bleDevice.mac}")
|
|
|
- isTimeout = false
|
|
|
|
|
timeoutCallBack?.invoke(false)
|
|
timeoutCallBack?.invoke(false)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -519,14 +484,17 @@ object BleConnectionManager {
|
|
|
isTotalFail: Boolean
|
|
isTotalFail: Boolean
|
|
|
) {
|
|
) {
|
|
|
logger.info("getCurrentStatus fail : ${bleDevice.mac}")
|
|
logger.info("getCurrentStatus fail : ${bleDevice.mac}")
|
|
|
- isTimeout = false
|
|
|
|
|
ThreadUtils.runOnMainDelayed(1000) {
|
|
ThreadUtils.runOnMainDelayed(1000) {
|
|
|
- getCurrentStatus(
|
|
|
|
|
- from,
|
|
|
|
|
- bleDevice,
|
|
|
|
|
- retryCount - 1,
|
|
|
|
|
- timeoutCallBack = timeoutCallBack
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ if (retryCount > 0) {
|
|
|
|
|
+ getCurrentStatus(
|
|
|
|
|
+ from,
|
|
|
|
|
+ bleDevice,
|
|
|
|
|
+ retryCount - 1,
|
|
|
|
|
+ timeoutCallBack = timeoutCallBack
|
|
|
|
|
+ )
|
|
|
|
|
+ }else{
|
|
|
|
|
+ timeoutCallBack?.invoke(true)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|