18#if (TRC_USE_TRACEALYZER_RECORDER == 1)
20#if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
37#define TRC_EVENT_SET_PARAM_COUNT(id, n) ((uint16_t)(((uint16_t)(id)) | ((((uint16_t)(n)) & 0xF) << 12)))
42#define TRC_EVENT_GET_PARAM_COUNT(id) (((id) >> 12u) & 0xFU)
44#if (TRC_CFG_CORE_COUNT > 1)
45#define TRC_EVENT_SET_EVENT_COUNT(c) ((uint16_t)(((TRC_CFG_GET_CURRENT_CORE() & 0xF) << 12) | ((uint16_t)(c) & 0xFFF)))
47#define TRC_EVENT_SET_EVENT_COUNT(c) ((uint16_t)(c))
53#define SET_BASE_EVENT_DATA(pxEvent, eventId, paramCount, eventCount) \
55 (pxEvent)->EventID = TRC_EVENT_SET_PARAM_COUNT(eventId, paramCount), \
56 (pxEvent)->EventCount = TRC_EVENT_SET_EVENT_COUNT(eventCount), \
57 xTraceTimestampGet(&(pxEvent)->TS) \
63#define RESET_EVENT_DATA(p) \
73#define TRC_EVENT_GET_SIZE(pvAddress, puiSize) (*(uint32_t*)(puiSize) = sizeof(TraceEvent0_t) + (TRC_EVENT_GET_PARAM_COUNT(((TraceEvent0_t*)(pvAddress))->EventID)) * sizeof(TraceBaseType_t), TRC_SUCCESS)
78#define TRC_EVENT_GET_RAW_DATA(xEventHandle, uiOffset, uiSize, ppvData) ((void)(uiSize), *(void**)(ppvData) = (void*)&((uint8_t*)((TraceEventData_t*)(xEventHandle))->pvBlob)[uiOffset], TRC_SUCCESS)
83#define TRC_EVENT_GET_PAYLOAD(xEventHandle, uiOffset, uiSize, ppvData) ((void)(uiSize), *(void**)(ppvData) = (void*)&((uint8_t*)((TraceEventData_t*)(xEventHandle))->pvBlob)[sizeof(TraceEvent0_t) + (uiOffset)], TRC_SUCCESS)
88#define TRC_EVENT_PAYLOAD_REMAINING(xEventHandle, puiValue) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(uint32_t*)(puiValue) = ((TraceEventData_t*)(xEventHandle))->size - ((TraceEventData_t*)(xEventHandle))->offset, TRC_SUCCESS)
93#define TRC_EVENT_PAYLOAD_USED(xEventHandle, puiValue) (*(uint32_t*)(puiValue) = ((TraceEventData_t*)(xEventHandle))->offset - sizeof(TraceEvent0_t), TRC_SUCCESS)
98#define TRC_EVENT_PAYLOAD_SIZE(xEventHandle, puiValue) (*(uint32_t*)(puiValue) = ((TraceEventData_t*)(xEventHandle))->size - sizeof(TraceEvent0_t), TRC_SUCCESS)
103#define TRC_EVENT_ADD_POINTER(xEventHandle, value) \
104 TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3( \
105 ((void**)((TraceEventData_t*)(xEventHandle))->pvBlob)[((TraceEventData_t*)(xEventHandle))->offset / sizeof(void*)] = (value), \
106 ((TraceEventData_t*)(xEventHandle))->offset += sizeof(void*), \
113#define TRC_EVENT_ADD_UNSIGNED_BASE_TYPE(xEventHandle, value) \
114 TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3( \
115 ((TraceUnsignedBaseType_t*)((TraceEventData_t*)(xEventHandle))->pvBlob)[((TraceEventData_t*)(xEventHandle))->offset / sizeof(TraceUnsignedBaseType_t)] = (value), \
116 ((TraceEventData_t*)(xEventHandle))->offset += sizeof(TraceUnsignedBaseType_t), \
123#define TRC_EVENT_ADD_32(xEventHandle, value) \
124 TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3( \
125 ((uint32_t*)((TraceEventData_t*)(xEventHandle))->pvBlob)[((TraceEventData_t*)(xEventHandle))->offset / sizeof(uint32_t)] = (value), \
126 ((TraceEventData_t*)(xEventHandle))->offset += sizeof(uint32_t), \
133#define TRC_EVENT_ADD_16(xEventHandle, value) \
134 TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3( \
135 ((uint16_t*)((TraceEventData_t*)(xEventHandle))->pvBlob)[((TraceEventData_t*)(xEventHandle))->offset / sizeof(uint16_t)] = (value), \
136 ((TraceEventData_t*)(xEventHandle))->offset += sizeof(uint16_t), \
143#define TRC_EVENT_ADD_8(xEventHandle, value) \
144 TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3( \
145 ((uint8_t*)((TraceEventData_t*)(xEventHandle))->pvBlob)[((TraceEventData_t*)(xEventHandle))->offset / sizeof(uint8_t)] = (value), \
146 ((TraceEventData_t*)(xEventHandle))->offset += sizeof(uint8_t), \
153#define TRC_EVENT_BEGIN_OFFLINE(uiEventCode, uiPayloadSize, pxEventHandle) \
155 (xTraceEventBeginRawOffline((uint32_t)(sizeof(TraceEvent0_t) + (uiPayloadSize)), pxEventHandle)) == TRC_SUCCESS ? \
157 SET_BASE_EVENT_DATA((TraceEvent0_t*)(((TraceEventData_t*)*(pxEventHandle))->pvBlob), \
159 (((TraceEventData_t*)*(pxEventHandle))->size - sizeof(TraceEvent0_t)) / sizeof(TraceBaseType_t), \
160 pxTraceEventDataTable->coreEventData[TRC_CFG_GET_CURRENT_CORE()].eventCounter), \
161 ((TraceEventData_t*)*(pxEventHandle))->offset += sizeof(TraceEvent0_t), \
182 TraceUnsignedBaseType_t uxParams[1];
192 TraceUnsignedBaseType_t uxParams[2];
202 TraceUnsignedBaseType_t uxParams[3];
212 TraceUnsignedBaseType_t uxParams[4];
222 TraceUnsignedBaseType_t uxParams[5];
232 TraceUnsignedBaseType_t uxParams[6];
242 TraceUnsignedBaseType_t uxParams[7];
248typedef struct TraceEventData
258typedef struct TraceCoreEventData
260 TraceEventData_t eventData[(TRC_CFG_MAX_ISR_NESTING)+1];
261 uint32_t eventCounter;
263 TRACE_ALLOC_CRITICAL_SECTION()
264} TraceCoreEventData_t;
269typedef struct TraceEventDataTable
271 TraceCoreEventData_t coreEventData[TRC_CFG_CORE_COUNT];
272} TraceEventDataTable_t;
274extern TraceEventDataTable_t* pxTraceEventDataTable;
285traceResult xTraceEventInitialize(TraceEventDataTable_t* pxBuffer);
317traceResult
xTraceEventCreate1(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1);
329traceResult
xTraceEventCreate2(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2);
342traceResult
xTraceEventCreate3(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3);
356traceResult
xTraceEventCreate4(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4);
371traceResult
xTraceEventCreate5(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, TraceUnsignedBaseType_t uxParam5);
387traceResult
xTraceEventCreate6(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, TraceUnsignedBaseType_t uxParam5, TraceUnsignedBaseType_t uxParam6);
401traceResult xTraceEventBeginRawOffline(uint32_t uiSize, TraceEventHandle_t* pxEventHandle);
415traceResult xTraceEventBeginRawOfflineBlocking(uint32_t uiSize, TraceEventHandle_t* pxEventHandle);
429#define xTraceEventBeginOffline TRC_EVENT_BEGIN_OFFLINE
443#define xTraceEventBegin(uiEventCode, uiTotalPayloadSize, pxEventHandle) \
444 (xTraceIsRecorderEnabled() ? xTraceEventBeginOffline(uiEventCode, uiTotalPayloadSize, pxEventHandle) : TRC_FAIL)
457traceResult xTraceEventEndOffline(TraceEventHandle_t xEventHandle);
469traceResult xTraceEventEndOfflineBlocking(TraceEventHandle_t xEventHandle);
482#define xTraceEventEnd(xEventHandle) \
483 (!xTraceIsRecorderEnabled() ? TRC_FAIL : xTraceEventEndOffline(xEventHandle))
495traceResult
xTraceEventAddData(TraceEventHandle_t xEventHandle,
const TraceUnsignedBaseType_t*
const puxData, TraceUnsignedBaseType_t uxSize);
507#define xTraceEventAddString(xEventHandle, szString, uiLength) xTraceEventAddData(xEventHandle, (TraceUnsignedBaseType_t*)(szString), (((uiLength) + (sizeof(TraceUnsignedBaseType_t) - 1)) / sizeof(TraceUnsignedBaseType_t)))
509#if ((TRC_CFG_USE_TRACE_ASSERT) == 1)
525traceResult
xTraceEventGetRawData(TraceEventHandle_t xEventHandle, uint32_t uiOffset, uint32_t uiSize,
void** ppvData);
541traceResult
xTraceEventGetPayload(
const TraceEventHandle_t xEventHandle, uint32_t uiOffset, uint32_t uiSize,
void** ppvData);
596traceResult xTraceEventAddPointer(TraceEventHandle_t xEventHandle,
void *pvAddress);
607traceResult
xTraceEventAdd32(TraceEventHandle_t xEventHandle, uint32_t value);
618traceResult
xTraceEventAdd16(TraceEventHandle_t xEventHandle, uint16_t value);
629traceResult
xTraceEventAdd8(TraceEventHandle_t xEventHandle, uint8_t value);
642#define xTraceEventGetSize(pvAddress, puiSize) (*(uint32_t*)(puiSize) = sizeof(TraceEvent0_t) + (TRC_EVENT_GET_PARAM_COUNT(((TraceEvent0_t*)(pvAddress))->EventID)) * sizeof(uint32_t), TRC_SUCCESS)
658#define xTraceEventGetRawData TRC_EVENT_GET_RAW_DATA
674#define xTraceEventGetPayload TRC_EVENT_GET_PAYLOAD
685#define xTraceEventPayloadRemaining TRC_EVENT_PAYLOAD_REMAINING
696#define xTraceEventPayloadUsed TRC_EVENT_PAYLOAD_USED
707#define xTraceEventPayloadSize TRC_EVENT_PAYLOAD_SIZE
710#define xTraceEventAddPointer TRC_EVENT_ADD_POINTER
721#define xTraceEventAddUnsignedBaseType TRC_EVENT_ADD_UNSIGNED_BASE_TYPE
732#define xTraceEventAdd32 TRC_EVENT_ADD_32
743#define xTraceEventAdd16 TRC_EVENT_ADD_16
754#define xTraceEventAdd8 TRC_EVENT_ADD_8
traceResult xTraceEventAddData(TraceEventHandle_t xEventHandle, const TraceUnsignedBaseType_t *const puxData, TraceUnsignedBaseType_t uxSize)
Adds data to event payload.
Definition: trcEvent.c:512
#define xTraceEventAdd16
Adds an uint16_t as trace event payload.
Definition: trcEvent.h:743
#define xTraceEventAdd32
Adds an uint32_t as trace event payload.
Definition: trcEvent.h:732
#define xTraceEventGetSize(pvAddress, puiSize)
Gets trace event size.
Definition: trcEvent.h:642
#define xTraceEventAddUnsignedBaseType
Adds an unsigned base type value as trace event payload.
Definition: trcEvent.h:721
#define xTraceEventGetRawData
Gets trace event data pointer with an offset.
Definition: trcEvent.h:658
traceResult xTraceEventCreate2(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2)
Creates an event with 2 parameters.
Definition: trcEvent.c:127
traceResult xTraceEventCreate0(uint32_t uiEventCode)
Creates an event with 0 parameters.
Definition: trcEvent.c:54
traceResult xTraceEventCreate1(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1)
Creates an event with 1 parameters.
Definition: trcEvent.c:89
#define xTraceEventPayloadUsed
Gets the amount of used trace event payload.
Definition: trcEvent.h:696
traceResult xTraceEventCreate6(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, TraceUnsignedBaseType_t uxParam5, TraceUnsignedBaseType_t uxParam6)
Creates an event with 6 parameters.
Definition: trcEvent.c:289
#define xTraceEventAdd8
Adds an uint8_t as trace event payload.
Definition: trcEvent.h:754
traceResult xTraceEventCreate4(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4)
Creates an event with 4 parameters.
Definition: trcEvent.c:206
#define xTraceEventPayloadRemaining
Gets the amount of remaining trace event payload.
Definition: trcEvent.h:685
traceResult xTraceEventCreate3(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3)
Creates an event with 3 parameters.
Definition: trcEvent.c:166
#define xTraceEventGetPayload
Gets trace event payload pointer with an offset.
Definition: trcEvent.h:674
traceResult xTraceEventCreate5(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, TraceUnsignedBaseType_t uxParam5)
Creates an event with 5 parameters.
Definition: trcEvent.c:247
#define xTraceEventPayloadSize
Gets trace event payload size.
Definition: trcEvent.h:707