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
30
static
void
task_pub
(
xf_task_t
task
);
31
static
void
mbus_handle
(
xf_task_t
task
);
32
static
void
bus_cb
(
const
void
*
const
data,
void
*user_data);
33
34
/* ==================== [Static Variables] ================================== */
35
36
/* ==================== [Macros] ============================================ */
37
38
/* ==================== [Global Functions] ================================== */
39
40
void
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的回调
47
xf_task_mbus_sub
(
TOPIC_ID
,
bus_cb
, NULL);
48
}
49
50
/* ==================== [Static Functions] ================================== */
51
57
static
void
task_pub
(
xf_task_t
task
)
58
{
59
int
num = 1;
60
XF_LOGI
(
TAG
,
"task:%d"
, num);
61
// 异步发送(慢,但是不会阻塞本任务)
62
xf_task_mbus_pub_async
(
TOPIC_ID
, &num);
63
num++;
64
// 同步发送(快,但是会阻塞本任务)
65
xf_task_mbus_pub_sync
(
TOPIC_ID
, &num);
66
}
67
68
static
void
mbus_handle
(
xf_task_t
task
)
69
{
70
xf_task_mbus_handle
();
71
}
72
79
static
void
bus_cb
(
const
void
*
const
data,
void
*user_data)
80
{
81
int
num = *(
int
*)data;
82
XF_LOGI
(
TAG
,
"data:%d"
, num);
83
}
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
examples
task
mbus
main
xf_main.c
生成于 2025年 一月 21日 星期二 17:25:09 , 为 XFusion API使用
1.9.8