业主广播
对于拥有者配对,只有传统(4.x)的LE 1M PHY应使用。业主配对广告(ADV_IND)应遵循[30]第6卷B部分的2.3.1.1节。
事件类型:可连接和可扫描
ADV_IND由广告地址和广告数据组成,分别如表19-1和表19-2所示:
Table 19-1: AdvA field of ADV_IND
字段 | 长度(字节) |
广播地址(AdvA) | 6 |
Table 19-2: AdvData field of ADV_IND
字段 | 长度(字节) | 描述 | 值(hex) |
长度 | 1 | AD类型和AD数据的长度 | 0x03 |
AD类型 | 1 | 16bit服务UUID | 0x03 |
AD数据 | 2 | <<CCC_DK_UUID>> | 0xFFF5 |
长度 | 1 | AD类型和AD数据的长度 | 0x14 |
AD类型 | 1 | 128bit服务UUID | 0x21 |
AD数据 | 16 | CCC服务数据(固定)UUID | 0x5810bbc0-b499-11e9-a2a3-2a2ae2dbcce4 |
AD数据 | 1 | 意图配置 | 0x01(默认) |
AD数据 | 2 | 汽车品牌标识符 | 定义如[35]表2-1所示 |
[35]:CCC Vehicle OEM Document, D1.1
CCC_DK_UUID的使用:指定的值由蓝牙SIG公司提供,只能由其成员在遵守蓝牙SIG公司发布的所有使用条款和条件的情况下使用。
意图配置用于允许设备主动发起配对,这取决于用户是否在车辆中启动了意图配对。字节的定义如表19-3所示.
表19-3 意图配置字节的定义。
字段 | 描述 | bit索引 |
意图 | 0:来自车辆的意图-用户设置主动发起配对 1:车辆无意图 | 0 |
保留 | 0:设置为0,接收方忽略 | 1~7 |
配对请求定义:
对于配对请求,下列字段是必须的(参见卷3,H部分,[30]的3.5.1节):
表19-4:配对请求中必选字段。
字段 | 值 (hex) | 描述 |
IO能力 | 0x00 – 0xFF | 参见[30]第3.5节中的第3卷,H部分,表3.4 |
OOB数据标志 | 1 | 来自远程设备的OOB身份验证数据 |
身份验证请求 | 1 | 绑定 |
配对响应定义:
以下字段是配对响应的必填项(参见卷3,H部分,[30]的3.5.2节):
表19-5:配对响应中必选字段
字段 | 值 (hex) | 描述 |
IO能力 | 0x00 – 0xFF | 参见[30]第3.5节中的第3卷,H部分,表3.4 |
OOB数据标志 | 1 | 来自远程设备的OOB身份验证数据 |
身份验证请求 | 1 | 绑定 |
最大加密密钥长度 | 0x10 | 默认值 |
发起者密钥分发 | 0xF0 | 默认值 |
响应方密钥分发 | 0xF0 | 默认值 |
[30] The Bluetooth Core specification, version 5.0, December 2016
DK Service:
汽车应支持DK服务。这将是一个主要的服务,并且只有一个服务实例。
字段 | 长度(字节) |
DK Service UUID | <<CCC_DK_UUID>> |
汽车PSM特点
该特性应返回用于L2CAP信道的简化协议/服务多路复用器(SPSM)。
在连接时,该装置应读取车辆的SPSM。汽车制造商应选择一个SPSM。对于基于LE credit的连接,使用动态分配的SPSM值(即在0x0080-0x00FF中非sig分配的SPSM值)。
在被动输入期间,设备应在重新连接时通过UUID(用UUID_SPSM)读取特征。SPSM值应该使用大端字节序。
表19-7 SPSM特征值声明
属性类型 | 属性值 | 属性许可(权限) |
0x2803 –UUID for «特征» | 特征属性= 0x02 | 只读, 无验证,无验证 |
0xMMMM =特征值句柄 | ||
D3B5A130-9E23-4B3A-8BE4-6B1EE5F980A3 – UUID_SPSM |
表19-8:SPSM特征值声明。
属性类型 | 属性值 | 属性许可(权限) |
D3B5A130-9E23-4B3A-8BE4-6B1EE5F980A3 –UUID_SPSM | uint16 – SPSM value | 只读, 无验证,无验证 |
车载蓝牙Tx功率级特征值:
汽车蓝牙Tx功率级别特性是车辆提供的可选属性。汽车蓝牙Tx功率级特性应返回dBm中蓝牙LE模块的当前辐射发射功率[参见GATT规范,补充版本4]。
连接后,设备应从车辆读取车辆蓝牙Tx功率级别。
在识别器期间,设备应在重新连接时通过UUID读取特性(UUID表示“Tx功率级别”)。在Bluetooth LE连接的整个时间内,车辆上的Bluetooth LE模块应保持相同的辐射发射功率。
车载天线标识符特征值:
车辆天线标识符表示位于车辆中建立到设备连接的每个物理蓝牙LE天线的唯一标识符。天线标识符定义为一个唯一的值,对应于车内唯一的物理蓝牙天线。
即使有不同的设备连接到该天线,该标识符仍应是唯一的天线标识符。
该装置在连接时应读取车辆上的“车辆天线标识符”。
如果一个蓝牙模块有多个天线,则可以认为它是一个唯一的单个天线。此外,如果多个蓝牙模块共享多个天线,则也可以认为是单个天线。
如果车辆支持多个并发的蓝牙LE连接,那么每个连接到车辆的客户端都应该是唯一的GATT特征实例。
在被动进入期间,设备应该在重新连接时通过UUID (UUID_天线的标识符)读取特征。
表19-10车载天线特性声明
属性类型 | 属性值 | 属性许可(权限) |
0x2803 - UUID为«特征值» | 特征属性= 0x02 | 只读, 无验证,无验证 |
0xMMMM =特征值句柄 | ||
c6d7d4a1-e2b0-4e95-b576-df983d1a5d9f –UUID_天线的标识符 |
表19-11车载天线特性值声明
属性类型 | 属性值 | 属性许可(权限) |
c6d7d4a1-e2b0-4e95-b576-df983d1a5d9f –UUID_天线的标识符 | utin16 -车辆天线标识符 | 只读, 无验证,无验证 |
蓝牙加密
蓝牙加密要求如下:
•设备(中央)应请求加密,并且在启动L2CAP连接建立之前,加密应成功完成,所有者配对和第一朋友方法除外。
•如果在第一次进场和所有者配对期间没有收到首次RQ方法(First_Approach_RQ)(见第19.3.4.1节)或请求主人配对(Request_owner_pairing)命令完成子事件通知(见表19-65),则车辆应在未加密L2CAP连接建立5秒后触发断开连接。
•设备和车辆不应该在BLE连接激活时终止用于DK服务的L2CAP连接。当蓝牙LE连接激活时,用于DK服务的L2CAP连接被终止,一旦条件允许,设备将尝试重新建立DK服务的L2CAP连接。
被动入口:蓝牙LE设置
一旦蓝牙LE配对和加密的蓝牙LE设置完成,后续连接到车辆应使用被动入口流。
图19-4被动入口流程图
对于被动入口,能力交换取决于车辆或设备是否更新了DK协议版本、UWB配置标识符、脉冲形状组合,或自上次能力交换以来这些参数的组合,如19.5.1节所述。
被动入口:广播:
车辆应在LE 1M PHY上进行广播。
当在LE 1M PHY进行广播时,应采用可连接和可扫描(非定向)事件使用,参见卷6,B部分,[30]中的4.4.2.7节。广告间隔为42.5ms。
车辆可以同时在具有S=2编码的LE编码PHY和LE 1M PHY上进行广播。
如果同时使用两种PHY,则每个PHY的广播应连续广播。
当在LE编码PHY上进行广播时,可连接(非定向)事件应使用,参见[30]中的卷6 B部分4.4.2.3节。广告间隔为84ms。
对于两个广播,ADV_IND中应包含AdvA(广播地址),但不包含广播数据(Adv Data)。
配对设备应能够连接到所有者配对广播和被动式入口广播以执行被动式入口流。
对于连接到被动入口以及车主配对广播的已知设备,车辆应能够执行被动入口流。
被动入口:L2CAP连接
LE链路层连接建立后,设备主机需要使用19.2.1.1节中指定的协议建立L2CAP连接。
连接性能的建议
本节介绍连接性能参数及其取值。确切的值在认证/测试计划规范中得到细化和最终确定,这形成了认证需求。本节中的所有TBD值将在互操作性事件期间最终确定/测量。
• 设备要求:
在用户接近车辆的过程中,UWB预轮询前的最后一个蓝牙消息应以3 (TBD_1)米的距离为95 (TBD_2)个百分位发送。
这应基于下列假设:
- 进场行走速度最大2.1m/s, 6 (TBD_3)米开始试验。
- 认证/测试计划规范中定义的条件。
- 测试开始时,设备开始进行蓝牙LE扫描。
• 发射机要求:
- 蓝牙LE广告包(来自车辆),用参考测量设置测量,10米(TBD_5)应等于或大于-80 dBm(TBD_4),具有自由空间LOS路径丢失和常见测试用例条件(参见下面的注释)。
- 移动设备发送的CONNECT_IND包在10m处(TBD_5),在有空闲空间LOS路径损耗和常见测试用例条件(见下文注)的情况下,辐射功率输出功率级(包括天线增益)应大于等于-80 dBm (TBD_6)。
注:参考测量设置和通用测试用例条件在认证/测试计划规范中定义。
• 接收机要求:
实际的灵敏度水平,在第6卷第A部分第4节5.2版中定义:
- 对于未编码的PHY,应该等于或优于-85dBm,对于LE编码的PHY,设备的S=2编码应该等于或优于-88dBm(参见下面的注释)。
- 对于未编码的PHY,应等于或优于-85dBm;对于LE编码的PHY, S=2编码的车辆,应等于或优于-88dBm(见下面的注释)。
注:参考测量设置和通用测试用例条件在认证/测试计划规范中定义。
• 一般要求:
测试应该使用最优测距设置流程和先前推导的URSK进行。在蓝牙链路上的任何其他损失,如车身或内部应保持在最小或最好避免。
图19-5:连接性能与设备、发射机和接收机要求的关系。
车辆的需求
最大的广告时间间隔:
每次广告活动的最大数量:
锁定车辆应在504ms(6个周期84ms)内传送,最多不超过
•(a) 24 LE 1M + 12 LELR
•(b) 36 LE 1M + 6 LELR
•© 48 LE 1M (0LELR)
广告事件(见19.2.3.1节)。
未上锁的车辆应在504ms(6个周期为84ms)内传送最多不超过
•(a) 48le 1M + 24LELR
•(b) 72 LE 1M + 12LELR
•© 96 LE 1M (0 LELR)
广告事件(见19.2.3.1节)。
DK消息格式
使用DK Service SPSM在L2CAP上交换DK消息。
设备应从车辆的GATT服务器检索DK Service SPSM,并与车辆的SPSM建立基于LE L2CAP信用的连接,以供测距协议使用(见图19-2)。
DK消息格式如表19-12所示。
表19-12:DK消息格式。
消息字段 | 位置 |
消息头 | 字节0 |
有效载荷头 | 字节1 |
长度 | 字节[3:2] |
数据 | N |
消息头字段长度为1字节,表示正在发送的消息的消息类型。
例如,如果发送的消息是包装在DK_APDU_RQ中的Select APDU(详见19.3.2.1节),
消息头字段表明此消息是用于标准事务的SE消息还是用于所有者配对的框架消息,关联的消息处理因消息类型的不同而不同。
另一方面,有效载荷头字段长度为1字节,用于传递DK_APDU_RQ等消息。
消息头定义如表19-13所示,消息类型定义如表19-14所示。
消息头的[7:6]位保留将来使用,应设置为0。
表19-13 消息头定义
消息头 | bit域 |
消息类型 | Bit [5:0] |
RFU(保留) | Bit [7:6] |
表19-14 消息头类型定义
消息类型定义位[5:0] | 值(十进制) |
框架的信息 | 0 |
SE消息 | 1 |
UWB测距服务消息 | 2 |
DK事件通知 | 3 |
汽车OEM应用信息 | 4 |
辅助服务消息 | 5 |
头字节配对消息 | 6 |
保留 | 7-63 |
有效载荷头字段定义在表19-15中:
表19-15有效载荷头定义。
消息头 | bit域 |
消息ID | Bit [7:0] |
长度字段是两个字节,表示以大端序格式编码的消息中数据字段的大小。
除蓝牙规范中已经定义的数据类型字段或本规范中明确定义的数据类型字段外,所有DK消息字段均采用大端序格式编码。
蓝牙规范中定义的数据类型顺序保持不变。
Data字段的长度是可变的,其数据结构定义在第19.3.1节到19.3.8节针对每个消息ID定义。
不同消息类型下的DK消息分类如表19-16所示。
表19-16 消息类型及其关联的消息。
消息类型 | 消息 | APDU(应用协议数据单元) |
框架 | DK_APDU_RQ DK_APDU_RS (定义见节 19.3.2) | SELECT SPAKE2+ REQUEST SPAKE2+ VERIFIER WRITE DATA, GET DATA GET RESPONSE OP CONTROL FLOW 看表 5-1 |
SE | DK_APDU_RQ DK_APDU_RS (定义见节 19.3.2) | SELECT AUTH0 AUTH1 EXCHANGE CONTROL FLOW CREATE RANGING KEY 看表 15-1 |
UWB测距服务 | Ranging_Capability_RQ Ranging_Capability_RS Ranging_Session_RQ Ranging_Session_RS Ranging_Session_Setup_RQ Ranging_Session_Setup_RS Ranging_Suspend_RQ Ranging_Suspend_RS Ranging_Recovery_RQ Ranging_Recovery_RS Configurable_Ranging_Recovery_RQ Configurable_Ranging_Recovery_RS (定义见节 19.3.1) | |
DK事件通知 | 测量事件(Ranging_Event) (定义见节 19.3.8) | N/A |
汽车OEM应用信息 | 通过(Pass_Through) (定义见节 19.3.6) | N/A |
辅助服务消息 | Time_Sync (定义见节 19.3.3) First_Approach_RQ First_Approach_RS (定义见节 19.3.4) (RKE_Auth_RQ RKE_Auth_RS (定义见节 19.3.5) | N/A |
头字节配对消息 | Head_Unit_Pairing_Preparation Head_Unit_Pairing_RQ Head_Unit_Pairing_RS (定义见节 19.3.7) | N/A |
表5-1:所有者配对命令集
命令 | 指令字节(十六进制) | 由xx执行 |
SELECT | 0xA4 | 数字钥匙框架 |
SPAKE2+ REQUEST | 0x30 | 数字钥匙框架 |
SPAKE2+ VERIFY | 0x32 | 数字钥匙框架 |
WRITE DATA | 0xD4 | 数字钥匙框架 |
GET DATA | 0xCA | 数字钥匙框架 |
GET RESPONSE | 0xC0 | 数字钥匙框架 |
OP CONTROL FLOW(OP控制流) | 0x3C | 数字钥匙框架 |
看表15-1 | 看段15.3.2 | 数字钥匙应用 |
SPAKE2+是一种增强型的密钥共享(PAKE,Password Authenticated Key Exchange )c参考另一篇SPAKE2+算法文件,c语言版本
表15-1:接口命令的可用性
命令 | 有线接口 | 非接触式接口 | 注释 | 文章节点段 |
SELECT | Yes | Yes | 15.3.2.1 | |
CREATE CA(创建CA) | Yes | No | 15.3.2.2 | |
DELETE CA(删除CA) | Yes | No | 15.3.2.3 | |
CREATE ENDPOINT(创建端点) | Yes | No | 15.3.2.4 | |
TERMINATE ENDPOINT(终止端点) | Yes | No | 15.3.2.5 | |
DELETE ENDPOINT(删除端点) | Yes | No | 15.3.2.6 | |
GET PRIVATE DATA(得到私有数据) | Yes | No | 15.3.2.18 | |
SET PRIVATE DATA(设置私有数据) | Yes | No | 15.3.2.19 | |
AUTHORIZE ENDPOINT(授权端点) | Conditional | No | 可用性配置章节15.3.2.4 | 15.3.2.7 |
SET CONFIDENTIAL DATA(设置机密数据) | Yes | No | 15.3.2.20 | |
CREATE ENCRYPTION KEY(创建加密密钥) | Yes | No | 15.3.2.17 | |
VIEW(视图) | Yes | No | 15.3.2.8 | |
SETUP ENDPOINT(设置端点) | Yes | No | 15.3.2.21 | |
SETUP INSTANCE(安装实例) | Yes | No | 15.3.2.22 | |
AUTH0(认证0) | 有前置条件 | 强制性 | 可用性在15.3.2.4中配置 | 15.3.2.9 |
AUTH1(认证1) | 有前置条件 | 强制性 | 可用性在15.3.2.4中配置 | 15.3.2.10 |
PRESENCE0(状态0) | No | Yes | 15.3.2.11 | |
PRESENCE1(状态1) | No | Yes | 15.3.2.12 | |
READ BUFFER(接收缓冲区) | Yes | No | 15.3.2.13 | |
WRITE BUFFER(写入缓冲区) | Yes | No | 15.3.2.14 | |
EXCHANGE(交换) | Yes | No | 可用性在15.3.2.4中配置 | 15.3.2.15 |
CONTROL FLOW(控制流) | Yes | Yes | 可用性在15.3.2.4中配置 | 15.3.2.16 |
SIGN(指示) | 有前置条件 | No | 可用性如表15-3.2.4所示 | 15.3.2.23 |
MANAGE UA(管理服务器) | 有前置条件 | No | 可用性如表15-5所示 | 15.3.2.24 |
CREATE RANGING KEY(创建距离钥匙) | 有前置条件 | No | 可用性取决于实现 | 15.3.2.26 |
DELETE RANGING KEYS(删除距离钥匙) | 有前置条件 | No | 可用性取决于实现 | 15.3.2.27 |
GET NOTIFICATION(得到通知) | 可选 | No | 可用性取决于实现 | 15.3.2.28 |
下面是一个使用DK消息在蓝牙LE上传输APDU消息之前如何编码APDU消息的例子。同样也可以用于解码传入的消息:
实际消息: 使用AID作为选择蓝牙LE上的APDU消息 0xA000000809434343444B417631.
消息头中的消息类型: 0x01 (SE)
功能码: 0x0B (DK_APDU_RQ, 11)
带消息类型的完整数据: 0x00 A404000D A000000809434343444B417631 00
(SELECT APDU command)
DK Bluetooth LE Payload: 0x010B001300A404000DA000000809434343444B41763100
解析:
01 0B 0013 00 A40400 0D A000000809434343444B417631 00
消息头 功能码 帧长度 类别字节值 命令 数据长度 数据 尾
注:
AID:应用ID
帧长度 = 类别字节值 + 命令 + 数据 + 尾
命令中:A40400代表SELECT
数据尾0x00属于结束标识符