查看: 1015|回复: 0

[原创] 【经验分享】FRDM_KW41白名单

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
19947
最后登录
2024-4-19
发表于 2020-12-16 11:08:32 | 显示全部楼层 |阅读模式
                                                 Ble白名单机制
我们可以通过白名单来过滤那些我们不希望获得的广播消息。
我们使用的开发板是frdm-kw41作为扫描者,任意另一块kw板子做为广播者,我使用的是frdm-kw36。例程使用的是temperature_collector,我们首先实现一个扫描周边设备,显示mac地址的功能,然后再加入指定mac地址到白名单,来观察效果。
直接扫描周边设备,需要关闭连接功能,所以要注释掉所有的App_Connect这个函数。还有将关于一旦扫描到指定设备后,就关闭扫描的函数Gap_StopScanning注释掉。在ScanningTimeoutTimerCallback里把Gap_StopScanning也关掉
最后到CheckScanEvent这个函数,将最后的这段的if语句判断注释掉。
    if (foundMatch)
    {
        /* UI */
        shell_write("\r\nFound device: \r\n");
        shell_writeN((char*)name, nameLength-1);
        SHELL_NEWLINE();
        shell_writeHex(pData->aAddress, 6);
    }
改为
shell_write("\r\nFound device: \r\n");
shell_writeHex(pData->aAddress, 6);

然后烧写代码,我们就可以看到结果。搜索出了不同的mac地址
1.PNG
                              
下面添加白名单。首先到app_config.c文件,将扫面参数最后一个修改掉,使用白名单过滤
gapScanningParameters_t gScanParams =
{
    /* type */              gScanTypePassive_c,
    /* interval */         gGapScanIntervalDefault_d,
    /* window */           gGapScanWindowDefault_d,
    /* ownAddressType */    gBleAddrTypePublic_c,
    /* filterPolicy */      gScanWithWhiteList_c
};
找到函数App_StartScanning将最后一个参数从true改成false,然后我们到BleApp_Start函数,在if语句里加入这两句
    bleDeviceAddress_t temp ={0xa0,0xb9,0x33,0x37,0x60,0};
     Gap_AddDeviceToWhiteList(gBleAddrTypePublic_c, temp);
Temp变量放mac地址,然后加入白名单,需要注意的点是,mac地址是倒着写的。我的另一块板子mac地址是0x00603744b9a0,但是组成数组时候,要倒着顺序放入数组。
然后就可以看到这样结果。都是相同的mac地址
2.PNG

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-20 15:07 , Processed in 0.114237 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表