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:
@@ -2,7 +2,7 @@
|
||||
|
||||
## 작성일: 2026-04-23
|
||||
## 작성자: 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채널 수신 | ✅ 완료 | |
|
||||
| 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 |
|
||||
| lr_ratio 동적 계산 | ✅ 완료 | CH4/CH5 타원 추정 |
|
||||
| UrinAI Gate | ✅ 완료 | |
|
||||
| Placement Guide | ✅ 완료 | 방향 가이드 수정 완료 |
|
||||
| Placement Guide (CV threshold) | ✅ 완료 | CV≤0.15 + LR dev≤0.15 |
|
||||
| 기기 자동 감지 (V0/V1/V2) | ✅ 완료 | Snell's law 각도 |
|
||||
| Big Endian 자동 감지 | ✅ 완료 | |
|
||||
| BLE 자동 reconnect | ✅ 완료 | 3s→5s→10s, 5회 |
|
||||
| 배터리 폴링 5초 | ✅ 완료 | keep-alive |
|
||||
| BLE 자동 reconnect | ✅ 완료 | 무한 3초 재시도 + watchdog |
|
||||
| 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, 일지 |
|
||||
| 배터리 폴링 5초 | ✅ 완료 | keep-alive |
|
||||
| Python ↔ Android 1:1 검증 | ✅ 완료 | 전수 상수 비교 |
|
||||
| 금요일 APK 배포 | 🔜 예정 | Gitea 릴리즈 |
|
||||
| Adaptive TGC | 🔜 예정 | Python에서 확인 필요 |
|
||||
| mbb 전체측정 전환 | 🔜 예정 | rbb: 헤더 파싱 검증 후 |
|
||||
| Adaptive TGC | 🔜 예정 | 원은지님 코드 확인 필요 |
|
||||
| Placement Score 캘리브레이션 | 🔜 예정 | 팬텀 실측 기반 CV threshold 조정 |
|
||||
| 인체 임상 검증 | 🔜 예정 | 상수 재조정 |
|
||||
|
||||
Reference in New Issue
Block a user