繁体   English   中英

更新了 Bluez DBUS-API 文档?

[英]Updated Bluez DBUS-API document?

我只是尝试运行一个 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方法,所以我很困惑。

AFAICT org.bluez.Adapter 不见了(我在运行 bluez-5.12 的 Fedora 20 系统上没有看到它)。 取而代之的是org.bluez.Adapter1 您可以在https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc 上获取 bluez D-Bus API 的所有最新文档

获取 BlueZ DBus 文档的最佳方式是从BlueZ 网站下载源代码,解压缩,然后在doc目录中查找。 所有当前的 DBus API 都列在那里。

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

BlueZ官方站点还提供了BlueZ 5 API 介绍和移植指南的博客文章,其中提供了有关其 DBus API 的一些描述。 他们在页面顶部写道:

与 BlueZ 4 相比,BlueZ 5 D-Bus API 包含重大更改。大部分更改是由于 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 )。

以下是示例广告代码的一部分:

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM