f4f54078941c73b79c62dc5ae22d8d6ded43d9d5
증상: 앱 실행 후 alignment → 도넛차트 → 개발자모드 → alignment 이동 시 BLE 가 끊긴 것처럼 응답 실종 → 15초 후 watchdog forced reconnect. 심하면 재연결도 좀비 상태로 나와 3번째 재연결에서야 정상 동작. 원인 1: BleManager.onConnectionStateChange 에서 STATE_CONNECTED 직후 onConnectionStateChanged?.invoke(true) 호출 → 이 시점에는 아직 MTU/ service discovery/CCCD write 이 완료되지 않아 txCharacteristic 은 null. 상위 (PiezoMonitoringView) 가 startBatteryPolling 등 TX 를 시도하면 sendRaw 내부 null-check 에 걸려 silent drop → peripheral 이 응답을 보내지 않음 → watchdog timeout. 원인 2: PiezoMonitoringView / PlacementGuideView 의 DisposableEffect 에서 BleManager 콜백 (onConnectionStateChanged, onUnexpectedDisconnect, onReconnectionFailed, piezoCollector.onMultiChannelComplete 등) 을 정리하지 않음. 화면 전환 시 이전 화면의 stale 콜백이 남아 새 화면 진입 후에도 발동 → 상태 충돌. 수정: - BleManager: onConnectionStateChanged(true) 호출을 CCCD write 완료 (isServiceReady=true) 시점으로 이동. CCCD 없음 / RX 없음 edge case 도 동일하게 처리. - PiezoMonitoringView / PlacementGuideView: DisposableEffect 에서 등록한 BleManager 콜백 전부 null 로 정리. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Description
No description provided
Languages
Kotlin
97.1%
Python
2.9%