深入理解QEP:通用分层事件处理器
1. QEP简介
QEP是一个通用、高效且高度可移植的分层事件处理器,可用于任何事件驱动的环境,如GUI系统、计算机游戏或实时嵌入式(RTE)系统。它努力遵循UML规范,但并不实现整个庞大的UML状态机包,而是提供足够的基本元素来直接构建符合UML的状态机,并将更高级的UML概念作为设计模式来支持。
QEP的主要特性如下:
- 全面支持分层状态嵌套。
- 保证在任意状态转换拓扑上执行进入/退出动作。
- 完全支持嵌套初始转换。
- 在C或C++中,状态机元素与代码直接、精确且明确地映射,具有高度的可维护性和可追溯性。
- 极小的RAM/ROM占用。一个状态机对象在RAM中只需要一个函数指针。
- 无需RAM来表示状态和转换,状态数量仅受代码空间(ROM)限制。
- 事件处理器代码完全可重入,栈需求极小。
- 支持带有任意参数的事件。
- 易于与任何事件排队和调度机制集成。
- 源代码非常干净,通过PC - Lint的严格静态分析。
- 源代码98%符合汽车工业软件可靠性协会(MISRA)的指南。
- 在线提供文档、应用示例和针对各种编译器的移植。
- 具备Q - SPY软件跟踪工具,可实现前所未有的可观察性、可控性和可测试性。
2. QEP结构
QEP由用于派生状态机的QHsm类和用于派生带参数事件(或直接用于无参数事件)的QEvent类组成。QHsm类跟踪当前状态,并提供标准的状态机接口操作init()和dispatch(),它是抽象类,用于派生具体的状态机类,如计算器状态机Calc。 </