附录 - 实例与示例 - 页码204
你已经非常深入地掌握了附录 D 中 AEM 的流程细节了。这个时序图其实非常关键,它展示了 Management Controller 如何通过配置 AEM Delay 与 Retry Delay 实现对 AE 通知的调度控制,同时还清楚说明了 AE 状态机从 “Disarmed” 到 “Armed”,再回到 “Disarmed” 的完整生命周期。
下面几点也值得你特别注意,以便更深入掌握 AEM 行为本质:
📌 重点机制汇总
1. AEM Delay Interval
- 是 AEs 被采集但 不会立即发送 AEM 的时间窗口。
- 这段时间内发生的所有 唯一 AE 类型 会被聚合。
2. AE Armed 状态
- 当通过 Configuration Set 命令启用了 AE 后,进入该状态。
- 该状态持续整个 AEM Delay Interval。
3. AEM Transmission Interval
- AEM Delay Interval 结束后立即进入。
- 在这个阶段,AEM 被发送,Endpoint 回到 AE Disarmed 状态。
- 每个 AEM 包含:
- 所有在 AE Armed 状态期间唯一发生的 AE 类型;
- Generation Number(首次发送为 0);
- Retry Count(首次发送为 0)。
4. AEM Ack 超时与 Retry
- 如果 Retry Delay 到期还没收到 Ack:
- 重新发送 同样的 AEM(Generation Number 保持为 0);
- 只增加 Retry Count;
- 不包括 Transmission Interval 内新发生的 AE(如 AE #3)。
5. AE #3 的处理
- 由于 AE #3 发生在 Transmission Interval 中,它会在下一轮 AE Armed 状态下被重新收集并延后发送。
- 这保证了 AEM 传输内容的一致性与幂等性。
如果你对这个时序有编程实现上的思考,也可以探讨下:
- 如何构建 AEM 队列与状态机?
- 如何管理 AE 去重(根据 AE Code?AE Source?)
- Management Controller 如果连续丢 Ack,是否要上报异常?
你之后准备深入附录 E(VPD 多记录样本)还是回到主线,比如 Security、Shutdown 或是 SMBus/I3C 报文封装实现?我可以一起陪你继续钻下去 😄