47#error "Q_SPY must be defined to include qs.hpp"
58#define QS_TIME_SIZE 4U
248 return static_cast<std::uint_fast8_t
>(
m_prio);
253#if (QS_OBJ_PTR_SIZE == 2U)
254using QSObj = std::uint16_t;
258#if (QS_OBJ_PTR_SIZE == 4U)
259using QSObj = std::uint32_t;
263#if (QS_OBJ_PTR_SIZE == 8U)
264using QSObj = std::uint64_t;
268#if (QS_FUN_PTR_SIZE == 2U)
269using QSFun = std::uint16_t;
273#if (QS_FUN_PTR_SIZE == 4U)
274using QSFun = std::uint32_t;
278#if (QS_FUN_PTR_SIZE == 8U)
279using QSFun = std::uint64_t;
286#if (QS_CTR_SIZE == 2U)
287using QSCtr = std::uint16_t;
291#if (QS_CTR_SIZE == 4U)
292using QSCtr = std::uint32_t;
296#if (QS_TIME_SIZE == 2U)
301#if (QS_TIME_SIZE == 4U)
327#define QS_INIT(arg_) (QP::QS::onStartup(arg_))
330#define QS_EXIT() (QP::QS::onCleanup())
333#define QS_OUTPUT() (QP::QS::doOutput())
336#define QS_RX_INPUT() (QP::QS::doInput())
339#define QS_GLB_FILTER(rec_) \
340 (QP::QS::glbFilter_(static_cast<std::int_fast16_t>(rec_)))
343#define QS_LOC_FILTER(qsId_) \
344 (QP::QS::locFilter_(static_cast<std::int_fast16_t>(qsId_)))
347#define QS_BEGIN_ID(rec_, qsId_) \
348if (QS_GLB_CHECK_(rec_) && QS_LOC_CHECK_(qsId_)) { \
352 QP::QS::beginRec_(static_cast<std::uint_fast8_t>(rec_)); \
363#define QS_FLUSH() (QP::QS::onFlush())
366#define QS_BEGIN_INCRIT(rec_, qsId_) \
367if (QS_GLB_CHECK_(rec_) && QS_LOC_CHECK_(qsId_)) { \
368 QP::QS::beginRec_(rec_); \
372#define QS_END_INCRIT() } \
377#define QS_GLB_CHECK_(rec_) \
378((static_cast<std::uint_fast8_t>(QP::QS::filt_.glb[ \
379 static_cast<std::uint_fast8_t>(rec_) >> 3U]) \
380 & (static_cast<std::uint_fast8_t>(1U) \
381 << (static_cast<std::uint_fast8_t>(rec_) & 7U))) != 0U)
384#define QS_LOC_CHECK_(qsId_) \
385((static_cast<std::uint_fast8_t>(QP::QS::filt_.loc \
386 [static_cast<std::uint_fast8_t>(qsId_) >> 3U]) \
387 & (static_cast<std::uint_fast8_t>(1U) \
388 << (static_cast<std::uint_fast8_t>(qsId_) & 7U))) != 0U)
392#define QS_REC_DONE() (static_cast<void>(0))
396#define QS_I8(width_, data_) \
397(QP::QS::u8_fmt_(static_cast<std::uint8_t>( \
398 (static_cast<std::uint8_t>(((width_) << 4U) & 0x7U)) \
399 | static_cast<std::uint8_t>(QP::QS::I8_ENUM_T)), (data_)))
402#define QS_U8(width_, data_) \
403(QP::QS::u8_fmt_(static_cast<std::uint8_t>( \
404 (static_cast<std::uint8_t>((width_) << 4U)) \
405 | static_cast<std::uint8_t>(QP::QS::U8_T)), (data_)))
408#define QS_I16(width_, data_) \
409(QP::QS::u16_fmt_(static_cast<std::uint8_t>( \
410 (static_cast<std::uint8_t>((width_) << 4U)) \
411 | static_cast<std::uint8_t>(QP::QS::I16_T)), (data_)))
414#define QS_U16(width_, data_) \
415(QP::QS::u16_fmt_(static_cast<std::uint8_t>((((width_) << 4U)) \
416 | static_cast<std::uint8_t>(QP::QS::U16_T)), (data_)))
419#define QS_I32(width_, data_) \
421 static_cast<std::uint8_t>((static_cast<std::uint8_t>((width_) << 4U)) \
422 | static_cast<std::uint8_t>(QP::QS::I32_T)), (data_)))
425#define QS_U32(width_, data_) \
426(QP::QS::u32_fmt_(static_cast<std::uint8_t>( \
427 (static_cast<std::uint8_t>((width_) << 4U)) \
428 | static_cast<std::uint8_t>(QP::QS::U32_T)), (data_)))
431#define QS_I64(width_, data_) \
432(QP::QS::u64_fmt_(static_cast<std::uint8_t>( \
433 (static_cast<std::uint8_t>((width_) << 4U)) \
434 | static_cast<std::uint8_t>(QP::QS::I64_T)), (data_)))
437#define QS_U64(width_, data_) \
438(QP::QS::u64_fmt_(static_cast<std::uint8_t>( \
439 (static_cast<std::uint8_t>((width_) << 4U)) \
440 | static_cast<std::uint8_t>(QP::QS::U64_T)), (data_)))
443#define QS_F32(width_, data_) \
444(QP::QS::f32_fmt_(static_cast<std::uint8_t>( \
445 (static_cast<std::uint8_t>((width_) << 4U)) \
446 | static_cast<std::uint8_t>(QP::QS::F32_T)), (data_)))
449#define QS_F64(width_, data_) \
450(QP::QS::f64_fmt_(static_cast<std::uint8_t>( \
451 (static_cast<std::uint8_t>((width_) << 4U)) \
452 | static_cast<std::uint8_t>(QP::QS::F64_T)), (data_)))
455#define QS_STR(str_) (QP::QS::str_fmt_(str_))
458#define QS_MEM(mem_, size_) (QP::QS::mem_fmt_((mem_), (size_)))
461#define QS_ENUM(group_, value_) \
462 (QP::QS::u8_fmt_(static_cast<std::uint8_t>(0x80U | ((group_) << 4U)) \
463 | static_cast<std::uint8_t>(QP::QS::I8_ENUM_T),\
464 static_cast<std::uint8_t>(value_)))
467#if (QS_TIME_SIZE == 2U)
468#define QS_TIME_PRE_() (QP::QS::u16_raw_(QP::QS::onGetTime()))
472#if (QS_TIME_SIZE == 4U)
473#define QS_TIME_PRE_() (QP::QS::u32_raw_(QP::QS::onGetTime()))
477#if (QS_OBJ_PTR_SIZE == 2U)
478#define QS_OBJ(obj_) (QP::QS::u16_fmt_(QP::QS::OBJ_T, \
479 reinterpret_cast<std::uint16_t>(obj_)))
483#if (QS_OBJ_PTR_SIZE == 4U)
484#define QS_OBJ(obj_) (QP::QS::u32_fmt_(QP::QS::OBJ_T, \
485 reinterpret_cast<std::uint32_t>(obj_)))
489#if (QS_OBJ_PTR_SIZE == 8U)
490#define QS_OBJ(obj_) (QP::QS::u64_fmt_(QP::QS::OBJ_T, \
491 reinterpret_cast<std::uint64_t>(obj_)))
495#if (QS_FUN_PTR_SIZE == 2U)
496#define QS_FUN(fun_) (QP::QS::u16_fmt_(QP::QS::FUN_T, \
497 reinterpret_cast<std::uint16_t>(fun_)))
501#if (QS_FUN_PTR_SIZE == 4U)
502#define QS_FUN(fun_) (QP::QS::u32_fmt_(QP::QS::FUN_T, \
503 reinterpret_cast<std::uint32_t>(fun_)))
507#if (QS_FUN_PTR_SIZE == 8U)
508#define QS_FUN(fun_) (QP::QS::u64_fmt_(QP::QS::FUN_T, \
509 reinterpret_cast<std::uint64_t>(fun_)))
513#if (Q_SIGNAL_SIZE == 1U)
514#define QS_SIG(sig_, obj_) \
515 QP::QS::u8_fmt_(QP::QS::SIG_T, static_cast<std::uint8_t>(sig_)); \
516 QP::QS::obj_raw_(obj_)
520#if (Q_SIGNAL_SIZE == 2U)
521#define QS_SIG(sig_, obj_) \
522 QP::QS::u16_fmt_(QP::QS::SIG_T, static_cast<std::uint16_t>(sig_)); \
523 QP::QS::obj_raw_(obj_)
527#if (Q_SIGNAL_SIZE == 4U)
528#define QS_SIG(sig_, obj_) \
529 QP::QS::u32_fmt_(QP::QS::SIG_T, static_cast<std::uint32_t>(sig_)); \
530 QP::QS::obj_raw_(obj_)
534#define QS_SIG_DICTIONARY(sig_, obj_) \
535 (QP::QS::sig_dict_pre_((sig_), (obj_), #sig_))
538#define QS_OBJ_DICTIONARY(obj_) \
539 (QP::QS::obj_dict_pre_((obj_), #obj_))
542#define QS_OBJ_ARR_DICTIONARY(obj_, idx_) \
543 (QP::QS::obj_arr_dict_pre_((obj_), (idx_), #obj_))
546#define QS_FUN_DICTIONARY(fun_) \
547 (QP::QS::fun_dict_pre_( \
548 QP::QS::force_cast<void (*)()>(fun_), #fun_))
551#define QS_USR_DICTIONARY(rec_) \
552 (QP::QS::usr_dict_pre_((rec_), #rec_))
555#define QS_ENUM_DICTIONARY(value_, group_) \
556 (QP::QS::enum_dict_pre_((value_), (group_), #value_))
559#define QS_QF_CRIT_ENTRY() (QP::QS::crit_entry_pre_())
562#define QS_QF_CRIT_EXIT() (QP::QS::crit_exit_pre_())
565#define QS_QF_ISR_ENTRY(isrnest_, prio_) \
566 (QP::QS::isr_entry_pre_((isrnest_), (prio_)))
569#define QS_QF_ISR_EXIT(isrnest_, prio_) \
570 (QP::QS::isr_exit_pre_((isrnest_), (prio_)))
573#define QS_ONLY(code_) (code_)
576#define QS_ASSERTION(module_, id_, delay_) \
577 (QP::QS::assertion_pre_((module_), (id_), (delay_)))
580#define QS_EOD (static_cast<std::uint16_t>(0xFFFFU))
583#define QS_CMD (static_cast<std::uint8_t>(7U))
586#define QS_HEX_FMT (static_cast<std::uint8_t>(0x0FU))
590#define QS_CRIT_STAT QF_CRIT_STAT
595#define QS_CRIT_ENTRY() QF_CRIT_ENTRY()
600#define QS_CRIT_EXIT() QF_CRIT_EXIT()
605#define QS_MEM_SYS() QF_MEM_SYS()
610#define QS_MEM_APP() QF_MEM_APP()
621 void const * locFilter_AP;
627 std::uint8_t
volatile seq;
628 std::uint8_t
volatile chksum;
629 std::uint8_t
volatile critNest;
635void glbFilter_(std::int_fast16_t
const filter)
noexcept;
636void locFilter_(std::int_fast16_t
const filter)
noexcept;
638void beginRec_(std::uint_fast8_t
const rec)
noexcept;
639void endRec_()
noexcept;
641void u8_raw_(std::uint8_t
const d)
noexcept;
642void u8u8_raw_(std::uint8_t
const d1, std::uint8_t
const d2)
noexcept;
643void u16_raw_(std::uint16_t d)
noexcept;
644void u32_raw_(std::uint32_t d)
noexcept;
645void u64_raw_(std::uint64_t d)
noexcept;
646void obj_raw_(
void const *
const obj)
noexcept;
647void str_raw_(
char const * s)
noexcept;
649void u8_fmt_(std::uint8_t
const format, std::uint8_t
const d)
noexcept;
650void u16_fmt_(std::uint8_t format, std::uint16_t d)
noexcept;
651void u32_fmt_(std::uint8_t format,
652 std::uint32_t d)
noexcept;
653void u64_fmt_(std::uint8_t format, std::uint64_t d)
noexcept;
654void f32_fmt_(std::uint8_t format,
float32_t f)
noexcept;
655void f64_fmt_(std::uint8_t format,
float64_t d)
noexcept;
656void str_fmt_(
char const * s)
noexcept;
657void mem_fmt_(std::uint8_t
const * blk, std::uint8_t size)
noexcept;
659void sig_dict_pre_(
QSignal const sig,
void const *
const obj,
660 char const *
const name)
noexcept;
661void obj_dict_pre_(
void const *
const obj,
662 char const *
const name)
noexcept;
663void obj_arr_dict_pre_(
void const *
const obj,
664 std::uint_fast16_t
const idx,
665 char const *
const name)
noexcept;
667 char const *
const name)
noexcept;
668void usr_dict_pre_(
enum_t const rec,
char const *
const name)
noexcept;
669void enum_dict_pre_(
enum_t const value, std::uint8_t
const group,
670 char const *
const name)
noexcept;
672void assertion_pre_(
char const *
const module,
int_t const id,
673 std::uint32_t
const delay)
noexcept;
674void crit_entry_pre_()
noexcept;
675void crit_exit_pre_()
noexcept;
676void isr_entry_pre_(std::uint8_t
const isrnest,
677 std::uint8_t
const prio)
noexcept;
678void isr_exit_pre_(std::uint8_t
const isrnest,
679 std::uint8_t
const prio)
noexcept;
681void target_info_pre_(std::uint8_t
const isReset);
714template<
typename T_OUT,
typename T_IN>
725 std::uint8_t *
const sto,
726 std::uint_fast32_t
const stoSize)
noexcept;
729std::uint16_t
getByte() noexcept;
732std::uint8_t const *
getBlock(std::uint16_t * const pNbytes) noexcept;
790#define QUTEST_ON_POST 124
804 std::uint_fast8_t intLock;
807extern TestAttr tstPriv_;
810std::uint32_t getTestProbe_(QSpyFunPtr
const api)
noexcept;
831 void const *
const e,
832 std::uint_fast8_t
const qsId)
override;
834 QEvt const *
const e,
835 std::uint_fast8_t
const qsId)
override;
851 void const *
const e,
852 std::uint_fast8_t
const qsId)
override;
854 QEvt const *
const e,
855 std::uint_fast8_t
const qsId)
override;
859 QEvt const *
const e,
860 std::uint_fast16_t
const margin,
861 void const *
const sender)
noexcept;
862 void fakePostLIFO(
QEvt const *
const e)
noexcept;
870#define QS_TEST_PROBE_DEF(fun_) \
871 std::uint32_t const qs_tp_ = \
872 QP::QS::getTestProbe_(QP::QS::force_cast<void (*)()>(fun_));
874#define QS_TEST_PROBE(code_) \
875 if (qs_tp_ != 0U) { code_ }
877#define QS_TEST_PROBE_ID(id_, code_) \
878 if (qs_tp_ == static_cast<std::uint32_t>(id_)) { code_ }
880#define QS_TEST_PAUSE() (QP::QS::test_pause_())
885#define QS_TEST_PROBE_DEF(fun_)
886#define QS_TEST_PROBE(code_)
887#define QS_TEST_PROBE_ID(id_, code_)
888#define QS_TEST_PAUSE() (static_cast<void>(0))
900 std::uint32_t param1;
901 std::uint32_t param2;
902 std::uint32_t param3;
908 std::uint_fast8_t rate;
928 std::uint8_t data[16];
976extern RxAttr rxPriv_;
1008 std::uint8_t *
const sto,
1009 std::uint16_t
const stoSize)
noexcept;
1012inline bool rxPut(std::uint8_t
const b)
noexcept {
1016 QSCtr head = rxPriv_.head + 1U;
1017 if (head == rxPriv_.end) {
1020 if (head != rxPriv_.tail) {
1021 rxPriv_.buf[rxPriv_.head] = b;
1022 rxPriv_.head = head;
1035 std::uint8_t
const obj_kind,
1036 void *
const obj_ptr);
1039std::uint16_t rxGetNfree() noexcept;
1050 std::uint32_t param1,
1051 std::uint32_t param2,
1052 std::uint32_t param3);
Dummy Active Object for testing.
Active object class (based on the QHsm implementation strategy)
Abstract State Machine class (state machine interface)
Dummy HSM class for testing.
QS type for output filters (global and local)
void onTestPost(void const *sender, QActive *recipient, QEvt const *e, bool status)
std::uint16_t getByte() noexcept
bool rxPut(std::uint8_t const b) noexcept
preType
Enumerates data elements for app-specific trace records.
@ OBJ_T
object pointer format
@ U8_T
unsigned 8-bit integer format
@ U32_T
unsigned 32-bit integer format
@ I64_T
signed 64-bit integer format
@ F32_T
32-bit floating point format
@ I8_ENUM_T
signed 8-bit integer or enum format
@ FUN_T
function pointer format
@ U64_T
unsigned 64-bit integer format
@ STR_T
zero-terminated ASCII string format
@ U16_T
unsigned 16-bit integer format
@ MEM_T
up to 255-bytes memory block format
@ I32_T
signed 32-bit integer format
@ I16_T
signed 16-bit integer format
@ F64_T
64-bit floating point format
@ SIG_T
event signal format
OSpyObjCombnation
Object combinations for QS-RX.
@ SM_AO_OBJ
combination of SM and AO
std::uint8_t const * getBlock(std::uint16_t *const pNbytes) noexcept
T_OUT force_cast(T_IN in)
QSpyObjKind
Kinds of objects used QS-RX.
@ SM_OBJ
state machine object
@ TE_OBJ
time event object
@ AP_OBJ
generic Application-specific object
@ MP_OBJ
event pool object
void initBuf(std::uint8_t *const sto, std::uint_fast32_t const stoSize) noexcept
bool onStartup(void const *arg)
QSpyUserOffsets
QS user record group offsets for QS_GLB_FILTER()
@ QS_USER4
offset for User Group 4
@ QS_USER2
offset for User Group 2
@ QS_USER0
offset for User Group 0
@ QS_USER1
offset for User Group 1
@ QS_USER3
offset for User Group 3
@ QS_USER
the first record available to QS users
QSpyIdOffsets
QS ID offsets for QS_LOC_FILTER()
@ QS_EQ_ID
offset for event-queue IDs
@ QS_EP_ID
offset for event-pool IDs
@ QS_AP_ID
offset for Application-specific IDs
@ QS_AO_ID
offset for AO priorities
QSpyIdGroups
QS ID groups for QS_LOC_FILTER()
@ QS_EQ_IDS
event-queue IDs
@ QS_EP_IDS
event-pool IDs
@ QS_AP_IDS
Application-specific IDs.
@ QS_AO_IDS
AO IDs (priorities)
QSpyGroups
QS-TX record groups for QS_GLB_FILTER()
@ QS_MTX_RECORDS
Mutex QS records.
@ QS_UA_RECORDS
All User records.
@ QS_SEM_RECORDS
Semaphore QS records.
@ QS_ALL_RECORDS
all maskable QS records
@ QS_U0_RECORDS
User Group 100-104 records.
@ QS_EQ_RECORDS
Event Queues QS records.
@ QS_SC_RECORDS
Scheduler QS records.
@ QS_U2_RECORDS
User Group 110-114 records.
@ QS_SM_RECORDS
State Machine QS records.
@ QS_U4_RECORDS
User Group 120-124 records.
@ QS_U3_RECORDS
User Group 115-119 records.
@ QS_AO_RECORDS
Active Object QS records.
@ QS_TE_RECORDS
Time Events QS records.
@ QS_U1_RECORDS
User Group 105-109 records.
@ QS_MP_RECORDS
Memory Pools QS records.
@ QS_QF_RECORDS
QF QS records.
QSpyPre
pre-defined QS record IDs
@ QS_QEP_DISPATCH
an event was dispatched (begin of RTC step)
@ QS_FUN_DICT
function dictionary entry
@ QS_ASSERT_FAIL
assertion failed in the code
@ QS_TARGET_DONE
reports completion of a user callback
@ QS_QUERY_DATA
reports the data from "current object" query
@ QS_RX_STATUS
reports QS data receive status
@ QS_SCHED_LOCK
scheduler was locked
@ QS_QEP_STATE_ENTRY
a state was entered
@ QS_QF_TICK
QTimeEvt tick was called.
@ QS_QF_ACTIVE_RECALL
AO recalled an event.
@ QS_QF_ACTIVE_GET_LAST
AO got an event and its queue is empty.
@ QS_SEM_SIGNAL
a semaphore was signaled
@ QS_QF_RUN
QF_run() was entered.
@ QS_QF_ACTIVE_UNSUBSCRIBE
an AO unsubscribed to an event
@ QS_MTX_LOCK_ATTEMPT
a mutex lock was attempted
@ QS_QF_TIMEEVT_ARM
a time event was armed
@ QS_QF_ACTIVE_RECALL_ATTEMPT
AO attempted to recall an event.
@ QS_QF_TIMEEVT_POST
a time event posted itself directly to an AO
@ QS_QEP_STATE_EXIT
a state was exited
@ QS_SEM_TAKE
a semaphore was taken by a thread
@ QS_TEST_PAUSED
test has been paused
@ QS_USR_DICT
user QS record dictionary entry
@ QS_QF_TIMEEVT_AUTO_DISARM
a time event expired and was disarmed
@ QS_QF_EQUEUE_POST_ATTEMPT
attempt to post evt to QEQueue failed
@ QS_QEP_TRAN_HIST
a tran to history was taken
@ QS_QF_TIMEEVT_REARM
rearming of a time event
@ QS_QF_INT_ENABLE
interrupts were enabled
@ QS_ENUM_DICT
enumeration dictionary entry
@ QS_TEST_PROBE_GET
reports that Test-Probe has been used
@ QS_SCHED_NEXT
scheduler started next task
@ QS_QF_NEW
new event was created
@ QS_QEP_IGNORED
an event was ignored (silently discarded)
@ QS_PEEK_DATA
reports the data from the PEEK query
@ QS_QEP_UNHANDLED
an event was un-handled due to a guard
@ QS_SEM_BLOCK
a semaphore blocked a thread
@ QS_QF_EQUEUE_GET_LAST
get the last event from the queue
@ QS_MTX_BLOCK_ATTEMPT
a mutex blocking was attempted
@ QS_QF_TIMEEVT_DISARM
true disarming of an armed time event
@ QS_QF_EQUEUE_GET
get an event and queue still not empty
@ QS_QF_EQUEUE_POST_LIFO
an event was posted (LIFO) to a raw queue
@ QS_QF_GC
garbage collection
@ QS_SIG_DICT
signal dictionary entry
@ QS_QF_ACTIVE_DEFER
AO deferred an event.
@ QS_QF_DELETE_REF
an event reference is about to be deleted
@ QS_QF_ACTIVE_POST_ATTEMPT
attempt to post an evt to AO failed
@ QS_OBJ_DICT
object dictionary entry
@ QS_MTX_BLOCK
a mutex blocked a thread
@ QS_QF_CRIT_ENTRY
critical section was entered
@ QS_QF_CRIT_EXIT
critical section was exited
@ QS_QF_ACTIVE_SUBSCRIBE
an AO subscribed to an event
@ QS_MTX_UNLOCK_ATTEMPT
a mutex unlock was attempted
@ QS_QF_ISR_ENTRY
an ISR was entered
@ QS_TARGET_INFO
reports the Target information
@ QS_QF_NEW_ATTEMPT
an attempt to allocate an event failed
@ QS_QF_MPOOL_GET
a memory block was removed from memory pool
@ QS_QF_GC_ATTEMPT
garbage collection attempt
@ QS_QF_INT_DISABLE
interrupts were disabled
@ QS_QEP_TRAN_XP
a tran to exit point out of a submachine
@ QS_QF_ACTIVE_POST_LIFO
an event was posted (LIFO) directly to AO
@ QS_SCHED_UNLOCK
scheduler was unlocked
@ QS_SCHED_PREEMPT
scheduler asynchronously preempted a task
@ QS_QF_ACTIVE_GET
AO got an event and its queue is not empty.
@ QS_MTX_UNLOCK
a mutex was unlocked
@ QS_QF_ACTIVE_POST
an event was posted (FIFO) directly to AO
@ QS_QF_ISR_EXIT
an ISR was exited
@ QS_QF_EQUEUE_POST
an event was posted (FIFO) to a raw queue
@ QS_EMPTY
QS record for cleanly starting a session.
@ QS_SCHED_RESTORE
scheduler restored preempted task
@ QS_QF_PUBLISH
an event was published to active objects
@ QS_PRE_MAX
the # predefined signals
@ QS_QEP_TRAN_EP
a tran to entry point into a submachine
@ QS_SCHED_IDLE
scheduler restored the idle task
@ QS_QEP_STATE_INIT
an initial transition was taken in a state
@ QS_QEP_TRAN
a regular transition was taken
@ QS_SEM_BLOCK_ATTEMPT
a semaphore blocked was attempted
@ QS_QEP_INIT_TRAN
the top-most initial transition was taken
@ QS_QF_TIMEEVT_DISARM_ATTEMPT
attempt to disarm a disarmed QTimeEvt
@ QS_QEP_INTERN_TRAN
an internal transition was taken
@ QS_QF_MPOOL_GET_ATTEMPT
attempt to get a memory block failed
@ QS_MTX_LOCK
a mutex was locked
@ QS_QF_NEW_REF
new event reference was created
@ QS_QF_MPOOL_PUT
a memory block was returned to memory pool
QUTest Test-Probe attributes.
QS ID type for applying local filtering.
std::uint_fast8_t getPrio() const noexcept
std::uint8_t m_prio
prio. (qsId) for the QS "local filter"