/* * Percepio Trace Recorder for Tracealyzer v4.6.0 * Copyright 2021 Percepio AB * www.percepio.com * * SPDX-License-Identifier: Apache-2.0 */ /** * @file * * @brief Public trace object APIs. */ #ifndef TRC_OBJECT_H #define TRC_OBJECT_H #if (TRC_USE_TRACEALYZER_RECORDER == 1) #if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) #include #ifdef __cplusplus extern "C" { #endif /** * @defgroup trace_object_apis Trace Object APIs * @ingroup trace_recorder_apis * @{ */ /** * @brief Registers trace object. * * @param[in] uiEventCode Event code. * @param[in] pvObject Object. * @param[in] szName Name. * @param[in] uxStateCount State count. * @param[in] uxStates States. * @param[in] uxOptions Options. * @param[out] pxObjectHandle Pointer to uninitialized trace object. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectRegisterInternal(uint32_t uiEventCode, void* pvObject, const char* szName, TraceUnsignedBaseType_t uxStateCount, TraceUnsignedBaseType_t uxStates[], TraceUnsignedBaseType_t uxOptions, TraceObjectHandle_t* pxObjectHandle); /** * @brief Registers trace object. * * @param[in] uiEventCode Event code. * @param[in] pvObject Object. * @param[in] szName Name. * @param[in] uxState State. * @param[out] pxObjectHandle Pointer to uninitialized trace object. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectRegister(uint32_t uiEventCode, void *pvObject, const char* szName, TraceUnsignedBaseType_t uxState, TraceObjectHandle_t *pxObjectHandle); /** * @brief Unregisters trace object. * * @param[in] xObjectHandle Pointer to initialized trace object. * @param[in] uiEventCode Event code. * @param[in] uxState State. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectUnregister(TraceObjectHandle_t xObjectHandle, uint32_t uiEventCode, TraceUnsignedBaseType_t uxState); /** * @brief Sets trace object name. * * @param[in] xObjectHandle Pointer to initialized trace object. * @param[in] szName Name. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectSetName(TraceObjectHandle_t xObjectHandle, const char *szName); /** * @brief Sets trace object state. * * @param[in] xObjectHandle Pointer to initialized trace object. * @param[in] uxState State. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ #define xTraceObjectSetState(xObjectHandle, uxState) xTraceObjectSetSpecificState(xObjectHandle, 0, uxState) /** * @brief Sets trace object specific state state. * * @param[in] xObjectHandle Pointer to initialized trace object. * @param[in] uiIndex State Index. * @param[in] uxState State. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ #define xTraceObjectSetSpecificState(xObjectHandle, uiIndex, uxState) xTraceEntrySetState((TraceEntryHandle_t)(xObjectHandle), uiIndex, uxState) /** * @brief Sets trace object options. * * @param[in] xObjectHandle Pointer to initialized trace object. * @param[in] uiOptions Options. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ #define xTraceObjectSetOptions(xObjectHandle, uiOptions) xTraceEntrySetOptions((TraceEntryHandle_t)(xObjectHandle), uiOptions) /** * @brief Registers trace object without trace object handle. * * @param[in] uiEventCode Event code. * @param[in] pvObject Object. * @param[in] szName Name. * @param[in] uxState State. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectRegisterWithoutHandle(uint32_t uiEventCode, void* pvObject, const char* szName, TraceUnsignedBaseType_t uxState); /** * @brief Unregisters trace object without trace object handle. * * @param[in] uiEventCode Event code. * @param[in] pvObject Object. * @param[in] uxState State. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectUnregisterWithoutHandle(uint32_t uiEventCode, void* pvObject, TraceUnsignedBaseType_t uxState); /** * @brief Set trace object name without trace object handle. * * @param[in] pvObject Object. * @param[in] szName Name. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectSetNameWithoutHandle(void* pvObject, const char* szName); /** * @brief Set trace object state without trace object handle. * * @param[in] pvObject Object. * @param[in] uxState State. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ #define xTraceObjectSetStateWithoutHandle(pvObject, uxState) xTraceObjectSetSpecificStateWithoutHandle(pvObject, 0, uxState) /** * @brief Sets trace object specific state without trace object * handle. * * @param[in] pvObject Object. * @param[in] uiIndex State index. * @param[in] uxState State. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectSetSpecificStateWithoutHandle(void* pvObject, uint32_t uiIndex, TraceUnsignedBaseType_t uxState); /** * @brief Sets trace object options without trace object handle. * * @param[in] pvObject Object. * @param[in] uiOptions Options. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceObjectSetOptionsWithoutHandle(void* pvObject, uint32_t uiOptions); /** @} */ #ifdef __cplusplus } #endif #endif /* (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) */ #endif /* (TRC_USE_TRACEALYZER_RECORDER == 1) */ #endif /* TRC_OBJECT_H */