docs: v7 (2026-07-10) 반영 — msp 제거, 6-stage alignment, mtb queue fix, labdb 자동 재시도
이번 세션 대량 변경 사항을 5개 문서에 반영. 각 문서마다 stale 이던
섹션을 갱신하거나 신규 섹션 추가.
USER_GUIDE.md
- Sensor Alignment 를 V1 (3-stage) / V2 (6-stage) 로 재구성
- V2 6-stage 표 + relaxed mode / soft hint 설명
- GREEN 진입 5초 hold + 10-strike 리셋 완화 명시
- "최적의 위치입니다!" 문구 반영
docs/BLE_PROTOCOL_REFERENCE.md
- msp 명령 취소선 처리 + mim 신규 명령 문서화
- Watchdog timeout 25초 연장 명시 (2.5)
- §2.6 신규: firmware VBTFW0121 mls mode 0 freeze 취약점 +
앱 측 3-layer 회피 (isMtbBusy / mtb 3초 timeout / 자동 재연결)
VesiScan_Android_Pipeline_Summary.md
- v7 (2026-07-10) 섹션 신규 추가 — BLE / Alignment / UI / labdb /
tools 5개 카테고리로 변경 사항 정리
- 권장 펌웨어 표기 VBTFW0116 → VBTFW0120+ 로 갱신
labdb.md
- §12b 신규: 앱 측 Auto Retry Policy — endMeasurement 자동 업로드
조건 완화, LabdbAutoRetry object, UI 배너, 재시도 안전성
tools/README.md
- labdb_upload.py 섹션 신규 — 사용법 / 폴더 구조 / 재실행 안전성 /
buildPayload 로직 / 활용 예 정리
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -2,8 +2,73 @@
|
||||
|
||||
## 작성일: 2026-04-23
|
||||
## 작성자: dwjang
|
||||
## 마지막 업데이트: 2026-05-26 (v6) — 1.0.0-design (versionCode 24)
|
||||
## 권장 펌웨어: **VBTFW0116** (pending slot 1→8 확장으로 ADC drop 안정)
|
||||
## 마지막 업데이트: 2026-07-10 (v7) — 1.2.0-demo (versionCode 26)
|
||||
## 권장 펌웨어: **VBTFW0120+** (mim FIFO 지원 필수. VBTFW0121 은 `mls mode 0` handler 취약)
|
||||
|
||||
### v7 주요 변경 요약 (2026-07-06 ~ 2026-07-10)
|
||||
|
||||
**BLE / Firmware 대응**
|
||||
- **`msp` 완전 제거 → `mim` (FIFO 15 sample) 로 통일** (커밋 34ae4d7/deae8a7/9907931).
|
||||
신 firmware 는 mim 만 사용. `rsp:` 파서는 legacy 응답 대비 유지.
|
||||
- **mtb queue overrun freeze 3-layer fix** (커밋 9907931). 실측 로그에서 mtb 응답
|
||||
stream 중 `msn`/`mim` 이 끼어들어 firmware GATT queue 꼬임 → `mls mode 0`
|
||||
에서 완전 freeze 확인. 상세: [BLE_PROTOCOL_REFERENCE.md](docs/BLE_PROTOCOL_REFERENCE.md) §2.6.
|
||||
- `isMtbBusy` 프로퍼티 + battery/mim polling 시 skip
|
||||
- mtb 3초 timeout + `consecutiveMtbTimeouts` state
|
||||
- 3회 연속 실패 시 자동 `forceDisconnectAndReconnect()`
|
||||
- **Watchdog timeout 15초 → 25초 연장** (커밋 0383a21). 재연결 후 첫 RX 가 14초
|
||||
지연 도착하는 케이스 허용.
|
||||
- **좀비 세션 방지**: `onConnectionStateChanged` 콜백을 CCCD write 완료 시점으로
|
||||
이동 (BleManager). `fwFallbackTimer` / `cccdRetryTimer` / `mtbTimeoutRunnable`
|
||||
disconnect 시 취소.
|
||||
- **Auto scan 명령 `maa` → `mtb` 로 전환** (커밋 29b6ca5). maa 는 IMU 응답
|
||||
없음 (posture 갱신 X). mtb 는 reb×6 + raa + rim 이라 auto scan 중에도 posture
|
||||
실시간 업데이트.
|
||||
- **lastBleRxAt 갱신 확대** (커밋 3a41864). `processReceivedData` 진입점에서
|
||||
모든 유효 응답에 대해 갱신 → "기기 응답 없음" false-positive 배너 해소.
|
||||
|
||||
**Alignment (V2 6-stage)**
|
||||
- **CH3 flicker 무한 대기 방지** (커밋 e808b5b). VERTICAL_CLIMB 진입 조건을
|
||||
"3연속 hit" → "최근 6프레임 중 3회 hit" sliding window majority 로 완화.
|
||||
20 프레임 대기 시 상단 3채널 relaxed mode 진입 (CH3 없이도 정렬 완료).
|
||||
12 프레임 반복 시 문구 자동 완화 ("↑ 위로" → "CH3 확인 중").
|
||||
- **6단계 완료 후 "측정 시작" 버튼 활성화 fix** (커밋 49aab7b). 기존
|
||||
`phase == LR_BALANCE` 조건이 실제 완료 phase (`FINAL_CONFIRM`) 를 못 잡아
|
||||
버튼 disable 되던 버그. `state=="commit" && phase==FINAL_CONFIRM` 로 수정.
|
||||
- **GREEN 진입 후 5초 hold** (커밋 159116d). V2 에도 V1 처럼 hold 로직 추가.
|
||||
순간 flick 으로 GREEN 즉시 풀리는 UX 문제 해소.
|
||||
- **GREEN zone 조기 리셋 완화** (커밋 7484077). V1 의 3-strike → **10-strike**
|
||||
(약 5초+). 미세 자세 흔들림으로 "0/3 정렬시작" 리셋되던 버그 완화.
|
||||
- **문구 개선**: "제 위치입니다!" → **"최적의 위치입니다!"** / "In position!"
|
||||
→ "Optimal position!" (커밋 7484077).
|
||||
|
||||
**UI / UX**
|
||||
- **Posture 라벨**: "서있음" → **"일어남"** (`piezo_posture_upright`, 한글).
|
||||
영문 "Upright" 유지.
|
||||
- **도넛차트 posture chip stuck 버그** (커밋 149e511/3abc024): `imuCollector.onComplete`
|
||||
콜백이 DisposableEffect race 로 즉시 null 되던 문제. 세 화면
|
||||
(PiezoMonitoring / PlacementGuide / ClinicalLive) 의 DisposableEffect 에서
|
||||
콜백 null 정리 제거. stale 콜백은 다음 화면 진입 시 자기 콜백으로 덮어씀.
|
||||
|
||||
**Clinical 세션 / labdb**
|
||||
- **labdb 자동 업로드 강화** (커밋 db6e7e1/93b8650/8c17407):
|
||||
- `endMeasurement` 자동 업로드 조건 완화 (`isRegistered` 만 체크, `lastStatus == "active"` 조건 제거)
|
||||
- 신규 `LabdbAutoRetry` object — ClinicalHome 진입 시 미업로드 폴더 자동 재시도
|
||||
- 상단 배너 UI (진행 중 / 완료 결과)
|
||||
- **KnownDeviceStore clinical flow 제한 제거** (커밋 b822b49). 일반 모드에서도
|
||||
연결한 기기 자동 저장 + DeviceScan 상단에 표시.
|
||||
|
||||
**Python tools**
|
||||
- **`tools/labdb_upload.py` 신규** — LabdbUploader.kt 의 `buildPayload` 로직을
|
||||
Python 으로 이식. 외부 저장 세션 폴더 일괄 업로드용.
|
||||
자세한 사용법: [tools/README.md](tools/README.md).
|
||||
|
||||
**참고**
|
||||
- 이번 세션에서 발견되었으나 아직 미조치: PiezoMonitoringView (2900L) /
|
||||
PlacementGuideView (2200L) 대형 파일 분해, Design Token 중앙화, ViewModel
|
||||
도입 등 아키텍처 개선 사항은 별도 로드맵으로 진행 예정.
|
||||
|
||||
### v6 주요 변경 요약 (2026-05-12 ~ 2026-05-26)
|
||||
|
||||
### v6 주요 변경 요약 (2026-05-12 ~ 2026-05-26)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user