我開始在C中創建一個dbus應用程序來與bluez接口。我是dbus的新手,我有點困惑,因爲如何用dbus正確構建我的應用程序。Dbus結構和方法調用C
第一個問題與dbus中的服務,接口和對象路徑有關。 Bluez Adapter API有org.bluez服務,一個org.bluez.Adapter1接口,以及一些方法和屬性。如果我想調用無效的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指針列表並檢查每個指針?有沒有回調?
感謝