Files
ETH_TCP_Demo/app/state_manager.c
2026-03-04 08:50:04 +08:00

137 lines
2.8 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* state_manager.c
*
* Created on: 2026-03-04
* Author: RT-Thread
*
* 功能: 状态管理模块实现
* 依赖: RT-Thread Nano, osal
* 跨平台适配: 基于RT-Thread Nano使用标准API
*/
// #include <rtthread.h>
#include "osal.h"
#include "state_manager.h"
/* 系统状态 */
static system_state_t g_system_state;
/**
* @brief 初始化状态管理
* @return 0 成功非0 失败
*/
int state_manager_init(void)
{
/* 初始化系统状态 */
g_system_state.network_state = NETWORK_STATE_DISCONNECTED;
g_system_state.sensor_state = SENSOR_STATE_IDLE;
g_system_state.tcp_state = TCP_STATE_CLOSED;
g_system_state.error_code = ERROR_NONE;
osal_log_i("State manager initialized");
return 0;
}
/**
* @brief 获取系统状态
* @param state 系统状态指针
* @return 0 成功非0 失败
*/
int state_manager_get_system_state(system_state_t *state)
{
if (state == NULL)
{
return -1;
}
*state = g_system_state;
return 0;
}
/**
* @brief 设置网络状态
* @param state 网络状态
* @return 0 成功非0 失败
*/
int state_manager_set_network_state(network_state_t state)
{
g_system_state.network_state = state;
osal_log_i("Network state set to %d", state);
return 0;
}
/**
* @brief 设置传感器状态
* @param state 传感器状态
* @return 0 成功非0 失败
*/
int state_manager_set_sensor_state(sensor_state_t state)
{
g_system_state.sensor_state = state;
osal_log_i("Sensor state set to %d", state);
return 0;
}
/**
* @brief 设置TCP状态
* @param state TCP状态
* @return 0 成功非0 失败
*/
int state_manager_set_tcp_state(tcp_state_t state)
{
g_system_state.tcp_state = state;
osal_log_i("TCP state set to %d", state);
return 0;
}
/**
* @brief 设置错误代码
* @param error 错误代码
* @return 0 成功非0 失败
*/
int state_manager_set_error_code(error_code_t error)
{
g_system_state.error_code = error;
osal_log_i("Error code set to %d", error);
return 0;
}
/**
* @brief 创建状态快照
* @param snapshot 状态快照指针
* @return 0 成功非0 失败
*/
int state_manager_create_snapshot(state_snapshot_t *snapshot)
{
if (snapshot == NULL)
{
return -1;
}
/* 复制当前系统状态 */
snapshot->system_state = g_system_state;
snapshot->timestamp = rt_tick_get();
osal_log_i("State snapshot created");
return 0;
}
/**
* @brief 恢复状态快照
* @param snapshot 状态快照指针
* @return 0 成功非0 失败
*/
int state_manager_restore_snapshot(state_snapshot_t *snapshot)
{
if (snapshot == NULL)
{
return -1;
}
/* 恢复系统状态 */
g_system_state = snapshot->system_state;
osal_log_i("State snapshot restored");
return 0;
}