/* * 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 static buffer APIs. */ #ifndef TRC_STATIC_BUFFER_H #define TRC_STATIC_BUFFER_H #if ( TRC_USE_TRACEALYZER_RECORDER == 1 ) #if ( TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING ) #include #ifdef __cplusplus extern "C" { #endif /** * @defgroup trace_static_buffer_apis Trace Static Buffer APIs * @ingroup trace_recorder_apis * @{ */ /* A buffer type that is maximum size */ typedef uint8_t TraceStaticBuffer_t[ TRC_MAX_BLOB_SIZE ]; /** * @internal Trace Core Static Buffer Core Structure */ typedef struct TraceCoreStaticBufferCore { TraceStaticBuffer_t dummyEvents[ ( TRC_CFG_MAX_ISR_NESTING ) + 1 ]; /**< */ } TraceCoreStaticBuffer_t; /** * @internal Trace Static Buffer Table Structure */ typedef struct TraceStaticBufferTable { TraceCoreStaticBuffer_t coreDummyEvents[ TRC_CFG_CORE_COUNT ]; /**< Temporary buffers used for event or blob creation. */ } TraceStaticBufferTable_t; #define TRC_STATIC_BUFFER_BUFFER_SIZE ( sizeof( TraceStaticBufferTable_t ) ) /** * @internal Trace Static Buffer Buffer Structure */ typedef struct TraceStaticBufferBuffer { uint8_t buffer[ TRC_STATIC_BUFFER_BUFFER_SIZE ]; /**< */ } TraceStaticBufferBuffer_t; extern TraceStaticBufferTable_t * pxTraceStaticBufferTable; /** * @internal Initialize trace static buffer. * * @param[in] pxBuffer Pointer to memory that will be used by the * trace static buffer. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceStaticBufferInitialize( TraceStaticBufferBuffer_t * pxBuffer ); #if ( ( TRC_CFG_USE_TRACE_ASSERT ) == 1 ) /** * @brief Gets trace static buffer. * * @param[out] ppvBuffer Buffer. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceStaticBufferGet( void ** ppvBuffer ); #else /* ((TRC_CFG_USE_TRACE_ASSERT) == 1) */ /** * @brief Gets trace static buffer. * * @param[out] ppvBuffer Buffer. * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ #define xTraceStaticBufferGet( ppvBuffer ) ( *ppvBuffer = ( void * ) &pxTraceStaticBufferTable->coreDummyEvents[ TRC_CFG_GET_CURRENT_CORE() ].dummyEvents[ xTraceISRGetCurrentNestingReturned() + 1 ], TRC_SUCCESS ) #endif /* ((TRC_CFG_USE_TRACE_ASSERT) == 1) */ /** @} */ #ifdef __cplusplus } #endif #endif /* (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) */ #endif /* (TRC_USE_TRACEALYZER_RECORDER == 1) */ #endif /* TRC_STATIC_BUFFER_H */