12#ifndef TRC_STREAM_PORT_H
13#define TRC_STREAM_PORT_H
15#include <trcDefines.h>
18#if (TRC_USE_TRACEALYZER_RECORDER == 1)
20#if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
44#if defined(CONFIG_PERCEPIO_RECORDER_CFG_TRAX_MODE_BLOCK_IF_FIFO_FULL)
45#define TRC_CFG_APPTRACE_TRAX_BLOCKING_MODE 1
46#elif defined(CONFIG_PERCEPIO_RECORDER_CFG_TRAX_MODE_NO_BLOCK_SKIP)
47#define TRC_CFG_APPTRACE_TRAX_BLOCKING_MODE 0
50#ifdef CONFIG_PERCEPIO_RECORDER_TRC_STREAM_PORT_USE_INTERNAL_BUFFER
51#define TRC_USE_INTERNAL_BUFFER 1
53#define TRC_STREAM_PORT_INTERNAL_BUFFER_SIZE ((((CONFIG_PERCEPIO_RECORDER_CFG_STREAM_PORT_INTERNAL_BUFFER_SIZE) + sizeof(TraceUnsignedBaseType_t) - 1) / sizeof(TraceUnsignedBaseType_t)) * sizeof(TraceUnsignedBaseType_t))
56#define TRC_USE_INTERNAL_BUFFER 0
59#ifdef PERCEPIO_RECORDER_TRC_STREAM_PORT_INTERNAL_EVENT_BUFFER_TRANSFER_MODE_CHUNKED
60#define TRC_INTERNAL_BUFFER_CHUNK_SIZE ((((CONFIG_PERCEPIO_RECORDER_CFG_STREAM_PORT_INTERNAL_BUFFER_CHUNK_SIZE) + sizeof(TraceUnsignedBaseType_t) - 1) / sizeof(TraceUnsignedBaseType_t)) * sizeof(TraceUnsignedBaseType_t))
62#define TRC_INTERNAL_BUFFER_CHUNK_SIZE 1024
65#if CONFIG_PERCEPIO_RECORDER_TRC_STREAM_PORT_INTERNAL_BUFFER_WRITE_MODE_DIRECT == 1
66#define TRC_INTERNAL_EVENT_BUFFER_WRITE_MODE TRC_INTERNAL_EVENT_BUFFER_OPTION_WRITE_MODE_DIRECT
67#elif CONFIG_PERCEPIO_RECORDER_TRC_STREAM_PORT_INTERNAL_BUFFER_WRITE_MODE_COPY == 1
68#define TRC_INTERNAL_EVENT_BUFFER_WRITE_MODE TRC_INTERNAL_EVENT_BUFFER_OPTION_WRITE_MODE_COPY
71#if CONFIG_PERCEPIO_RECORDER_TRC_STREAM_PORT_INTERNAL_EVENT_BUFFER_TRANSFER_MODE_ALL == 1
72#define TRC_INTERNAL_EVENT_BUFFER_TRANSFER_MODE TRC_INTERNAL_EVENT_BUFFER_OPTION_TRANSFER_MODE_ALL
73#elif CONFIG_PERCEPIO_RECORDER_TRC_STREAM_PORT_INTERNAL_EVENT_BUFFER_TRANSFER_MODE_CHUNKED == 1
74#define TRC_INTERNAL_EVENT_BUFFER_TRANSFER_MODE TRC_INTERNAL_EVENT_BUFFER_OPTION_TRANSFER_MODE_CHUNKED
77#ifdef PERCEPIO_RECORDER_CFG_STREAM_PORT_INTERNAL_BUFFER_CHUNK_TRANSFER_AGAIN_SIZE_LIMIT
78#define TRC_INTERNAL_BUFFER_CHUNK_TRANSFER_AGAIN_SIZE_LIMIT (PERCEPIO_RECORDER_CFG_STREAM_PORT_INTERNAL_BUFFER_CHUNK_TRANSFER_AGAIN_SIZE_LIMIT)
80#define TRC_INTERNAL_BUFFER_CHUNK_TRANSFER_AGAIN_SIZE_LIMIT 10
83#ifdef PERCEPIO_RECORDER_CFG_STREAM_PORT_INTERNAL_BUFFER_CHUNK_TRANSFER_AGAIN_COUNT_LIMIT
84#define TRC_INTERNAL_BUFFER_CHUNK_TRANSFER_AGAIN_COUNT_LIMIT (PERCEPIO_RECORDER_CFG_STREAM_PORT_INTERNAL_BUFFER_CHUNK_TRANSFER_AGAIN_COUNT_LIMIT)
86#define TRC_INTERNAL_BUFFER_CHUNK_TRANSFER_AGAIN_COUNT_LIMIT 10
94#if (TRC_USE_INTERNAL_BUFFER == 1)
95 uint8_t bufferInternal[TRC_STREAM_PORT_INTERNAL_BUFFER_SIZE];
97 TraceUnsignedBaseType_t dummy;
122#if (TRC_USE_INTERNAL_BUFFER == 1)
123 #if (TRC_INTERNAL_EVENT_BUFFER_WRITE_MODE == TRC_INTERNAL_EVENT_BUFFER_OPTION_WRITE_MODE_COPY)
124 #define xTraceStreamPortAllocate(uiSize, ppvData) ((void)(uiSize), xTraceStaticBufferGet(ppvData))
126 #define xTraceStreamPortAllocate(uiSize, ppvData) ((void)(uiSize), xTraceInternalEventBufferAlloc(uiSize, ppvData))
129 #define xTraceStreamPortAllocate(uiSize, ppvData) ((void)(uiSize), xTraceStaticBufferGet(ppvData))
144#if (TRC_USE_INTERNAL_BUFFER == 1)
145 #if (TRC_INTERNAL_EVENT_BUFFER_WRITE_MODE == TRC_INTERNAL_EVENT_BUFFER_OPTION_WRITE_MODE_COPY)
146 #define xTraceStreamPortCommit xTraceInternalEventBufferPush
148 #define xTraceStreamPortCommit xTraceInternalEventBufferAllocCommit
151 #define xTraceStreamPortCommit xTraceStreamPortWriteData
164traceResult xTraceStreamPortWriteData(
void* pvData, uint32_t uiSize, int32_t* piBytesWritten);
176traceResult xTraceStreamPortReadData(
void* pvData, uint32_t uiSize, int32_t* piBytesRead);
186traceResult xTraceStreamPortOnEnable(uint32_t uiStartOption);
188#define xTraceStreamPortOnDisable() ((void)TRC_SUCCESS)
190#define xTraceStreamPortOnTraceBegin() (TRC_SUCCESS)
192#define xTraceStreamPortOnTraceEnd() (TRC_SUCCESS)
A structure representing the trace stream port buffer.
Definition: trcStreamPort.h:93