1 /* 2 * Percepio Trace Recorder for Tracealyzer v4.10.3 3 * Copyright 2023 Percepio AB 4 * www.percepio.com 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 */ 8 9 /** 10 * @file 11 * 12 * @brief Public trace event APIs. 13 */ 14 15 #ifndef TRC_EVENT_H 16 #define TRC_EVENT_H 17 18 #if (TRC_USE_TRACEALYZER_RECORDER == 1) 19 20 #if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) 21 22 #include <trcTypes.h> 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 /** 29 * @defgroup trace_event_apis Trace Event APIs 30 * @ingroup trace_recorder_apis 31 * @{ 32 */ 33 34 /** 35 * @internal Trace Event Structure without uTraceUnsignedBaseType_t parameters 36 */ 37 typedef struct { /* Aligned */ 38 uint16_t EventID; /**< */ 39 uint16_t EventCount; /**< */ 40 uint32_t TS; /**< */ 41 } TraceEvent0_t; 42 43 /** 44 * @internal Trace Event Structure with one uTraceUnsignedBaseType_t parameter 45 */ 46 typedef struct { /* Aligned */ 47 uint16_t EventID; /**< */ 48 uint16_t EventCount; /**< */ 49 uint32_t TS; /**< */ 50 TraceUnsignedBaseType_t uxParams[1]; /**< */ 51 } TraceEvent1_t; 52 53 /** 54 * @internal Trace Event Structure with two uTraceUnsignedBaseType_t parameters 55 */ 56 typedef struct { /* Aligned */ 57 uint16_t EventID; /**< */ 58 uint16_t EventCount; /**< */ 59 uint32_t TS; /**< */ 60 TraceUnsignedBaseType_t uxParams[2]; /**< */ 61 } TraceEvent2_t; 62 63 /** 64 * @internal Trace Event Structure with three uTraceUnsignedBaseType_t parameters 65 */ 66 typedef struct { /* Aligned */ 67 uint16_t EventID; /**< */ 68 uint16_t EventCount; /**< */ 69 uint32_t TS; /**< */ 70 TraceUnsignedBaseType_t uxParams[3]; /**< */ 71 } TraceEvent3_t; 72 73 /** 74 * @internal Trace Event Structure with four uTraceUnsignedBaseType_t parameters 75 */ 76 typedef struct { /* Aligned */ 77 uint16_t EventID; /**< */ 78 uint16_t EventCount; /**< */ 79 uint32_t TS; /**< */ 80 TraceUnsignedBaseType_t uxParams[4]; /**< */ 81 } TraceEvent4_t; 82 83 /** 84 * @internal Trace Event Structure with five uTraceUnsignedBaseType_t parameters 85 */ 86 typedef struct { /* Aligned */ 87 uint16_t EventID; /**< */ 88 uint16_t EventCount; /**< */ 89 uint32_t TS; /**< */ 90 TraceUnsignedBaseType_t uxParams[5]; /**< */ 91 } TraceEvent5_t; 92 93 /** 94 * @internal Trace Event Structure with six uTraceUnsignedBaseType_t parameters 95 */ 96 typedef struct { /* Aligned */ 97 uint16_t EventID; /**< */ 98 uint16_t EventCount; /**< */ 99 uint32_t TS; /**< */ 100 TraceUnsignedBaseType_t uxParams[6]; /**< */ 101 } TraceEvent6_t; 102 103 /** 104 * @internal Trace Core Event Data Structure 105 */ 106 typedef struct TraceCoreEventData /* Aligned */ 107 { 108 uint32_t eventCounter; /**< */ 109 uint32_t reserved; /* alignment */ 110 } TraceCoreEventData_t; 111 112 /** 113 * @internal Trace Event Data Table Structure. 114 */ 115 typedef struct TraceEventDataTable /* Aligned */ 116 { 117 TraceCoreEventData_t coreEventData[TRC_CFG_CORE_COUNT]; /**< Holds data about current event for each core/isr depth */ 118 } TraceEventDataTable_t; 119 120 /** 121 * @internal Initialize event trace system. 122 * 123 * @param[in] pxBuffer Pointer to memory that will be used by the event 124 * trace system. 125 * 126 * @retval TRC_FAIL Failure 127 * @retval TRC_SUCCESS Success 128 */ 129 traceResult xTraceEventInitialize(TraceEventDataTable_t* pxBuffer); 130 131 /** 132 * Create a raw data event (i.e. not event code provided) 133 * @param pxSource The source buffer which should be copied 134 * @param ulSize The size of the data to be copied 135 * 136 * @retval TRC_FAIL 137 * @retval TRC_SUCCESS 138 */ 139 traceResult xTraceEventCreateRawBlocking(const void* pxSource, uint32_t ulSize); 140 141 /** 142 * @brief Creates an event with 0 parameters. 143 * 144 * @param[in] uiEventCode Event code. 145 * 146 * @retval TRC_FAIL Failure 147 * @retval TRC_SUCCESS Success 148 */ 149 traceResult xTraceEventCreate0(uint32_t uiEventCode); 150 151 /** 152 * @brief Creates an event with 1 parameters. 153 * 154 * @param[in] uiEventCode Event code. 155 * @param[in] uxParam1 First parameter. 156 * 157 * @retval TRC_FAIL Failure 158 * @retval TRC_SUCCESS Success 159 */ 160 traceResult xTraceEventCreate1(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1); 161 162 /** 163 * @brief Creates an event with 2 parameters. 164 * 165 * @param[in] uiEventCode Event code. 166 * @param[in] uxParam1 First parameter. 167 * @param[in] uxParam2 Second parameter. 168 * 169 * @retval TRC_FAIL Failure 170 * @retval TRC_SUCCESS Success 171 */ 172 traceResult xTraceEventCreate2(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2); 173 174 /** 175 * @brief Creates an event with 3 parameters. 176 * 177 * @param[in] uiEventCode Event code. 178 * @param[in] uxParam1 First parameter. 179 * @param[in] uxParam2 Second parameter. 180 * @param[in] uxParam3 Third parameter. 181 * 182 * @retval TRC_FAIL Failure 183 * @retval TRC_SUCCESS Success 184 */ 185 traceResult xTraceEventCreate3(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3); 186 187 /** 188 * @brief Creates an event with 4 parameters. 189 * 190 * @param[in] uiEventCode Event code. 191 * @param[in] uxParam1 First parameter. 192 * @param[in] uxParam2 Second parameter. 193 * @param[in] uxParam3 Third parameter. 194 * @param[in] uxParam4 Fourth parameter. 195 * 196 * @retval TRC_FAIL Failure 197 * @retval TRC_SUCCESS Success 198 */ 199 traceResult xTraceEventCreate4(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4); 200 201 /** 202 * @brief Creates an event with 5 parameters. 203 * 204 * @param[in] uiEventCode Event code. 205 * @param[in] uxParam1 First parameter. 206 * @param[in] uxParam2 Second parameter. 207 * @param[in] uxParam3 Third parameter. 208 * @param[in] uxParam4 Fourth parameter. 209 * @param[in] uxParam5 Fifth parameter. 210 * 211 * @retval TRC_FAIL Failure 212 * @retval TRC_SUCCESS Success 213 */ 214 traceResult xTraceEventCreate5(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, TraceUnsignedBaseType_t uxParam5); 215 216 /** 217 * @brief Creates an event with 6 parameters. 218 * 219 * @param[in] uiEventCode Event code. 220 * @param[in] uxParam1 First parameter. 221 * @param[in] uxParam2 Second parameter. 222 * @param[in] uxParam3 Third parameter. 223 * @param[in] uxParam4 Fourth parameter. 224 * @param[in] uxParam5 Fifth parameter. 225 * @param[in] uxParam6 Sixth parameter. 226 * 227 * @retval TRC_FAIL Failure 228 * @retval TRC_SUCCESS Success 229 */ 230 traceResult xTraceEventCreate6(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, TraceUnsignedBaseType_t uxParam5, TraceUnsignedBaseType_t uxParam6); 231 232 /** 233 * @brief Creates an offline event with no parameters and a payload 234 * 235 * @param[in] uiEventCode Event code. 236 * @param[in] puxData Pointer to payload buffer 237 * @param[in] uxSize Size of the payload buffer 238 * 239 * @retval TRC_FAIL Failure 240 * @retval TRC_SUCCESS Success 241 */ 242 traceResult xTraceEventCreateDataOffline0(uint32_t uiEventCode, const TraceUnsignedBaseType_t* const puxData, TraceUnsignedBaseType_t uxSize); 243 244 245 /** 246 * @brief Creates an event with no parameters and a payload 247 * 248 * @param[in] uiEventCode Event code. 249 * @param[in] puxData Pointer to payload buffer 250 * @param[in] uxSize Size of the payload buffer 251 * 252 * @retval TRC_FAIL Failure 253 * @retval TRC_SUCCESS Success 254 */ 255 traceResult xTraceEventCreateData0(uint32_t uiEventCode, const TraceUnsignedBaseType_t* const puxData, TraceUnsignedBaseType_t uxSize); 256 257 /** 258 * @brief Creates an event with 1 parameter and a payload 259 * 260 * @param[in] uiEventCode Event code. 261 * @param[in] uxParam1 First parameter. 262 * @param[in] puxData Pointer to payload buffer. 263 * @param[in] uxSize Size of the payload buffer. 264 * 265 * @retval TRC_FAIL Failure 266 * @retval TRC_SUCCESS Success 267 */ 268 traceResult xTraceEventCreateData1(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, const TraceUnsignedBaseType_t* const puxData, TraceUnsignedBaseType_t uxSize); 269 270 /** 271 * @brief Creates an event with 2 parameters and a payload 272 * 273 * @param[in] uiEventCode Event code. 274 * @param[in] uxParam1 First parameter. 275 * @param[in] uxParam2 Second parameter. 276 * @param[in] puxData Pointer to payload buffer. 277 * @param[in] uxSize Size of the payload buffer. 278 * 279 * @retval TRC_FAIL Failure 280 * @retval TRC_SUCCESS Success 281 */ 282 traceResult xTraceEventCreateData2(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, const TraceUnsignedBaseType_t* const puxData, TraceUnsignedBaseType_t uxSize); 283 284 /** 285 * @brief Creates an event with 3 parameters and a payload 286 * 287 * @param[in] uiEventCode Event code. 288 * @param[in] uxParam1 First parameter. 289 * @param[in] uxParam2 Second parameter. 290 * @param[in] uxParam3 Third parameter. 291 * @param[in] puxData Pointer to payload buffer. 292 * @param[in] uxSize Size of the payload buffer. 293 * 294 * @retval TRC_FAIL Failure 295 * @retval TRC_SUCCESS Success 296 */ 297 traceResult xTraceEventCreateData3(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, const TraceUnsignedBaseType_t* const puxData, TraceUnsignedBaseType_t uxSize); 298 299 /** 300 * @brief Creates an event with 4 parameters and a payload 301 * 302 * @param[in] uiEventCode Event code. 303 * @param[in] uxParam1 First parameter. 304 * @param[in] uxParam2 Second parameter. 305 * @param[in] uxParam3 Third parameter. 306 * @param[in] uxParam4 Fourth parameter. 307 * @param[in] puxData Pointer to payload buffer. 308 * @param[in] uxSize Size of the payload buffer. 309 * 310 * @retval TRC_FAIL Failure 311 * @retval TRC_SUCCESS Success 312 */ 313 traceResult xTraceEventCreateData4(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, const TraceUnsignedBaseType_t* const puxData, TraceUnsignedBaseType_t uxSize); 314 315 /** 316 * @brief Creates an event with 5 parameters and a payload 317 * 318 * @param[in] uiEventCode Event code. 319 * @param[in] uxParam1 First parameter. 320 * @param[in] uxParam2 Second parameter. 321 * @param[in] uxParam3 Third parameter. 322 * @param[in] uxParam4 Fourth parameter. 323 * @param[in] uxParam5 Fifth parameter. 324 * @param[in] puxData Pointer to payload buffer. 325 * @param[in] uxSize Size of the payload buffer. 326 * 327 * @retval TRC_FAIL Failure 328 * @retval TRC_SUCCESS Success 329 */ 330 traceResult xTraceEventCreateData5(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, TraceUnsignedBaseType_t uxParam5, const TraceUnsignedBaseType_t* const puxData, TraceUnsignedBaseType_t uxSize); 331 332 /** 333 * @brief Creates an event with 6 parameters and a payload 334 * 335 * @param[in] uiEventCode Event code. 336 * @param[in] uxParam1 First parameter. 337 * @param[in] uxParam2 Second parameter. 338 * @param[in] uxParam3 Third parameter. 339 * @param[in] uxParam4 Fourth parameter. 340 * @param[in] uxParam5 Fifth parameter. 341 * @param[in] uxParam6 Sixth parameter. 342 * @param[in] puxData Pointer to payload buffer. 343 * @param[in] uxSize Size of the payload buffer. 344 * 345 * @retval TRC_FAIL Failure 346 * @retval TRC_SUCCESS Success 347 */ 348 traceResult xTraceEventCreateData6(uint32_t uiEventCode, TraceUnsignedBaseType_t uxParam1, TraceUnsignedBaseType_t uxParam2, TraceUnsignedBaseType_t uxParam3, TraceUnsignedBaseType_t uxParam4, TraceUnsignedBaseType_t uxParam5, TraceUnsignedBaseType_t uxParam6, const TraceUnsignedBaseType_t* const puxData, TraceUnsignedBaseType_t uxSize); 349 350 /** 351 * @brief Gets trace event size. 352 * 353 * @param[in] pvAddress Pointer to initialized trace event. 354 * @param[out] puiSize Size. 355 * 356 * @retval TRC_FAIL Failure 357 * @retval TRC_SUCCESS Success 358 */ 359 traceResult xTraceEventGetSize(const void* const pvAddress, uint32_t* puiSize); 360 361 /** @} */ 362 363 #ifdef __cplusplus 364 } 365 #endif 366 367 #endif /* (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) */ 368 369 #endif /* (TRC_USE_TRACEALYZER_RECORDER == 1) */ 370 371 #endif /* TRC_EVENT_H */ 372