如何使用 Dbus 监听蓝牙事件?

如何使用 Dbus 监听蓝牙事件?

我正在为 Cinnamon 开发一个蓝牙小程序,我希望有一种方法可以切换蓝牙并执行其他基本操作,如配对、连接/断开连接等

我曾尝试探索 bluez 提供的 dbus 协议,但我无法弄清楚如何监听电源开/关事件以及如何实际使用 dbus 发出命令,如果可能的话...... :(

答案1

这是可能的。

您可以使用以下方式探索树

busctl tree org.bluez

这将显示节点树。您必须枚举设备,然后从该列表中选择每个设备的状态,并根据您的目标启用/禁用。

适配器的实际端点被列在BlueZ DBUS 文档

更多信息请访问https://ukbaz.github.io/howto/python_gio_1.html#dbus,它面向 Python,但应该向您展示基础知识。代码相当基础,因此将其移植到任何语言都应该或多或少是微不足道的。

答案2

man hcitool bluetoothd bluetoothctl;man -k bluetooth;man -k bluez

如果您找到一个具有您喜欢的功能的版本,请充分利用 GNU/Linux 的开源特性!

例如hcitool

# Don't do this in your $HOME, each package should have its own subdirectory
# determine the package containg the executable 
dpkg -S "$(type -p hcitool)"
pkg="$(dpkg -S "$(type -p hcitool) | head -n 1 | cut '-d:' -f1)"
# Retrieve the source
apt-get source "$pkg"
/bin/ls -l "${pkg}*"

这里解释了如何使用“源”。

一般来说,这个过程被称为“从源代码构建”,如下所示(假设您已经完成sudo apt install build-essential):

  • 下载 ( apt-get source ...) 档案 ( .tar.gz)。将文件放在您可以写入的位置,并放在具有足够空间的文件系统上。最终,此文件是一次性的。
  • 检查档案 ( tar tzvf ...,参见man tar)。大多数档案会解压到子目录中。对于少数不解压的档案,请将解压到mkdir您自己的子目录中,然后进入其中。mv.tar.gzcd
  • 解压档案 ( tar xzvf ...)。
  • 阅读所有大写名称的文件(README*INSTALL、... )。它们包含完整的说明,并覆盖我在此之后输入的任何内容。阅读源代码(通常是./src/*)以了解程序。
  • 如果有configure脚本,则运行它(./configure)。configure需要许多选项,请参阅INSTALL文件或./configure -h。如果configure成功,它将构建一个Makefike
  • make编译并链接必要的内容。它会生成一个可在安装前进行测试的可执行文件。
  • 这是唯一需要root特权的步骤:sudo make install。此命令将可执行文件、man页面、运行时必需品复制到“正确”的位置。
  • 一旦sudo make install起作用,整个源目录就是多余的,可能会被删除。

一如往常,YMMV。

探索http://www.bluez.org/

相关内容