75 lines
2.4 KiB
C
75 lines
2.4 KiB
C
|
|
/**
|
|||
|
|
* @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);
|