RTX 和 ERTX 定时器详解
在蓝牙 L2CAP 协议中,RTX(Response Timeout eXpired)和 ERTX(Extended Response Timeout eXpired)是两种关键的超时定时器,用于管理信号请求的响应和重传逻辑。以下是它们的核心区别、工作机制及实际应用场景。
1. RTX(基础响应超时定时器)
-
定义
RTX 用于检测远程设备对信号请求的无响应情况。当本地发送一个信号请求(如L2CAP_ConnectReq
、L2CAP_ConfigReq
)时启动,若未在指定时间内收到响应,则触发超时处理。 -
核心特性
-
初始超时值:1 秒(最小值)至 60 秒(最大值),具体值由实现决定。
-
最大总超时时间:从首次启动到最终终止通道的最长时间为 60 秒。
-
重传机制:若超时后选择重传请求,新的 RTX 超时值需至少为前一次的两倍(指数退避)。
-
终止条件:收到响应、物理链路断开或达到最大超时时间。
-
-
典型场景
-
发送
L2CAP_ConnectReq
后等待L2CAP_ConnectRsp
。 -
发送
L2CAP_ConfigReq
后等待L2CAP_ConfigRsp
。
-
-
处理流程
2. ERTX(扩展响应超时定时器)
-
定义
ERTX 是 RTX 的扩展版本,用于处理需要额外处理时间的场景。当远程设备返回“待定”响应(如L2CAP_ConnectRsp
中状态为 pending)时启动。 -
核心特性
-
初始超时值:60 秒(最小值)至 300 秒(最大值)。
-
最大总超时时间:从首次启动到最终终止通道的最长时间为 300 秒。
-
与 RTX 的关系:ERTX 超时后若重传请求,原 ERTX 定时器会被 替换为新的 RTX,流程重新开始。
-
终止条件:收到最终响应、物理链路断开或达到最大超时时间。
-
-
典型场景
-
收到
L2CAP_ConnectRsp
结果为 pending(0x0001)。 -
远程设备需要额外时间处理请求(如资源分配、控制器协商)。
-
-
处理流程
3. RTX 与 ERTX 的关键区别
特性 | RTX | ERTX |
---|---|---|
触发条件 | 发送普通信号请求 | 收到“pending”响应 |
超时范围 | 1–60 秒 | 60–300 秒 |
总超时上限 | 60 秒 | 300 秒 |
重传后行为 | 超时值翻倍,继续使用 RTX | 超时后替换为 RTX,流程重启 |
典型应用 | 连接请求、配置请求 | 待定响应的后续处理 |
控制器交互 | 无特殊要求 | 可能涉及控制器流规范验证 |
4. 实际应用示例
场景 1:标准连接请求(RTX)
-
设备 A 发送
L2CAP_ConnectReq
,启动 RTX(初始值 2 秒)。 -
设备 B 在 1.5 秒内返回
L2CAP_ConnectRsp
(成功)→ RTX 停止,通道进入 CONFIG 状态。 -
若设备 B 无响应,RTX 在 2 秒后超时 → 设备 A 重传请求,RTX 重置为 4 秒。
-
若连续超时,RTX 值持续翻倍,直至总时间达到 60 秒后断开通道。
场景 2:带Pending响应的连接(ERTX)
-
设备 A 发送
L2CAP_ConnectReq
,设备 B 返回L2CAP_ConnectRsp
(pending)。 -
设备 A 启动 ERTX(初始值 120 秒)。
-
设备 B 在 100 秒后完成处理,发送最终
L2CAP_ConnectRsp
(成功)→ ERTX 停止,进入 CONFIG 状态。 -
若设备 B 超时未响应,ERTX 在 120 秒后触发 → 设备 A 重传请求,ERTX 替换为 RTX(初始值 1 秒),后续按 RTX 流程处理。
5. 实现注意事项
-
定时器独立性:每个未完成的信号请求需关联独立的 RTX/ERTX 定时器。
-
物理链路影响:若物理链路断开(如蓝牙断开),所有定时器立即终止。
-
LE 传输的特殊性:在低功耗蓝牙(LE)中,外围设备的主机可能在 RTX 超时后主动断开链路。
-
模式兼容性:在无限重传模式(如 Enhanced Retransmission Mode)中,L2CAP 层可能不进行重传,依赖物理层重传。
通过合理配置 RTX 和 ERTX,L2CAP 协议能够在复杂网络环境下平衡响应速度和可靠性,确保蓝牙设备高效完成逻辑链路的建立与管理。