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 diagnostic APIs. 13 */ 14 15 #ifndef TRC_DIAGNOSTICS_H 16 #define TRC_DIAGNOSTICS_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 #define TRC_DIAGNOSTICS_COUNT 5UL 27 28 typedef enum TraceDiagnosticsType 29 { 30 TRC_DIAGNOSTICS_ENTRY_SYMBOL_LONGEST_LENGTH = 0x00UL, 31 TRC_DIAGNOSTICS_ENTRY_SLOTS_NO_ROOM = 0x01UL, 32 TRC_DIAGNOSTICS_BLOB_MAX_BYTES_TRUNCATED = 0x02UL, 33 TRC_DIAGNOSTICS_STACK_MONITOR_NO_SLOTS = 0x03UL, 34 TRC_DIAGNOSTICS_ASSERTS_TRIGGERED = 0x04UL, 35 } TraceDiagnosticsType_t; 36 37 typedef struct TraceDiagnostics /* Aligned */ 38 { 39 TraceBaseType_t metrics[TRC_DIAGNOSTICS_COUNT]; 40 } TraceDiagnosticsData_t; 41 42 /** 43 * @internal Initialize diagnostics 44 * 45 * @param[in] pxBuffer Diagnostics buffer 46 * 47 * @retval TRC_FAIL Failure 48 * @retval TRC_SUCCESS Success 49 */ 50 traceResult xTraceDiagnosticsInitialize(TraceDiagnosticsData_t* pxBuffer); 51 52 /** 53 * @brief Retrieve diagnostics value 54 * 55 * @param[in] xType Diagnostics type 56 * @param[out] pxValue Pointer to value 57 * 58 * @retval TRC_FAIL Failure 59 * @retval TRC_SUCCESS Success 60 */ 61 traceResult xTraceDiagnosticsGet(TraceDiagnosticsType_t xType, TraceBaseType_t* pxValue); 62 63 /** 64 * @brief Set diagnostics value 65 * 66 * @param[in] xType Diagnostics type 67 * @param[in] xValue Value 68 * 69 * @retval TRC_FAIL Failure 70 * @retval TRC_SUCCESS Success 71 */ 72 traceResult xTraceDiagnosticsSet(TraceDiagnosticsType_t xType, TraceBaseType_t xValue); 73 74 /** 75 * @brief Add to diagnostics value 76 * 77 * @param[in] xType Diagnostics type 78 * @param[in] xValue Value 79 * 80 * @retval TRC_FAIL Failure 81 * @retval TRC_SUCCESS Success 82 */ 83 traceResult xTraceDiagnosticsAdd(TraceDiagnosticsType_t xType, TraceBaseType_t xValue); 84 85 /** 86 * @brief Increase diagnostics value 87 * 88 * @param[in] xType Diagnostics type 89 * 90 * @retval TRC_FAIL Failure 91 * @retval TRC_SUCCESS Success 92 */ 93 traceResult xTraceDiagnosticsIncrease(TraceDiagnosticsType_t xType); 94 95 /** 96 * @brief Decrease diagnostics value 97 * 98 * @param[in] xType Diagnostics type 99 * 100 * @retval TRC_FAIL Failure 101 * @retval TRC_SUCCESS Success 102 */ 103 traceResult xTraceDiagnosticsDecrease(TraceDiagnosticsType_t xType); 104 105 /** 106 * @brief Set a new diagnostics value if higher than previous value 107 * 108 * @param[in] xType Dagnostics type 109 * @param[in] xValue Value 110 * 111 * @retval TRC_FAIL Failure 112 * @retval TRC_SUCCESS Success 113 */ 114 traceResult xTraceDiagnosticsSetIfHigher(TraceDiagnosticsType_t xType, TraceBaseType_t xValue); 115 116 /** 117 * @brief Set a new diagnostics value if lower than previous value 118 * 119 * @param[in] xType Dagnostics type 120 * @param[in] xValue Value 121 * 122 * @retval TRC_FAIL Failure 123 * @retval TRC_SUCCESS Success 124 */ 125 traceResult xTraceDiagnosticsSetIfLower(TraceDiagnosticsType_t xType, TraceBaseType_t xValue); 126 127 /** 128 * @brief Check the diagnostics status 129 * 130 * @retval TRC_FAIL Failure 131 * @retval TRC_SUCCESS Success 132 */ 133 traceResult xTraceDiagnosticsCheckStatus(void); 134 135 #ifdef __cplusplus 136 } 137 #endif 138 139 #endif 140 141 #endif 142