目录
Max_Consecutive_Procedures_Supported
RTT_Capability,RTT_AA_Only_N,RTT_Sounding_N,RTT_Random_Payload_N
NADM_Sounding_Capability, NADM_Random_Capability
Main_Mode_Type & Sub_Mode_Type
Min_Main_Mode_Steps & Max_Main_Mode_Steps
当BLE设备间完成连接后(Connection State),可以通过Channel Sounding (CS)获取双方的精确距离。换句话说,BLE的CS技术仅支持在连接态完成测距功能,而无法在非连接态实现上述功能。Channel Sounding设置初始化过程的示例Message Sequence Chartsr如下图所示。BLE设备实现CS功能,需要完成设置初始化以完成一些必要的配置以及获取一些必要的信息。
第一步:读取本地设备CS支持功能:
首先,本地设备需要读取CS支持功能。该过程通过LE CS Read Local Supported Capabilities命令实现(详细参考:Vol4, Part E: 7.8.130)。
该命令发送后,本地设备直接反馈结果,该结果中具体内容包括:
Num_Config_Supported
该参数反馈本地设备支持的配置数量,协议规范该参数取值范围为1~4,也就是进入连接态后,单个Controller设备最多支持4个设备CS配置。也就是单个Controller在同一个连接态下同时最多仅支持4个设备进行CS。
Max_Consecutive_Procedures_Supported
该参数反馈本地设备支持进行连续CS过程的最大次数,该参数的取值范围为0x0000~0xFFFF.
当该参数配置为0时,表示当前Controller同时支持固定次数的连续CS过程,同时还支持不定次数的CS过程直至用户终止。
当该参数配置为非零时,表示当前Controller支持连续CS过程的最大次数。
Num_Antennas_Supported
该参数表示在CS时,本地设备CS tone交互时最大可用的天线数量。本质上是BLE CS功能是同时能够实现测距和测向功能。
目前该参数的取值范围是1~4,也就是最大天线数量仅支持4个。这和单独的BLE AoA/AoD仍然还有区别。
Max_Antenna_Paths_Supported
该参数表示在CS时,本地设备最多支持天线路径的数量。
目前该参数的取值范围是1~4,也就是最大天线路径数量支持4个
关于天线切换和路径功能的详细解释,请额外参考[Vol 6] Part A: 5.3 Antenna Switching for Channel Sounding和[Vol 6] Part H, 4.7 Phase measurements with antenna switching。
Roles_Supported
该参数表示本地设备支持的CS角色。反馈是bit0时,表示当前设备支持Initiator,反馈是bit1时,表示当前设备支持Reflector,如果都支持,那么两个bit都反馈1。
Initiator和Reflector的定义参考:[Vol 6] Part H 4.3 Channel Sounding steps
Modes_Supported
该参数表示本地设备可选CS模式的支持情况。当前仅支持反馈为bit0,也就是支持Mode-3.
标准中定义的Mode-3为同时支持测量设备间的相位旋转(phase rotations)和来回飞行时间(round-trip time),详细解释参考[Vol 6] Part H, 4.3.4 Channel Sounding step mode-3。
RTT_Capability,RTT_AA_Only_N,RTT_Sounding_N,RTT_Random_Payload_N
BLE设备在CS时可以通过CS_SYNC数据包的交互测量传输的往返时间,详细功能介绍可以参考[Vol 6] Part H,3.1 Measuring RTT。标准中的时间测量可以通过Access Address([Vol 6] Part H, 3.2 Timing estimate based on an Access Address), sounding sequence([Vol 6] Part H, 3.3 Fractional timing estimate based on a sounding sequence)和random sequence([Vol 6] Part H, 3.4 Fractional timing estimate based on a random sequence)实现。
RTT_Capability用三个bit分别来表示上述三种RTT测量的时间精度。当对应bit设置为1时,表示本地设备支持10ns的精度,而设置为0时,表示本地设备支持150ns的精度。
RTT精度的评估方法进一步参考[Vol 6] Part H, 3.1.2 ToD and ToA reporting accuracy。
RTT_AA_Only_N用来表示本地设备是否支持Access Address来测量RTT
RTT_Sounding_N用来表示本地设备是否支持sounding sequence来测量RTT
RTT_Random_Payload_N用来表示本地设备是否支持random sequence来测量RTT
NADM_Sounding_Capability, NADM_Random_Capability
为了增强BLE CS的安全性,协议中引入了攻击检测功能(Attack detection),详细介绍可以参考[Vol 6] Part H, 3.5 Attack detection requirements。标准中提供了两种攻击检测功能,分别是基于Sounding sequence和Random sequence,具体序列定义可以参考[Vol 6] Part H, 3.5.3.1 Sounding sequence attack signal definition和3.5.3.2 Random sequence attack signal definition。
NADM_Sounding_Capability和NADM_Random_Capability分别用来显示本地设备是否支持上述两种攻击检测功能。
CS_SYNC_PHYs_Supported
BLE CS中的CS_SYNC数据包交互时,物理层调制的码率和GFSK的调制BT系数具体定义参考[Vol 6] Part A, 3.1.2 Modulation characteristics of Channel Sounding steps。除了1M经典码率之外,还提供两个可选调制方式,分别为2M码率,BT=0.5和2M码率,BT=2。
CS_SYNC_PHYs_Supported用来表示本地设备上述调制方式的支持情况。
Subfeatures_Supported
该参数用来表示本地设备其他CS子特性的支持情况,这些特性在标准中没有规范强制支持,都属于可选支持:
- 工作模式为reflector时,是否支持CS Mode-0传输下计算频率误差及补差功能,具体参考[Vol 6] Part A 3.5 Frequency measurement and generation in Channel Sounding和[Vol 6] Part H 6.3 Frequency actuation error correction
- 是否支持CS的Algorithm #3c跳频算法,具体可以参考[Vol 6] Part H 4.1.4.2 Channel Selection Algorithm #3c
- 是否支持基于sounding sequence的相位测距功能,具体可以参考[Vol 6] Part H 3.3.1 Phase-based PCT estimate based on a sounding sequence
T_IP1_Times_Supported
T_IP1(Time for Interlude Period 1)为BLE CS具体步骤中的时间间隔之一,具体时间间隔参数和定义参考[Vol 6] Part H 4.3 Channel Sounding steps。
例如,在mode-0中T_IP1为Initiator发送CS_SYNC_0_I和Reflector发送CS_SYNC_0_R数据包之间的时间间隔;在mode-1中,T_IP1为Initiator发送CS_SYNC_1和Reflector发送CS_SYNC_1数据包之间的时间间隔。
T_IP1标准中支持7中间隔,其中145us是强制支持间隔。
T_IP2_Times_Supported:
T_IP2(Time for Interlude Period 2 (between CS tones))为BLE CS具体步骤中的时间间隔之一,具体时间间隔参数和定义参考[Vol 6] Part H 4.3 Channel Sounding steps。
例如,在mode-2中T_IP2为Initiator发送CS tone和Reflector发送CS tone数据包之间的时间间隔;在mode-4中,T_IP2为Initiator发送CS_SYNC_3_I和Reflector发送CS_SYNC_3_R数据包之间的时间间隔。
T_IP2标准中支持7中间隔,其中145us是强制支持间隔。
T_FCS_Times_Supported
T_FCS(Time for Frequency Change Spacing)是BLE CS过程中频率变化所需要的时间间隔,具体定义参考:[Vol 1] Part A 9.1 Channel Sounding procedure和[Vol 6] Part H 4.3 Channel Sounding steps。
T_FCS标准中支持以下9中间隔,其中150us是强制支持间隔。
T_PM_Times_Supported
T_PM (Time for Phase Measurement)是BLE CS过程中相位测量的时间。例如在Mode-2或者Mode-3中Initiator发送CS tone和Reflector发送CS tone过程中测量相位的时间,具体参考[Vol 6] Part H 4.6 Phase measurements during T_PM。
T_PM标准中规范了3中测量时间,其中40us是强制支持相位测量时间。
T_SW_Time_Supported:
T_SW(Time for antenna switch period of the CS tones) 是BLE CS过程如果采用多天线技术,那么该参数用于设定相位测量之前的天线切换时间,具体参考[Vol 6] Part H 4.7 Phase measurements with antenna switching。
T_SW标准中规范了不切换和1us,2us,4us和10us四种天线切换时间。
TX_SNR_Capability:
BLE CS引入了控制输出信号SNR的可选功能。规范中,定义了5种TX SNR要求。而具体SNR估计,标准中可以参考:[Vol 6] Part A 3.1.3 SNR control for Channel Sounding steps。
第二步:读取远程设备CS支持功能:
本地设备获取自身的CS支持功能之后,还需要获取远程设备CS支持功能。该过程通过LE CS Read Remote Supported Capabilities 命令实现(详细参考:Vol4, Part E: 7.8.131)。
该命令执行后,设备将通过空口发送一条LL_CS_CAPABILITIES_REQ数据包,远程设备收到该请求后,准备自身的特性填入LL_CS_CAPABILITIES_RSP后空口返回。执行设备收到远程设备的LL_CS_CAPABILITIES_RSP数据包后,产生HCI_LE_CS_Read_Remote_Supported_Capabilities_Complete事件,将获取信息上报至执行设备。
LL_CS_CAPABILITIES_REQ和LL_CS_CAPABILITIES_RSP数据包总体符合Data Physical Channel PDU格式,其中的Payload定义为:
这两个数据包对应的Opcode对应为:
LL_CS_CAPABILITIES_REQ和LL_CS_CAPABILITIES_RSP数据包的详细介绍可以参考[Vol 6] Part B, 2.4.2.44 LL_CS_CAPABILITIES_REQ and LL_CS_CAPABILITIES_RSP,其中的关键字段属性与LE CS Read Local Supported Capabilities中介绍的一致,不在额外展开。
而HCI_LE_CS_Read_Remote_Supported_Capabilities_Complete事件的详细介绍可以参考[Vol 4], Part E, 7.7.65.39 LE CS Read Remote Supported Capabilities Complete event。
第三步:双方CS缺省值设置
本地设备和远程设备都可以通过LE CS Set Default Settings命令,完成BLE CS的缺省值设置,具体可以参考[Vol 4], Part E, 7.8.134 LE CS Set Default Settings command。
BLE设备缺省情况下,两种Roles都处于关闭状态,因此需要通过该命令激活分别激活CS中的Role。
CS_SYNC_Antenna_Selection将设置CS_SYNC数据包收发过程中使用的天线。
结合SNR control功能,Max_TX_Power将设置CS过程中允许配置的最大信号输出功率。
第四步:本地设备读取远程设备的FAE表格
BLE CS精度与两个设备的频率偏差和精度有关,因此本地设备通过CS计算距离时,需要提前获得远程设备每个频点的FAE(Frequency Actuation Error)表格。
本地设备通过发送LE CS Read Remote FAE Table命令开始这一个过程,具体参考[Vol 4], Part E, 7.8.135 LE CS Read Remote FAE Table command。
收到该命令后,本地设备通过空口发送一条LL_CS_FAE_REQ数据包,远程设备收到该请求后返回LL_CS_FAE_RSP数据包。两个数据包对应的Opcode对应为:
LL_CS_FAE_REQ中只有对应的Opcode而无具体内容,LL_CS_FAE_REQ中的数据包为:
其中,72个Octet对应就是每个信道的FAE ppm值。BLE CS规定的信道号,具体参考[Vol 6] Part H, Section 1 CHANNEL SOUNDING PHYSICAL CHANNELS。每个Octet占8个bit,总共256个数值,分别表示从-4ppm~3.96875ppm,步长为0.03125ppm信道FAE频率值,其中-128对应-4ppm,127对应3.96875ppm。频率FAE与数值的对应关系是:将具体的频率误差ppm值乘32后四舍五入至最近的整数。因此,0ppm对应的频率误差范围从-0.015625ppm~0.015625ppm。本地FAE误差ppm的计算方法,参考[Vol 6] Part A 3.5.1 Fractional frequency offset。
最后,本地设备收到LL_CS_FAE_RSP数据包后,产生LE CS Read Remote FAE Table Complete 事件,并记录远程设备的FAE值。LE CS Read Remote FAE Table Complete具体参考:[Vol 4] Part E, 7.7.65.40 LE CS Read Remote FAE Table Complete event
第五步:Host设备创建CS配置
Host设备通过LE CS Create Config 命令,创建或者更新BLE CS过程中的参数,具体可以参考:[Vol 4], Part E, 7.8.137 LE CS Create Config command。
如果上述参数中Create_Context配置为两端同时设置,那么当前设备将通过空口通过LL_CS_FAE_REQ和LL_CS_FAE_RSP,同时设置远端设备。
LL_CS_FAE_REQ的CtrData具体格式如下,其中的参数通过LE CS Create Config配置生成,具体名字可能有变化,但基本是一一对应。
LL_CS_FAE_RSP空口回复的内容比较简单,仅反馈LL_CS_FAE_REQ中对应的Config_ID号
下面对LE CS Create Config命令中的参数展开解释:
Config_ID
由于规范中,规定BLE CS Host最多可以与4个设备进行CS。因此,需要通过Config_ID指定当前配置参数生效的CS对,该参数取值范围为1~4。
Create_Context
指定当前配置参数只在本地设备,还是本地设备和远端设备同时生效。
Main_Mode_Type & Sub_Mode_Type
指定CS过程中使用的具体主模式和子模式类型。具体Mode的详细介绍,参考[Vol 6] Part H 4.3 Channel Sounding steps
Min_Main_Mode_Steps & Max_Main_Mode_Steps
这两个参数配合,让主机决定CS子模式执行前,主模式可以执行的个数,具体参数可以参考[Vol 6] Part H 4.4.3 Sub_Mode insertion
Main_Mode_Repetition
该参数用于设定在上一个CS子模式和当前要执行的CS子模式之间,CS主模式可以重复的次数。具体参数可以参考[Vol 6] Part H 4.4.4 Main_mode repetition
Mode_0_Steps
该参数设定了在每个CS子事件开始时,插入的mode-0 CS次数,该参数数值应该在1和3之间。[Vol 6] Part H 4.4.2 CS subevent structure
Role
设定本地设备在CS过程中的角色,有Initiator和Reflector两种可选。Initiator和Reflector的定义参考:[Vol 6] Part H 4.3 Channel Sounding steps
RTT_Type
用于设定CS过程中RTT测量使用的方式,共有三个AA, Sounding Sequence和Random Sequence三种方法,7中类型可以选择,具体可以参考[Vol 6] Part H,3.1 Measuring RTT
CS_SYNC_PHY
用于设定BLE CS过程中CS_SYNC数据包的调制物理层参数,具体可以参考[Vol 6] Part A 3.1 Modulation characteristics。
Channel_Map
用于设定BLE CS过程中可以使用的信道号,每个bit对应一个信道。如果当前信道可以使用,那么对应的bit置1.
Channel_Map_Repetition
用于设定使用的Channel_Map在CS过程中非mode-0模式下重复的次数。该参数详细功能介绍参考:Vol 6, Part H 4.1.4 Channel index selection for non-mode‑0 steps
Channel_Selection_Type
用于设定CS过程中非mode-0模式下使用的跳频算法,当该参数设定为0x01时,也就是选择Algorithm #3c算法时,需要额外设定Ch3c_Shape和Ch3c_Jump这两个参数。具体算法介绍参考:Vol 6, Part H 4.1.4.1 Channel Selection Algorithm #3b 和4.1.4.2 Channel Selection Algorithm #3c
Ch3c_Shape & Ch3c_Jump
当且仅当Channel_Selection_Type为Algorithm #3c时,此两参数才起作用。具体参考Vol 6, Part H 4.1.4.2 Channel Selection Algorithm #3c
第六步:安全CS过程使能
用于启动或者重启安全CS过程,具体可以参考:Vol 6, Part B 5.1.23 Channel Sounding Security Start procedure