Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1365817
  • 博文数量: 860
  • 博客积分: 425
  • 博客等级: 下士
  • 技术积分: 1464
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-20 19:57
个人简介

对技术执着

文章分类

全部博文(860)

文章存档

2019年(16)

2018年(12)

2015年(732)

2013年(85)

2012年(15)

我的朋友

分类: 嵌入式

2019-01-10 10:28:12

原文地址:BLE设备地址 作者:sfc0907

    BLE的设备地址可分为两种:public address和random address.它们都是48bit,一个BLE设备应至少拥有其中的一种或者是同时拥有两种类型的设备地址。如果一个设备使用可解析的私有地址,那么它应该拥有一个公有地址或者是静态随机地址。
1.Public Device Address
    和我们正常使用的MAC是一样的,需要向IEEE申请购买,具有唯一性,格式如下(摘自core_v4.2.pdf p2576):

2.Random Device Address
    随机地址包含两种类型:Static Device Address和Private address。
2.1Static Device Address
    静态设备地址在每一次设备上电时生成,在一个上电周期内不变,其格式如下(摘自core_v4.2.pdf p2577):

    最高的两位是1,其余46bit既不能是全1也不能全0.如果静态地址改变了,那么存储在对端设备的旧的地址就失效了,并且也无法重连了。
2.2Private address
    Private address可分为两种:Non-resolvable private address和Resolvable private address
2.2.1Resolvable private address
为了生成一个Resolvable address,device必须具有Identity Resolving Key (IRK)或者是对端设备的Identity Resolving Key (IRK).私有可解析地址的产生必须有IRK和一个24bit的随机数,这个随机数被称为prand,并且应当满足:
    1.最高的两个bit应该是1和0
    2.其余22bit不能为全0或者全1
Resolvable private address的格式如下(摘自core_v4.2.pdf p2578

Resolvable private address的低24bit由prand和IRK经过hash运算而来:hash = ah(IRK, prand),设备地址格式为:randomAddress = hash || prand。当对端设备扫描到此地址类型时,对端设备会用扫描到的prand部分和local IRK去做同样的hash运算,再将hash的结果和RPA中的低24byte比较,若相等,则认为这个地址已经被解析。如果一个设备有多个local IRK,那么它会逐一的进行运算和比对,直到比对成功或者是所有的local IRK都已经比对完。

2.2.2Non-resolvable private address
其格式如下(摘自core_v4.2.pdf p2578):

不可解析地址的最高连个byte是00,其余位既不能是全1,也不能是全0,而且不能和public address相等。
ps:    
    BLE的数据传输为小端模式,低字节在低位,高字节在高位。对于多字节域,除CRC和数据完整性校验之外,应该首先使用最小有效字节的传输模式。
有关BLE地址更详细的解释可参考此篇博文:
阅读(1530) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~