一、前言
本篇会编写代码,扫描指定的广播信号,并且进行连接。
二、阅读说明
1、泰凌微芯片学习者。
2、蓝牙 spec学习者
三、正文
1、从机说明因为本篇涉及到主机连接相关的内容,所以需要有从机的参与,但限于篇幅这里就不介绍从机相关的demo了,此次使用的demo的连接如下:如何使用TLSR8258芯片进行蓝牙广播
2、使用BLE调试助手扫描当前的广播信号如上图所示,使用手机软件扫描可以看到广播名为VHID的广播名,本次我们就是需要使用主机来对这个设备进行扫描,并且进行连接。
3、分析从机广播名所在广播数据中的位置
该图片是从机的ble_sample例程里面的代码,从上图可以看到VHID广播名称是在广播数据里面,那么我们在主机的广播报告回调函数里面就需要检测广播数据是否包含该广播名。
4、检测VHID广播名,并发起连接
4.1、在ble_master_kma_dongle例程中定义扫描回复数组
const u8 adv_data [] = {5, DT_COMPLETE_LOCAL_NAME, 'V', 'H', 'I', 'D',};
如上图所示,在blm_host.c中定义该数组,该数组后面会用到。
4.2、在blm_le_adv_report_event_handle函数中增加对比代码
if(pa->event_type == 0x00){ret = memcmp(pa->data,adv_data,sizeof(adv_data));}
如上图所示,在该函数中,增加代码,如果当前抓取到的广播数据有adv_data的数据的话,那么说明是我们需要连接的设备。
4.3、发起连接
在当前的函数中,增加如上代码,当ret=0的时候,发起连接,并在连接成功之后打印ble connect。
4.4、在连接完成的条件判断里面增加打印代码
如上图所示,在连接完成条件判断里,打印conn_success字符串
5、串口打印
如上图所示,能看到打印除了ble connect 和conn_success字符串,这说明主机连接成功。
四、结尾
本篇讲解了如何连接指定的从机设备,下一篇讲解,主机如何发数据给到从机。
125