/* * event_trigger.c * * Created on: 2026-03-04 * Author: RT-Thread * * 功能: 事件触发机制模块实现 * 依赖: RT-Thread Nano, osal, event_queue * 跨平台适配: 基于RT-Thread Nano,使用标准API */ #include #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); }