An Event is the specification of some occurrence that may potentially have significance to the system under consideration. Upon such an occurrence, a corresponding Event (class) is instantiated, and the generated Event Instance (object) outlives the instantaneous occurrence that generated it.
Event Instances (a.k.a. Messages) are objects specifically designed for communication and synchronization within an event-driven system, such as a QP Application. Once generated, an Event Instance (a.k.a. Message) is propagated to the system, where it can trigger various Actions. These Actions might involve generating secondary Event Instances.
An Event always has information about the type of occurrence that generated the Event Instance ("what happened"), which will be called Signal in this document. Event Signals are typically enumerated constants that indicate which specific occurrence out of a set of all possible (enumerated) occurrences has generated the Event Instance.
An Event can have (optionally) associated Parameters, allowing the Event Instance to convey the quantitative information regarding that occurrence. For example, a Keystroke event generated by pressing a key on a computer keyboard might have associated parameters that carry the character scan code and the status of the Shift, Ctrl, and Alt keys.
QP Framework shall provide Event abstraction to QP Application
Description
The QP Framework shall define a common Event abstraction, so that it can be instantiated, exchanged, and correctly interpreted by both the QP Application and QP Framework.
Forward Traceability (truncated to 2 level(s))
Each event instance shall contain the event Signal.
Description
The event Signal carries the information about the occurrence that generated the given event instance. The Signal needs to be easily accessible to the QP Application to determine how to handle a given event.
Forward Traceability (truncated to 2 level(s))
QP Framework shall allow up to 64K (65536) event signals.
Description
QP Framework shall provide 64K signals (2 bytes of memory per event signal).
Forward Traceability (truncated to 2 level(s))
QP Framework may reserve some signals for its internal use
Description
QP Framework may need some reserved signals to implement features inside hierarchical state machines. The reserved signals shall have the lowest numerical values.
Forward Traceability (truncated to 2 level(s))
QP Framework shall provide the lowest numerical value of signals allowed in the Application
Description
To avoid conflicts around any reserved event signals, QP Framework shall provide the lowest numerical limit for Application-level signals. In other words, the reserved signals will have numerical values 0 .. (SIGNAL_OFFSET - 1), and the Application-level signals will have values SIGNAL_OFFSET .. SIGNAL_DYNAMIC_RANGE.
Forward Traceability (truncated to 2 level(s))
QP Framework shall allow Application to create event instances with Parameters defined by the Application
Description
The Event abstraction shall provide a mechanism for QP Application to define event parameters useful for the QP Application, and then to create event instances with these parameters.
Forward Traceability (truncated to 2 level(s))
Event abstraction may contain other data items for internal event management inside QP Framework
Description
Event management in QP Framework might require additional information to be stored inside each event instance. Please see Event Memory Management for requirements related to event management inside QP Framework.
Forward Traceability (truncated to 2 level(s))
QP Framework may be compile-time configurable to allow customized initialization on event instances
Description
When such initialization is configured, QP Framework shall invoke the custom initialization upon instantiation of a dynamic event.
Forward Traceability (truncated to 2 level(s))
QP::QEvt::init(): Event initialization for dynamic events