docs: BLE 명령어 포맷, 자동측정 루프, LED 모드, 향후 과제 업데이트

- BLE 명령어 포맷: 공백 필요 패턴 (buildCommandASCII) 문서화
- 자동측정: IMU 1초 × 9 + 6ch 측정 10초 루프 설명
- LED 모드: state 코드 + Placement 연동 흐름
- 기기 정보: mid? → rid: 자동 조회 설명
- 향후 과제: 17개 완료 항목 + 5개 예정 항목

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-24 13:55:38 +09:00
parent 76ec271352
commit a02562eb31
+107 -8
View File
@@ -2,7 +2,7 @@
## 작성일: 2026-04-23 ## 작성일: 2026-04-23
## 작성자: dwjang ## 작성자: dwjang
## 마지막 업데이트: 2026-04-23 ## 마지막 업데이트: 2026-04-24
--- ---
@@ -888,21 +888,120 @@ RX: "raa all-ch complete [8B]"
--- ---
# 14. 향후 과제 # 14. BLE 명령어 포맷 (펌웨어 특이사항)
이 기기(VBTFW0111)는 파라미터 없는 명령어에도 **`cmd? `(물음표+공백)** 포맷이 필요합니다.
```kotlin
// ❌ 안 됨 (rxs: cmd_not_supported 응답)
CRC16.buildCommand("mid") // → "mid?" + CRC
// ✅ 됨
CRC16.buildCommandASCII("mid", " ") // → "mid? " + CRC
```
### 명령어별 포맷
| 명령 | 함수 | 포맷 | 응답 |
|------|------|------|------|
| `maa?` | `sendChannelsOnly()` | buildCommand("maa", [0]) | reb:×6 → raa: |
| `mbb? ` | `sendFullMeasurement()` | buildCommandASCII("mbb", " ") | rbb: → reb:×6 → raa: |
| `msp? ` | `sendImuQuery()` | buildCommandASCII("msp", " ") | rsp: (18B, accel+gyro) |
| `mid? ` | `sendDeviceInfoQuery()` | buildCommandASCII("mid", " ") | rid: (HW/SN/FW) |
| `mls?` + state | `sendLedMode(state)` | buildCommand("mls", [state]) | rls: |
| `msn?` + 0 | `sendBatteryQuery()` | buildCommand("msn", [0]) | rsn: (mV) |
| `mpa?` + freq/cyc | `sendPiezoPowerOn()` | buildCommand("mpa", [...]) | rpa: |
### 기기 정보 (연결 시 자동 조회)
```
연결 직후 mid? 전송 → rid: 응답:
DEVICE_INFO VBTHW0100 VBT26040001 VBTFW0111
├ HW Version ├ Serial Number └ FW Version
```
---
# 15. 자동 측정 루프 (IMU + 6ch)
### 동작 방식
```
자동측정 시작 (Spot 롱프레스)
↓
1초차: msp? (IMU) → rsp: accel(x,y,z) + gyro(x,y,z)
2초차: msp? (IMU)
...
9초차: msp? (IMU)
10초차: maa? (6ch 측정) → reb:×6 → raa: → BV 파이프라인
11초차: msp? (IMU)
...
20초차: maa? (6ch 측정)
... 반복 (Stop 누를 때까지)
```
### 병렬 통신
배터리 쿼리(msn, 5초)와 IMU/측정이 동시에 진행됩니다:
```
13:52:09.549 TX msp IMU query [7B]
13:52:09.607 TX msn battery query [8B] ← 거의 동시
13:52:09.707 RX rsp IMU data [18B]
13:52:09.707 RX rsn battery=4128mV [8B] ← 둘 다 응답 옴
```
---
# 16. LED 모드 (Placement Guide 연동)
### LED 상태 코드
| state | 이름 | 용도 |
|-------|------|------|
| 0 | OFF | 기본 |
| 4 | DETACH_WARNING | 미부착 시 |
| 5 | ALIGN_SEARCHING | 정렬 모드 탐지 중 |
| 6 | ALIGN_COMPLETE | 정렬 모드 탐지 완료 |
| 7 | ERROR | 오류 발생 |
### Placement Guide 연동
```
Start Scanning → mls?(5) ALIGN_SEARCHING (LED 탐지 모드)
↓
3초 간격 스캔 중...
↓
CV PASS → mls?(6) ALIGN_COMPLETE (LED 완료)
↓
Stop Scanning → mls?(0) OFF
```
---
# 17. 향후 과제
| 항목 | 상태 | 비고 | | 항목 | 상태 | 비고 |
|------|------|------| |------|------|------|
| BLE 6채널 수신 | ✅ 완료 | | | BLE 6채널 수신 | ✅ 완료 | |
| Low-echo Detection (prominence) | ✅ 완료 | lowEchoAmp=1150 | | Low-echo Detection (prominence + edge penalty) | ✅ 완료 | VALLEY_STOP=50, EDGE_DECAY=0.12 |
| Frustum BV 추정 (6ch) | ✅ 완료 | center 4ch + lateral lr_ratio | | Frustum BV 추정 (6ch) | ✅ 완료 | center 4ch + lateral lr_ratio |
| lr_ratio 동적 계산 | ✅ 완료 | CH4/CH5 타원 추정 | | lr_ratio 동적 계산 | ✅ 완료 | CH4/CH5 타원 추정 |
| UrinAI Gate | ✅ 완료 | | | Placement Guide (CV threshold) | ✅ 완료 | CV≤0.15 + LR dev≤0.15 |
| Placement Guide | ✅ 완료 | 방향 가이드 수정 완료 |
| 기기 자동 감지 (V0/V1/V2) | ✅ 완료 | Snell's law 각도 | | 기기 자동 감지 (V0/V1/V2) | ✅ 완료 | Snell's law 각도 |
| Big Endian 자동 감지 | ✅ 완료 | | | Big Endian 자동 감지 | ✅ 완료 | |
| BLE 자동 reconnect | ✅ 완료 | 3s→5s→10s, 5회 | | BLE 자동 reconnect | ✅ 완료 | 무한 3초 재시도 + watchdog |
| 배터리 폴링 5초 | ✅ 완료 | keep-alive | | BLE 디버그 로거 | ✅ 완료 | TX/RX 파싱 + Downloads 내보내기 |
| ADC 로그 저장 | ✅ 완료 | 6ch raw ADC → JSONL |
| 기기 정보 조회 (mid?) | ✅ 완료 | 연결 시 자동 (HW/SN/FW) |
| LED 모드 (mls?) | ✅ 완료 | Placement 연동 (5→6→0) |
| IMU 쿼리 (msp?) | ✅ 완료 | 1초 간격, 자동측정 루프 |
| 자동측정 (IMU 1s + 측정 10s) | ✅ 완료 | |
| iOS 동기화 (UI) | ✅ 완료 | 알림, Quick Save, 일지 | | iOS 동기화 (UI) | ✅ 완료 | 알림, Quick Save, 일지 |
| 배터리 폴링 5초 | ✅ 완료 | keep-alive |
| Python ↔ Android 1:1 검증 | ✅ 완료 | 전수 상수 비교 |
| 금요일 APK 배포 | 🔜 예정 | Gitea 릴리즈 | | 금요일 APK 배포 | 🔜 예정 | Gitea 릴리즈 |
| Adaptive TGC | 🔜 예정 | Python에서 확인 필요 | | mbb 전체측정 전환 | 🔜 예정 | rbb: 헤더 파싱 검증 후 |
| Adaptive TGC | 🔜 예정 | 원은지님 코드 확인 필요 |
| Placement Score 캘리브레이션 | 🔜 예정 | 팬텀 실측 기반 CV threshold 조정 |
| 인체 임상 검증 | 🔜 예정 | 상수 재조정 | | 인체 임상 검증 | 🔜 예정 | 상수 재조정 |