QP/C  8.0.2
Real-Time Embedded Framework
Loading...
Searching...
No Matches
QTicker Class Reference

"Ticker" Active Object class More...

#include "qp.h"

Inheritance diagram for QTicker:
QActive QAsm

Public Member Functions

void QTicker_ctor (QTicker *const me, uint_fast8_t const tickRate)
 
- 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)
 

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 Object Orientation)
 
union QAsmAttr state
 Current state (pointer to the current state-handler function)
 
union QAsmAttr temp
 Temporary storage for target/act-table etc.
 

Private Member Functions

void QTicker_init_ (QAsm *const me, void const *const par, uint_fast8_t const qsId)
 
void QTicker_dispatch_ (QAsm *const me, QEvt const *const e, uint_fast8_t const qsId)
 
void QTicker_trig_ (QActive *const me, void const *const sender)
 

Additional Inherited Members

- Static Public Member Functions inherited from QActive
void QActive_psInit (QSubscrList *const subscrSto, enum_t const maxSignal)
 
- Protected Member Functions inherited from QActive
void QActive_ctor (QActive *const me, QStateHandler const initial)
 
void QActive_stop (QActive *const me)
 
void QActive_subscribe (QActive const *const me, enum_t const sig)
 
void QActive_unsubscribe (QActive const *const me, enum_t const sig)
 
void QActive_unsubscribeAll (QActive const *const me)
 
bool QActive_defer (QActive const *const me, struct QEQueue *const eq, QEvt const *const e)
 
bool QActive_recall (QActive *const me, struct QEQueue *const eq)
 
uint_fast16_t QActive_flushDeferred (QActive const *const me, struct QEQueue *const eq, uint_fast16_t const num)
 
- Static Protected Member Functions inherited from QAsm
static void QAsm_ctor (QAsm *const me)
 

Detailed Description

"Ticker" Active Object class

Details

QTicker is a QActive subclass specialized to process QF system clock tick at a specified tick rate. Placing system clock tick processing in an active object allows you to remove the non-deterministic QTIMEEVT_TICK_X() processing from the interrupt level and move it into the thread-level, where you can prioritize it as low as you wish.

Backward Traceability
Usage

The following example illustrates use of QTicker active objects.

Attention
The QTicker active objects must be started without any queue buffer and without any stack (see QActive_start() calls in the code below).
// bsp.h -----------------
// opaque pointers to the ticker active objects in the application
extern QActive * const the_Ticker0; // "ticker" pointer for clock rate 0
extern QActive * const the Ticker1; // "ticker" pointer for clock rate 1
// bsp.c -----------------
static QTicker l_ticker0; // "ticker" instance for clock rate 0
QActive * const the_Ticker0 = &l_ticker0.super;
static QTicker l_ticker1; // "ticker" instance for clock rate 1
QActive * const the_Ticker1 = &l_ticker1.super;
// clock tick ISR for tick rate 0
void SysTick_Handler(void) {
. . .
QTICKER_TRIG(the_Ticker0, &qs_tick0_id);
. . .
}
// clock tick ISR for tick rate 1
void Timer0A_IRQHandler(void) {
. . .
QTICKER_TRIG(the_Ticker1, &qs_tick1_id);
. . .
}
// main.c ---------------
main () {
. . .
QTicker_ctor(&l_ticker0, 0U); // active object for tick rate 0
QActive_start(the_Ticker0,
1U, // priority
0, 0, 0, 0, 0); // must be always 0 for ticker AO
QTicker_ctor(&l_ticker1, 1U); // active object for tick rate 1
QActive_start(the_Ticker1,
2U, // priority
0, 0, 0, 0, 0); // must be always 0 for ticker AO
. . .
}
#define QTICKER_TRIG(ticker_, sender_)
Asynchronously trigger the QTicker AO to perform tick processing.
Definition qp.h:816
Active object class (based on the QHsm implementation strategy)
Definition qp.h:507
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)
Definition qv.c:214
"Ticker" Active Object class
Definition qp.h:694
QActive super
Definition qp.h:695
void QTicker_ctor(QTicker *const me, uint_fast8_t const tickRate)
Definition qf_actq.c:351

Definition at line 694 of file qp.h.

Member Function Documentation

◆ QTicker_ctor()

void QTicker_ctor ( QTicker *const me,
uint_fast8_t const tickRate )

Definition at line 351 of file qf_actq.c.

◆ QTicker_init_()

void QTicker_init_ ( QAsm *const me,
void const *const par,
uint_fast8_t const qsId )
private

Definition at line 372 of file qf_actq.c.

◆ QTicker_dispatch_()

void QTicker_dispatch_ ( QAsm *const me,
QEvt const *const e,
uint_fast8_t const qsId )
private

Definition at line 391 of file qf_actq.c.

◆ QTicker_trig_()

void QTicker_trig_ ( QActive *const me,
void const *const sender )
private

Definition at line 419 of file qf_actq.c.

Member Data Documentation

◆ super

QActive super
protected

Definition at line 695 of file qp.h.


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