fb6f722b53
사용자 검증: ble.log에 rsn 응답이 보이지만 도넛차트는 0% 표시.
원인 1 — msn? 송신 포맷:
기존: CRC16.buildCommandBE("msn", intArrayOf(0))
→ bytes: 6D 73 6E 3F 00 00 03 FE (BE param 2B)
→ 펌웨어가 응답 안 함 (rsn: 자체가 안 옴)
다른 query 명령(mid?, mtb?, maa?, mqq?, mag?)은 모두 ASCII " " 포맷.
msn?만 BE param 포맷이라 펌웨어가 인식 못 한 듯.
수정: CRC16.buildCommandASCII("msn", " ")
→ bytes: 6D 73 6E 3F 20 ?? ?? (다른 query와 동일 패턴)
원인 2 — Clinical → Unpair → 새 연결 후 도넛차트 진입 시 batteryLevel=0:
disconnectAndUnbond()에서 batteryLevel.value=0 reset됨.
새 BLE 연결의 onDescriptorWrite → startBatteryPolling 호출은 PiezoMonitoring
진입 전에 이미 완료. PiezoMonitoring의 LaunchedEffect에서 등록하는
onConnectionStateChanged 콜백은 '상태 변경 시점'에만 트리거되므로
이미 connected인 상태로 진입하면 호출 안 됨.
수정: PiezoMonitoring 진입 시 isConnected.value==true이면 명시적으로
startBatteryPolling() 한 번 더 호출 (idempotent — stopBatteryPolling 후 재시작).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>