增加事件驱动和业务回滚处理方式

This commit is contained in:
冯佳
2026-03-04 08:50:04 +08:00
parent cc4c361df6
commit 47a9dff6ef
25 changed files with 2626 additions and 1780 deletions

110
app/event_trigger.c Normal file
View File

@ -0,0 +1,110 @@
/*
* event_trigger.c
*
* Created on: 2026-03-04
* Author: RT-Thread
*
* 功能: 事件触发机制模块实现
* 依赖: RT-Thread Nano, osal, event_queue
* 跨平台适配: 基于RT-Thread Nano使用标准API
*/
#include <rtthread.h>
#include "osal.h"
#include "event_queue.h"
/**
* @brief 触发事件
* @param type 事件类型
* @param priority 事件优先级
* @param data 事件数据
* @param data_size 事件数据大小
* @return 0 成功非0 失败
*/
int event_trigger(event_type_t type, event_priority_t priority, void *data, size_t data_size)
{
event_t event;
event.type = type;
event.priority = priority;
event.data = data;
event.data_size = data_size;
event.timestamp = rt_tick_get();
return event_queue_push(&event);
}
/**
* @brief 定时器回调函数
* @param parameter 定时器参数
*/
static void timer_callback(void *parameter)
{
event_type_t event_type = (event_type_t)parameter;
event_trigger(event_type, EVENT_PRIORITY_NORMAL, NULL, 0);
}
/**
* @brief 创建定时器事件
* @param type 事件类型
* @param interval 定时器间隔单位ms
* @return 定时器句柄失败返回NULL
*/
osal_timer_t event_timer_create(event_type_t type, int interval)
{
osal_timer_t timer;
timer = osal_timer_create("event_timer", timer_callback, (void *)type, interval, 1);
if (timer == NULL)
{
osal_log_e("Failed to create event timer");
return NULL;
}
return timer;
}
/**
* @brief 启动定时器事件
* @param timer 定时器句柄
* @return 0 成功非0 失败
*/
int event_timer_start(osal_timer_t timer)
{
if (timer == NULL)
{
return -1;
}
return osal_timer_start(timer);
}
/**
* @brief 停止定时器事件
* @param timer 定时器句柄
* @return 0 成功非0 失败
*/
int event_timer_stop(osal_timer_t timer)
{
if (timer == NULL)
{
return -1;
}
return osal_timer_stop(timer);
}
/**
* @brief 删除定时器事件
* @param timer 定时器句柄
* @return 0 成功非0 失败
*/
int event_timer_delete(osal_timer_t timer)
{
if (timer == NULL)
{
return -1;
}
return osal_timer_delete(timer);
}