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 523c1a2..32647bc 100644 --- a/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt +++ b/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt @@ -461,7 +461,9 @@ class BleManager private constructor(private val context: Context) { // ── Common Commands ── fun sendBatteryQuery() { - sendRaw(CRC16.buildCommandBE("msn", intArrayOf(0))) + // mid?/mtb?/maa? 등 다른 단순 query와 동일한 ASCII " " 형식 — BE [0]은 + // 펌웨어가 응답 안 함이 확인됨 (rsn: 자체가 안 옴, 2026-06-08). + sendRaw(CRC16.buildCommandASCII("msn", " ")) } fun sendDeviceInfoQuery() { diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt index a397d23..6a0c528 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt @@ -573,6 +573,13 @@ fun PiezoMonitoringView(appState: AppState) { bleManager.startBatteryPolling() } } + // 진입 시 이미 연결되어 있으면 한 번 polling 재시작 (안전망). + // 이전 화면(Clinical Unpair → 새 연결 등)에서 batteryLevel=0으로 reset된 채로 + // 도넛차트 진입 시 onDescriptorWrite/onConnectionStateChanged 둘 다 이미 끝나 있어 + // 콜백이 트리거 안 됨. 진입 시점에 강제 1회 polling으로 보강. + if (bleManager.isConnected.value) { + bleManager.startBatteryPolling() + } } // Add catheter dialog