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 object APIs. 13 */ 14 15 #ifndef TRC_OBJECT_H 16 #define TRC_OBJECT_H 17 18 #if (TRC_USE_TRACEALYZER_RECORDER == 1) && (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) 19 20 #include <trcTypes.h> 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 /** 27 * @defgroup trace_object_apis Trace Object APIs 28 * @ingroup trace_recorder_apis 29 * @{ 30 */ 31 32 /** 33 * @brief Registers trace object. 34 * 35 * @param[in] uiEventCode Event code. 36 * @param[in] pvObject Object. 37 * @param[in] szName Name. 38 * @param[in] uxStateCount State count. 39 * @param[in] uxStates States. 40 * @param[in] uxOptions Options. 41 * @param[out] pxObjectHandle Pointer to uninitialized trace object. 42 * 43 * @retval TRC_FAIL Failure 44 * @retval TRC_SUCCESS Success 45 */ 46 traceResult xTraceObjectRegisterInternal(uint32_t uiEventCode, void* const pvObject, const char* szName, TraceUnsignedBaseType_t uxStateCount, const TraceUnsignedBaseType_t uxStates[], TraceUnsignedBaseType_t uxOptions, TraceObjectHandle_t* pxObjectHandle); 47 48 /** 49 * @brief Registers trace object. 50 * 51 * @param[in] uiEventCode Event code. 52 * @param[in] pvObject Object. 53 * @param[in] szName Name. 54 * @param[in] uxState State. 55 * @param[out] pxObjectHandle Pointer to uninitialized trace object. 56 * 57 * @retval TRC_FAIL Failure 58 * @retval TRC_SUCCESS Success 59 */ 60 traceResult xTraceObjectRegister(uint32_t uiEventCode, void* const pvObject, const char* szName, TraceUnsignedBaseType_t uxState, TraceObjectHandle_t *pxObjectHandle); 61 62 /** 63 * @brief Registers trace object with two initial states. 64 * 65 * @param[in] uiEventCode Event code. 66 * @param[in] pvObject Object. 67 * @param[in] szName Name. 68 * @param[in] uxState1 State 1. 69 * @param[in] uxState2 State 2. 70 * @param[out] pxObjectHandle Pointer to uninitialized trace object. 71 * 72 * @retval TRC_FAIL Failure 73 * @retval TRC_SUCCESS Success 74 */ 75 traceResult xTraceObjectRegister2(uint32_t uiEventCode, void* const pvObject, const char* szName, TraceUnsignedBaseType_t uxState1, TraceUnsignedBaseType_t uxState2, TraceObjectHandle_t *pxObjectHandle); 76 77 /** 78 * @brief Unregisters trace object. 79 * 80 * @param[in] xObjectHandle Pointer to initialized trace object. 81 * @param[in] uiEventCode Event code. 82 * @param[in] uxState State. 83 * 84 * @retval TRC_FAIL Failure 85 * @retval TRC_SUCCESS Success 86 */ 87 traceResult xTraceObjectUnregister(TraceObjectHandle_t xObjectHandle, uint32_t uiEventCode, TraceUnsignedBaseType_t uxState); 88 89 /** 90 * @brief Sets trace object name. 91 * 92 * @param[in] xObjectHandle Pointer to initialized trace object. 93 * @param[in] szName Name. 94 * 95 * @retval TRC_FAIL Failure 96 * @retval TRC_SUCCESS Success 97 */ 98 traceResult xTraceObjectSetName(TraceObjectHandle_t xObjectHandle, const char *szName); 99 100 /** 101 * @brief Sets trace object state. 102 * 103 * @param[in] xObjectHandle Pointer to initialized trace object. 104 * @param[in] uxState State. 105 * 106 * @retval TRC_FAIL Failure 107 * @retval TRC_SUCCESS Success 108 */ 109 #define xTraceObjectSetState(xObjectHandle, uxState) xTraceObjectSetSpecificState(xObjectHandle, 0, uxState) 110 111 /** 112 * @brief Sets trace object specific state state. 113 * 114 * @param[in] xObjectHandle Pointer to initialized trace object. 115 * @param[in] uiIndex State Index. 116 * @param[in] uxState State. 117 * 118 * @retval TRC_FAIL Failure 119 * @retval TRC_SUCCESS Success 120 */ 121 #define xTraceObjectSetSpecificState(xObjectHandle, uiIndex, uxState) xTraceEntrySetState((TraceEntryHandle_t)(xObjectHandle), uiIndex, uxState) 122 123 /** 124 * @brief Sets trace object options. 125 * 126 * @param[in] xObjectHandle Pointer to initialized trace object. 127 * @param[in] uiOptions Options. 128 * 129 * @retval TRC_FAIL Failure 130 * @retval TRC_SUCCESS Success 131 */ 132 #define xTraceObjectSetOptions(xObjectHandle, uiOptions) xTraceEntrySetOptions((TraceEntryHandle_t)(xObjectHandle), uiOptions) 133 134 /** 135 * @brief Registers trace object without trace object handle. 136 * 137 * @param[in] uiEventCode Event code. 138 * @param[in] pvObject Object. 139 * @param[in] szName Name. 140 * @param[in] uxState State. 141 * 142 * @retval TRC_FAIL Failure 143 * @retval TRC_SUCCESS Success 144 */ 145 traceResult xTraceObjectRegisterWithoutHandle(uint32_t uiEventCode, void* pvObject, const char* szName, TraceUnsignedBaseType_t uxState); 146 147 /** 148 * @brief Registers trace object with two initial states without trace object handle. 149 * 150 * @param[in] uiEventCode Event code. 151 * @param[in] pvObject Object. 152 * @param[in] szName Name. 153 * @param[in] uxState1 State 1. 154 * @param[in] uxState2 State 2. 155 * 156 * @retval TRC_FAIL Failure 157 * @retval TRC_SUCCESS Success 158 */ 159 traceResult xTraceObjectRegisterWithoutHandle2(uint32_t uiEventCode, void* pvObject, const char* szName, TraceUnsignedBaseType_t uxState1, TraceUnsignedBaseType_t uxState2); 160 161 /** 162 * @brief Unregisters trace object without trace object handle. 163 * 164 * @param[in] uiEventCode Event code. 165 * @param[in] pvObject Object. 166 * @param[in] uxState State. 167 * 168 * @retval TRC_FAIL Failure 169 * @retval TRC_SUCCESS Success 170 */ 171 traceResult xTraceObjectUnregisterWithoutHandle(uint32_t uiEventCode, void* pvObject, TraceUnsignedBaseType_t uxState); 172 173 /** 174 * @brief Set trace object name without trace object handle. 175 * 176 * @param[in] pvObject Object. 177 * @param[in] szName Name. 178 * 179 * @retval TRC_FAIL Failure 180 * @retval TRC_SUCCESS Success 181 */ 182 traceResult xTraceObjectSetNameWithoutHandle(void* pvObject, const char* szName); 183 184 /** 185 * @brief Set trace object state without trace object handle. 186 * 187 * @param[in] pvObject Object. 188 * @param[in] uxState State. 189 * 190 * @retval TRC_FAIL Failure 191 * @retval TRC_SUCCESS Success 192 */ 193 #define xTraceObjectSetStateWithoutHandle(pvObject, uxState) xTraceObjectSetSpecificStateWithoutHandle(pvObject, 0, uxState) 194 195 /** 196 * @brief Sets trace object specific state without trace object 197 * handle. 198 * 199 * @param[in] pvObject Object. 200 * @param[in] uiIndex State index. 201 * @param[in] uxState State. 202 * 203 * @retval TRC_FAIL Failure 204 * @retval TRC_SUCCESS Success 205 */ 206 traceResult xTraceObjectSetSpecificStateWithoutHandle(void* pvObject, uint32_t uiIndex, TraceUnsignedBaseType_t uxState); 207 208 /** 209 * @brief Sets trace object options without trace object handle. 210 * 211 * @param[in] pvObject Object. 212 * @param[in] uiOptions Options. 213 * 214 * @retval TRC_FAIL Failure 215 * @retval TRC_SUCCESS Success 216 */ 217 traceResult xTraceObjectSetOptionsWithoutHandle(void* pvObject, uint32_t uiOptions); 218 219 /** @} */ 220 221 #ifdef __cplusplus 222 } 223 #endif 224 225 #else 226 227 #define xTraceObjectRegisterInternal(_uiEventCode, _pvObject, _szName, _uxStateCount, _uxStates, _uxOptions, _pxObjectHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_8((void)(_uiEventCode), (void)(_pvObject), (void)(_szName), (void)(_uxStateCount), (void)(_uxStates), (void)(_uxOptions), (void)(_pxObjectHandle), TRC_SUCCESS) 228 229 #define xTraceObjectRegister(_uiEventCode, _pvObject, _szName, _uxState, _pxObjectHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_6((void)(_uiEventCode), (void)(_pvObject), (void)(_szName), (void)(_uxState), (void)(_pxObjectHandle), TRC_SUCCESS) 230 231 #define xTraceObjectUnregister(_xObjectHandle, _uiEventCode, _uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_xObjectHandle), (void)(_uiEventCode), (void)(_uxState), TRC_SUCCESS) 232 233 #define xTraceObjectSetName(_xObjectHandle, _szName) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xObjectHandle), (void)(_szName), TRC_SUCCESS) 234 235 #define xTraceObjectSetState(_xObjectHandle, _uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xObjectHandle), (void)(_uxState), TRC_SUCCESS) 236 237 #define xTraceObjectSetSpecificState(_xObjectHandle, _uiIndex, _uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_xObjectHandle), (void)(_uiIndex), (void)(_uxState), TRC_SUCCESS) 238 239 #define xTraceObjectSetOptions(_xObjectHandle, _uiOptions) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xObjectHandle), (void)(_uiOptions), TRC_SUCCESS) 240 241 #define xTraceObjectRegisterWithoutHandle(_uiEventCode, _pvObject, _szName, _uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_5((void)(_uiEventCode), (void)(_pvObject), (void)(_szName), (void)(_uxState), TRC_SUCCESS) 242 243 #define xTraceObjectUnregisterWithoutHandle(_uiEventCode, _pvObject, _uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_uiEventCode), (void)(_pvObject), (void)(_uxState), TRC_SUCCESS) 244 245 #define xTraceObjectSetNameWithoutHandle(_pvObject, _szName) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_pvObject), (void)(_szName), TRC_SUCCESS) 246 247 #define xTraceObjectSetStateWithoutHandle(_pvObject, _uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_pvObject), (void)(_uxState), TRC_SUCCESS) 248 249 #define xTraceObjectSetSpecificStateWithoutHandle(_pvObject, _uiIndex, _uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_pvObject), (void)(_uiIndex), (void)(_uxState), TRC_SUCCESS) 250 251 #define xTraceObjectSetOptionsWithoutHandle(_pvObject, _uiOptions) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_pvObject), (void)(_uiOptions), TRC_SUCCESS) 252 253 #endif 254 255 #endif 256