XFusion API
v1.3.0
载入中...
搜索中...
未找到
examples/task/mbus/main/xf_main.c
xf_task 发布订阅示例。
/* ==================== [Includes] ========================================== */
#include "xf_task.h"
/* ==================== [Defines] =========================================== */
#define TOPIC_ID 11
#define TAG "example_mbus"
/* ==================== [Typedefs] ========================================== */
/* ==================== [Static Prototypes] ================================= */
static
void
task_pub
(
xf_task_t
task
);
static
void
mbus_handle
(
xf_task_t
task
);
static
void
bus_cb
(
const
void
*
const
data,
void
*user_data);
/* ==================== [Static Variables] ================================== */
/* ==================== [Macros] ============================================ */
/* ==================== [Global Functions] ================================== */
void
xf_main
(
void
)
{
// 创建协作式任务
xf_ttask_create_loop
(
task_pub
, (
void
*)1, 1, 2000);
// 绑定topic到任务管理器上
xf_task_mbus_reg_topic
(
TOPIC_ID
,
sizeof
(
int
));
// 订阅这个topic,设置处理topic的回调
xf_task_mbus_sub
(
TOPIC_ID
,
bus_cb
, NULL);
}
/* ==================== [Static Functions] ================================== */
static
void
task_pub
(
xf_task_t
task
)
{
int
num = 1;
XF_LOGI
(
TAG
,
"task:%d"
, num);
// 异步发送(慢,但是不会阻塞本任务)
xf_task_mbus_pub_async
(
TOPIC_ID
, &num);
num++;
// 同步发送(快,但是会阻塞本任务)
xf_task_mbus_pub_sync
(
TOPIC_ID
, &num);
}
static
void
mbus_handle
(
xf_task_t
task
)
{
xf_task_mbus_handle
();
}
static
void
bus_cb
(
const
void
*
const
data,
void
*user_data)
{
int
num = *(
int
*)data;
XF_LOGI
(
TAG
,
"data:%d"
, num);
}
xf_main
void xf_main(void)
Definition
xf_main.c:28
xf_task_mbus_reg_topic
xf_err_t xf_task_mbus_reg_topic(uint32_t topic_id, uint32_t size)
注册 topic。
Definition
xf_task_mbus.c:53
xf_task_mbus_pub_async
xf_err_t xf_task_mbus_pub_async(uint32_t topic_id, void *data)
异步发布指定的 topic ,不会阻塞代码运行。
Definition
xf_task_mbus.c:96
xf_task_mbus_handle
void xf_task_mbus_handle(void)
处理异步的消息。
Definition
xf_task_mbus.c:207
xf_task_mbus_sub
xf_err_t xf_task_mbus_sub(uint32_t topic_id, xf_task_mbus_func_t mbus_cb, void *user_data)
订阅指定的 topic。
Definition
xf_task_mbus.c:127
xf_task_mbus_pub_sync
xf_err_t xf_task_mbus_pub_sync(uint32_t topic_id, void *data)
同步发布,直接执行订阅者的回调,执行速度快。
Definition
xf_task_mbus.c:111
xf_ttask_create_loop
static xf_task_t xf_ttask_create_loop(xf_task_func_t func, void *func_arg, uint16_t priority, uint32_t delay_ms)
在默认的任务管理下,创建 ttask 循环任务。
Definition
xf_task.h:162
TAG
#define TAG
Definition
xf_main.c:24
TOPIC_ID
#define TOPIC_ID
Definition
xf_main.c:23
mbus_handle
static void mbus_handle(xf_task_t task)
Definition
xf_main.c:68
task_pub
static void task_pub(xf_task_t task)
用于测试发布的ntask,定时发布一些数据
Definition
xf_main.c:57
bus_cb
static void bus_cb(const void *const data, void *user_data)
订阅回调函数,用于处理用户发布的消息
Definition
xf_main.c:79
task
static void task(xf_task_t task)
Definition
xf_main.c:45
XF_LOGI
#define XF_LOGI(tag, format,...)
Definition
xf_log_uitls.h:44
xf_task_t
void * xf_task_t
任务句柄。
Definition
xf_task_manager.h:40
生成于 2025年 一月 21日 星期二 17:25:08 , 为 XFusion API使用
1.9.8