众所周知,安卓手机的蓝牙类型是随机可解析类型,即安卓蓝牙地址发在空中都是随机的。这个特性是为了保护安卓手机蓝牙的隐私性。当nrf52与安卓手机配对上之后,nrf52能够获得安卓手机的解析地址的key(IRK),以后就可以解析空中的随机地址了。

我们要想要在未配对时,通过白名单广播方式指定安卓手机才可连接,就要手动添加IRK。
在蓝牙协议中,IRK与安卓手机的真实地址(在手机设置中可以看到)是这么个关系:

小米8的IRK=>小米8的真实地址11:22:33:44:55:66
小米5的IRK=>小米5的真实地址aa:bb:cc:dd:ee:ff

当手机向nrf52发起连接时,IRK会对空中的安卓蓝牙地址addr_air进行计算,类似:

resoult=func(addr_air的高24位,IRK0);
if(resoult和addr_air的低24位相同)
{解析成功,允许连接。
}

我们可以看到,上述过程并没有手机的真实地址参与,白名单广播并不需要给定手机的真实地址。

以下给出nrf52在未配对的情况下使用白名单广播的程序代码:

ble_gap_id_key_t oneplus3_key;//全局变量,不需要给定手机的真实地址
ble_gap_id_key_t const * key_ptrs[BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT];//全局变量
ble_gap_addr_t const* whitelist_addrs_gap[BLE_GAP_WHITELIST_ADDR_MAX_COUNT];//全局变量// 1.添加到identities_list
memmove(oneplus3_key.id_info.irk,[从手机获取的IRK],sizeof(ble_gap_irk_t));
key_ptrs[0]=&oneplus3_key;
sd_ble_gap_device_identities_set(key_ptrs,NULL,1);// 2.添加到whitelist
whitelist_addrs_gap[0] = &oneplus3_key.id_addr_info;
err_code = sd_ble_gap_whitelist_set(whitelist_addrs_gap, 1);
APP_ERROR_CHECK(err_code);

nrf52在未配对的情况下使用白名单广播,指定安卓手机允许连接相关推荐

  1. rtsp协议_如何在RTSP协议视频智能平台EasyNVR未登录的情况下调用通道直播的接口?...

    原标题:如何在RTSP协议视频智能平台EasyNVR未登录的情况下调用通道直播的接口? TSINGSEE青犀视频云边端架构全线都提供了丰富的API接口,用户可以自由调用进行二次开发.在本文之前,我们博 ...

  2. 若依框架在未登录的情况下访问swagger页面

    本文针对若依单体项目,解决若依在不登录情况下,如何直接访问swagger页面. 框架默认在未登录的情况下,是不能直接访问swagger页面的. 最近很多人在问,为什么明明在ShiroConfig里面对 ...

  3. 循环队列的应用——舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别

    欢迎加qq群:453398542 学习讨论,会定期分享资料课程,解答问题. 循环队列的应用--舞伴配对问题:在舞会上,男.女各自排成一队.舞会开始时,依次从男队和女队的队头各出一人配成舞伴.如果两队初 ...

  4. k8s和knative的镜像在未fq的情况下拉取超时解决方案

    痛点 k8s和knative的镜像在未fq的情况下拉取超时. 解决途径 通过阿里云创建一个镜像仓库,并关联到个人的github地址:设定规则,拉取github中的dockerfile文件,构建镜像.其 ...

  5. 线程池中运行的线程,当等待队列未满的情况下,一定不大于核心线程数吗

    通过<线程池内运行的线程抛异常,线程池会怎么办>了解到当线程执行的任务出现异常时,会将当前线程移出线程池,并新增一个线程到线程池中,我们先来回顾一下线程池的运行原理: 从原理图中可以看到只 ...

  6. 手机android未连接,安卓手机无法连接傲软投屏怎么办 无法连接傲软投屏解决方法...

    傲软投屏是一款非常好用的手机投屏软件,相信很多安卓手机用户一定都有了解过这款软件,而最近有一些安卓手机用户在反映说自己的安卓手机无法用USB连接傲软投屏的情况,表示不知道应该怎么办.那么下面小编就来分 ...

  7. MIUI12设置勿扰模式下来电白名单步骤

    描述:MIUI12设置勿扰模式下来电白名单步骤 步骤:设置-搜索勿扰-允许来电提醒选择联系人

  8. 计算机在未关机的情况下重启,系统已在未先正常关机的情况下重新启动。游戏就断电重启。...

    我现在使用的为win10,正常使用计算机并没有什么异常,都OK的,但是最近(我已经正常使用该电脑1年时间了)只要玩游戏就会自动断电重启,而且不是打开游戏就重启,而是等待游戏载入进去之后就重启(话说是从 ...

  9. win10蓝牙已配对安卓手机但连接不上 完美解决方法

    win10蓝牙连接手机蓝牙,显示已配对但未连接 完美解决办法. 电脑:惠普暗影精灵台式机win10,版本号21H2 手机:安卓手机 1. win10蓝牙连接不是手机蓝牙基本上是驱动太老了,自带Wind ...

最新文章

  1. 神策数据企业服务解决方案重磅上线,构建全新 To B 企业运营体系
  2. asp.net mvc jquery ajax post,使用ASP.NET MVC在JS文件中设置jQuery的ajax url
  3. 241. Different Ways to Add Parentheses
  4. H.265在QRTC场景的落地运用
  5. python文件处理seek()方法的参数是_Python 文件(File) seek() 方法
  6. 解决Pycharm无法使用已经安装Selenium的问题
  7. 树莓派 cuda加速_用树莓派4b构建深度学习应用(四)PyTorch篇
  8. 数据库中多对多的关系设计
  9. 孙鑫视频VC编程 优酷系列
  10. 利用SAP Leonardo做图片近似查找 ——Python实现
  11. Mac 重启后,连接不上wifi
  12. 计算机开机后黑屏 只有鼠标,电脑开机黑屏只有鼠标两种解决方法
  13. PCB的ESD防护设计
  14. redis的zset为什么用跳表不用红黑树
  15. 如何用计算机制作探测器,自制自制金属探测器
  16. 4399曹政:解密中国互联网
  17. 对球面线性插值的理解
  18. 读书有见作:不求甚解
  19. Java中的“池”概念
  20. 第四次工业革命:自主经济的崛起

热门文章

  1. Java获取当天0时0分0秒时间的方法
  2. python金融量化分析工资_量化金融分析师就业前景及薪酬怎么样?
  3. 让linux识别html,8 款浏览器对 HTML5 支持评测
  4. mac下面安装破解版UltraEdit
  5. 转给你身边的工程师!从零开始搭建一个完整AGV控制系统
  6. 【Redis 如何实现库存扣减操作】
  7. PX Deq Credit: send blkd 等待事件
  8. 北京工程测量乙级资质申请流程
  9. 数据仓库工程师面经(未完)
  10. 基于Java+Springmvc+vue+element员工信息管理系统详细设计