原文链接 https://note.youdao.com/s/YIU9BUit
几点个人看法
- bluez网上资料比较少,基本只能硬着头皮去看代码
- 蓝牙的概念很多至今很多搞不明白
- 官网的核心规范和Linux开发帮助算是最全的资料了
- 根据自己的理解整理的源码的目录结构分析
- dbus-glib的方案个人感觉通过C/C++去折腾,学习成本高,编译难度大。嵌入式开发麻烦(官方都是python的demo 很难受)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6YSMZlhC-1663402903591)(https://note.youdao.com/yws/res/19369/WEBRESOURCE58dae99b21639412c7f7bff72a67fc3b)]
android目录
- android系统下的代码(没用过)
attrib目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fEtXjhgv-1663402903593)(https://note.youdao.com/yws/res/19374/WEBRESOURCE78ef2b380d713c0b617704454694051a)]
- gatttool 工具的源码,连接断连 操作特征值
- 依赖了Glib
client目录
- bluetoothctl工具的源码
- 主要用来和bluetoothd 进行交互操作
doc目录
- bluez d-bus接口文档描述
gdbus目录
- glib 和d-bus的封装库
- 采用dbus开发的建议使用他
lib目录
- 蓝牙的核心库
- 直接剥离d-bus glib 可以从这里开始引入
mesh
- 蓝牙组网的库
- bluetoothd 和bluetoothd-mesh二选一好像(没有用过)
monitor目录
- btmon工具的源码
- 监控蓝牙的所有信息
- 蓝牙调试神器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Si6CUfhr-1663402903593)(https://note.youdao.com/yws/res/19398/WEBRESOURCEdaed69b5c6bab804542d071a28d03a14)]
obexd gobex
- 蓝牙数据交换协议(没有应用场景没折腾过)
src
- bluetoothd 守护进程的源码
- dbus开发的源码主要和他进行通信
tools
- 这里的代码比较重要都是工具类的集合
- 想要开发蓝牙功能大部分借鉴这里
不使用glib dbus开发的话,想要开发周边设备可以借鉴btmgmt.c和btgatt-server.c
不使用glib dbus开发中心设备,建议借鉴btmgmt.c和btgatt-client.c
- 使用dbus和glib开发中心设备可以使用 https://github.com/labapart/gattlib
- 这个库可以免于折腾dbus和glib这些东西
附上我收集的资料 希望能有所帮助:
蓝牙客户端 sever 端
https://github.com/evanslai/bluez-gatt
gatt gap att关系
https://blog.youkuaiyun.com/zhuimeng_ruili/article/details/120524848
经典蓝牙 ble bt的关系
https://blog.youkuaiyun.com/qlexcel/article/details/116738423
BLE广播通信相关技术分析
https://blog.youkuaiyun.com/m0_52447591/article/details/124329237
bluetoothctl设置外设
https://zhuanlan.zhihu.com/p/355840251
Bluetooth ATT介绍
https://www.cnblogs.com/hzl6255/p/4141505.html
蓝牙之SSP过程分析
https://notes.z-dd.net/2021/09/08/%E8%93%9D%E7%89%99%E4%B9%8BSSP%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90/
Linux之蓝牙相关代码浅析
https://notes.z-dd.net/2021/09/06/Linux%E4%B9%8B%E8%93%9D%E7%89%99%E7%9B%B8%E5%85%B3%E4%BB%A3%E7%A0%81%E6%B5%85%E6%9E%90/