-------------------------------------------------------------------------------------------------------------------------------------
在蓝牙主机与蓝牙从机建立连接的方式有很多种,默认是通过MAC地址建立连接,这里讲解以蓝牙名称建立连接的方式。
先获取到从机的扫描应答包中的蓝牙名称,再对比蓝牙名称的字符串,判断是否获取到正确的蓝牙名称,从而获取设备的MAC地址进行连接。
先定义一个将要对比蓝牙名称的字符串BLE_Name。
在主机的回调函数中扫描设备信息事件中,通过strstr函数进行检索扫描应答包中数据,在pEvent->deviceInfo.pEvtData数据包中查找已定义的BLE_Name子字符串信息,通过判断是否找到。
如果找到了子字符串,则返回指向子字符串第一次出现位置的指针;如果未找到,则返回空指针。
对比成功后,将扫描的设备MAC地址添加到设备列表中。
tmos_memcpy(PeerAddrDef, centralDevList[centralScanRes - 1].addr, 6);通过tmos_memcpy一个自定义的内存拷贝函数,将蓝牙名称过滤后的从机MAC地址拷贝到PeerAddrDef中, 这样可以和后面的MAC地址匹配,进行建立连接。
通过串口来观察一下建立连接的过程。
如果在很多蓝牙设备中,可能设备的蓝牙名称很多是相同的,这时可利用蓝牙名字和MAC地址配合使用建立连接,可以先通过蓝牙名称过滤掉一部分设备,再通过设置PeerAddrDef数组去修改从机的目标MAC地址。
在扫描设备信息事件中需要将tmos_memcpy(PeerAddrDef, centralDevList[centralScanRes - 1].addr, 6);这段程序注释掉,不将最后一个扫描到的设备MAC地址拷贝至PeerAddrDef,而是使用初始化设置的MAC地址。