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 interval APIs. 13 */ 14 15 #ifndef TRC_INTERVAL_H 16 #define TRC_INTERVAL_H 17 18 #if (TRC_USE_TRACEALYZER_RECORDER == 1) && (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 #include <trcTypes.h> 25 26 #define TRC_INTERVAL_CHANNEL_SET_INDEX 0u 27 28 /** 29 * @defgroup trace_interval_apis Trace Interval APIs 30 * @ingroup trace_recorder_apis 31 * @{ 32 */ 33 34 /** 35 * @brief Creates trace interval channel set. 36 * 37 * @param[in] szName Name. 38 * @param[out] pxIntervalChannelSetHandle Pointer to uninitialized trace interval channel set. 39 * 40 * @retval TRC_FAIL Failure 41 * @retval TRC_SUCCESS Success 42 */ 43 traceResult xTraceIntervalChannelSetCreate(const char* szName, TraceIntervalChannelSetHandle_t* pxIntervalChannelSetHandle); 44 45 /** 46 * @brief Creates trace interval channel. 47 * 48 * @param[in] szName Name. 49 * @param[in] xIntervalChannelSetHandle Interval set that this channel belongs to. 50 * @param[out] pxIntervalChannelHandle Pointer to uninitialized trace interval channel. 51 * 52 * @retval TRC_FAIL Failure 53 * @retval TRC_SUCCESS Success 54 */ 55 traceResult xTraceIntervalChannelCreate(const char *szName, TraceIntervalChannelSetHandle_t xIntervalChannelSetHandle, TraceIntervalChannelHandle_t *pxIntervalChannelHandle); 56 57 /** 58 * @brief Starts trace interval instance. 59 * 60 * @param[in] xIntervalChannelHandle Interval handle. 61 * @param[in] uxValue Value that can be used to tell instances apart. 62 * @param[out] pxIntervalInstanceHandle Pointer to interval instance variable. 63 * 64 * @retval TRC_FAIL Failure 65 * @retval TRC_SUCCESS Success 66 */ 67 traceResult xTraceIntervalStart(TraceIntervalChannelHandle_t xIntervalChannelHandle, TraceUnsignedBaseType_t uxValue, TraceIntervalInstanceHandle_t* pxIntervalInstanceHandle); 68 69 /** 70 * @brief Stops trace interval instance. 71 * 72 * @param[in] xIntervalChannelHandle Interval handle. 73 * @param[in] xIntervalInstanceHandle Interval instance. 74 * 75 * @retval TRC_FAIL Failure 76 * @retval TRC_SUCCESS Success 77 */ 78 traceResult xTraceIntervalStop(TraceIntervalChannelHandle_t xIntervalChannelHandle, TraceIntervalInstanceHandle_t xIntervalInstanceHandle); 79 80 /** 81 * @brief Gets trace interval channel state. 82 * 83 * @param[in] xIntervalChannelHandle Pointer to initialized trace interval. 84 * @param[out] puxState State. 85 * 86 * @retval TRC_FAIL Failure 87 * @retval TRC_SUCCESS Success 88 */ 89 #define xTraceIntervalGetState(xIntervalChannelHandle, puxState) xTraceEntryGetState((TraceEntryHandle_t)(xIntervalChannelHandle), TRC_INTERVAL_CHANNEL_SET_INDEX, puxState) 90 91 /** @} */ 92 93 #ifdef __cplusplus 94 } 95 #endif 96 97 #else 98 99 #define xTraceIntervalChannelSetCreate(_szName, _pxIntervalChannelSetHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_szName), (void)(_pxIntervalChannelSetHandle), TRC_SUCCESS) 100 101 #define xTraceIntervalChannelCreate(_szName, _xIntervalChannelSetHandle, _pxIntervalChannelHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_szName), (void)(_xIntervalChannelSetHandle), (void)(_pxIntervalChannelHandle), TRC_SUCCESS) 102 103 #define xTraceIntervalStart(_xIntervalHandle, _uxValue, _pxIntervalInstanceHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_xIntervalHandle), (void)(_uxValue), (void)(_pxIntervalInstanceHandle), TRC_SUCCESS) 104 105 #define xTraceIntervalStop(_xIntervalHandle, _xIntervalInstanceHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xIntervalHandle), (void)(_xIntervalInstanceHandle), TRC_SUCCESS) 106 107 #define xTraceIntervalGetState(_xIntervalHandle, _puxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xIntervalHandle), (void)(_puxState), TRC_SUCCESS) 108 109 #endif 110 111 #endif 112