c5dd0fdc3e8c2b0e0df203ac962d22e1574fe5e1
## 앞선 커밋이 세 군데 틀렸다 2026-09-02 펌웨어팀 스펙을 받아 바로잡는다. 1. **인자가 2개가 아니라 5개다.** mcs? [tag 4B][freq 2B][cycles 2B][avg 2B][delay_us 2B][samples 2B][crc 2B] = 16B avg·delay_us·samples 를 안 보내면 길이 부족으로 거부된다(freq=0xFFFF 응답). 2. **주파수 값이 1/2 가 아니라 0/5 다.** 0=1.8 · 1=1.9 · 2=2.0 · 3=2.1 · 4=2.2 · 5=2.3 MHz. 앞선 커밋의 가정(1.8→1, 2.3→2)은 둘 다 틀렸다 — 실제로는 2.0 과 2.3 을 재게 된다. 가정을 파일명에 남겨 둔 안전장치가 없었다면 못 알아챌 뻔했다. 3. **응답을 확인하지 않고 있었다.** 이게 가장 위험하다 — 아래 참고. ## 설정 실패는 조용하다 — 그래서 반드시 확인한다 실패해도 `rcs:` 는 온다. 구분은 freq 값이다: · 0xFFFF — 파라미터 범위 초과 또는 데이터 길이 부족 · 0xFFFD — 검증은 통과했으나 NVS 저장 실패 거부돼도 프로브는 **옛 설정으로 측정을 계속한다.** 확인하지 않으면 파일에는 요청한 값이 적힌 채 다른 조건의 데이터가 쌓인다 — 잘못된 데이터가 정상처럼 보이는, 임상에서 가장 나쁜 결과다. 그래서 조합마다 echo 를 받아 **요청한 다섯 값과 전부 일치할 때만** 측정한다. 불일치·무응답이면 그 조합을 통째로 건너뛰고 run json 에 `skipped_reason` 을 남기며 화면에 빨갛게 띄운다. 비는 편이 틀린 것보다 낫다. ## 고정 파라미터 프로토콜이 바꾸는 것은 주파수·cycle 뿐이다. 나머지 셋은 모든 조합에서 같아야 비교가 성립하므로 `HospitalFixedParams` 한 곳에 둔다 — avg 10 · delay_us 10 · samples 100 (펌웨어팀 예시값, samples 는 앱 채널 버퍼 100 과도 일치). 1.8MHz·c3 6D 63 73 3F 00 00 00 03 00 0A 00 0A 00 64 3C 4A 2.3MHz·c7 6D 63 73 3F 00 05 00 07 00 0A 00 0A 00 64 36 FC ## ⚠ 설정이 프로브에 영구 저장된다 (NVS) 전원을 껐다 켜도 유지된다. 즉 이 모드로 측정하고 나면 **일반 측정 화면도 마지막 조합(2.3MHz·cycle 7)으로 동작한다.** run json 에 남기고 화면에도 명시했다. 임상 후 원래 값으로 되돌릴지는 별도 결정이 필요하다 — 공장 기본값을 모른다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
Languages
Kotlin
97.1%
Python
2.9%