当前位置: 首页 > news >正文

CH59X/CH58X蓝牙主机设置白名单

可以通过白名单只扫描、连接特定的蓝牙设备(白名单中列出的)。

一、首先将白名单使能,通过宏开启

// TRUE to use white list during discovery
#define DEFAULT_DISCOVERY_WHITE_LIST        1//FALSE// TRUE to use white list when creating link
#define DEFAULT_LINK_WHITE_LIST               1//;FALSE

二、如需要添加2个即以上的白名单设备,需要将SNV数量设置为对应的数量。默认只分配了一个可绑定设备名单。

 单个BLE_SNV占用256字节。默认将DataFlash的最后区域(77FFF - 77E00)即512字节。因此默认提供两个绑定数量的地址大小,但是只提供了1个绑定num。

举例:绑定四个设备

#ifndef BLE_SNV_NUM        //config.h中添加配置
#define BLE_SNV_NUM    4  //  - 如果配置了SNVNum参数,则需要对应修改Lib_Write_Flash函数内擦除的flash大小,大小为SNVBlock*SNVNum
#endif
cfg.SNVNum = (uint32_t)BLE_SNV_NUM;    //MCU.c中添加配置
#ifndef BLE_SNV_ADDR            //config.h中修改
#define BLE_SNV_ADDR      0x77D00-FLASH_ROM_MAX_SIZE
#endif

三、在初始化的时候添加对应的白名单MAC(注意SNV修改为2)。

uint8 mac0[6] = {0x01, 0x00, 0x00, 0xE4, 0xC2, 0x84};//指定mac地址
uint8 mac1[6] = {0x02, 0x00, 0x00, 0xE4, 0xC2, 0x84};//指定mac地址
uint8 macType = 0; //指定地址类型
 
uint8 ret = LL_AddWhiteListDevice(macType, mac0); //添加白名单mac,并查看返回值判断是否设置成功(0为成功)
printf("ret0 = %d\n", ret);
ret = LL_AddWhiteListDevice(macType, mac1); //添加白名单mac
printf("ret1 = %d\n", ret);
uint8 filter_policy = GAP_FILTER_POLICY_WHITE_CON;//允许任何设备扫描,但只允许白名单中的设备连接。
GAPRole_SetParameter( GAPROLE_ADV_FILTER_POLICY, sizeof( uint8 ), &filter_policy );//设置白名单

四、可以在程序运行过程中进行添加白名单,需要注意主机需要不在扫描的状态。即先关闭主机扫描,设置白名单,重新开启主机扫描。

以Observer观察者为例

{GAPRole_ObserverCancelDiscovery();                   //关闭扫描uint8 mac0[6] = {0x01, 0x00, 0x00, 0xE4, 0xC2, 0x84};//指定mac地址uint8 mac1[6] = {0x02, 0x00, 0x00, 0xE4, 0xC2, 0x84};//指定mac地址uint8 macType = 0; //指定地址类型
 uint8 ret = LL_AddWhiteListDevice(macType, mac0); //添加白名单macprintf("ret0 = %d\n", ret);ret = LL_AddWhiteListDevice(macType, mac1); //添加白名单macprintf("ret1 = %d\n", ret);uint8 filter_policy = GAP_FILTER_POLICY_WHITE_CON;//允许任何设备扫描,但只允许白名单中的设备连接。GAPRole_SetParameter( GAPROLE_ADV_FILTER_POLICY, sizeof( uint8 ), &filter_policy );//设置白名单GAPRole_ObserverStartDiscovery(DEVDISC_MODE_GENERAL ,1 , 1);    //重新开启扫描
}

 

http://www.jsqmd.com/news/29385/

相关文章:

  • 题解:CF712D Memory and Scores
  • 思维的断章,觉知的永恒:一个基于“内观照叙事模型”的认知革命与跨学科范式重构
  • 拾壹月贰
  • struct page
  • NFS 服务端/客户端配置
  • CSP-S2025 题目解析
  • [Record] CSP-S 2025 邮寄
  • 2025 CSP-S 游记
  • [题解]CSP-S 2025 T1~T3 题解
  • 关于git关联github问题
  • AT ABC285E Work or Rest 题解
  • 代码复杂度的代价远比你想象得大
  • CSP2025 - S 年度总结大会报告
  • minio 服务端加密方式
  • 25CSP退役游记(11.1更新)
  • 第二章实践作业
  • (补11月)代码大全阅读笔记2
  • java 基础语法一
  • VisualStudio 2022如何打开.slnx文件格式的解决方案
  • (补11月)代码大全阅读笔记3
  • CSP2025 - S 游记
  • CSP-S游记
  • 小组作业1
  • C语言字符串及其函数
  • CPULOAD建模设计
  • C 文件操作全解速览
  • Java记录类:简化数据载体的新选择
  • 第二次算法作业
  • NOIP 2025 游记 退役记
  • 一个万古常青的、小而美的输入法