QTools  6.9.4
Collection of Host-Based Tools
qs_copy.h
Go to the documentation of this file.
1 
40 #ifndef QS_H
41 #define QS_H
42 
43 #ifndef Q_SPY
44  #error "Q_SPY must be defined to include qs.h"
45 #endif
46 
47 /****************************************************************************/
63  /* [0] QS session (not maskable) */
66  /* [1] SM records */
77  /* [10] Active Object (AO) records */
88  /* [19] Event Queue (EQ) records */
94  /* [23] Framework (QF) records */
97  /* [24] Memory Pool (MP) records */
101  /* [26] Additional Framework (QF) records */
109  /* [32] Time Event (TE) records */
117  /* [38] Additional Framework (QF) records */
126  /* [45] Additional Active Object (AO) records */
129  /* [46] Additional Event Queue (EQ) records */
132  /* [47] Additional Memory Pool (MP) records */
135  /* [48] Scheduler (SC) records */
144  /* [55] Additional QEP records */
149  /* [58] Miscellaneous QS records (not maskable) */
164  /* [71] Reserved QS records */
194 
195  /* [100] Application-specific (User) QS records */
196  QS_USER
197 };
198 
215 };
216 
219  QS_USER0 = (enum_t)QS_USER,
220  QS_USER1 = (enum_t)QS_USER0 + 5,
221  QS_USER2 = (enum_t)QS_USER1 + 5,
222  QS_USER3 = (enum_t)QS_USER2 + 5,
223  QS_USER4 = (enum_t)QS_USER3 + 5
224 };
225 
228  QS_AO_ID = 0,
229  QS_EP_ID = 64,
230  QS_EQ_ID = 80,
231  QS_AP_ID = 96,
232 };
233 
236  QS_ALL_IDS = 0xF0,
237  QS_AO_IDS = (0x80 + (enum_t)QS_AO_ID),
238  QS_EP_IDS = (0x80 + (enum_t)QS_EP_ID),
239  QS_EQ_IDS = (0x80 + (enum_t)QS_EQ_ID),
240  QS_AP_IDS = (0x80 + (enum_t)QS_AP_ID),
241 };
242 
243 #ifndef QS_TIME_SIZE
244 
254  #define QS_TIME_SIZE 4U
255 #endif
256 
257 #if (QS_TIME_SIZE == 1U)
258  typedef uint8_t QSTimeCtr;
259  #define QS_TIME_PRE_() (QS_u8_raw_(QS_onGetTime()))
260 #elif (QS_TIME_SIZE == 2U)
261  typedef uint16_t QSTimeCtr;
262  #define QS_TIME_PRE_() (QS_u16_raw_(QS_onGetTime()))
263 #elif (QS_TIME_SIZE == 4U)
267  typedef uint32_t QSTimeCtr;
268 
270  #define QS_TIME_PRE_() (QS_u32_raw_(QS_onGetTime()))
271 #else
272  #error "QS_TIME_SIZE defined incorrectly, expected 1, 2, or 4"
273 #endif
274 
275 
276 /****************************************************************************/
277 /* QS services. */
278 
280 void QS_initBuf(uint8_t sto[], uint_fast16_t stoSize);
281 
283 void QS_glbFilter_(int_fast16_t const filter);
284 
286 void QS_locFilter_(int_fast16_t const filter);
287 
289 void QS_beginRec_(uint_fast8_t rec);
290 
292 void QS_endRec_(void);
293 
294 /* unformatted (raw) data elements output ..................................*/
296 void QS_u8_raw_(uint8_t d);
297 
299 void QS_2u8_raw_(uint8_t d1, uint8_t d2);
300 
302 void QS_u16_raw_(uint16_t d);
303 
305 void QS_u32_raw_(uint32_t d);
306 
308 void QS_str_raw_(char_t const *str);
309 
310 /* formatted data elements output ..........................................*/
312 void QS_u8_fmt_(uint8_t format, uint8_t d);
313 
315 void QS_u16_fmt_(uint8_t format, uint16_t d);
316 
318 void QS_u32_fmt_(uint8_t format, uint32_t d);
319 
321 void QS_f32_fmt_(uint8_t format, float32_t f);
322 
324 void QS_f64_fmt_(uint8_t format, float64_t d);
325 
327 void QS_obj_raw_(void const * const obj);
328 
330 void QS_str_fmt_(char_t const *str);
331 
333 void QS_mem_fmt_(uint8_t const *blk, uint8_t size);
334 
336 void QS_u64_raw_(uint64_t d);
337 
339 void QS_u64_fmt_(uint8_t format, uint64_t d);
340 
341 /* QS buffer access *********************************************************/
343 uint16_t QS_getByte(void);
344 
346 #define QS_EOD ((uint16_t)0xFFFFU)
347 
349 uint8_t const *QS_getBlock(uint16_t *pNbytes);
350 
351 
352 /* platform-specific callback functions, need to be implemented by clients */
353 
371 uint8_t QS_onStartup(void const *arg);
372 
381 void QS_onCleanup(void);
382 
391 void QS_onFlush(void);
392 
412 
413 
414 /****************************************************************************/
415 /* Macros for adding QS instrumentation to the client code */
416 
424 #define QS_INIT(arg_) (QS_onStartup(arg_))
425 
433 #define QS_EXIT() (QS_onCleanup())
434 
443 #define QS_FLUSH() (QS_onFlush())
444 
454 #define QS_GLB_FILTER(rec_) (QS_glbFilter_((int_fast16_t)(rec_)))
455 
465 #define QS_LOC_FILTER(qs_id_) (QS_locFilter_((int_fast16_t)(qs_id_)))
466 
467 
468 /****************************************************************************/
469 /* Facilities for QS ciritical section */
470 
471 /* QS-specific critical section */
472 #ifdef QS_CRIT_ENTRY /* separate QS critical section defined? */
473 
474 #ifndef QS_CRIT_STAT_TYPE
475  #define QS_CRIT_STAT_
476  #define QS_CRIT_E_() QS_CRIT_ENTRY(dummy)
477  #define QS_CRIT_X_() QS_CRIT_EXIT(dummy); QS_REC_DONE()
478 #else
479  #define QS_CRIT_STAT_ QS_CRIT_STAT_TYPE critStat_;
480  #define QS_CRIT_E_() QS_CRIT_ENTRY(critStat_)
481  #define QS_CRIT_X_() QS_CRIT_EXIT(critStat_); QS_REC_DONE()
482 #endif /* QS_CRIT_STAT_TYPE */
483 
484 #else /* separate QS critical section not defined--use the QF definition */
485 
486 #ifndef QF_CRIT_STAT_TYPE
498  #define QS_CRIT_STAT_
499 
510  #define QS_CRIT_E_() QF_CRIT_ENTRY(dummy)
511 
522  #define QS_CRIT_X_() QF_CRIT_EXIT(dummy); QS_REC_DONE()
523 
524 #elif (!defined QS_CRIT_STAT_)
525 
526  #define QS_CRIT_STAT_ QF_CRIT_STAT_TYPE critStat_;
527  #define QS_CRIT_E_() QF_CRIT_ENTRY(critStat_)
528  #define QS_CRIT_X_() QF_CRIT_EXIT(critStat_); QS_REC_DONE()
529 
530 #endif /* simple unconditional interrupt disabling used */
531 
532 #endif /* separate QS critical section not defined */
533 
534 
535 /****************************************************************************/
536 /* Macros to generate application-specific (user) QS records */
537 
539 #define QS_BEGIN_NOCRIT(rec_, qs_id_) \
540  if (QS_GLB_CHECK_(rec_) && QS_LOC_CHECK_(qs_id_)) { \
541  QS_beginRec_((uint_fast8_t)(rec_)); \
542  QS_TIME_PRE_(); {
543 
545 #define QS_END_NOCRIT() } \
546  QS_endRec_(); \
547  }
548 
549 #ifndef QS_REC_DONE
551  #define QS_REC_DONE() ((void)0)
552 #endif /* QS_REC_DONE */
553 
555 #define QS_GLB_CHECK_(rec_) \
556  (((uint_fast8_t)QS_priv_.glbFilter[(uint_fast8_t)(rec_) >> 3U] \
557  & ((uint_fast8_t)1U << ((uint_fast8_t)(rec_) & 7U))) != 0U)
558 
560 #define QS_LOC_CHECK_(qs_id_) \
561  (((uint_fast8_t)QS_priv_.locFilter[(uint_fast8_t)(qs_id_) >> 3U] \
562  & ((uint_fast8_t)1U << ((uint_fast8_t)(qs_id_) & 7U))) != 0U)
563 
574 #define QS_BEGIN_ID(rec_, qs_id_) \
575  if (QS_GLB_CHECK_(rec_) && QS_LOC_CHECK_(qs_id_)) { \
576  QS_CRIT_STAT_ \
577  QS_CRIT_E_(); \
578  QS_beginRec_((uint_fast8_t)(rec_)); \
579  QS_TIME_PRE_(); {
580 
585 #define QS_END() } \
586  QS_endRec_(); \
587  QS_CRIT_X_(); \
588  }
589 
596 enum {
612  QS_HEX_FMT
613 };
614 
616 #define QS_I8(width_, data_) \
617  (QS_u8_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_I8_T, (data_)))
618 
620 #define QS_U8(width_, data_) \
621  (QS_u8_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_U8_T, (data_)))
622 
624 #define QS_I16(width_, data_) \
625  (QS_u16_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_I16_T, (data_)))
626 
628 #define QS_U16(width_, data_) \
629  (QS_u16_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_U16_T, (data_)))
630 
632 #define QS_I32(width_, data_) \
633  (QS_u32_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_I32_T, (data_)))
634 
636 #define QS_U32(width_, data_) \
637  (QS_u32_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_U32_T, (data_)))
638 
640 #define QS_F32(width_, data_) \
641  (QS_f32_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_F32_T, (data_)))
642 
644 #define QS_F64(width_, data_) \
645  (QS_f64_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_F64_T, (data_)))
646 
648 #define QS_I64(width_, data_) \
649  (QS_u64_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_I64_T, (data_)))
650 
652 #define QS_U64(width_, data_) \
653  (QS_u64_fmt_((uint8_t)(((width_) << 4)) | (uint8_t)QS_U64_T, (data_)))
654 
656 #define QS_STR(str_) (QS_str_fmt_((str_)))
657 
659 #define QS_MEM(mem_, size_) (QS_mem_fmt_((mem_), (size_)))
660 
661 
662 #if (QS_OBJ_PTR_SIZE == 1U)
663  #define QS_OBJ(obj_) (QS_u8_fmt_(QS_OBJ_T, (uint8_t)(obj_)))
664 #elif (QS_OBJ_PTR_SIZE == 2U)
665  #define QS_OBJ(obj_) (QS_u16_fmt_(QS_OBJ_T, (uint16_t)(obj_)))
666 #elif (QS_OBJ_PTR_SIZE == 4U)
667  #define QS_OBJ(obj_) (QS_u32_fmt_(QS_OBJ_T, (uint32_t)(obj_)))
668 #elif (QS_OBJ_PTR_SIZE == 8U)
669  #define QS_OBJ(obj_) (QS_u64_fmt_(QS_OBJ_T, (uint64_t)(obj_)))
670 #else
672  #define QS_OBJ(obj_) (QS_u32_fmt_(QS_OBJ_T, (uint32_t)(obj_)))
673 #endif
674 
675 
676 #if (QS_FUN_PTR_SIZE == 1U)
677  #define QS_FUN(fun_) (QS_u8_fmt_(QS_FUN_T, (uint8_t)(fun_)))
678 #elif (QS_FUN_PTR_SIZE == 2U)
679  #define QS_FUN(fun_) (QS_u16_fmt_(QS_FUN_T, (uint16_t)(fun_)))
680 #elif (QS_FUN_PTR_SIZE == 4U)
681  #define QS_FUN(fun_) (QS_u32_fmt_(QS_FUN_T, (uint32_t)(fun_)))
682 #elif (QS_FUN_PTR_SIZE == 8U)
683  #define QS_FUN(fun_) (QS_u64_fmt_(QS_FUN_T, (uint64_t)(fun_)))
684 #else
686  #define QS_FUN(fun_) (QS_u32_fmt_(QS_FUN_T, (uint32_t)(fun_)))
687 #endif
688 
689 #if (Q_SIGNAL_SIZE == 1)
690 
691  #define QS_SIG(sig_, obj_) \
692  QS_u8_fmt_(QS_SIG_T, (sig_)); \
693  QS_obj_raw_(obj_)
694 
695 #elif (Q_SIGNAL_SIZE == 2)
696 
697  #define QS_SIG(sig_, obj_) \
698  QS_u16_fmt_(QS_SIG_T, (sig_)); \
699  QS_obj_raw_(obj_)
700 
701 #elif (Q_SIGNAL_SIZE == 4)
702 
703  #define QS_SIG(sig_, obj_) \
704  QS_u32_fmt_(QS_SIG_T, (sig_)); \
705  QS_obj_raw_(obj_)
706 
707 #else
711  #define QS_SIG(sig_, obj_) \
712  QS_u16_fmt_(QS_SIG_T, (sig_)); \
713  QS_obj_raw_(obj_)
714 
715 #endif
716 
717 
718 /****************************************************************************/
719 /* Dictionary trace records */
720 
762 #define QS_SIG_DICTIONARY(sig_, obj_) \
763  (QS_sig_dict_pre_((sig_), (obj_), #sig_))
764 
779 #define QS_OBJ_DICTIONARY(obj_) \
780  (QS_obj_dict_pre_((obj_), #obj_))
781 
795 #define QS_FUN_DICTIONARY(fun_) \
796  (QS_fun_dict_pre_((void (*)(void))(fun_), #fun_))
797 
804 #define QS_USR_DICTIONARY(rec_) \
805  (QS_usr_dict_pre_((rec_), #rec_))
806 
808 void QS_sig_dict_pre_(enum_t const sig, void const * const obj,
809  char_t const *name);
810 
812 void QS_obj_dict_pre_(void const * const obj,
813  char_t const *name);
814 
816 void QS_fun_dict_pre_(void (* const fun)(void),
817  char_t const *name);
818 
820 void QS_usr_dict_pre_(enum_t const rec,
821  char_t const * const name);
822 
823 
824 /****************************************************************************/
825 /* Miscellaneous pre-formatted trace records used in applications */
826 
832 void QS_ASSERTION(char_t const * const module,
833  int_t const loc,
834  uint32_t delay);
835 
837 void QF_QS_CRIT_ENTRY(void);
838 
840 void QF_QS_CRIT_EXIT(void);
841 
843 void QF_QS_ISR_ENTRY(uint8_t const isrnest, uint8_t const prio);
844 
846 void QF_QS_ISR_EXIT(uint8_t const isrnest, uint8_t const prio);
847 
849 #define QF_QS_ACTION(act_) (act_)
850 
851 
852 /****************************************************************************/
853 /* QS private data (the TX channel) */
854 typedef uint_fast16_t QSCtr;
864  MAX_OBJ
865 };
866 
868  SM_AO_OBJ = (enum_t)MAX_OBJ
869 };
870 
872 typedef struct {
873  uint8_t glbFilter[16];
874  uint8_t locFilter[16];
875  void const *locFilter_AP;
876  uint8_t *buf;
881  uint8_t seq;
882  uint8_t chksum;
884  uint8_t critNest;
885 } QSPrivAttr;
886 
887 extern QSPrivAttr QS_priv_;
888 
889 
890 /****************************************************************************/
891 /* QS receive channel */
892 
911  QS_RX_EVENT
912 };
913 
915 void QS_rxInitBuf(uint8_t sto[], uint16_t stoSize);
916 
918 void QS_rxParse(void);
919 
921 bool QS_RX_PUT(uint8_t const b);
922 
924 uint16_t QS_rxGetNfree(void);
925 
927 void QS_setCurrObj(uint8_t obj_kind, void *obj_ptr);
928 
930 void QS_queryCurrObj(uint8_t obj_kind);
931 
933 void QS_onReset(void);
934 
936 void QS_onCommand(uint8_t cmdId, uint32_t param1,
937  uint32_t param2, uint32_t param3);
938 
942 #define QS_OUTPUT() (QS_output())
943 
947 #define QS_RX_INPUT() (QS_rx_input())
948 
949 /****************************************************************************/
950 /* Facilities for use in QUTest only */
951 #ifdef Q_UTEST
953  void QS_onTestSetup(void);
954 
956  void QS_onTestTeardown(void);
957 
959  void QS_onTestLoop(void);
960 
962  void QS_onTestEvt(QEvt *e);
963 
965  void QS_onTestPost(void const *sender, QActive *recipient,
966  QEvt const *e, bool status);
967 
970 
972  void QS_tickX_(uint_fast8_t const tickRate, void const * const sender);
973 
975  uint32_t QS_getTestProbe_(void (* const api)(void));
976 
978  #define QS_TEST_PROBE_DEF(fun_) \
979  uint32_t const qs_tp_ = QS_getTestProbe_((void (*)(void))(fun_));
980 
982  #define QS_TEST_PROBE(code_) \
983  if (qs_tp_ != 0U) { code_ }
984 
986  #define QS_TEST_PROBE_ID(id_, code_) \
987  if (qs_tp_ == (uint32_t)(id_)) { code_ }
988 
990  #define QS_TEST_PAUSE() do { \
991  QS_beginRec_((uint_fast8_t)QS_TEST_PAUSED); \
992  QS_endRec_(); \
993  QS_onTestLoop(); \
994  } while (false)
995 
997  QUTEST_ON_POST = 124
998  };
999 
1000  /* interrupt nesting up-down counter */
1001  extern uint8_t volatile QF_intNest;
1002 
1003  /************************************************************************/
1010  typedef struct {
1011  QActive super; /*< inherit QActive */
1012  } QActiveDummy;
1013 
1016 
1017 #else /* Q_UTEST not defined */
1018 
1019  /* dummy definitions when not building for QUTEST */
1020  #define QS_TEST_PROBE_DEF(fun_)
1021  #define QS_TEST_PROBE(code_)
1022  #define QS_TEST_PROBE_ID(id_, code_)
1023  #define QS_TEST_PAUSE() ((void)0)
1024 
1025 #endif /* Q_UTEST */
1026 
1027 #endif /* QS_H */
1028 
QSPrivAttr QS_priv_
@ QS_STR_T
Definition: qs_copy.h:605
@ QS_U64_T
Definition: qs_copy.h:611
@ QS_MEM_T
Definition: qs_copy.h:606
@ QS_OBJ_T
Definition: qs_copy.h:608
@ QS_F32_T
Definition: qs_copy.h:603
@ QS_SIG_T
Definition: qs_copy.h:607
@ QS_HEX_FMT
Definition: qs_copy.h:612
@ QS_U8_T
Definition: qs_copy.h:598
@ QS_I64_T
Definition: qs_copy.h:610
@ QS_I8_T
Definition: qs_copy.h:597
@ QS_FUN_T
Definition: qs_copy.h:609
@ QS_F64_T
Definition: qs_copy.h:604
@ QS_U32_T
Definition: qs_copy.h:602
@ QS_I32_T
Definition: qs_copy.h:601
@ QS_I16_T
Definition: qs_copy.h:599
@ QS_U16_T
Definition: qs_copy.h:600
void QS_locFilter_(int_fast16_t const filter)
void QActiveDummy_ctor(QActiveDummy *const me)
void QS_onReset(void)
OSpyObjCombnation
Definition: qs_copy.h:867
@ SM_AO_OBJ
Definition: qs_copy.h:868
QActive super
Definition: qs_copy.h:1011
void QS_onTestPost(void const *sender, QActive *recipient, QEvt const *e, bool status)
uint8_t volatile QF_intNest
void QS_endRec_(void)
void const * locFilter_AP
Definition: qs_copy.h:875
void QS_onCleanup(void)
uint8_t * buf
Definition: qs_copy.h:876
QSpyIdOffsets
Definition: qs_copy.h:227
@ QS_EQ_ID
Definition: qs_copy.h:230
@ QS_EP_ID
Definition: qs_copy.h:229
@ QS_AP_ID
Definition: qs_copy.h:231
@ QS_AO_ID
Definition: qs_copy.h:228
uint8_t chksum
Definition: qs_copy.h:882
void QS_onTestSetup(void)
void QS_ASSERTION(char_t const *const module, int_t const loc, uint32_t delay)
uint8_t seq
Definition: qs_copy.h:881
void QF_QS_ISR_ENTRY(uint8_t const isrnest, uint8_t const prio)
QSpyRecordGroups
Definition: qs_copy.h:200
@ QS_U2_RECORDS
Definition: qs_copy.h:211
@ QS_MP_RECORDS
Definition: qs_copy.h:205
@ QS_TE_RECORDS
Definition: qs_copy.h:206
@ QS_SM_RECORDS
Definition: qs_copy.h:202
@ QS_U0_RECORDS
Definition: qs_copy.h:209
@ QS_U3_RECORDS
Definition: qs_copy.h:212
@ QS_U4_RECORDS
Definition: qs_copy.h:213
@ QS_AO_RECORDS
Definition: qs_copy.h:203
@ QS_QF_RECORDS
Definition: qs_copy.h:207
@ QS_SC_RECORDS
Definition: qs_copy.h:208
@ QS_U1_RECORDS
Definition: qs_copy.h:210
@ QS_EQ_RECORDS
Definition: qs_copy.h:204
@ QS_ALL_RECORDS
Definition: qs_copy.h:201
@ QS_UA_RECORDS
Definition: qs_copy.h:214
void QS_str_fmt_(char_t const *str)
void QS_queryCurrObj(uint8_t obj_kind)
void QS_u16_raw_(uint16_t d)
void QS_tickX_(uint_fast8_t const tickRate, void const *const sender)
void QF_QS_CRIT_EXIT(void)
void QS_u16_fmt_(uint8_t format, uint16_t d)
void QS_rxParse(void)
void QS_usr_dict_pre_(enum_t const rec, char_t const *const name)
uint32_t QSTimeCtr
Definition: qs_copy.h:267
void QS_f32_fmt_(uint8_t format, float32_t f)
void QS_u64_fmt_(uint8_t format, uint64_t d)
uint32_t QS_getTestProbe_(void(*const api)(void))
void QS_u32_raw_(uint32_t d)
void QS_processTestEvts_(void)
void QS_initBuf(uint8_t sto[], uint_fast16_t stoSize)
void QS_str_raw_(char_t const *str)
void QS_onTestLoop(void)
QUTestUserRecords
Definition: qs_copy.h:996
@ QUTEST_ON_POST
Definition: qs_copy.h:997
void QS_u64_raw_(uint64_t d)
void QS_u32_fmt_(uint8_t format, uint32_t d)
void QF_QS_ISR_EXIT(uint8_t const isrnest, uint8_t const prio)
bool QS_RX_PUT(uint8_t const b)
void QS_fun_dict_pre_(void(*const fun)(void), char_t const *name)
void QS_sig_dict_pre_(enum_t const sig, void const *const obj, char_t const *name)
void QS_u8_fmt_(uint8_t format, uint8_t d)
QSpyObjKind
Definition: qs_copy.h:857
@ SM_OBJ
Definition: qs_copy.h:858
@ EQ_OBJ
Definition: qs_copy.h:861
@ AO_OBJ
Definition: qs_copy.h:859
@ TE_OBJ
Definition: qs_copy.h:862
@ MAX_OBJ
Definition: qs_copy.h:864
@ AP_OBJ
Definition: qs_copy.h:863
@ MP_OBJ
Definition: qs_copy.h:860
void QS_2u8_raw_(uint8_t d1, uint8_t d2)
void QS_beginRec_(uint_fast8_t rec)
QSCtr head
Definition: qs_copy.h:878
void QS_rxInitBuf(uint8_t sto[], uint16_t stoSize)
uint_fast16_t QSCtr
Definition: qs_copy.h:854
QSTimeCtr QS_onGetTime(void)
QSpyUserOffsets
Definition: qs_copy.h:218
@ QS_USER0
Definition: qs_copy.h:219
@ QS_USER3
Definition: qs_copy.h:222
@ QS_USER1
Definition: qs_copy.h:220
@ QS_USER2
Definition: qs_copy.h:221
@ QS_USER4
Definition: qs_copy.h:223
void QS_onFlush(void)
QSCtr end
Definition: qs_copy.h:877
uint8_t QS_onStartup(void const *arg)
uint8_t const * QS_getBlock(uint16_t *pNbytes)
void QS_onTestTeardown(void)
QSpyRxRecords
Definition: qs_copy.h:894
@ QS_RX_RESET
Definition: qs_copy.h:897
@ QS_RX_EVENT
Definition: qs_copy.h:911
@ QS_RX_LOC_FILTER
Definition: qs_copy.h:906
@ QS_RX_FILL
Definition: qs_copy.h:901
@ QS_RX_AO_FILTER
Definition: qs_copy.h:907
@ QS_RX_TICK
Definition: qs_copy.h:898
@ QS_RX_PEEK
Definition: qs_copy.h:899
@ QS_RX_CURR_OBJ
Definition: qs_copy.h:908
@ QS_RX_GLB_FILTER
Definition: qs_copy.h:905
@ QS_RX_POKE
Definition: qs_copy.h:900
@ QS_RX_INFO
Definition: qs_copy.h:895
@ QS_RX_TEST_TEARDOWN
Definition: qs_copy.h:903
@ QS_RX_TEST_PROBE
Definition: qs_copy.h:904
@ QS_RX_TEST_SETUP
Definition: qs_copy.h:902
@ QS_RX_COMMAND
Definition: qs_copy.h:896
@ QS_RX_TEST_CONTINUE
Definition: qs_copy.h:909
@ QS_RX_QUERY_CURR
Definition: qs_copy.h:910
void QS_obj_dict_pre_(void const *const obj, char_t const *name)
void QS_u8_raw_(uint8_t d)
void QS_setCurrObj(uint8_t obj_kind, void *obj_ptr)
uint16_t QS_getByte(void)
void QS_glbFilter_(int_fast16_t const filter)
QSpyRecords
Definition: qs_copy.h:62
@ QS_ASSERT_FAIL
Definition: qs_copy.h:161
@ QS_RESERVED_81
Definition: qs_copy.h:175
@ QS_QF_TIMEEVT_AUTO_DISARM
Definition: qs_copy.h:111
@ QS_MUTEX_UNLOCK
Definition: qs_copy.h:137
@ QS_RESERVED_72
Definition: qs_copy.h:166
@ QS_QF_INT_ENABLE
Definition: qs_copy.h:124
@ QS_QF_RUN
Definition: qs_copy.h:162
@ QS_QF_MPOOL_GET_ATTEMPT
Definition: qs_copy.h:133
@ QS_QF_DELETE_REF
Definition: qs_copy.h:118
@ QS_QF_ACTIVE_RECALL
Definition: qs_copy.h:79
@ QS_RESERVED_90
Definition: qs_copy.h:184
@ QS_QF_EQUEUE_GET_LAST
Definition: qs_copy.h:92
@ QS_RESERVED_73
Definition: qs_copy.h:167
@ QS_QF_TIMEEVT_DISARM
Definition: qs_copy.h:113
@ QS_TEST_PROBE_GET
Definition: qs_copy.h:151
@ QS_QEP_STATE_INIT
Definition: qs_copy.h:69
@ QS_QEP_TRAN_HIST
Definition: qs_copy.h:145
@ QS_QF_TIMEEVT_REARM
Definition: qs_copy.h:114
@ QS_FUN_DICT
Definition: qs_copy.h:154
@ QS_RESERVED_91
Definition: qs_copy.h:185
@ QS_RESERVED_84
Definition: qs_copy.h:178
@ QS_QF_PUBLISH
Definition: qs_copy.h:102
@ QS_RESERVED_94
Definition: qs_copy.h:188
@ QS_RESERVED_74
Definition: qs_copy.h:168
@ QS_RESERVED_71
Definition: qs_copy.h:165
@ QS_RESERVED_77
Definition: qs_copy.h:171
@ QS_QF_ACTIVE_POST_LIFO
Definition: qs_copy.h:83
@ QS_QEP_TRAN_EP
Definition: qs_copy.h:146
@ QS_QEP_STATE_EXIT
Definition: qs_copy.h:68
@ QS_TARGET_DONE
Definition: qs_copy.h:157
@ QS_USER
Definition: qs_copy.h:196
@ QS_QF_GC_ATTEMPT
Definition: qs_copy.h:105
@ QS_QF_CRIT_ENTRY
Definition: qs_copy.h:119
@ QS_QF_MPOOL_PUT
Definition: qs_copy.h:99
@ QS_RESERVED_88
Definition: qs_copy.h:182
@ QS_QF_EQUEUE_POST_ATTEMPT
Definition: qs_copy.h:130
@ QS_RESERVED_97
Definition: qs_copy.h:191
@ QS_QF_GC
Definition: qs_copy.h:106
@ QS_QF_ACTIVE_GET
Definition: qs_copy.h:84
@ QS_QF_CRIT_EXIT
Definition: qs_copy.h:120
@ QS_QF_TIMEEVT_POST
Definition: qs_copy.h:115
@ QS_QF_INT_DISABLE
Definition: qs_copy.h:123
@ QS_OBJ_DICT
Definition: qs_copy.h:153
@ QS_QF_MPOOL_GET
Definition: qs_copy.h:98
@ QS_QF_TIMEEVT_DISARM_ATTEMPT
Definition: qs_copy.h:112
@ QS_QF_ACTIVE_RECALL_ATTEMPT
Definition: qs_copy.h:86
@ QS_QEP_INIT_TRAN
Definition: qs_copy.h:70
@ QS_MUTEX_LOCK
Definition: qs_copy.h:136
@ QS_RESERVED_92
Definition: qs_copy.h:186
@ QS_TARGET_INFO
Definition: qs_copy.h:156
@ QS_QEP_INTERN_TRAN
Definition: qs_copy.h:71
@ QS_QEP_TRAN_XP
Definition: qs_copy.h:147
@ QS_RX_STATUS
Definition: qs_copy.h:158
@ QS_SCHED_IDLE
Definition: qs_copy.h:141
@ QS_QF_EQUEUE_POST_LIFO
Definition: qs_copy.h:90
@ QS_RESERVED_99
Definition: qs_copy.h:193
@ QS_RESERVED_93
Definition: qs_copy.h:187
@ QS_QEP_STATE_ENTRY
Definition: qs_copy.h:67
@ QS_QEP_UNHANDLED
Definition: qs_copy.h:75
@ QS_QF_ACTIVE_POST_ATTEMPT
Definition: qs_copy.h:127
@ QS_QEP_TRAN
Definition: qs_copy.h:72
@ QS_QF_EQUEUE_GET
Definition: qs_copy.h:91
@ QS_QF_ISR_ENTRY
Definition: qs_copy.h:121
@ QS_RESERVED_76
Definition: qs_copy.h:170
@ QS_QF_NEW_ATTEMPT
Definition: qs_copy.h:95
@ QS_QF_ISR_EXIT
Definition: qs_copy.h:122
@ QS_QF_TICK
Definition: qs_copy.h:107
@ QS_QF_ACTIVE_UNSUBSCRIBE
Definition: qs_copy.h:81
@ QS_QEP_DISPATCH
Definition: qs_copy.h:74
@ QS_QF_ACTIVE_DEFER
Definition: qs_copy.h:78
@ QS_SCHED_LOCK
Definition: qs_copy.h:138
@ QS_RESERVED_78
Definition: qs_copy.h:172
@ QS_RESERVED_85
Definition: qs_copy.h:179
@ QS_QF_NEW_REF
Definition: qs_copy.h:103
@ QS_TEST_PAUSED
Definition: qs_copy.h:150
@ QS_SCHED_UNLOCK
Definition: qs_copy.h:139
@ QS_RESERVED_86
Definition: qs_copy.h:180
@ QS_RESERVED_95
Definition: qs_copy.h:189
@ QS_EMPTY
Definition: qs_copy.h:64
@ QS_RESERVED_87
Definition: qs_copy.h:181
@ QS_RESERVED_89
Definition: qs_copy.h:183
@ QS_QF_ACTIVE_POST
Definition: qs_copy.h:82
@ QS_SIG_DICT
Definition: qs_copy.h:152
@ QS_RESERVED_83
Definition: qs_copy.h:177
@ QS_RESERVED_79
Definition: qs_copy.h:173
@ QS_RESERVED_82
Definition: qs_copy.h:176
@ QS_QUERY_DATA
Definition: qs_copy.h:159
@ QS_QF_TIMEEVT_ARM
Definition: qs_copy.h:110
@ QS_QEP_IGNORED
Definition: qs_copy.h:73
@ QS_USR_DICT
Definition: qs_copy.h:155
@ QS_QF_NEW
Definition: qs_copy.h:104
@ QS_QF_EQUEUE_POST
Definition: qs_copy.h:89
@ QS_QF_ACTIVE_GET_LAST
Definition: qs_copy.h:85
@ QS_SCHED_NEXT
Definition: qs_copy.h:140
@ QS_PEEK_DATA
Definition: qs_copy.h:160
@ QS_RESERVED_80
Definition: qs_copy.h:174
@ QS_RESERVED_75
Definition: qs_copy.h:169
@ QS_RESERVED_98
Definition: qs_copy.h:192
@ QS_RESERVED_96
Definition: qs_copy.h:190
@ QS_QF_ACTIVE_SUBSCRIBE
Definition: qs_copy.h:80
@ QS_SCHED_RESUME
Definition: qs_copy.h:142
QSCtr used
Definition: qs_copy.h:880
void QS_onTestEvt(QEvt *e)
QSCtr tail
Definition: qs_copy.h:879
void QS_obj_raw_(void const *const obj)
void QF_QS_CRIT_ENTRY(void)
uint8_t critNest
Definition: qs_copy.h:884
void QS_mem_fmt_(uint8_t const *blk, uint8_t size)
uint16_t QS_rxGetNfree(void)
void QS_f64_fmt_(uint8_t format, float64_t d)
void QS_onCommand(uint8_t cmdId, uint32_t param1, uint32_t param2, uint32_t param3)
QSpyIdGroups
Definition: qs_copy.h:235
@ QS_EP_IDS
Definition: qs_copy.h:238
@ QS_AO_IDS
Definition: qs_copy.h:237
@ QS_EQ_IDS
Definition: qs_copy.h:239
@ QS_ALL_IDS
Definition: qs_copy.h:236
@ QS_AP_IDS
Definition: qs_copy.h:240