diff --git a/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt b/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt index 64900c4..ace2b0e 100644 --- a/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt +++ b/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt @@ -223,6 +223,16 @@ class BleManager private constructor(private val context: Context) { rxCharacteristic = null } + // 이전 디바이스의 state 가 남아있는 걸 방지 — 매 connect 마다 fresh. + // 새 mid?/msn? 응답 받기 전까진 빈 값으로 보임 → 정확. + // (STATE_DISCONNECTED 콜백이 안 떴거나 다른 디바이스로 바로 스위치하는 경우 대응) + firmwareVersion.value = "" + hardwareVersion.value = "" + serialNumber.value = "" + batteryLevel.value = 0 + connectedDeviceName.value = "" + isServiceReady.value = false + val idx = discoveredDevices.indexOfFirst { it.address == bleDevice.address } if (idx >= 0) discoveredDevices[idx] = discoveredDevices[idx].copy(isConnecting = true) @@ -402,6 +412,14 @@ class BleManager private constructor(private val context: Context) { bluetoothGatt = null } + // 이전 디바이스 state fresh (다른 디바이스로 스위치하는 reconnect 케이스 대비) + firmwareVersion.value = "" + hardwareVersion.value = "" + serialNumber.value = "" + batteryLevel.value = 0 + connectedDeviceName.value = "" + isServiceReady.value = false + isReconnecting.value = true val device = bluetoothAdapter.getRemoteDevice(lastDeviceAddress) bluetoothGatt = device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_LE)