/** * @file app_log.h * @author LokLiang * @brief 用于应用控制程序的统一配置的数据结构 * @version 0.1 * @date 2023-11-24 * * @copyright Copyright (c) 2023 * * 本模块实现功能: * 1. 统一定义应用程序需要存储的所有数据; * 2. 依赖 nfs 模块,使当前数据与内部存储的数据实现同步; * 3. 依赖 sh_vset 模块,并提供其对应的所有设置实现函数; * * 对数据的读操作: * 上层应用:应用和模式管理模块和控制模块 * 对外提 app_log_read() 读取数据 * * 对数据的写操作: * 上层应用: * 为所有成员提供专门的写入接口,内部数据被立即更新。 * * 数据的默认值: * 当出现以下情况时,配置数据被恢复到默认值: * nvs 未初始化或操作失败; * 使用 app_log_factory_set() 恢复到默认值; * 结构体的长度 log_app_t 发生改变; * APP_LOG_DATA_VER 定义的值发生改变(在 app_log.c 内部定义); * */ #pragma once #include "sys_types.h" #define APP_LOG_DATA_VER 1 /* 对应 log_app_t::version */ /* 数据结构 ------------------------------------------------------------------------------------ */ typedef struct { uint16_t flight_number; // 当前记录的飞行次数 uint16_t crc16; // CRC16 uint16_t datas[2048]; } flight_data_t; typedef struct // 设备配置统一数据结构 { uint32_t version; // 配置版本,修改 APP_LOG_DATA_VER 的值后, nvs 已同步的数据被恢复到默认值 flight_data_t flight_data; uint32_t crc32; // 校验数据(可放于任何位置) } log_app_t; /* nvs 接口 ------------------------------------------------------------------------------------ */ void app_log_init(void); // 初始化 int app_log_factory_set(void); // 使内存的数据恢复到默认设置,注意不会被立即保存到 nvs 中 int app_log_do_save(log_app_t *log); // 保存配置数据 到 nvs 的动作 /* 读接口 -------------------------------------------------------------------------------------- */ int app_log_read(log_app_t *out_log); /* 操作接口 ------------------------------------------------------------------------------------ */ /* 写接口 -------------------------------------------------------------------------------------- */ void app_log_flight_time_start(void); void app_log_flight_time_stop(void); void app_log_flight_time_clr(void);