1

我想调用方法RegisterAgentgdbus但找不到合适的语法。

/org/bluez使用此命令进行自省

$ gdbus introspect --system --dest org.bluez --object-path /org/bluez --recurse

表明RegisterAgent接口org.bluez.AgentManager1上的方法具有以下签名:

RegisterAgent(in  o agent,
              in  s capability);

但我在gdbus 参考文档中找不到任何示例来说明如何将对象传递给方法,在 Internet 上找到的众多示例中也找不到。

所以我不知道如何将代理作为第一个参数传递,例如我想选择KeyboardOnly作为代理,但是怎么做呢?

随着dbus-send,这给出:

dbus-send --print-reply --system --dest=org.bluez /org/bluez \
    --type=method_call org.bluez.AgentManager1.RegisterAgent \
    objpath:/org/bluez/agent1 string:KeyboardOnly

但是我找不到如何通过gdbus调用来做到这一点。任何想法?

4

1 回答 1

1

我监视了通过 DBus 发送的实际命令

dbus-monitor  --system

经过反复试验,我终于找到了正确的语法。

我试图制作的 gdbus 命令可以这样拼写:

gdbus call --system --dest org.bluez --method \
    org.bluez.AgentManager1.RegisterAgent --object-path /org/bluez \ 
    /org/bluez/agent KeyboardOnly

因此,将对象作为参数传递给 gdbus是通过拼写其路径来完成的,例如/org/bluez/agent在我们的例子中。在我看来,这没有记录。

顺便说一句,对应的dbus-send命令拼写几乎一样

dbus-send --print-reply --system --dest=org.bluez /org/bluez \
    --type=method_call org.bluez.AgentManager1.RegisterAgent \
    objpath:/org/bluez/agent1 string:KeyboardOnly

但是对于代理对象路径... /org/bluez/ agent1 for dbus-send,而只是 /org/bluez/ agent for gdbus。我认为这方面也没有记录。

于 2018-01-19T16:14:29.110 回答