Skip to content

Commit

Permalink
Add Peek() to SEGGER RTT.
Browse files Browse the repository at this point in the history
  • Loading branch information
henrygab committed Jan 13, 2020
1 parent d5b77b0 commit 75145eb
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
40 changes: 40 additions & 0 deletions cores/nRF5/sysview/SEGGER/SEGGER_RTT.c
Expand Up @@ -600,6 +600,46 @@ unsigned SEGGER_RTT_ReadUpBufferNoLock(unsigned BufferIndex, void* pData, unsign
return NumBytesRead;
}

/*********************************************************************
*
* SEGGER_RTT_Peek
*
* Function description
* Reads one character from the SEGGER RTT buffer.
* Host has previously stored data there.
*
* Return value
* < 0 - No character available (buffer empty).
* >= 0 - Character which is next in the buffer.
*
* Notes
* (1) This function is only specified for accesses to RTT buffer 0.
*/
int SEGGER_RTT_Peek(void) {
char c;
int r;
unsigned RdOff;
unsigned WrOff;
SEGGER_RTT_BUFFER_DOWN* pRing;

SEGGER_RTT_LOCK();
INIT();
pRing = &_SEGGER_RTT.aDown[0]; // Note (1) This function is only specified for accesses to RTT buffer 0.
RdOff = pRing->RdOff;
WrOff = pRing->WrOff;

/* WrOff == RdOff: Buffer is empty */
if (WrOff == RdOff) { // Buffer is empty when these are equal
r = -1;
} else {
c = *(pRing->pBuffer + RdOff);
r = (int)(unsigned char)c;
}
SEGGER_RTT_UNLOCK();
return r;
}


/*********************************************************************
*
* SEGGER_RTT_ReadNoLock()
Expand Down
2 changes: 2 additions & 0 deletions cores/nRF5/sysview/SEGGER/SEGGER_RTT.h
Expand Up @@ -201,6 +201,7 @@ unsigned SEGGER_RTT_HasDataUp (unsigned BufferIndex);
void SEGGER_RTT_Init (void);
unsigned SEGGER_RTT_Read (unsigned BufferIndex, void* pBuffer, unsigned BufferSize);
unsigned SEGGER_RTT_ReadNoLock (unsigned BufferIndex, void* pData, unsigned BufferSize);
int SEGGER_RTT_Peek (void);
int SEGGER_RTT_SetNameDownBuffer (unsigned BufferIndex, const char* sName);
int SEGGER_RTT_SetNameUpBuffer (unsigned BufferIndex, const char* sName);
int SEGGER_RTT_SetFlagsDownBuffer (unsigned BufferIndex, unsigned Flags);
Expand All @@ -216,6 +217,7 @@ unsigned SEGGER_RTT_PutCharSkip (unsigned BufferIndex, char c);
unsigned SEGGER_RTT_PutCharSkipNoLock (unsigned BufferIndex, char c);
unsigned SEGGER_RTT_GetAvailWriteSpace (unsigned BufferIndex);
unsigned SEGGER_RTT_GetBytesInBuffer (unsigned BufferIndex);

//
// Function macro for performance optimization
//
Expand Down

0 comments on commit 75145eb

Please sign in to comment.