test.lua
此範例來源:ubus-2015-05-25/lua
github: test.lua
local: [test.lua]
ubus.connect
連接ubusd (/var/run/ubus.sock) 並且加到uloop
ctx = ubus_connect() ubus_add_uloop(ctx);
conn:add(my_method)
使用ubus_add_object(ctx,obj)跟ubusd注冊新的object
conn:listen(my_event)
使用ubus_register_event_handler注冊新的event
監聽test event(由ubus send送出的event)
監聽由ubus_send_event的test event
ubus_register_event_handler();
conn:reply
使用ubus_send_reply 回應client
測試ubus server (test.lua)
test.lua提供下例method
# ubus list -v 'broken' @0521ea88 "hello1":{} 'test' @89354d57 "hello":{"id":"Integer","msg":"String"} "hello1":{"id":"Integer","msg":"String"}
test.lua server log
test.lua只listen test,因此若為test1則不會有打印
可使用conn:reply來回應client
/opt/dvr_board/bin # ./test.lua Call to function broken hello1 Call to function 'hello' key=id value=123 key=msg value=str123 Call to function 'hello1' Call to test event key=layout value=6x6
ubus command
# ubus call test hello '{"id":123, "msg":"str123"}' { "message": "foo" } # ubus call test hello1 '{"id":123, "msg":"str123"}' { "message": "foo1" } { "message": "foo2" } # ubus send test '{"layout":"6x6"}' # ubus send test1 '{"layout":"6x6"}
test_client.lua
此範例來源:ubus-2015-05-25/lua
conn:objects
ubus_lua_objects
ubus_lookup
conn:call
ubus_lookup_id : 找obj id
ubus_invoke : 指定object執行其方法(method)conn:send
ubus_send_event
測試ubus client (test_client.lua)
test_client.lua
/opt/dvr_board/bin # ./test_client.lua namespace=broken procedure=hello1 namespace=test procedure=hello attribute=id type=5 attribute=msg type=3 procedure=hello1 attribute=id type=5 attribute=msg type=3 key=message value=foo key=message value=foo1 key=message value=foo2
server
Call to function 'hello' key=msg value=eth0 Call to function 'hello1' Call to test event key=foo value=bar
test_client file
這邊使用conn:object查訊obj-id,只是顯示目前在ubusd內有那些obj
若沒有查訊(conn:object)也是可以送訊
使用conn:object查訊obj-id
使用conn:call執行obj的method,此時return value為server msg
使用conn:send來送event及參數
github: test_client.lua
local: [test_client.lua]
libusb 介面說明
libubs介面說明:
ubus_register_event_handle: 注册新事件
ubus_send_event : 发出事件消息
ubus_connect: 初始化client端context结构,并连接ubusdlibus-io介面說明:
ubus_send_msg: 发送报文 (client上下文對象)libubs-obj介面說明
ubus_add_object: client端向ubusd server请求增加一个新object
libusb-req介面說明
libus-io / ubus_send_msg(,UBUS_MSG_DATA)
ubus_send_reply: 發送回应信息,消息类型UBUS_MSG_DATA
ubus_invoke : 指定object執行其方法(method)