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)(id)) | ((((uint16_t)(n)) & 0xF) << 12))
42 #define TRC_EVENT_GET_PARAM_COUNT(id) (((id) >> 12) & 0xF)
44 #if (TRC_CFG_CORE_COUNT > 1)
45 #define TRC_EVENT_SET_EVENT_COUNT(c) (((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(TraceBaseEvent_t) + (TRC_EVENT_GET_PARAM_COUNT(((TraceBaseEvent_t*)(pvAddress))->EventID)) * sizeof(uint32_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(TraceBaseEvent_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(TraceBaseEvent_t), TRC_SUCCESS)
98 #define TRC_EVENT_PAYLOAD_SIZE(xEventHandle, puiValue) (*(uint32_t*)(puiValue) = ((TraceEventData_t*)(xEventHandle))->size - sizeof(TraceBaseEvent_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(sizeof(TraceBaseEvent_t) + (uiPayloadSize), pxEventHandle)) == TRC_SUCCESS ? \
157 pxTraceEventDataTable->coreEventData[TRC_CFG_GET_CURRENT_CORE()].eventCounter++, \
158 SET_BASE_EVENT_DATA((TraceBaseEvent_t*)(((TraceEventData_t*)*(pxEventHandle))->pvBlob), \
160 (((TraceEventData_t*)*(pxEventHandle))->size - sizeof(TraceBaseEvent_t)) / sizeof(uint32_t), \
161 pxTraceEventDataTable->coreEventData[TRC_CFG_GET_CURRENT_CORE()].eventCounter), \
162 ((TraceEventData_t*)*(pxEventHandle))->offset += sizeof(TraceBaseEvent_t), \
170 #define TRC_EVENT_END_OFFLINE(xEventHandle) \
171 TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4( \
172 xTraceStreamPortCommit(((TraceEventData_t*)(xEventHandle))->pvBlob, \
173 ((TraceEventData_t*)(xEventHandle))->size, &DUMMY_iTraceBytesCommitted), \
174 RESET_EVENT_DATA((TraceEventData_t*)(xEventHandle)), \
190 typedef struct TraceEventData
200 typedef struct TraceCoreEventData
202 TraceEventData_t eventData[(TRC_CFG_MAX_ISR_NESTING)+1];
203 uint32_t eventCounter;
204 TRACE_ALLOC_CRITICAL_SECTION()
205 } TraceCoreEventData_t;
210 typedef struct TraceEventDataTable
212 TraceCoreEventData_t coreEventData[TRC_CFG_CORE_COUNT];
213 } TraceEventDataTable_t;
215 #define TRC_EVENT_DATA_BUFFER_SIZE (sizeof(TraceEventDataTable_t))
220 typedef struct TraceEventDataBuffer
222 uint8_t buffer[TRC_EVENT_DATA_BUFFER_SIZE];
223 } TraceEventDataBuffer_t;
225 extern TraceEventDataTable_t* pxTraceEventDataTable;
236 traceResult xTraceEventInitialize(TraceEventDataBuffer_t* pxBuffer);
261 traceResult xTraceEventBeginRawOffline(uint32_t uiSize, TraceEventHandle_t* pxEventHandle);
275 traceResult xTraceEventBeginRawOfflineBlocking(uint32_t uiSize, TraceEventHandle_t* pxEventHandle);
289 #define xTraceEventBeginOffline TRC_EVENT_BEGIN_OFFLINE
303 #define xTraceEventBegin(uiEventCode, uiTotalPayloadSize, pxEventHandle) \
304 (xTraceIsRecorderEnabled() ? xTraceEventBeginOffline(uiEventCode, uiTotalPayloadSize, pxEventHandle) : TRC_FAIL)
317 traceResult xTraceEventEndOffline(TraceEventHandle_t xEventHandle);
329 traceResult xTraceEventEndOfflineBlocking(TraceEventHandle_t xEventHandle);
342 #define xTraceEventEnd(xEventHandle) \
343 (xTraceIsRecorderEnabled() == 0 ? TRC_FAIL : xTraceEventEndOffline(xEventHandle))
355 traceResult
xTraceEventAddData(TraceEventHandle_t xEventHandle,
void* pvData, uint32_t uiSize);
357 #if ((TRC_CFG_USE_TRACE_ASSERT) == 1)
373 traceResult
xTraceEventGetRawData(TraceEventHandle_t xEventHandle, uint32_t uiOffset, uint32_t uiSize,
void** ppvData);
389 traceResult
xTraceEventGetPayload(TraceEventHandle_t xEventHandle, uint32_t uiOffset, uint32_t uiSize,
void** ppvData);
444 traceResult xTraceEventAddPointer(TraceEventHandle_t xEventHandle,
void *pvAddress);
455 traceResult
xTraceEventAdd32(TraceEventHandle_t xEventHandle, uint32_t value);
466 traceResult
xTraceEventAdd16(TraceEventHandle_t xEventHandle, uint16_t value);
477 traceResult
xTraceEventAdd8(TraceEventHandle_t xEventHandle, uint8_t value);
490 #define xTraceEventGetSize(pvAddress, puiSize) (*(uint32_t*)(puiSize) = sizeof(TraceBaseEvent_t) + (TRC_EVENT_GET_PARAM_COUNT(((TraceBaseEvent_t*)(pvAddress))->EventID)) * sizeof(uint32_t), TRC_SUCCESS)
506 #define xTraceEventGetRawData TRC_EVENT_GET_RAW_DATA
522 #define xTraceEventGetPayload TRC_EVENT_GET_PAYLOAD
533 #define xTraceEventPayloadRemaining TRC_EVENT_PAYLOAD_REMAINING
544 #define xTraceEventPayloadUsed TRC_EVENT_PAYLOAD_USED
555 #define xTraceEventPayloadSize TRC_EVENT_PAYLOAD_SIZE
558 #define xTraceEventAddPointer TRC_EVENT_ADD_POINTER
569 #define xTraceEventAddUnsignedBaseType TRC_EVENT_ADD_UNSIGNED_BASE_TYPE
580 #define xTraceEventAdd32 TRC_EVENT_ADD_32
591 #define xTraceEventAdd16 TRC_EVENT_ADD_16
602 #define xTraceEventAdd8 TRC_EVENT_ADD_8