事件处理:通过ubus_register_event_handler函数可以注册新事件,而ubus_send_event函数用于发出事件消息。 intubus_send_event(struct ubus_context *ctx, constchar*id, struct blob_attr*data);intubus_register_event_handler(struct ubus_context *ctx, struct ubus_event_handler*ev, constchar*pattern); static ...
ubus_send_event client发送特定事件到ubusd,并通过ubusd转发给监听的listener。 ubus_register_event_handler 将需要监听的事件绑定到ubus_event_handler类型的listener。 ubus_unregister_event_handler 将ubus_event_handler类型的listener上的事件解绑。 *以上接口的使用可以搜索ubus库进行查看。 1.5. blob简介 上述过程...
send命令 send命令用于发出一个通知事件,这个事件可以使用listen命令监听到。 send 命令是 通过调用ubus_send_event函数来实现的。 命令行的发送数据格式必须为JSON格式,在程序中通过调用 blobmsg_add_json_from_string函数转换为ubus的TLV格式。 如果有多个监听客户端,多个监听客户端会同时收到事件。 发送通知事件通常...
/* ubus send notify */#defineMY_UBUS_PARAM_NAME_1"mac_addr"#defineMY_UBUS_PARAM_NAME_2"ipv4_addr"#defineMY_UBUS_NOTIFY_EVENT"my_notify"#defineMY_UBUS_NOTIFY_EVENT_1"my_notify_1"#defineMY_UBUS_RETURN_STATUS"status"#defineMY_UBUS_RETURN_ERR_STR"err_str"structubus_context*g_ubus_ctx;...
【第三种使用场景】event方式广播通知 在event方式广播通知下,pro1向pro2,pro3和pro4广播名为"add_device"的事件,但是在三个其他进程中只有pro2对这个event注册了监听,所以也只有pro2会对这个事件进行处理。 Pro1广播event函数:ubus _send_event()
- send <type> [<message>] Send an event - wait_for [...] Wait for multiple objects to appear on ubus ubus list [-v]该命令用于显示当前ubus中注册的接口,其中-v参数用以显示各个接口的详细信息。示例如下: ubus list -v'dhcp'@26b45f5d"ipv4leases":{}"ipv6leases":{}'hostapd.wlan0'@5...
@@ -254,7 +268,9 @@ int ubus_send_event(struct ubus_context *ctx, const char *id, { struct ubus_request req; void *s; + int ret; + struct blob_buf b = {0}; blob_buf_init(&b, 0); blob_put_int32(&b, UBUS_ATTR_OBJID, UBUS_SYSTEM_OBJECT_EVENT); ...
event⽅式⼴播通知 在event⽅式⼴播通知下,pro1向pro2,pro3和pro4⼴播名为"add_device"的事件,但是在三个其他进程中只有pro2对这个event注册了监听,所以也只有pro2会对这个事件进⾏处理。Pro1⼴播event函数:ubus _send_event()pro2对这个event注册监听:ubus_register_event_handler()以上 ...
使用shell发送event,进行测试 root@zihome:/usr/sbin# ubus call ztest get_test{"status":0,"port":0}root@zihome:/usr/sbin# ubus send test_event '{"status": 1, "port": 3}'root@zihome:/usr/sbin# ubus call ztest get_test{"status":1,"port":3} ...
registered = 1; // 表示将ubus fd加入到了epoll,要不然ubus_send_event会处理Pending_msg while (1) { struct epoll_event events[5] = {0}; int ev_num = epoll_wait(g_epfd, events, sizeof(events) / sizeof(events[0]), -1); for (int i = 0; i < ev_num; i++) { if (events[...