summaryrefslogtreecommitdiff
path: root/FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/trcStreamingRecorder.c
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/trcStreamingRecorder.c')
-rw-r--r--FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/trcStreamingRecorder.c39
1 files changed, 35 insertions, 4 deletions
diff --git a/FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/trcStreamingRecorder.c b/FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/trcStreamingRecorder.c
index c86d688e6..dc1b87865 100644
--- a/FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/trcStreamingRecorder.c
+++ b/FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/trcStreamingRecorder.c
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Trace Recorder Library for Tracealyzer v4.1.1
+ * Trace Recorder Library for Tracealyzer v4.1.5
* Percepio AB, www.percepio.com
*
* trcStreamingRecorder.c
@@ -48,6 +48,9 @@
#if (TRC_USE_TRACEALYZER_RECORDER == 1)
+#include <stdio.h>
+#include <stdarg.h>
+
typedef struct{
uint16_t EventID;
uint16_t EventCount;
@@ -174,9 +177,6 @@ static uint16_t FormatVersion = 0x0004;
/* The number of events stored. Used as event sequence number. */
static uint32_t eventCounter = 0;
-/* The user event channel for recorder warnings, defined in trcKernelPort.c */
-extern char* trcWarningChannel;
-
/* Remembers if an earlier ISR in a sequence of adjacent ISRs has triggered a task switch.
In that case, vTraceStoreISREnd does not store a return to the previously executing task. */
int32_t isPendingContextSwitch = 0;
@@ -399,6 +399,37 @@ void vTracePrint(traceString chn, const char* str)
prvTraceStoreSimpleStringEventHelper(chn, str);
}
+
+/*******************************************************************************
+* vTraceConsoleChannelPrintF
+*
+* Wrapper for vTracePrint, using the default channel. Can be used as a drop-in
+* replacement for printf and similar functions, e.g. in a debug logging macro.
+*
+* Example:
+*
+* // Old: #define LogString debug_console_printf
+*
+* // New, log to Tracealyzer instead:
+* #define LogString vTraceConsoleChannelPrintF
+* ...
+* LogString("My value is: %d", myValue);
+******************************************************************************/
+void vTraceConsoleChannelPrintF(const char* fmt, ...)
+{
+ va_list vl;
+ char tempBuf[60];
+ static traceString consoleChannel = NULL;
+
+ if (consoleChannel == NULL)
+ consoleChannel = xTraceRegisterString("Debug Console");
+
+ va_start(vl, fmt);
+ vsnprintf(tempBuf, 60, fmt, vl);
+ vTracePrint(consoleChannel, tempBuf);
+ va_end(vl);
+}
+
/******************************************************************************
* vTracePrintF
*