蓝牙从机设置白名单,可以只扫描应答(白名单中列出的)设备,只允许(白名单中列出的)设备连接。
蓝牙主机设置白名单,可以只扫描、连接特定的蓝牙设备(白名单中列出的)。
一.蓝牙从机白名单设置有关的函数介绍:
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
#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 macType=0; //指定地址类型
uint8 filter_policy = GAP_FILTER_POLICY_WHITE_CON; //允许任何设备扫描,但只允许白名单中的设备连接。
LL_AddWhiteListDevice(macType,mac0); //添加白名单mac
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 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; //指定地址类型
uint8 macType=0; //指定地址类型
LL_AddWhiteListDevice(macType,mac0); //添加白名单mac
添加白名单列表与从机相同。