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到任务管理器上
// 订阅这个topic,设置处理topic的回调
}
/* ==================== [Static Functions] ================================== */
static void task_pub(xf_task_t task)
{
int num = 1;
XF_LOGI(TAG, "task:%d", num);
// 异步发送(慢,但是不会阻塞本任务)
num++;
// 同步发送(快,但是会阻塞本任务)
}
{
}
static void bus_cb(const void *const data, void *user_data)
{
int num = *(int *)data;
XF_LOGI(TAG, "data:%d", num);
}
void xf_main(void)
Definition xf_main.c:28
xf_err_t xf_task_mbus_reg_topic(uint32_t topic_id, uint32_t size)
注册 topic。
xf_err_t xf_task_mbus_pub_async(uint32_t topic_id, void *data)
异步发布指定的 topic ,不会阻塞代码运行。
void xf_task_mbus_handle(void)
处理异步的消息。
xf_err_t xf_task_mbus_sub(uint32_t topic_id, xf_task_mbus_func_t mbus_cb, void *user_data)
订阅指定的 topic。
xf_err_t xf_task_mbus_pub_sync(uint32_t topic_id, void *data)
同步发布,直接执行订阅者的回调,执行速度快。
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
#define TAG
Definition xf_main.c:24
#define TOPIC_ID
Definition xf_main.c:23
static void mbus_handle(xf_task_t task)
Definition xf_main.c:68
static void task_pub(xf_task_t task)
用于测试发布的ntask,定时发布一些数据
Definition xf_main.c:57
static void bus_cb(const void *const data, void *user_data)
订阅回调函数,用于处理用户发布的消息
Definition xf_main.c:79
static void task(xf_task_t task)
Definition xf_main.c:45
#define XF_LOGI(tag, format,...)
void * xf_task_t
任务句柄。