dw.jang 95572ac076 BLE fix: 배터리 polling 실제로 polling — 첫 응답 재시도 + 30s 주기
증상: 연결 직후 가끔 배터리 값이 0%로 남아 표시 안 됨 / 의미 없는 값.

원인: startBatteryPolling()이 이름과 달리 연결 시 1회 msn? 송신만 함.
그 한 번이 priority HIGH 협상 직전 큐로 들어가거나, 직후 mtb?/maa? 측정
루프와 큐 경합으로 손실되면 영원히 batteryLevel.value = 0 으로 남음.
이후 측정 응답에 배터리가 안 들어있어 갱신 기회 없음.

수정: 세 단계 보장 구조로 변경
  1. 즉시 1회 송신 (기존 동작 유지)
  2. 3s 뒤 batteryLevel == 0 이면 최대 2회 재송신 (첫 응답 누락 보강)
  3. 30s 주기 정상 polling 추가 (충전 반영 + 장기 추적)

stopBatteryPolling()도 retry/poll 양쪽 타이머 정리하도록 확장.
끊김 시 isConnected.value == false이면 콜백에서 조기 return하여
좀비 송신 방지.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 15:37:23 +09:00
S
Description
No description provided
20 MiB
Languages
Kotlin 97.1%
Python 2.9%