(六)深入理解Bluez协议栈之“GATT Client Profile”

前言:

本章节我们继续介绍GATT Client Profile的实现,参考的程序是tools\btgatt-client.c,需要注意的一点,在./configure时,需要添加 --enable-test --enable-testing才会编译该c文件,编译完成后,生成的可执行程序为btgatt-client。本文主要以btgatt-client运行时可能会出现的各种问题为切入点,介绍bluez的gatt client实现难点。对于btgatt-client的源码,无需过多介绍,都是开源的。

运行btgatt-client命令:

btgatt-client程序中,没有扫描代码的实现,因此在运行时要指定“建立连接的对端peripheral设备”,另外需要提前将BLE或者BT的Dongle挂载好,我这里是hci0设备,连接成功后,会打印service,character,descriptor的attribute信息,然后可以根据help的提示信息,输入支持的执行命令,如图1。

(六)深入理解Bluez协议栈之“GATT Client Profile”_第1张图片

图1

难点:

通过阅读源码可知,btgatt-client.c的l2cap_le_att_connect函数,创建了一个BTPROTO_L2CAP类型的socket,bind设备本地的蓝牙地址,然后调用connect函数连接对端设备,这里涉及4个参数,本地蓝牙地址࿰

你可能感兴趣的:(深入理解Bluez协议栈,物联网,Bluez协议栈,蓝牙BLE)