/* * 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 diagnostic APIs. */ #ifndef TRC_DIAGNOSTICS_H #define TRC_DIAGNOSTICS_H #if ( TRC_USE_TRACEALYZER_RECORDER == 1 ) #if ( TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING ) #include #ifdef __cplusplus extern "C" { #endif #define TRC_DIAGNOSTICS_COUNT 5 typedef enum TraceDiagnosticsType { TRC_DIAGNOSTICS_ENTRY_SYMBOL_LONGEST_LENGTH = 0x00, TRC_DIAGNOSTICS_ENTRY_SLOTS_NO_ROOM = 0x01, TRC_DIAGNOSTICS_BLOB_MAX_BYTES_TRUNCATED = 0x02, TRC_DIAGNOSTICS_STACK_MONITOR_NO_SLOTS = 0x03, TRC_DIAGNOSTICS_ASSERTS_TRIGGERED = 0x04, } TraceDiagnosticsType_t; typedef struct TraceDiagnosticsBuffer { uint8_t buffer[ sizeof( TraceBaseType_t ) * ( TRC_DIAGNOSTICS_COUNT ) ]; } TraceDiagnosticsBuffer_t; /** * @internal Initialize diagnostics * * @param[in] pxBuffer Diagnostics buffer * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsInitialize( TraceDiagnosticsBuffer_t * pxBuffer ); /** * @brief Retrieve diagnostics value * * @param[in] xType Diagnostics type * @param[out] pxValue Pointer to value * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsGet( TraceDiagnosticsType_t xType, TraceBaseType_t * pxValue ); /** * @brief Set diagnostics value * * @param[in] xType Diagnostics type * @param[in] xValue Value * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsSet( TraceDiagnosticsType_t xType, TraceBaseType_t xValue ); /** * @brief Add to diagnostics value * * @param[in] xType Diagnostics type * @param[in] xValue Value * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsAdd( TraceDiagnosticsType_t xType, TraceBaseType_t xValue ); /** * @brief Increase diagnostics value * * @param[in] xType Diagnostics type * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsIncrease( TraceDiagnosticsType_t xType ); /** * @brief Decrease diagnostics value * * @param[in] xType Diagnostics type * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsDecrease( TraceDiagnosticsType_t xType ); /** * @brief Set a new diagnostics value if higher than previous value * * @param[in] xType Dagnostics type * @param[in] xValue Value * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsSetIfHigher( TraceDiagnosticsType_t xType, TraceBaseType_t xValue ); /** * @brief Set a new diagnostics value if lower than previous value * * @param[in] xType Dagnostics type * @param[in] xValue Value * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsSetIfLower( TraceDiagnosticsType_t xType, TraceBaseType_t xValue ); /** * @brief Check the diagnostics status * * @retval TRC_FAIL Failure * @retval TRC_SUCCESS Success */ traceResult xTraceDiagnosticsCheckStatus( void ); #ifdef __cplusplus } #endif #endif /* (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) */ #endif /* (TRC_USE_TRACEALYZER_RECORDER == 1) */ #endif /* TRC_DIAGNOSTICS_H */