首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定制BlueZ?

如何定制BlueZ?
EN

Stack Overflow用户
提问于 2019-05-29 15:50:46
回答 1查看 1K关注 0票数 1

我将问一个非常主观的问题,但这是很重要的,因为我希望从失败中恢复有效地使用BlueZ编程。

基本上,我设想的是一个运行在微型计算机上的IoT边缘设备(Ex: Raspberry pi或Intel计算棒)。然后,该设备将运行AlpineLinux操作系统并与云交互。

由于它是IoT环境,因此在ISM频段上蓝牙BLE的重要性就更不用说了。因此,能够定制和使用BlueZ至关重要。

我希望用BlueZ来做几件事,包括但不限于

  1. 广告
  2. 配对
  3. 特征性
  4. 广播安全传输数据等..。

由于我需要对数据进行完全控制,因此对于数据处理和与云(边缘人工智能或云上的数据科学)的交互,我将研究三种使用BlueZ的方法:

  1. 对DBus方法进行BlueZ API调用。
  2. 修改BlueZ代码库,并使安装自定义bin。(这样就可以注册回调处理程序,并调用其他bluez方法的财富)
  3. 在使用system()调用的程序中使用命令行utils调用BlueZ,比如hcitool/bluetoothctl。

1号是我失败的地方。构造和导出DBus对象然后调用BlueZ方法的工作量太大了。此外,没有保证你将能够处理所有的BLE问题。

NO2看起来非常有希望,我想充分探讨修改BlueZ代码以满足我的需要的可行性。

3号是最不理想的选择,但我还是想让它作为后备方案。

根据我的问题陈述,未来最可行的策略是什么?我大声要求这样做,这样我就不会犯更多的错误,也不会花费自己的时间和精力。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 08:11:32

您的最佳策略是从第二种方法开始(您已经发现这是很有希望的),因为这是一个可行的解决方案,许多开发人员使用这个方法来创建他们的BlueZ程序。以下是我要做的:-

  1. 用某种流程图或状态机编写系统的所有功能。这可以帮助你想象你的整个系统,以及需要做些什么来达到你的最终目标。
  2. 尝试使用蓝牙all和btmgmt手动执行上述所有功能。这包括广告、配对等。我建议您不要使用hcitool和hc共图等遗留命令,因为这些命令已经被废弃,并且代码结构非常不同。
  3. 当无意中发现了并非蓝牙/btmgmt中默认的功能或您想要调整功能时,请更新源。
  4. 最后,一旦您手动地让系统执行您需要的功能(它不一定是全部,它可以只是函数的子集),您就可以移动到自动化整个过程。这涉及到修改蓝牙the /btmgmt命令的源代码,这样一切都将是事件驱动的,而不是手动干预。
  5. 这是一个额外的好处,但是如果您可以使用python或其他脚本语言创建自动化测试,那么这将确保您的系统是健壮的,并且在添加新功能时之前的功能不会中断。

到这个过程结束时,您将能够更好地理解蓝牙‘ll/btmgmt和D-BUS API的内部结构,这样您就可以完全将代码从原始的蓝牙’ll/btmgmt中分离出来,或者从头开始创建程序。

您可能已经知道这一点,但是在修改工具时,这是源代码的起点:-

有关使用蓝牙命令和btmgmt的更多参考资料,请参见以下链接:-

我希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56364377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档