레거시 cmd_parse.c 제거 및 dr_cmd_parser 직접 호출 구조로 전환

- main.c에서 received_command_process() 대신 dr_cmd_parser() 직접 호출
- cmd_parse.c 전역변수/함수(SERIAL_NO, HW_NO, param_error 등) main.c로 이동
- g_plat 초기화를 main.c 초기화 구간으로 이동, log를 RTT 출력으로 연결
- 미사용 명령 삭제: mta, mtr, mst, mxz, myz, mpn, mdc
- cmd_parse.c/h 삭제, 참조하던 5개 파일 include 정리

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
jhChun
2026-03-17 15:45:33 +09:00
parent e0a504b969
commit 39b4ffe66a
10 changed files with 2596 additions and 2994 deletions

View File

@@ -3,74 +3,164 @@
* @author CandyPops Co.
* @version V1.0.0
* @date 2022-09-05
* @brief
* @brief VesiScan BASIC 메인 헤더 파일
*
* [시스템 개요]
* VesiScan BASIC은 nRF52840 기반 BLE 방광 모니터링 패치 디바이스이다.
* 본 헤더는 시스템 전역에서 사용하는 열거형, 함수 선언, 전역 변수를 정의한다.
*
* [통신 방식]
* - BLE NUS (Nordic UART Service): 스마트폰 앱과 바이너리 프로토콜 통신
* - 물리 UART (1Mbps): 디버그 및 공장 테스트용
*
* [데이터 전송 흐름]
* 1. 앱/UART에서 명령 수신 → received_command_process()
* 2. 센서 데이터 수집 (배터리, 온도, IMU, 압력)
* 3. format_data() 계열 함수로 바이너리 패킷 생성
* 4. dr_binary_tx_safe()로 CRC16 추가 후 BLE 전송
******************************************************************************/
#ifndef MAIN_H__
#define MAIN_H__
/*==============================================================================
* DATA LENGTH CONSTANTS
* 데이터 길이 상수
*============================================================================*/
#define SERIAL_NO_LENGTH 12
#define HW_NO_LENGTH 12
#define PASSKEY_LENGTH 6
#define SERIAL_NO_LENGTH 12 /* 시리얼 번호 길이 (예: "VB026030000") */
#define HW_NO_LENGTH 12 /* 하드웨어 번호(버전) 길이 */
#define PASSKEY_LENGTH 6 /* BLE 페어링 패스키 길이 (숫자 6자리) */
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stdarg.h>
#include <stdbool.h>
#include "boards.h"
typedef enum
/*==============================================================================
* 열거형 정의
*============================================================================*/
/* 디바이스 ON/OFF 제어용 열거형 (EEPROM, 전원 등) */
typedef enum
{
OFF = 0,
ON = 1
OFF = 0, /* 꺼짐 */
ON = 1 /* 켜짐 */
}on_off_cont_t;
typedef enum
/* 명령 수신 경로 구분 (BLE 또는 UART) */
typedef enum
{
CMD_BLE = 0,
CMD_UART = 1
CMD_BLE = 0, /* BLE NUS를 통해 수신된 명령 */
CMD_UART = 1 /* 물리 UART를 통해 수신된 명령 */
}which_cmd_t;
/* 챔버 자동 테스트 모드 (FEATURE_CHAMBER_AUTO_TEST 활성 시) */
#if FEATURE_CHAMBER_AUTO_TEST
typedef enum
typedef enum
{
SIMPLE_AUTO_MODE = 0,
HALF_AUTO_MODE = 1,
FULL_AUTO_MODE = 2,
NONE_AUTO_MODE = 3
SIMPLE_AUTO_MODE = 0, /* 간단 자동 모드 */
HALF_AUTO_MODE = 1, /* 반자동 모드 */
FULL_AUTO_MODE = 2, /* 전체 자동 모드 */
NONE_AUTO_MODE = 3 /* 자동 모드 없음 */
}auto_meas_mode_t;
#endif
typedef enum
/* BLE 연결 상태 */
typedef enum
{
BLE_DISCONNECTED_ST = 0,
BLE_CONNECTED_ST = 1
BLE_DISCONNECTED_ST = 0, /* BLE 미연결 */
BLE_CONNECTED_ST = 1 /* BLE 연결됨 */
}ble_status_t;
/*==============================================================================
* 함수 선언
*============================================================================*/
#if FEATURE_SECURE_CONNECTION
/* BLE 광고 시작 (erase_bonds=true이면 본딩 정보 삭제 후 시작) */
static void advertising_start(bool erase_bonds);
#endif
/* 슬립 모드 진입: LED 표시 후 POWER_OFF_DELAY(3초) 후 전원 차단 */
void sleep_mode_enter(void);
/* 전원 OFF 타이머 콜백: POWER_OFF_DELAY 경과 후 실제 전원 차단 */
static void t_power_off_timeout_handler(void * p_context);
/* 디바이스 전원 OFF: LED 표시 후 타이머로 지연 전원 차단 */
void device_power_off(void);
/* 전원 제어 핸들러: POWER_HOLD 핀으로 물리적 전원 ON/OFF */
static void power_control_handler(on_off_cont_t device_power_st);
/* 전원 버튼 상태머신 (타이머 콜백, 5ms 간격):
* - 짧은 눌림(<1.5초): 전원 OFF
* - 중간 눌림(1.5초~10초): 부팅 시퀀스 시작
* - 긴 눌림(>10초): 공장 초기화 (패스키 리셋 + 전원 OFF) */
static void main_s(void * p_context);
/* Peer Manager 타이머 콜백: reset_status==5이면 BLE 연결 강제 해제 */
static void PM_s(void * p_context);
//static void main_re(void * p_context);
/* 메인 루틴 핸들러 (레거시, 현재 미사용) */
static void main_routine_handler(void * p_context);
void received_command_process(uint8_t const *data_array, which_cmd_t cmd_t,uint8_t length);
/*------------------------------------------------------------------------------
* 데이터 전송 함수
*----------------------------------------------------------------------------*/
/* ASCII 텍스트 BLE 전송 ('\r'까지 전송, CRC16 자동 추가) */
void data_tx_handler(char const *p_data_to_send);
/* 바이너리 데이터 BLE 안전 전송 (CRC16 자동 추가, 재시도 로직 포함)
* @param ble_bin_buff 전송할 바이너리 버퍼
* @param length 데이터 길이 (uint16_t 워드 단위, 실제 바이트 = length × 2) */
void dr_binary_tx_safe(uint8_t const *ble_bin_buff, uint16_t length);
/* SoftDevice 호환 딜레이 (nrf_delay_ms 래퍼) */
void dr_sd_delay_ms(uint32_t ms);
/*------------------------------------------------------------------------------
* 바이너리 패킷 포맷 함수
* 패킷 구조: [4바이트 태그][데이터][2바이트 CRC16]
*----------------------------------------------------------------------------*/
/* 단일 uint16_t 값 포맷: [tag 4B][value 2B] */
void single_format_data(uint8_t *buffer, const char *tag, const uint16_t value) ;
/* uint16_t 배열 포맷: [tag 4B][data0 2B][data1 2B]... */
void format_data(uint8_t *buffer, const char *tag, const uint16_t *data_array, size_t length);
/* uint8_t 바이트 배열 포맷: [tag 4B][byte0][byte1]... */
void format_data_byte(uint8_t *buffer, const char *tag, const uint8_t *data_array, size_t length);
void ascii_format_data(uint8_t *buffer, const char *tag, const char *data_ascii, size_t length);
extern volatile bool data_tx_in_progress;
extern volatile bool ble_connection_st;
extern volatile bool processing;
/* ASCII 문자열 포맷: [tag 4B][char0][char1]... */
void ascii_format_data(uint8_t *buffer, const char *tag, const char *data_ascii, size_t length);
/*==============================================================================
* 전역 변수 (extern)
*============================================================================*/
extern volatile bool data_tx_in_progress; /* BLE TX 전송 진행 중 플래그 */
extern volatile bool ble_connection_st; /* BLE 연결 상태 (0=미연결, 1=연결) */
extern volatile bool processing; /* 센서 데이터 처리 중 플래그 (중복 명령 방지) */
/* 2026-03-17: cmd_parse.c에서 main.c로 이동한 전역변수 */
extern char SERIAL_NO[SERIAL_NO_LENGTH]; /* 시리얼 번호 */
extern char HW_NO[HW_NO_LENGTH]; /* 하드웨어 번호 */
extern char m_static_passkey[PASSKEY_LENGTH]; /* BLE 정적 패스키 */
extern bool bond_data_delete; /* 본딩 데이터 삭제 요청 플래그 */
extern uint32_t m_life_cycle; /* 디바이스 수명 사이클 카운터 */
extern uint8_t resetCount; /* 통신 타임아웃 카운터 */
extern bool info4; /* 추가 정보 포함 측정 플래그 */
extern uint8_t m_reset_status; /* 리셋 상태 코드 */
extern uint8_t ble_bin_buffer[]; /* BLE 바이너리 응답 버퍼 */
/* 에러 응답 전송 */
void param_error(const char *cmd);
#endif //MAIN_H__