SDK:4.30.0.08。CCS: Version: 9.0.1.00004
使用例程:simple_peripheral。使用如下方式设置白名单
uint8_t whitelistfilter = GAP_ADV_WL_POLICY_WL_CONNECT_IND ;
uint8_t wlmac[6] = {0xc1,0x1a,0x2b,0x3c,0x4d,0xc1};
GapAdv_setParam(advHandleLegacy, GAP_ADV_PARAM_FILTER_POLICY, &whitelistfilter);
HCI_LE_ClearWhiteListCmd();
HCI_LE_AddWhiteListCmd(HCI_RANDOM_DEVICE_ADDRESS, wlmac);
在实际连接过程中,白名单未生效,不是目标mac的主机设备依然可以连接到模块从机,依然能进入到事件:GAP_LINK_TERMINATED_EVENT,并且不会主动断开连接。
Kevin Qiu1:
可以看下下面帖子中的设置方法:
e2e.ti.com/…/557392
e2e.ti.com/…/417407
babober:
回复 Kevin Qiu1:
这个设置方法应该是正确的,我在3.2版本的SDK就是这么用的,3.2版本的没得任何问题,前几天更新到最新的4.3版本的SDK就出现了异常,希望你们按照这个方法测试一下,给个结论。
在simple_peripheral中仅仅在这个位置添加了上诉代码,连接使用的主机是手机APP,应用商店里找的BLE调试助手。
你们按照这个方式做个测试吧,这明显就是bug。
babober:
回复 Kevin Qiu1:
Kevin Qiu1:
回复 babober:
我用下面代码测试没有问题static void SimplePeripheral_init(void) { // ...//set ADV filter policy to allow scan and connect request from white list onlyuint8_t advFilterPolicy = GAP_FILTER_POLICY_WHITE;//remember to change the values below to the BDA of your central devicestatic uint8 bdAddressPeer[6] = {0x00,0x90,0x78,0x56,0x34,0x12};HCI_LE_AddWhiteListCmd(ADDRMODE_PUBLIC, bdAddressPeer);GAPRole_SetParameter(GAPROLE_ADV_FILTER_POLICY, sizeof(uint8_t), &advFilterPolicy);}
babober:
回复 Kevin Qiu1:
你的那个版本的代码,我这个4.3版本SDK的ble5stack例程没有这个定义啊。但是我测试过你的这个策略,我这边这个策略没有问题,我要的是可以被扫描但是不能被连接的那个策略。我使用的是蓝牙5的例程。
Kevin Qiu1:
回复 babober:
我之前用的C:\ti\simplelink_cc2640r2_sdk_4_30_00_08\examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral测试的
刚用CC2652 simple_peripheral测了下,上面四种都可以实现
static void SimplePeripheral_processGapMessage(gapEventHdr_t *pMsg) {switch(pMsg->opcode){case GAP_DEVICE_INIT_DONE_EVENT:{bStatus_t status = FAILURE;gapDeviceInitDoneEvent_t *pPkt = (gapDeviceInitDoneEvent_t *)pMsg;if(pPkt->hdr.status == SUCCESS){//将你的代码添加在这里...static uint8 bdAddressPeer[6] = {0x93, 0x36, 0x29, 0xB0, 0x6F, 0x80};HCI_LE_ClearWhiteListCmd();HCI_LE_AddWhiteListCmd(ADDRTYPE_PUBLIC, bdAddressPeer);...