TI中文支持网
TI专业的中文技术问题搜集分享网站

BLE5能否对请求连接的设备进行过滤

芯片:CC2650R2F

工程:SimplePeripheral

问题:如题,在应用中,我不知道即将请求联接的设备ID,但是我希望只与发送特定请求连接数据包的设备进行连接,但是我看到示例程序中只有读取标志位是否为succ的动作,没有读取请求连接数据包的动作,请问这个数据在GAP层能读到吗?如果不能,我要怎么实现我的设想?

case GAP_LINK_ESTABLISHED_EVENT:{gapEstLinkReqEvent_t *pPkt = (gapEstLinkReqEvent_t *)pMsg;// Display the amount of current connectionsuint8_t numActive = linkDB_NumActive();Display_printf(dispHandle, SP_ROW_STATUS_2, 0, "Num Conns: %d",(uint16_t)numActive);if (pPkt->hdr.status == SUCCESS){// Add connection to list and start RSSISimplePeripheral_addConn(pPkt->connectionHandle);// Display the address of this connectionDisplay_printf(dispHandle, SP_ROW_STATUS_1, 0, "Connected to %s",Util_convertBdAddr2Str(pPkt->devAddr));// Enable connection selection optiontbm_setItemStatus(&spMenuMain, SP_ITEM_SELECT_CONN, TBM_ITEM_NONE);// Start Periodic Clock.Util_startClock(&clkPeriodic);}if (numActive < MAX_NUM_BLE_CONNS){// Start advertising since there is room for more connectionsGapAdv_enable(advHandleLegacy, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);GapAdv_enable(advHandleLongRange, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);}else{// Stop advertising since there is no room for more connectionsGapAdv_disable(advHandleLongRange, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);GapAdv_disable(advHandleLegacy, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);}break;}

Viki Shi:

看你的描述,类似白名单功能,可调用HCI_LE_AddWhiteListCmd(HCI_PUBLIC_DEVICE_ADDRESS, &bdAddr);实现

z z46:

回复 Viki Shi:

我查看了这个函数,它需要把目标地址写入白名单,但我的设备是不知道目标设备地址的,我希望能读取接收到的请求连接的数据包,并对里面的数据做一些分析,判断是否符合我的连接规则,如果符合就创建这个连接,请问在GAP层如何查看接收到的请求连接的数据?

Alvin Chen:

回复 z z46:

我认为这个是个逻辑问题:

举例:
可以通过pairing来做

也可以连接成功后启动一个timer 来等一个固定的数据包,超时没有收到就断开,并把该地址写入一个黑名单。

z z46:

回复 Alvin Chen:

你说的pairing是怎么做,有介绍的文档或函数吗?另外,scanresponse和发起连接的内容都是下层自发进行的吗?GAP层能看到并修改数据吗?

Alvin Chen:

回复 z z46:

GAP不能获取,bluetooth的pairing
blog.csdn.net/…/81196122

z z46:

回复 Alvin Chen:

请求连接包是GAP下层直接生成的?用户无法指定请求连接包的数据内容?

赞(0)
未经允许不得转载:TI中文支持网 » BLE5能否对请求连接的设备进行过滤
分享到: 更多 (0)