v3.5.1
3.5.1 是一个旨在提升系统稳定性和质量的版本。主要更新内容如下:支持 1↔1 的Inverse3 与握手机制的自动配对,即使没有打开的 WebSocket 会话, GET /devices/{id} 该服务线程调度程序能够获取最新运动状态,解决了在切换力/位置模式时产生的吱吱声,并且能在持续负载下进行自我调节。
亮点
- Inverse3 (1↔1)与握把组合的自动配对。 Inverse3 当 1 台设备和 1 个握把准备就绪后,SDK 会自动完成配对注册。这样,在多设备配置中
pen_attachedMinverse 的校准解除操作不再会被错误地路由。 - 即使不打开会话,也能查看最新的
GET /devices/{id}支持创建快照。 在固件 v7.5 及更高版本的Inverse3 / Inverse3x /Minverse 中,无论 WebSocket 是否运行,运动状态都会以 20 Hz 的频率进行轮询。在 v7.5 之前的固件版本中,系统会跳过轮询,并仅输出一次警告。 - 切换到“力/位置”模式后,就不再发出吱吱声了。
set_cursor_force↔set_cursor_position切换操作将采用插槽互斥机制,在两个时钟周期之间,每个设备仅保留最新值。因此,HARP 中为规避200毫秒空闲间隔而采取的应对措施已不再需要。 - 自适应型滴答调度器。主循环会根据负载情况调整发送速率,因此不会因处理较慢的滴答而导致命令队列无限增长。
- 负载下的 1 进 1 出流式响应。 WS 每条消息的流式响应限制为每会话 1/ms。如果因达到上限而被拒绝,则会重播前一个缓冲区,因此模拟循环将
recv()不会被阻止。
内部改进
设备
- 各设备的Inverse3 与VerseGrip配对注册表。
GET|POST|DELETE /devices/{sel}/paired_with是针对每个设备的“一对一”映射。POST将删除双方中任何一方存在的冲突配对。DELETE将清除所选条目。选择器必须解析为一个 ID。 - 在固件 v7.5 及以上版本中,以 20 Hz 频率轮询运动状态。
GET /devices/{id}每隔 50 毫秒更新一次cursor_position、cursor_velocity、angular_position、angular_velocity返回。对于活动会话,该操作将透明地进行。 - 无线 VerseGrip 的
set_extension_data将其更改为速率控制。 系统会处理每个服务标记,清除旧数据,并在空闲时处理会反复发送数据的管道。这样既避免了因过度发送导致无线链路饱和,也避免了因发送不足而导致旧值残留的情况。
会话
- 针对专用于控制的批处理(力/位置),新增了一条 WS 接收的高速路径。该路径将跳过考虑了 configure 的管道。
configure、set_profile、自定义命令仍将通过比赛状态的修正处理流程。
可观测性
- 检测日志的生成频率现已根据各端口的情况并结合持续性因素进行控制。 列入黑名单的各个端口均独立控制。重复输出的
"...blacklisted: skipping"该行表示触发期间被抑制的 tick 数(×N)现在开始带有……了。 - 在检测非 WVG 设备时,已不再因检测到无线 VerseGrip 而导致日志溢出。
修正
POST /device.config.presetでdefaults或者arm_front如果指定了现已将设备的挂载重置为出厂默认设置(此前未进行任何操作)。basis由于该设置会被保留,因此即使更改了挂载预设,应用中设置的基准值仍会保持不变。force_render_full_state但config不再返回缺失区块的快照了。如果相应的 configure 在同一条 WS 消息中到达,则 configure 的处理将在快照生成之前同步完成。- 跨会话
force_render_full_state不过,现在它会返回目标的完整快照了。 现在 A 和 B 都能接收完整的有效载荷了(此前 A 只能接收流式数据)。 - 未知的
target_session_id跨会话的命令不再会导致请求/响应循环挂起。 请求来源包括其自身的快照以及,session-command-dropped活动(cross-session-unknown-target)将收到。 - Minverse 多设备校准的解锁功能不再被错误地路由。 Minverse A的校准不再会解锁Minverse B。inkwell-success的标题广播也已相应修复。
- HTTP 设备选择器 作为设备 ID,
#1234和1234同时接受这两种方式。选择器类(inverse3、verse_grip)与索引协同工作。404 错误消息中现在会保留原始的选择器表达式。 - 无线 VerseGrip 的
ready标志现在是在经过初始设备信息握手之后才被设置的。此前,在某些重新连接路径中,设备可能在完全完成自我通知之前,标志就已切换。 - 基于 keyed-rate-gate 的配置在运行时所做的更改,现在会在下次引用时生效(此前这些配置在首次调用 emplace 时即被固定,更改仅对新会话生效)。
可能导致破坏性变更
basis、preset、mount、transform、force_gate全体一起 已统一 HTTP 的 404 错误信息:"{type} device #{id} not found"を"no device matches selector '{expr}'"已更改为。会话中的 404 也进行了同样的更改。- 力电平增益、力门极增益、控制超时、
safeties/expose_in_snapshot针对 glob 的设置devices/inverse*/...从devices/*inverse/...已更改为。使用旧式字面量的 3.5.0 配置文件将无法绑定。 - 设置:序列化相关的全局设置
session/serialization/*已移至(explicit_fields、force_complete_transforms、preview/*)。旧护照的serialization/*虽然该名称仍将通过不推荐使用的别名进行解析,但计划在 4.0 版本中将其删除。 - 操作:对于将每条消息的 WS 响应用作时钟同步握手机制的客户端,即使在持续流量情况下,每秒也最多只能收到 1 次响应(按会话计算)。配置更改时的完整快照不受此影响。
不建议
3.5.1 版本中没有被标记为“不推荐”的功能。预览版的主开关是未来 3.6 版本中从“静默”到“警告”过渡流程的“不推荐”标记的基础。首次“不推荐”标记工作计划在 3.5.2 版本中进行。