【发布时间】:2016-06-10 08:26:47
【问题描述】:
我开始用 C 创建一个 dbus 应用程序来与 bluez 交互。我是 dbus 新手,对如何使用 dbus 正确构建我的应用程序感到有些困惑。
第一个问题与dbus中的Service、Interface、Object路径有关。 Bluez Adapter API 具有 org.bluez 服务、org.bluez.Adapter1 接口以及许多方法和属性。如果我想调用 void StopDiscovery() 方法,以下是正确的调用吗?
DBusPendingCall * pending;
// create a new method call and check for errors
msg = dbus_message_new_method_call("org.bluez",
"/", // object to call on
"org.bluez.Adapter1", // interface to call on
"StopDiscovery"); // method name
// send message and get a handle for a reply
if (!dbus_connection_send_with_reply (m_dbus_conn, msg, &pending, -1))
{
//err
}
如果是这样,对象路径什么时候开始起作用?
接下来是如何从 dbus 接收信息。我已经看到了一些带有 DBusPendingCall * 的示例,但是该函数具有 dbus_pending_call_block() 因此该函数会阻塞,直到返回数据。如果我想进行多次调用而不是阻塞,我需要制作一个 DBPendingCall 指针列表并检查每一个?有回调吗?
谢谢
【问题讨论】:
标签: c methods architecture dbus bluez