亮点 {#highlights}
设备作用域设置的写入操作,现在不仅会反映在执行写入操作的会话中,还会反映在所有持有该设备的客户端会话中。第二个查看器不采用轮询方式,而是利用自身的 会话已更新 系统会根据事件进行更新。对于每个持有的会话,系统会准确地发送一次事件,且不会向执行写入操作的客户端发送两次。
现在可以向客户端报告设备的物理挂载位置了。此前,服务始终报告会话中配置的挂载位置。在所有输出格式中,用于标识当前查看的是哪个值的标签,其结构显示均已保持准确。如果设备具有独自の安装基准,服务现已能够跟上其变化。以前的服务会在设备启动时获取数值并直接返回,此后不再进行重新确认。现在,服务可以根据客户端自身的渲染间隔,根据请求更新该基准。由于服务端实施了速率限制,因此渲染频率较高的客户端不会导致与设备的连接过载。当安装基准实际发生旋转时,系统会通知一次变更。内部改进 {#internal-improvements}
实验性抓握装置偏航角漂移自动校正。新的服务模块通过闭环方式校正无线VerseGrip因惯性引起的偏航角漂移。该模块会根据已配对的Inverse3或Minverse的运动情况,对抓握装置的绝对偏航角进行拟合;当所有质量门限条件均满足时,将一次校正值写入抓握装置的固件中。此功能默认处于禁用状态,仅在开启实验性“选择加入”开关后方可使用。此外,该功能还配备了一个运行时开关,可在切换瞬间强制将所有正在运行的握把恢复为校正关闭状态。由于该功能需写入设备固件,因此此机制不可省略。针对所有设备的配置写入操作现已采用“全有或全无”的处理方式。在尚未对任何设备进行更改之前,系统会验证所选的所有设备,包括固件兼容性及设备就绪状态。因此,在固件版本混杂的设备群中,即使第二台设备出现错误,也不会再出现仅完成一半切换后就停止的情况。现在,系统会针对每个请求跟踪来自握把固件的响应确认。由于共享的结果槽位只有一个,因此同时发送两个请求时,可能会将彼此的响应混淆。此外,由于一个模糊的值既可能表示“拒绝”,也可能表示“未响应”,这可能会导致“拒绝”引发一连串的重试。目前,每个请求都拥有独立的令牌,未成功发送的请求不会被记录。如果响应丢失,系统会将其确认为失败,而不是让处理过程一直处于挂起状态。只要没有未处理的请求,此扫描处理就不会产生额外负载。Inkwell 底座的校准不受新握柄固件功能检测的影响。将笔放置在底座上时,系统会执行完整的姿态重新校准。无论固件版本如何,这是所有出厂笔的正常行为。此路径已被明确排除在为计算姿态校正而引入的功能要求最低标准之外,且该排除理由并非推测,而是在调用位置中明确说明的。修正 {#fixes}
重力补偿的重置功能现已调整为恢复到正确的默认值,而非过度补偿。与名字相反,config/重力补偿 的 缩放因子 该字段并非乘数。它是末端执行器额外有效载荷质量(单位:千克),用于补偿设备本身的重量。之前的重置将该值按字面意思理解,即“中性”系数 1 已恢复到该状态。由于这相当于1千克的虚拟有效载荷,因此重置后设备会持续将手柄向上推。这与设备刚连接时的行为不同。当前的重置操作会恢复到实际的默认值。也就是说,补偿功能处于启用状态,缩放因子 是 0 将设置为。设备仅支撑自身重量,运行时视为无有效载荷。如果应用程序曾通过重置来提高补偿强度,请改为此显式设置所需值。
通过重置“返回主页”功能,该功能现已真正恢复生效。 config/home_return 重置功能此前处于一种状态:虽然“返回主页”功能已被禁用,却向调用方报告其处于启用状态。现在,重置后系统会真正恢复到出厂默认值(启用),此后应用程序读取的值将与设备实际使用的值一致。在写入设备范围的安装位置或方向后,其他客户端的显示内容将不再保持为旧版本。在 3.5.6 之前,对设备本身的写入操作(该操作在持有该设备的所有会话中共享)仅会更新执行写入操作的客户端的设置,而不会更新任何客户端的设备全局路径。使用同一设备的其他客户端会继续显示旧值,直到进行轮询为止。现在,该设备会被通知给所有持有该设备的会话。InkWellDock在重试时,不再因一次拒绝就放弃。由于上一次Dock的状态会被继承到后续的Dock中,因此第二次Dock将第一次拒绝视为重试时段的结束。现在,重试时段会在每次Dock尝试后重置。已修复 Wireless VerseGrip 设备在处理“咔嗒”事件时的数据竞争问题。此前,设备的标识符可能会被连接线程重新分配,而在此过程中,暂存处理可能会在另一个锁下读取该标识符。现在,标识符会在正确的锁下被快照一次,所有后续路径(包括被拒绝的路径)都将基于该副本进行操作。已修复了4个 Wireless VerseGrip 发送源中未同步消息的暂存问题。这4条发送消息路径在组装有效载荷和校验和并请求发送时,未获取写锁。因此,两个发送源有时会在共享缓冲区上发生处理冲突。潜在的破坏性变更 {#potential-breaking-changes}
API、连接和配置均未发生变更。默认输出与 3.5.5 版本在字节级别完全一致,所有路由均未被删除或重新路由,公开的 C API 也没有任何差异,且未对配置键进行重命名、删除或设置新默认值。已选择加入 SDK 预览版或实验性接口的应用程序,需要在本周期内进行迁移工作。这包括开关层次结构的变更以及已删除的令牌集。各项步骤已在面向工程师的补充变更日志中列出。重力补偿的重置现在返回的值与 3.5.5 版本不同了。 字段、路由和响应的结构虽然没有改变,但通过重置, 缩放因子 但 1 原本假设会写入数据的应用程序,现在改用出厂默认值 0 将接收该值。无论哪种情况,补偿本身仍然有效。请不要依赖重置,而应显式设置该值。请参考上述修改。重置“返回主页”功能后,该功能将保持启用状态,而非关闭状态。虽然字段、路由和响应的结构未发生变化,但在那些假设重置操作会禁用“返回主页”功能的应用程序中,该功能反而会处于启用状态。若要在重置后将其禁用,请显式将其设置为“关闭”。请参阅上述修正说明。客户端将收到额外的配置事件。 会话已更新 原本假设仅通过自身写入操作才会触发事件的应用程序,现在即使由持有同一设备的另一位客户端进行了修改,也会接收到该事件。随后,整个界面也会重新渲染。这是上述“扇出”机制带来的预期结果。仅在接收到事件后重新加载界面的客户端,则无需进行任何修改。