目录
前言:
上一篇介绍Bluez协议栈的了GAP Profile的实现,本章节我们继续介绍GATT Profile的实现,参考的程序是Peripheral。通过阅读它的实现代码可以发现,它广播部分是通过mgmt来实现的,然后在初始化完成之后,创建了一个L2CAP类型的socket,来负责实现GATT Server的逻辑。
接口实现:
下面参考peripheral的代码,介绍本章节的GATT Server的细节。
关键数据结构体:
bt_att,bt_gatt_server,gatt_db都是bluez提供的库函数,我们使用这些api来实现gatt server的功能。
struct gatt_conn {
struct bt_att *att;
struct bt_gatt_server *gatt;
struct bt_gatt_client *client;
};
static struct gatt_db *gatt_db = NULL;
创建L2CAP的socket:
创建l2cap的socket,绑定到本地蓝牙设备的地址上,然后监听client设备端的BLE连接请求。同时初始化gatt