- Piezo 6ch 측정 + 센서(배터리, IMU, 온도) 측정: mbb 명령어 추가
- Flash Memory Piezo 측정 파라미터 추가 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# VesiScan-Basic 코드 리뷰 현황 보고서
|
||||
|
||||
작성일: 2026-03-16
|
||||
작성일: 2026-03-17
|
||||
대상: VesiScan BASIC 펌웨어 전체 (nRF52840 + S140 SoftDevice)
|
||||
기준 문서: CODE_REVIEW.pdf (2026-03-15)
|
||||
현재 빌드: DEBUG_MINIMAL_BOOT=1, BLE_DEV_MODE=1
|
||||
@@ -157,8 +157,8 @@ cat_interface.c 삭제(EEPROM/AES 코드 전체 삭제). TWI 인스턴스(m_twi)
|
||||
| m_encrypted_text[16] | main.c:194 | 삭제 | **미완료** |
|
||||
| m_encrypted_text2[16] | main.c:195 | 삭제 | **미완료** |
|
||||
| m_decrypted_text[16] | main.c:196 | 삭제 | **미완료** |
|
||||
| DEVICE_NAME | cmd_parse.c | 삭제 | 확인 필요 |
|
||||
| HW_NO[12] | cmd_parse.c | 삭제 | **미완료** |
|
||||
| DEVICE_NAME | cmd_parse.c | 삭제 | **완료** (cmd_parse.c 삭제됨) |
|
||||
| HW_NO[12] | cmd_parse.c | 삭제 | **완료** (cmd_parse.c 삭제됨) |
|
||||
| AES_KEY_SIZE | main.c:154 | 삭제 | **미완료** |
|
||||
| AES_BLOCK_SIZE | main.c:155 | 삭제 | **미완료** |
|
||||
| suppress_unused_warnings() | main.c:239 | 삭제 | **미완료** |
|
||||
@@ -167,7 +167,7 @@ cat_interface.c 삭제(EEPROM/AES 코드 전체 삭제). TWI 인스턴스(m_twi)
|
||||
|
||||
### 2.3.1 cmd_parse.c → parser.c 통합 현황
|
||||
|
||||
현재 구조: main.c → `received_command_process()` [cmd_parse.c] → `dr_cmd_parser()` [parser.c] → 실패 시 레거시 if-else 체인 [cmd_parse.c]
|
||||
현재 구조: main.c → `dr_cmd_parser()` [parser.c] (cmd_parse.c 삭제 완료)
|
||||
|
||||
#### parser.c 명령어 테이블 (g_cmd_table)
|
||||
|
||||
@@ -207,40 +207,40 @@ cat_interface.c 삭제(EEPROM/AES 코드 전체 삭제). TWI 인스턴스(m_twi)
|
||||
| `sst?` | Cmd_sst | false | Ready 응답 | 비활성 |
|
||||
| `mfv?` | Cmd_mfv | true | 펌웨어 버전 읽기 | ssv? 대체 |
|
||||
|
||||
#### cmd_parse.c 레거시 명령어 (parser.c에 없는 것)
|
||||
#### cmd_parse.c 레거시 명령어 → parser.c 이전 완료
|
||||
|
||||
| 태그 | 상태 | 기능 | 비고 |
|
||||
|------|------|------|------|
|
||||
| `spz?` | 활성 | 패스키 쓰기 | → parser.c `mpz?`로 대체 완료 |
|
||||
| `sqz?` | 활성 | 패스키 읽기 | → parser.c `mqz?`로 대체 완료 |
|
||||
| `sxz?` | 활성 | life_cycle 쓰기 | → parser.c `mxz?`로 대체 완료 |
|
||||
| `syz?` | 활성 | life_cycle 읽기 | → parser.c `myz?`로 대체 완료 |
|
||||
| `sez?` | 활성 (stub) | AGC gain — HW 제거됨 | param_error만 응답 |
|
||||
| `sfz?` | 활성 (stub) | AGC gain — HW 제거됨 | param_error만 응답 |
|
||||
| `ssv?` | `if(0&&)` 비활성 | 펌웨어 버전 | → parser.c `mfv?`로 대체됨 |
|
||||
| `ssz?` | `if(0&&)` 비활성 | 시리얼번호 쓰기 | → parser.c `mws?`로 대체됨 |
|
||||
| `srz?` | `if(0&&)` 비활성 | 시리얼번호 읽기 | → parser.c `mrs?`로 대체됨 |
|
||||
| `siz?` | `if(0&&)` 비활성 | HW번호 읽기 | → parser.c `mrh?`로 대체됨 |
|
||||
| `shz?` | `if(0&&)` 비활성 | HW번호 쓰기 | → parser.c `mwh?`로 대체됨 |
|
||||
| 태그 | 기능 | 비고 |
|
||||
|------|------|------|
|
||||
| `spz?` | 패스키 쓰기 | → parser.c `mpz?`로 대체 완료 |
|
||||
| `sqz?` | 패스키 읽기 | → parser.c `mqz?`로 대체 완료 |
|
||||
| `sxz?` | life_cycle 쓰기 | → parser.c `mxz?`로 대체 완료 |
|
||||
| `syz?` | life_cycle 읽기 | → parser.c `myz?`로 대체 완료 |
|
||||
| `sez?` | AGC gain (stub) | cmd_parse.c와 함께 삭제 |
|
||||
| `sfz?` | AGC gain (stub) | cmd_parse.c와 함께 삭제 |
|
||||
| `ssv?` | 펌웨어 버전 | → parser.c `mfv?`로 대체됨 |
|
||||
| `ssz?` | 시리얼번호 쓰기 | → parser.c `mws?`로 대체됨 |
|
||||
| `srz?` | 시리얼번호 읽기 | → parser.c `mrs?`로 대체됨 |
|
||||
| `siz?` | HW번호 읽기 | → parser.c `mrh?`로 대체됨 |
|
||||
| `shz?` | HW번호 쓰기 | → parser.c `mwh?`로 대체됨 |
|
||||
|
||||
#### 통합 남은 작업
|
||||
#### 통합 작업 현황
|
||||
|
||||
| # | 작업 | 현재 상태 |
|
||||
|---|------|----------|
|
||||
| 1 | parser.c에 누락 명령어 추가 (mpz/mqz/mxz/myz) | **완료** |
|
||||
| 2 | received_command_process() 래퍼를 main.c로 이동 | **미완료** |
|
||||
| 3 | 전역 변수 (SERIAL_NO, m_static_passkey 등) main.c로 이동 | **미완료** |
|
||||
| 4 | cmd_parse.h include 정리 (7개 파일) | **미완료** |
|
||||
| 5 | cmd_parse.c / cmd_parse.h 삭제 | **미완료** |
|
||||
| 6 | Keil 프로젝트 파일 업데이트 | **미완료** |
|
||||
| 2 | received_command_process() 래퍼를 main.c로 이동 | **완료** (cmd_parse.c 삭제됨) |
|
||||
| 3 | 전역 변수 (SERIAL_NO, m_static_passkey 등) main.c로 이동 | **완료** (cmd_parse.c 삭제됨) |
|
||||
| 4 | cmd_parse.h include 정리 (7개 파일) | **완료** (cmd_parse.h 삭제됨) |
|
||||
| 5 | cmd_parse.c / cmd_parse.h 삭제 | **완료** |
|
||||
| 6 | Keil 프로젝트 파일 업데이트 | **완료** |
|
||||
|
||||
### 2.4 주석 처리된 코드
|
||||
|
||||
| 위치 | 내용 | 판정 | 현재 상태 |
|
||||
|------|------|------|----------|
|
||||
| main_timer.c:37-88 | FEATURE_DETAIL_VALUE_FULL 주석 블록 | 삭제 | **미완료** |
|
||||
| cmd_parse.c:282-317 | serial_to_passkey_hash, test_eeprom_page_rw | 삭제 | **미완료** |
|
||||
| cmd_parse.c:87-88 | pd_adc_half/full_a_start extern | 삭제 | 확인 필요 |
|
||||
| cmd_parse.c:282-317 | serial_to_passkey_hash, test_eeprom_page_rw | 삭제 | **완료** (cmd_parse.c 삭제됨) |
|
||||
| cmd_parse.c:87-88 | pd_adc_half/full_a_start extern | 삭제 | **완료** (cmd_parse.c 삭제됨) |
|
||||
| battery_saadc.c:22 | //#include "fstorage.h" | 삭제 | **미완료** |
|
||||
|
||||
---
|
||||
@@ -297,11 +297,11 @@ uvprojx 수정 작업 없음.
|
||||
|
||||
- `binary_tx_handler()` 함수 본체 삭제
|
||||
- 모든 호출처를 `dr_binary_tx_safe()`로 교체 완료
|
||||
- cmd_parse.c (22곳 + 함수 포인터 1곳)
|
||||
- parser.c (17곳)
|
||||
- battery_saadc.c (2곳)
|
||||
- app_raw.c (2곳)
|
||||
- tmp235_q1.c (1곳)
|
||||
- parser.c (17곳)
|
||||
- cmd_parse.c (22곳) → 이후 cmd_parse.c 삭제됨
|
||||
- main.h 선언 제거, dr_util.c/dr_adc121s051.c의 옛날 extern 선언 제거
|
||||
- `dr_binary_tx_safe()`는 NRF_ERROR_RESOURCES 시 최대 100회 재시도 후 패킷 드롭, 연결 에러 시 graceful 리턴
|
||||
- `data_tx_handler()`의 APP_ERROR_CHECK도 DBG_PRINTF로 교체 — 예상치 못한 에러 시에도 패킷 드롭 후 정상 동작 유지
|
||||
@@ -316,11 +316,11 @@ uvprojx 수정 작업 없음.
|
||||
|
||||
#### B3: extern + 초기화 동시 사용
|
||||
|
||||
파일: cmd_parse.c
|
||||
파일: cmd_parse.c (삭제됨)
|
||||
|
||||
현재 상태: **완료**
|
||||
|
||||
`extern int8_t pd_adc_counts[4] = {8, 16, 24, 32};` 선언이 제거됨.
|
||||
`extern int8_t pd_adc_counts[4] = {8, 16, 24, 32};` 선언이 제거됨. 이후 cmd_parse.c 삭제.
|
||||
|
||||
#### B4: memset/memcpy 버퍼 크기 불일치 및 매직 넘버
|
||||
|
||||
@@ -334,6 +334,33 @@ uvprojx 수정 작업 없음.
|
||||
|
||||
스택/힙 오버플로우로 인한 메모리 손상 가능성이 있는 심각한 버그.
|
||||
|
||||
#### B5: maa? 명령 err=2 (MAA_NUM_SAMPLES 초과)
|
||||
|
||||
파일: parser.c, dr_adc121s051.c
|
||||
|
||||
현재 상태: **완료** — jhChun 26.03.17
|
||||
|
||||
MAA_NUM_SAMPLES(140)이 DR_ADC_ECHO_SAMPLES_MAX(100)보다 커서 maa_async_start()에서 무조건 DR_ADC_ERR_INVALID_PARAM(err=2) 반환. MAA_NUM_SAMPLES를 100으로 변경하여 해결.
|
||||
|
||||
#### B5-2: mec/maa 명령 시 Piezo 전원 미관리
|
||||
|
||||
파일: parser.c, dr_adc121s051.c
|
||||
|
||||
현재 상태: **완료** — jhChun 26.03.17
|
||||
|
||||
- mec?, maa? 수신 시 `dr_piezo_is_power_on()` 확인 후 꺼져있으면 자동 `dr_piezo_system_init()` (Active)
|
||||
- mec: 응답 송신 후 즉시 `dr_piezo_power_off()` (Sleep)
|
||||
- maa: 비동기 완료 콜백에서 `dr_piezo_power_off()` (Sleep)
|
||||
- `dr_piezo_is_power_on()` 함수 신규 추가 (dr_piezo.c/h)
|
||||
|
||||
#### B5-3: Cmd_mpa dr_piezo_power_on() 중복 호출
|
||||
|
||||
파일: parser.c
|
||||
|
||||
현재 상태: **완료** — jhChun 26.03.17
|
||||
|
||||
`dr_piezo_power_on()` + `dr_piezo_system_init()` 둘 다 호출하고 있었으나, `dr_piezo_system_init()` 내부에 이미 `dr_piezo_power_on()`이 포함되어 있어 중복 제거.
|
||||
|
||||
### 5.2 심각도 중간 (MEDIUM)
|
||||
|
||||
#### B6: battery_event_handler에서 floating-point 연산
|
||||
@@ -360,11 +387,7 @@ batt_lvl_in_milli_volt_1 = (batt_lvl_in_milli_volt_0 * 142) / 100;
|
||||
|
||||
파일: cmd_parse.c:57
|
||||
|
||||
현재 상태: **완료** (해결됨)
|
||||
|
||||
변수가 5초 타임아웃 추적에 활용되고 있음:
|
||||
- cmd_parse.c:483에서 초기값 확인
|
||||
- cmd_parse.c:489에서 5초 경과 비교
|
||||
현재 상태: **완료** (cmd_parse.c 삭제됨)
|
||||
|
||||
#### B9: config_load() goto 기반 흐름
|
||||
|
||||
@@ -509,6 +532,9 @@ BLE_GAP_EVT_CONNECTED/DISCONNECTED 핸들러에 IMU 타이머 start/stop 로직
|
||||
| 2 | B1: BLE TX 큐 풀 시 시스템 먹통 (binary_tx_handler → dr_binary_tx_safe 교체) | HIGH | **완료** |
|
||||
| 3 | B2: BLE TX 에러 핸들링 로직 반전 | HIGH | **완료** |
|
||||
| 4 | B3: extern + 초기화 동시 사용 | HIGH | **완료** |
|
||||
| 5 | B5: maa? err=2 (MAA_NUM_SAMPLES > DR_ADC_ECHO_SAMPLES_MAX) | HIGH | **완료** |
|
||||
| 6 | B5-2: mec/maa Piezo 자동 전원 관리 | MEDIUM | **완료** |
|
||||
| 7 | B5-3: Cmd_mpa dr_piezo_power_on 중복 호출 | LOW | **완료** |
|
||||
|
||||
### 1차 정리 (미사용 코드/EEPROM 삭제)
|
||||
|
||||
@@ -517,7 +543,7 @@ BLE_GAP_EVT_CONNECTED/DISCONNECTED 핸들러에 IMU 타이머 start/stop 로직
|
||||
| 5 | 미사용 HW 드라이버 삭제 (1.2절) | **완료** |
|
||||
| 6 | cat_interface.c EEPROM 기능 삭제 + TWI를 i2c_manager.c로 통합 (1.5절) | **완료** |
|
||||
| 7 | cmd_parse.c EEPROM 호출 -> FDS 전환 (1.5.4절) | **완료** |
|
||||
| 8 | cmd_parse.c → parser.c 통합 (2.3.1절) | **진행 중** (명령어 이전 완료, 파일 삭제 미완료) |
|
||||
| 8 | cmd_parse.c → parser.c 통합 (2.3.1절) | **완료** |
|
||||
| 9 | 미사용 전역변수 + HW_NO 삭제 (2.2-2.3절) | **미완료** |
|
||||
| 10 | DEBUG_MINIMAL_BOOT 조건 제거 (3절) | **미완료** |
|
||||
| 11 | Keil uvprojx 소스 참조 제거 (4절) | 확인 필요 |
|
||||
|
||||
Reference in New Issue
Block a user