一、前言
本篇将讲解连接句柄(Connection_Handle)的作用,以及的连接句柄,。
二、阅读
说明泰凌微芯片学习者。
三、正文
1、连接句柄含义
- 官方解释:连接句柄主要被用于标识主机(Host)和控制器(Controller)的逻辑通道。我的理解:连接句柄,从字面上来进行理解,只有在连接的情况下才能使用的标识符叫连接句柄,未连接状态不能使用,未连接状态下的广播和扫描都使用不了该连接句柄。
2、连接句柄使用的场景
2.1、在发送通知数据的时候
blc_gatt_pushHandleValueNotify (BLS_CONN_HANDLE, BATT_LEVEL_INPUT_DP_H, (u8 *)&value, 1);
上述代码中的BLS_CONN_HANDLE代表连接句柄
2.2、在更改PHY参数的时候
blc_ll_setPhy(BLS_CONN_HANDLE, PHY_TRX_PREFER, PHY_PREFER_CODED, PHY_PREFER_CODED, CODED_PHY_PREFER_S2);
上述代码中的BLS_CONN_HANDLE代表连接句柄总结:通过上述的两个例子可以看到连接句柄始终都是BLS_CONN_HANDLE,通过查找代码,发现该值为0x0040,并且代表的是从机的连接句柄,如下图所示。
备注:在蓝牙单连接SDK中,连接句柄是固定的,只有在多连接的SDK中,这个连接句柄才会发生变化。
3、单连接SDK和多连接SDK的含义
单连接SDK指的是:只能有一个主机或者一个从机,不能同时有两个从机或者两个主机,或者一主一从共存。
多连接SDK指的是:允许有多个从机,或者多个主机,或者一主一从等出现。
4、多连接的连接句柄下载地址:https://www.telink-semi.cn/products/bluetooth-le/tlsr825x
连接句柄所在的文件:tc_ble_sdkvendorcommondevice_manage.c
如上图是连接句柄的表格,如果当前是一主一从,那么主机对应的相关数组为conn_dev_list[0].,从机为conn_dev_list[1],如下图所示:
因为该数组是一个结构体,结构体中包含了一系列元素,如下如所示:
该结构体中有一个conn_handle,该元素就代表了句柄,那么从机的连接句柄为conn_dev_list[1].conn_handle,主机的连接句柄为conn_dev_list[0].conn_handle。
四、结尾
本篇结合代码讲解了连接句柄,下一篇将开始讲解配对中的安全连接。
我写了一个合集,不依赖 Nordic、泰凌、瑞萨等厂商商用 BLE 协议栈,从无线底层链路层入手,从零手写 BLE 广播扫描逻辑,拆解蓝牙广播包、信道切换、射频调度、广播数据解析完整流程,适合想吃透 BLE 底层、自主开发蓝牙工具、规避商用协议栈授权限制的嵌入式开发者。
159