蓝牙从机设置白名单,可以只扫描应答(白名单中列出的)设备,只允许(白名单中列出的)设备连接。
蓝牙主机设置白名单,可以只扫描、连接特定的蓝牙设备(白名单中列出的)。
一.蓝牙从机白名单设置有关的函数介绍:
1.extern bStatus_t LL_ClearWhiteList( void );                                                       //清空白名单
2.extern bStatus_t LL_AddWhiteListDevice( u8 addrType, u8 *devAddr );          //添加白名单
3.extern bStatus_t LL_RemoveWhiteListDevice( u8 addrType, u8 *devAddr);    //将指定设备移除白名单
第一个函数就不过多解释了,想要清空白名单,直接调用清空即可。
第二个函数需要注意的是参数addrType,有以下四种,如果使用的主机使用的是WCH主机例程,那么addrType默认是0,devAddr注意大小端,不要写反。
#define ADDRTYPE_PUBLIC                                   0x00 //!< Use the BD_ADDR
#define ADDRTYPE_STATIC                                    0x01 //!< Static address
#define ADDRTYPE_PRIVATE_NONRESOLVE       0x02 //!< Generate Non-Resolvable Private Address
#define ADDRTYPE_PRIVATE_RESOLVE               0x03 //!< Generate Resolvable Private Address
第三个函数和第二个注意点相同。
白名单代码可以在Peripheral_Init函数中添加:
uint8 mac0[6]={0x02,0x02, 0x03, 0xE4, 0xC2, 0x84};                  //指定mac地址
uint8 macType=0;                                                                          //指定地址类型
uint8 filter_policy = GAP_FILTER_POLICY_WHITE_CON;          //允许任何设备扫描,但只允许白名单中的设备连接。
LL_AddWhiteListDevice(macType,mac0);                                     //添加白名单mac
GAPRole_SetParameter( GAPROLE_ADV_FILTER_POLICY, sizeof( uint8 ), &filter_policy );//设置白名单
#define GAP_FILTER_POLICY_ALL 0x00                         //!< Allow Scan Request from Any, Allow Connect Request from Any (default).   允许扫描请求从任何设备,允许连接请求从任何设备
#define GAP_FILTER_POLICY_WHITE_SCAN 0x01       //!< Allow Scan Request from White List Only, Allow Connect from Any               只允许从白名单扫描请求,允许连接从任何设备
#define GAP_FILTER_POLICY_WHITE_CON 0x02         //!< Allow Scan Request from Any, Connect from White List Only                        允许扫描请求从任何设备,只连接从白名单
#define GAP_FILTER_POLICY_WHITE 0x03                   //!< Allow Scan Request and Connect from White List Only                                 只允许从白名单扫描请求和连接
这边的地址和地址类型是否正确可以在不加白名单时,让主从正常连接,连接后通过从机获取主机的这些信息:

 

二.蓝牙主机机白名单设置有关的函数介绍:
#define DEFAULT_DISCOVERY_WHITE_LIST        FALSE
#define DEFAULT_LINK_WHITE_LIST                     FALSE
修改这两个宏是否开启扫描和连接的白名单,
uint8 mac0[6]={0x02,0x02, 0x03, 0xE4, 0xC2, 0x84};                  //指定mac地址
uint8 macType=0;                                                                         //指定地址类型
LL_AddWhiteListDevice(macType,mac0);                                   //添加白名单mac
添加白名单列表与从机相同。
posted on 2023-01-12 13:34  WCH蓝牙应用分享  阅读(1114)  评论(0编辑  收藏  举报