蓝牙信标Eddystone(二)——协议规范

蓝牙信标Eddystone(二)——协议规范针对 Eddystone 中不同类型帧的协议规范进行解析 蓝牙标准帧

大家好,欢迎来到IT知识分享网。

Eddystone协议规范中记录了Eddystone帧格式的常见帧PDU类型和个别服务数据字节格式。

蓝牙信标——Eddystone协议概述

1. 公共元素

每个Eddystone帧类型必须包含以下PDU数据类型:

  • 由蓝牙核心规范(Bluetooth Core Specification Supplement, CSS, v5)定义的16bit Service UUIDs。Eddystone服务UUID为0xFEAA,增加此UUID允许在iOS设备上进行后台扫描;
  • 服务数据数据类型,16bit UUID服务数据类型也必须是Eddystone服务UUID 0xFEAA。

Eddystone帧的具体类型编码在与服务 UUID 相关联的服务数据的第一个八位字节的高四位中。允许的取值包括:

帧类型 高4bit 字节值
UID 0000 0x00
URL 0001 0x10
TLM 0010 0x20
EID 0011 0x30
RESERVED 0100 0x40

低4bit预留未来使用,当前必须为0000.

需要注意,虽然蓝牙核心规范中定义为小端字节序,但是在Eddystone的服务数据中是按照大端字节序。

2. Eddystone-UID

Eddystone-UID 帧广播一个不透明、唯一的 16 字节 Beacon ID,该Beacon ID由一个 10 字节的命名空间和一个 6 字节的实例组成。Beacon ID 可能在将设备映射到外部存储中的记录时很有用。ID 的命名空间部分可以用于分组一组特定的信标,而实例 ID 则标识组内的个别设备。将 ID 划分为命名空间和实例组件还可以用于优化BLE扫描策略,例如仅基于命名空间进行过滤。

字节序 描述
0 帧类型 Value = 0x00
1 距离数据 在0m处校正后的发射功率
2 NID[0] 10-byte 命名空间
3 NID[1]
4 NID[2]
5 NID[3]
6 NID[4]
7 NID[5]
8 NID[6]
9 NID[7]
10 NID[8]
11 NID[9]
12 BID[0] 6-byte 实例
13 BID[1]
14 BID[2]
15 BID[3]
16 BID[4]
17 BID[5]
18 RFU Reserved for future use, must be0x00
19 RFU Reserved for future use, must be0x00

3. Eddystone-URL

Eddystone-URL框架使用压缩编码格式广播URL,以便在有限长度的广播数据包中容纳更多信息。

解码之后,任何具有互联网访问权限的客户端都可以使用该URL。例如,如果一个Eddystone-URL信标广播URL为:https://goo.gl/Aq18zF,那么接收到该数据包的任何客户端都可以选择访问该URL。

Eddystone-URL框架是物理网络的核心,旨在实现对周围环境相关网页内容的无摩擦发现。Eddystone-URL整合了从其演化而来的UriBeacon格式的所有经验教训。

字节序 描述
0 帧类型 Value = 0x10
1 发射功率 在0m处校正后的发射功率
2 URL Scheme 编码后前缀
3+ Encoded URL 为加密后的URL,长度1-17不等

3.1 关于URL编码规则

十进制 Hex 扩展
0 0x00 http://www.
1 0x01 https://www.
2 0x02 http://
3 0x03 https://

3.2 Eddystone-URL HTTP URL编码

HTTP URL方案由RFC 1738定义,例如:https://goo.gl/S6zT6P,用于指定使用HTTP可访问的互联网资源。

编码由一系列的字符组成。URL编码中排除的字符代码用作文本扩展代码。当一个用户代理(user agent)接收到Eddystone-URL时,URL标识符中的字节码将根据下表被扩展文字替代。(结尾一个字节表示相关的域名尾缀。)

十进制 Hex 扩展
0 0x00 .com/
1 0x01 .org/
2 0x02 .edu/
3 0x03 .net/
4 0x04 .info/
5 0x05 .biz/
6 0x06 .gov/
7 0x07 .com
8 0x08 .org
9 0x09 .edu
10 0x0a .net
11 0x0b .info
12 0x0c .biz
13 0x0d .gov
14…32 0x0e…0x20 Reserved for Future Use
127…255 0x7F…0xFF Reserved for Future Use

注意:
1. URL仅使用US-ASCII编码字符集的可打印字符编码;即不使用0x00-0x20,与0x7F-0xFF.
2. 0x07-0x0d中顶级域名与0x0-0x6相同,但是没有结尾的斜杆”/”.

4. Eddystone-TLM

Eddystone-TLM框架广播有关信标本身的遥测信息,例如电池电压、设备温度和广播数据包的计数。这些信息对于监控信标群的健康状况和运行情况非常有用。由于Eddystone-TLM帧不包含信标ID,因此必须与提供ID的识别帧(Eddystone-UID或Eddystone-URL类型)配对使用。

TLM帧可以明文广播,就像UID和URL帧一样,或者在信标配置为Eddystone-EID时,使用在EID配置期间设置的身份密钥进行加密。当以明文广播时,没有消息完整性验证,您应该设计您的应用程序以适应此类广播的开放性质。

  • 未加密TLM规范
字节序 说明
0 Frame Type Value = 0x20
1 Version TLM version, value = 0x00
2 VBATT[0] 电池电压, 1 mV/bit
3 VBATT[1]
4 TEMP[0] Beacon 温度
5 TEMP[1]
6 ADV_CNT[0] Advertising PDU 计数
7 ADV_CNT[1]
8 ADV_CNT[2]
9 ADV_CNT[3]
10 SEC_CNT[0] 上电或重启后的时间,单位s
11 SEC_CNT[1]
12 SEC_CNT[2]
13 SEC_CNT[3]
  • 加密TLM规范
字节序 说明
0 Frame Type Value = 0x20
1 Version TLM version, value = 0x01
2 ETLM[0] 12字节加密TLM数据
3 ETLM[1]
4 ETLM[2]
5 ETLM[3]
6 ETLM[4]
7 ETLM[5]
8 ETLM[6]
9 ETLM[7]
10 ETLM[8]
11 ETLM[9]
12 ETLM[10]
13 ETLM[11]
14 SALT[0] 16-bit salt
15 SALT[1]
16 MIC[0] 16bit 消息完整性检查
17 MIC[1]

5. Eddystone-EID

Eddystone-EID框架广播一个加密的临时标识符,该标识符定期更改,更改速率在与Web服务的初始注册期间确定。广播的临时ID可以由注册的服务远程解析,但对其他观察者来说,它似乎是随机变化的。该框架类型旨在用于具有安全和隐私增强功能的设备。

5.1 帧格式规范

字节顺序 描述
0 帧类型 Frame Type =0x30
1 距离数据 在0m处校正后的Tx功率
2 EID[0] 8字节的临时标识符
3 EDI[1]
4 EDI[2]
5 EDI[3]
6 EDI[4]
7 EDI[5]
8 EDI[6]
9 EDI[7]

该帧的长度是固定的,且在EID字节之后进行截断。

由于Eddystone-EID帧的目的在于提供更好的隐私保护,因此在实现时不建议将EID帧的广播与属于同一设备的任何其他帧交错使用。信标应当在旋转周期外旋转BD_ADDR,以防止跟踪。

参考链接:Eddystone协议规范


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/149593.html

(0)
上一篇 2025-03-23 14:05
下一篇 2025-03-23 14:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信