XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_main.c
浏览该文件的文档.
1
17/* ==================== [Includes] ========================================== */
18
19#include "xf_task.h"
20
21/* ==================== [Defines] =========================================== */
22
23#define TOPIC_ID 11
24#define TAG "example_mbus"
25
26/* ==================== [Typedefs] ========================================== */
27
28/* ==================== [Static Prototypes] ================================= */
29
30static void task_pub(xf_task_t task);
31static void mbus_handle(xf_task_t task);
32static void bus_cb(const void *const data, void *user_data);
33
34/* ==================== [Static Variables] ================================== */
35
36/* ==================== [Macros] ============================================ */
37
38/* ==================== [Global Functions] ================================== */
39
40void xf_main(void)
41{
42 // 创建协作式任务
43 xf_ttask_create_loop(task_pub, (void *)1, 1, 2000);
44 // 绑定topic到任务管理器上
45 xf_task_mbus_reg_topic(TOPIC_ID, sizeof(int));
46 // 订阅这个topic,设置处理topic的回调
48}
49
50/* ==================== [Static Functions] ================================== */
51
58{
59 int num = 1;
60 XF_LOGI(TAG, "task:%d", num);
61 // 异步发送(慢,但是不会阻塞本任务)
63 num++;
64 // 同步发送(快,但是会阻塞本任务)
66}
67
69{
71}
72
79static void bus_cb(const void *const data, void *user_data)
80{
81 int num = *(int *)data;
82 XF_LOGI(TAG, "data:%d", num);
83}
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
任务句柄。