#ifndef CONFIG_MANAGER_H
#define CONFIG_MANAGER_H

#include "main.h"
#include "app_config.h"
#include <stdint.h>

// 配置文件路径
#define CONFIG_FILE_PATH    "0:/CONFIG.TXT"

// 系统配置结构体
typedef struct {
    uint8_t uart_output_enabled;      // 串口输出使能: 0=禁用, 1=启用
    uint8_t storage_enabled;          // SD卡存储使能: 0=禁用, 1=启用
    uint32_t session_number;          // 会话序号（用于数据存储文件夹命名）
    uint32_t config_version;          // 配置版本号（用于验证）
    uint32_t checksum;                // 校验和（用于验证配置完整性）
} SystemConfig_t;

// 默认配置值
#define DEFAULT_UART_OUTPUT_ENABLED     CFG_UART_OUTPUT_ENABLED
#define DEFAULT_STORAGE_ENABLED         CFG_STORAGE_ENABLED
#define CONFIG_VERSION                  0x00010000  // 版本 1.0.0

// 函数声明
void Config_Init(void);
HAL_StatusTypeDef Config_Load(void);
HAL_StatusTypeDef Config_Save(void);
void Config_SetDefaults(void);

// 配置访问函数
uint8_t Config_IsUartOutputEnabled(void);
uint8_t Config_IsStorageEnabled(void);
void Config_SetUartOutput(uint8_t enabled);
void Config_SetStorage(uint8_t enabled);
void Config_GetConfig(SystemConfig_t *config);

// 会话序号管理函数
uint32_t Config_GetSessionNumber(void);
void Config_SetSessionNumber(uint32_t session_number);
uint32_t Config_IncrementSessionNumber(void);

#endif // CONFIG_MANAGER_H
