增加事件驱动和业务回滚处理方式
This commit is contained in:
136
app/state_manager.c
Normal file
136
app/state_manager.c
Normal file
@ -0,0 +1,136 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
Reference in New Issue
Block a user