QP/C  8.0.3
Real-Time Event Framework
Loading...
Searching...
No Matches
QMActive Class Reference

Active object class (based on QMsm implementation strategy) More...

#include "qp.h"

Inheritance diagram for QMActive:
QActive QAsm

Protected Member Functions

void QMActive_ctor (QMActive *const me, QStateHandler const initial)
 Constructor of QMActive class.
 
- Protected Member Functions inherited from QActive
void QActive_ctor (QActive *const me, QStateHandler const initial)
 QActive constructor (abstract base class)
 
void QActive_stop (QActive *const me)
 Stops execution of an active object and removes it from the framework's supervision.
 
void QActive_subscribe (QActive const *const me, enum_t const sig)
 Subscribes for delivery of signal sig to the active object.
 
void QActive_unsubscribe (QActive const *const me, enum_t const sig)
 Unsubscribes from the delivery of signal sig to the active object.
 
void QActive_unsubscribeAll (QActive const *const me)
 Unsubscribes from the delivery of all signals to the active object.
 
bool QActive_defer (QActive const *const me, struct QEQueue *const eq, QEvt const *const e)
 Defer an event to a given separate event queue.
 
bool QActive_recall (QActive *const me, struct QEQueue *const eq)
 Recall a deferred event from a given event queue.
 
uint_fast16_t QActive_flushDeferred (QActive const *const me, struct QEQueue *const eq, uint_fast16_t const num)
 Flush the specified number of events from the deferred queue eq
 

Protected Attributes

QActive super
 
- Protected Attributes inherited from QActive
QAsm super
 
uint8_t prio
 QF-priority [1..QF_MAX_ACTIVE] of this AO.
 
uint8_t pthre
 Preemption-threshold [1..QF_MAX_ACTIVE] of this AO.
 
QACTIVE_THREAD_TYPE thread
 Port-dependent representation of the thread of the active object.
 
QACTIVE_OS_OBJ_TYPE osObject
 Port-dependent per-thread object.
 
QACTIVE_EQUEUE_TYPE eQueue
 Port-dependent event-queue type (often QEQueue)
 
- Protected Attributes inherited from QAsm
struct QAsmVtable const * vptr
 Virtual pointer inherited by all QAsm subclasses (see also SAS_QP_OO)
 
union QAsmAttr state
 Current state (pointer to the current state-handler function)
 
union QAsmAttr temp
 Temporary storage for target/act-table etc.
 

Additional Inherited Members

- Public Member Functions inherited from QActive
void QActive_setAttr (QActive *const me, uint32_t attr1, void const *attr2)
 
void QActive_start (QActive *const me, QPrioSpec const prioSpec, QEvtPtr *const qSto, uint_fast16_t const qLen, void *const stkSto, uint_fast16_t const stkSize, void const *const par)
 Starts execution of an active object and registers the object with the framework.
 
- Static Public Member Functions inherited from QActive
void QActive_psInit (QSubscrList *const subscrSto, enum_t const maxSignal)
 Publish event to all subscribers of a given signal e->sig
 
uint_fast16_t QActive_getQueueMin (uint_fast8_t const prio)
 This function returns the minimum of free entries of the given event queue.
 
- Static Protected Member Functions inherited from QAsm
static void QAsm_ctor (QAsm *const me)
 Constructor of the QAsm base class.
 

Detailed Description

Active object class (based on QMsm implementation strategy)

Details
QMActive represents an active object that uses the QMsm style state machine implementation strategy. This strategy requires the use of the QM modeling tool to generate state machine code automatically, but the code is faster than in the QHsm style implementation strategy and needs less run-time support (smaller event-processor).
Note
QMActive is not intended to be instantiated directly, but rather serves as the base class for derivation of active objects in the application.
Backward Traceability
  • SRS_QP_SM_21: QP Framework should provide a State Machine Implementation Strategy optimized for "automatic code generation"
  • SDS_QP_QF: QF Active Object Framework
  • SDS_QP_QMActive
  • QMsm: Hierarchical State Machine class (QMsm-style state machine implementation strategy)
Usage
The following example illustrates how to derive an active object from QMActive. Please note that the QActive member super is defined as the first member of the derived struct (see SAS_QP_OO). Please also note the call to the QMActive_ctor() in the Blinky subclass' constructor.
typedef struct {
QMActive super; // <=== inherit QMActive
QTimeEvt timeEvt; // to timeout the blinking
} Blinky;
. . .
void Blinky_ctor(Blinky * const me) {
// constructor of the superclass <===
QMActive_ctor(&me->super, Q_STATE_CAST(&Blinky_initial));
// constructor(s) of the members
QTimeEvt_ctorX(&me->timeEvt, &me->super, TIMEOUT_SIG, 0U);
}
#define Q_STATE_CAST(handler_)
Perform cast to QStateHandler.
Definition qp.h:172
Active object class (based on QMsm implementation strategy)
Definition qp.h:618
QActive super
Definition qp.h:619
void QMActive_ctor(QMActive *const me, QStateHandler const initial)
Constructor of QMActive class.
Definition qf_qmact.c:44
Time Event class.
Definition qp.h:629

Definition at line 618 of file qp.h.

Member Function Documentation

◆ QMActive_ctor()

void QMActive_ctor ( QMActive *const me,
QStateHandler const initial )
protected

Constructor of QMActive class.

Details
Performs the first step of active object initialization by assigning the virtual pointer and calling the superclass constructor.
Parameters
[in,out]mecurrent instance pointer (see SAS_QP_OO)
[in]initialpointer to the event to be dispatched to the MSM
Note
Must be called only ONCE before QASM_INIT().
Backward Traceability
  • QMActive: Active object class (based on QMsm implementation strategy)

Definition at line 44 of file qf_qmact.c.

Member Data Documentation

◆ super

QActive super
protected

Definition at line 619 of file qp.h.


The documentation for this class was generated from the following files: