增加断网保存数据到FLASH,恢复联网重新补发,并加上标志位

This commit is contained in:
Wang Beihong
2026-02-02 00:31:52 +08:00
parent 86b2425e93
commit d56c730cfe
19 changed files with 1853 additions and 52 deletions

View File

@@ -0,0 +1,88 @@
#ifndef OFFLINE_STORAGE_H
#define OFFLINE_STORAGE_H
#include <stdbool.h>
#include <stdint.h>
#include "esp_err.h"
// 数据类型
typedef enum {
OFFLINE_DATA_TYPE_UNKNOWN = 0,
OFFLINE_DATA_TYPE_MODBUS = 1, // MODBUS采集数据
OFFLINE_DATA_TYPE_DEVICE_STATUS = 2, // 设备状态数据
} offline_data_type_t;
/**
* @brief 初始化离线存储模块
*
* @return ESP_OK 成功
* 其他 失败
*/
esp_err_t offline_storage_init(void);
/**
* @brief 存储离线数据
*
* @param data 数据内容JSON字符串
* @param length 数据长度
* @param data_type 数据类型
* @return ESP_OK 成功
* ESP_FAIL 失败
*/
esp_err_t offline_storage_store(const char *data, size_t length, offline_data_type_t data_type);
/**
* @brief 读取最旧的离线数据
*
* @param buffer 输出缓冲区
* @param max_len 缓冲区最大长度
* @param out_data_type 输出数据类型
* @return ESP_OK 成功
* ESP_ERR_NOT_FOUND 没有数据
* 其他 失败
*/
esp_err_t offline_storage_read_oldest(char *buffer, size_t max_len, offline_data_type_t *out_data_type);
/**
* @brief 删除最旧的离线数据
*
* @return ESP_OK 成功
* ESP_ERR_NOT_FOUND 没有数据
* 其他 失败
*/
esp_err_t offline_storage_delete_oldest(void);
/**
* @brief 获取离线数据数量
*
* @return 数据数量
*/
uint32_t offline_storage_get_count(void);
/**
* @brief 检查是否有离线数据
*
* @return true 有数据
* false 无数据
*/
bool offline_storage_has_data(void);
/**
* @brief 清空所有离线数据
*
* @return ESP_OK 成功
* 其他 失败
*/
esp_err_t offline_storage_clear_all(void);
/**
* @brief 获取存储使用情况
*
* @param used 已使用字节数
* @param total 总字节数
* @return ESP_OK 成功
* 其他 失败
*/
esp_err_t offline_storage_get_usage(size_t *used, size_t *total);
#endif // OFFLINE_STORAGE_H