Files
VesiScan-Basic_Zephyr/plan/TODO.md
T

4.0 KiB

TODO

현재 프로젝트에서 다음에 이어서 작업할 항목들을 정리한다.

현재 상태

1. BLE 보안

목표:

  • LESC
  • MITM
  • Fixed Passkey
  • Bonding

해야 할 일:

  • CONFIG_BT_SMP=y
  • CONFIG_BT_FIXED_PASSKEY=y
  • CONFIG_BT_BONDABLE=y
  • CONFIG_BT_SMP_ENFORCE_MITM=y
  • 필요 시 CONFIG_BT_SMP_SC_ONLY=y 또는 CONFIG_BT_SMP_SC_PAIR_ONLY=y
  • bt_conn_auth_cb 등록
  • 고정 패스키를 m_static_passkey와 연결
  • 본딩 키 복원을 위해 BT_SETTINGS + SETTINGS + NVS 연동

주의:

  • Bonding은 저장소 없이 켜도 부팅 후 유지되지 않는다.
  • 보안 설정을 올리면 앱 테스트 절차도 함께 바뀐다.

2. 플래시 저장소 (NVS)

목표:

  • 예전 FDS 역할을 Zephyr/NCS 방식으로 대체
  • 측정 파라미터, passkey, 필요 시 serial/HW info 저장

권장 방향:

  • FDS를 다시 붙이기보다 NVS 사용
  • Bluetooth bonding 키는 BT_SETTINGS가 저장하고
  • 앱 파라미터는 별도 NVS 또는 settings/NVS backend로 저장

우선 저장할 후보:

  • piezo config
    • freq
    • cycles
    • avg
    • delay_us
    • samples
  • passkey
  • 필요 시 SERIAL_NO, HW_NO

해야 할 일:

  • piezo_config 구조체 추가
  • 부팅 시 기본값 로드 후 NVS 값이 있으면 덮어쓰기
  • mcf?는 구조체 읽기
  • mcs?는 구조체 갱신 + 저장
  • 유효 범위 체크 추가

현재 메모:

3. DFU

목표:

  • BLE 기반 펌웨어 업데이트 지원

권장 방향:

  • MCUboot + MCUmgr SMP over BLE

해야 할 일:

  • CONFIG_BOOTLOADER_MCUBOOT=y
  • CONFIG_MCUMGR=y
  • CONFIG_MCUMGR_TRANSPORT_BT=y
  • CONFIG_IMG_MANAGER=y
  • 필요 시 CONFIG_MCUMGR_GRP_IMG=y
  • 파티션 구성 추가
    • slot0
    • slot1
    • 필요 시 scratch 또는 overwrite-only 전략
  • 광고/서비스에 SMP transport가 정상 노출되는지 확인

주의:

  • 지금 프로젝트는 NUS만 사용 중이라 일반적인 OTA DFU는 바로 안 된다.
  • DFU를 넣으면 파티션 구조와 빌드 방식이 함께 바뀐다.

4. 권장 작업 순서

  1. piezo_config 구조체 도입
  2. mcf?를 고정값이 아닌 실제 구조체 반환으로 변경
  3. mcs? 구현
  4. NVS 저장/복원 구현
  5. BLE 보안 적용
  6. Bonding 저장 확인
  7. 마지막에 DFU 적용

5. 체크 포인트

  • mcf? 값과 실제 측정값이 항상 같아야 함
  • mcs?로 바꾼 값이 재부팅 후에도 유지되어야 함
  • 보안 적용 후 앱에서 pairing/passkey 흐름 확인
  • DFU 적용 후 기존 NUS 기능과 충돌 없는지 확인