更新了Bluez DBUS-API文档?

时间:2014-01-15 13:33:10

标签: bluetooth glib dbus vala gio

我只是尝试运行vala bluez示例(在DbusClientSamples页面中找到)并且我收到了此错误:

GDBus.Error:org.freedesktop.DBus.Error.UnknownObject:
Method "DiscoverDevices" with signature "" on interface "org.bluez.Adapter"
doesn't exist

示例是否使用了弃用的API?如果是,我在哪里可以找到有关bluez的DBUS API的更新文档?我找到的所有文件(通过谷歌搜索)都包含DiscoverDevices方法,所以我很困惑。

3 个答案:

答案 0 :(得分:8)

AFAICT org.bluez.Adapter消失了(我在我的Fedora 20系统上看不到它,运行bluez-5.12)。取而代之的是org.bluez.Adapter1。您可以在https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc

获取bluez D-Bus API的所有最新文档

答案 1 :(得分:2)

获取BlueZ DBus文档的最佳方法是从BlueZ web site下载源代码,将其解压缩,然后查看doc目录。所有当前的DBus API都列在那里。

我最近一直在使用这些文件。你可以要求更好,但他们已经足够好了。这是最明显的,并解释了最明显的问题。

答案 2 :(得分:0)

官方BlueZ网站还提供了BlueZ 5 API introduction and porting guide的博客文章,其中提供了有关其DBus API的一些说明。他们在页面顶部写道:

与BlueZ相比,BlueZ 5 D-Bus API包含重大更改 4.大部分更改归因于BlueZ 5中的以下功能:

  • ...
  • 界面版本简介(例如org.bluez.Adapter1)。引入新版本时,我们将尝试至少同时支持至少两个最新版本。
  • ...

有一部分讨论DBus对象管理器:

相反,应用程序将通过执行ObjectManager.GetManagedObjects调用来发现可用的适配器,并使用“ org.bluez.Adapter1”界面查找任何返回的对象。

此外,除了检出BlueZ源代码的docs目录(如thisthis答案中所述)外,我发现检查样本源也很有帮助test目录(https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test)中的代码。

以下是example-advertisement代码的一部分:

BLUEZ_SERVICE_NAME = 'org.bluez'
LE_ADVERTISING_MANAGER_IFACE = 'org.bluez.LEAdvertisingManager1'
DBUS_OM_IFACE = 'org.freedesktop.DBus.ObjectManager'
DBUS_PROP_IFACE = 'org.freedesktop.DBus.Properties'

...

def main(timeout=0):
    ...
    adapter_props = dbus.Interface(bus.get_object(BLUEZ_SERVICE_NAME, adapter),
                                   "org.freedesktop.DBus.Properties")

    adapter_props.Set("org.bluez.Adapter1", "Powered", dbus.Boolean(1))