/* * state_manager.c * * Created on: 2026-03-04 * Author: RT-Thread * * 功能: 状态管理模块实现 * 依赖: RT-Thread Nano, osal * 跨平台适配: 基于RT-Thread Nano,使用标准API */ // #include #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; }