主要内容 {#highlights}
“设备范围设置”的写入操作现将反映到所有拥有该设备的客户端会话中。 这并非仅在执行写入操作的会话中生效的方式。第二个查看器没有采用轮询方式,而是通过自身 会话已更新 接收事件后页面将刷新。每个持有该设备的会话仅触发一次事件,且对执行写入操作的客户端不会触发两次。现在可以向客户端报告设备的实际挂载位置了。这取代了此前服务始终仅报告会话中设置的挂载位置的方式。用于标识当前报告的是哪一个值的标签,现在在所有输出格式中都结构上正确。如果设备保持其自身的安装基准值,服务也会随之调整。此前,服务会直接提供设备启动时捕获的值,且不再进行重新验证。现在,服务可以根据客户端的渲染周期,在收到请求时刷新基准值。为了防止高速客户端导致设备链接过载,服务端会进行速率限制,并在安装方向实际旋转后,仅通知一次变更。内部改进 {#internal-improvements}
实验性手柄偏航(yaw)漂移自动校准。新服务模块可闭合Wireless VerseGrip惯性偏航漂移的校准回路。该功能将手柄的绝对偏航值与手柄所连接的已配对Inverse3 或Minverse的运动同步,并在满足所有质量门控条件后,将单一校准值写入手柄固件中。 该功能默认处于禁用状态,仅在开启实验性选择加入开关后方可使用。此外,该功能还包含一个运行时开关,一旦启用,将强制关闭所有处于活动状态的握把的校准功能。由于该功能涉及向设备固件写入数据,因此此开关是必不可少的。针对所有设备的设置写入操作现在要么全部应用,要么完全不应用。在更换设备之前,系统会针对所有选定项验证固件功能和设备就绪状态。因此,混合固件设备群中不再会出现因第二台设备发生错误而导致仅有一半设备完成切换的情况。现在,Grip 固件验证响应将按请求进行追踪。由于仅有一个共享的结果槽,两名并发请求者可能会丢失彼此的响应,且一个模棱两可的值同时意味着“被拒绝”和“尚未收到响应”。 这可能导致“拒绝”状态引发重试洪流。现在,每个请求都拥有唯一的令牌,未实际发送的请求不会被注册。如果响应丢失,系统不会暂停,而是将其处理为失败。执行此操作的“清扫”(sweep)在没有待处理请求时不会产生开销。Inkwell 底座校准不受新握持模式固件功能检测的影响。当笔插入底座时,系统会执行完整的姿态重新校准,这是所有出厂笔的正常行为,与固件版本无关。该路径已被明确排除在为计算方向校准而引入的最低功能要求之外,且该排除条款已在调用点中明确说明,无需通过推断来确定。修改内容 {#fixes}
重置重力补偿时,现在将恢复为实际默认值,而非超额补偿。 与名字不同的是 config/重力补偿的 缩放因子 该字段并非乘数。该字段表示设备在自身重量之外额外补偿的末端执行器有效载荷质量(单位为千克)。重置时直接采用该名称,将其设为“中性”系数,即 1已恢复为原状。这相当于设置了一个1千克的虚拟有效载荷,因此重置后,设备处于将手柄向上推起的状态。新连接的设备不会出现这种行为。现在,重置时将应用实际的默认值。奖励功能已激活, 缩放因子是 0该参数已设置为,假设设备仅承担自身重量且无有效载荷。如果应用程序曾利用重置功能来提高补偿强度,请显式设置所需值。“返回主页(home return)”的重置功能现在确实又可以启用了。 config/home_return该重置操作虽然向调用方返回已启用的状态,但实际上却禁用了“返回主屏幕”功能。现在,重置后将真正恢复出厂默认值(开启),此后应用程序读取的值将与设备实际使用的值一致。在执行设备范围挂载或方向写入后,其他客户端不会保留过时的值。在 3.5.6 版本之前,对设备本身执行的写入操作(由拥有该设备的所有会话共享)仅会刷新执行写入操作的客户端的设置,而设备全局路由则不会刷新任何客户端的设置。 使用同一设备的其他客户端在进行轮询之前,会继续显示旧值。现在,通知将发送给拥有该设备的所有会话。在多次尝试 Inkwell 对接时,系统不会因一次拒绝就放弃。由于前一次对接的状态会在两次对接之间保留,因此第二次对接将第一次拒绝视为重试时段的结束。现在,重试时段会在每次对接尝试后重置。已修复无线 VerseGrip 设备 TICK 的数据竞态条件。此前,当不同分阶段路径在不同锁下读取数据时,连接线程可能会重新分配设备标识符。现在,标识符会在正确的锁下通过一次快照保存下来,后续的所有路径(包括拒绝处理)都将基于该副本进行操作。已修复 Wireless VerseGrip 四个发送端在消息分发时无法同步的问题。由于四个发送消息路径在未组装有效载荷和校验和、也未获取写锁的情况下就请求了传输,导致两个发送端可能在共享缓冲区中混淆数据。潜在的兼容性破坏性变更 {#potential-breaking-changes}
API、数据格式和配置均未发生变更。默认输出与 3.5.5 版本在字节单位上保持一致,没有被删除或路径变更的路由,公开的 C API 也没有差异,配置键的名称未被更改、删除或赋予新的默认值。不过,已选择加入 SDK 预览版或实验性功能的应用程序,在本周期内需要进行迁移操作。 其中包括交换机等级的变更以及被移除的令牌集,所有变更均已记录在工程参考变更日志中。重力补偿重置返回的值与 3.5.5 版本不同。 字段、路径和响应格式均未发生变化,但重置了 缩放因子를 1过去依赖于“记录”这一机制的应用程序,现在已改用出厂默认值,即 0。无论哪种情况,补偿本身都保持激活状态。请不要依赖重置,而应显式设置该值。请参考上述修改内容。重置“返回主页”功能后,该功能将保持启用状态,不会被关闭。虽然字段、路由和响应格式均未发生变化, 但此前通过重置来禁用“返回主页”功能的应用程序,现在将看到该功能处于启用状态。如果需要将其关闭,请在重置后明确将其关闭。请参考上述修改内容。客户端将收到一个“附加设置”事件。 会话已更新 此前假设事件仅因自身写入操作而触发的应用程序,现在即使其他客户端修改了其关联的设备,也会收到事件,随后将进行整体设置的渲染。这是上文所述“扇出”机制的预期结果。对于仅在收到事件后进行简单重新读取的客户端,则无需进行任何更改。