HyperEars v2.2.0
本版在 2.0.0 确立的 Adapter、ProtocolSession 与 Android 会话边界上,重构设备状态确认与
延迟查询机制。水月雨知更鸟的电量启动确认和模式写后确认保持原有用户行为,同时移除通用会话
对具体型号状态机的承担。
架构调整
- 新增事件局部的
AdapterEventScope。Adapter 处理协议回报时只决定接受或暂缓状态,并按顺序
声明一次性状态查询或取消请求;回调本身不启动协程、不访问 Socket,也不反向调用 Android
运行时。 - Android 会话改用通用
StateRequestDispatcher,仅按设备和featureId去重、延时并串行
执行查询。目标值、接受条件、尝试次数和间隔全部由具体 Adapter 管理,运行时不包含水月雨或
其他型号分支。 ProtocolSession继续只把特性查询转换为当前协议字节;WireCodec继续只处理流式帧边界与
字节语义。新增型号不需要修改会话调度器或 MiLink Hook。- Adapter 产生的 Effect 保持事件内顺序。同一批数据先出现旧状态、后出现目标状态时,会先
记录查询、再取消查询,最终不会遗留一次过期任务。
水月雨知更鸟
- 模式设置继续在完整写帧成功后乐观更新卡片;第一次模式查询改由
onControlWritten()声明,
后续旧状态回报由 Robin Adapter 自行暂缓并安排下一次有界查询。 - 双耳电量启动确认迁移到相同的事件机制。连接初期不完整值不会覆盖 Android 整机电量回退;
获得完整双耳值或达到型号上限后,再由统一状态链接受真实结果。 - 通道断开、Adapter 替换、厂商控制 App 接管或设备会话结束时,待执行查询由会话生命周期统一
取消;协议重置同时清除 Robin 自己的临时目标和计数。
验证
- 覆盖电量暂态确认、真实零电量、模式乐观发布、旧状态暂缓、目标到达、次数上限、新控制替换、
同批多状态顺序和协议重置。 - 完整单元测试、Android Lint、Markdown 与文档链接检查、R8 Release 构建及 GitHub 签名发布
由 CI 执行。