/******************************************************************************* * @file fstorage.h * @author CandyPops Co. * @version V1.0.0 * @date 2022-09-05 * @brief FDS(Flash Data Storage) 기반 설정 저장 모듈 인터페이스 ******************************************************************************* * * [헤더 개요] * nRF52840 내장 플래시에 디바이스 설정을 저장/로드하는 FDS 모듈의 공용 API. * 외부 EEPROM을 대체하며, SoftDevice와 공존하여 플래시를 안전하게 관리한다. * * [config_data_t 구조체] (45바이트, 패킹됨) * magic_number(4B): 포맷 확인용 (0x20231226) * hw_no(12B): 하드웨어 번호 * serial_no(12B): 시리얼 번호 (BLE 디바이스 이름으로도 사용) * static_passkey(6B): BLE 페어링 패스키 (숫자 6자리) * bond_data_delete(1B): 본딩 삭제 플래그 * reset_status(1B): 리셋 상태 코드 * pd_adc_cnt(1B): ADC 샘플링 횟수 * pd_delay_us(2B): PD 안정화 딜레이 (마이크로초) * life_cycle(4B): 디바이스 사용 횟수 * * [주요 API] * fs_storage_init(): FDS 초기화 (부트 시 1회) * config_load(): FDS에서 설정 로드 (없으면 기본값 생성) * config_save(): 현재 설정을 FDS에 저장 * ******************************************************************************/ #ifndef IHP_FSTORAGE_H_ #define IHP_FSTORAGE_H_ #include "sdk_config.h" #include "nordic_common.h" #include /* ------------------------------------------------------------------------- * 기본 버전 정보 (FDS 초기값 및 빈 필드 복구 시 사용) * * 하드웨어 식별 코드 * - VBTHW0100 = 개발(시험)용 Ver 1.00 * - VB0HW0100 = 양산용 Ver 1.00 * * Firmware 식별 코드 * - VBTFW0100 = 개발(시험)용 Ver 1.00 * - VB0FW0100 = 양산용 Ver 1.00 * * 시리얼 넘버 식별 코드 * - VBT26030001 = 개발(시험)용 26년 3월 생산 1번 * - VB026030001 = 양산용 26년 3월 생산 1번 ------------------------------------------------------------------------- */ #define HARDWARE_VERSION "VBTHW0100" #define SERIAL_NUMBER "VBT26030001" #define DEFAULT_PASSKEY "123456" #pragma pack(1) typedef struct { uint32_t magic_number; /* 4B - 포맷 확인용 매직 넘버 */ char hw_no[12]; /* 12B - HW Version */ char serial_no[12]; /* 12B - Serial Number */ uint8_t static_passkey[6]; /* 6B - BLE Passkey */ uint8_t bond_data_delete; /* 1B - Bond delete flag */ int8_t reset_status; /* 1B - Reset status */ uint32_t life_cycle; /* 4B - Device usage count */ /* Piezo 측정 파라미터 - 8B */ uint8_t piezo_freq_option; /* 1B - Frequency : 송신 펄스 주파수 (0=1.8M, 1=2.1M, 2=2.0M, 3=1.7M) */ uint8_t piezo_cycles; /* 1B - Burst Cycle : 송신 펄스 사이클 수 (3~7) */ uint16_t piezo_averaging; /* 2B - 평균화 수 : 채널당 반복 측정 횟수 (1~10) */ uint16_t piezo_delay_us; /* 2B - 대기 시간(Delay) : 송신 펄스 출력 후 ADC 시작 시까지 대기시간 (us) (0~30) */ uint16_t piezo_num_samples; /* 2B - 측정 ADC 샘플 개수 (80~140) */ } config_data_t; /* Total: 48 bytes - FDS에 저장하는 디바이스 설정 */ extern config_data_t m_config; void fds_default_value_set(void); void config_load( void ); void config_save( void ); void fs_set_value(void); void fs_storage_init(void); #endif /* IHP_FSTORAGE_H_ */