This is a FileHandle interface implementation and retarget registration of the stdio interface to the Segger Real-Time Terminal (RTT) instead of the default serial port. Retargeting will automatically take place if this library is added to the project.

Dependents:   3_Test_AFE 1_Test_Flash_ADC_RTT

Committer:
0x6d61726b
Date:
Sat May 18 22:41:10 2019 +0000
Revision:
0:7fca1bf48117
updated to Segger RTT version 6.44i

Who changed what in which revision?

UserRevisionLine numberNew contents of line
0x6d61726b 0:7fca1bf48117 1 /*********************************************************************
0x6d61726b 0:7fca1bf48117 2 * SEGGER Microcontroller GmbH *
0x6d61726b 0:7fca1bf48117 3 * The Embedded Experts *
0x6d61726b 0:7fca1bf48117 4 **********************************************************************
0x6d61726b 0:7fca1bf48117 5 * *
0x6d61726b 0:7fca1bf48117 6 * (c) 1995 - 2019 SEGGER Microcontroller GmbH *
0x6d61726b 0:7fca1bf48117 7 * *
0x6d61726b 0:7fca1bf48117 8 * www.segger.com Support: support@segger.com *
0x6d61726b 0:7fca1bf48117 9 * *
0x6d61726b 0:7fca1bf48117 10 **********************************************************************
0x6d61726b 0:7fca1bf48117 11 * *
0x6d61726b 0:7fca1bf48117 12 * SEGGER RTT * Real Time Transfer for embedded targets *
0x6d61726b 0:7fca1bf48117 13 * *
0x6d61726b 0:7fca1bf48117 14 **********************************************************************
0x6d61726b 0:7fca1bf48117 15 * *
0x6d61726b 0:7fca1bf48117 16 * All rights reserved. *
0x6d61726b 0:7fca1bf48117 17 * *
0x6d61726b 0:7fca1bf48117 18 * SEGGER strongly recommends to not make any changes *
0x6d61726b 0:7fca1bf48117 19 * to or modify the source code of this software in order to stay *
0x6d61726b 0:7fca1bf48117 20 * compatible with the RTT protocol and J-Link. *
0x6d61726b 0:7fca1bf48117 21 * *
0x6d61726b 0:7fca1bf48117 22 * Redistribution and use in source and binary forms, with or *
0x6d61726b 0:7fca1bf48117 23 * without modification, are permitted provided that the following *
0x6d61726b 0:7fca1bf48117 24 * conditions are met: *
0x6d61726b 0:7fca1bf48117 25 * *
0x6d61726b 0:7fca1bf48117 26 * o Redistributions of source code must retain the above copyright *
0x6d61726b 0:7fca1bf48117 27 * notice, this list of conditions and the following disclaimer. *
0x6d61726b 0:7fca1bf48117 28 * *
0x6d61726b 0:7fca1bf48117 29 * o Redistributions in binary form must reproduce the above *
0x6d61726b 0:7fca1bf48117 30 * copyright notice, this list of conditions and the following *
0x6d61726b 0:7fca1bf48117 31 * disclaimer in the documentation and/or other materials provided *
0x6d61726b 0:7fca1bf48117 32 * with the distribution. *
0x6d61726b 0:7fca1bf48117 33 * *
0x6d61726b 0:7fca1bf48117 34 * o Neither the name of SEGGER Microcontroller GmbH *
0x6d61726b 0:7fca1bf48117 35 * nor the names of its contributors may be used to endorse or *
0x6d61726b 0:7fca1bf48117 36 * promote products derived from this software without specific *
0x6d61726b 0:7fca1bf48117 37 * prior written permission. *
0x6d61726b 0:7fca1bf48117 38 * *
0x6d61726b 0:7fca1bf48117 39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
0x6d61726b 0:7fca1bf48117 40 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
0x6d61726b 0:7fca1bf48117 41 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
0x6d61726b 0:7fca1bf48117 42 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
0x6d61726b 0:7fca1bf48117 43 * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
0x6d61726b 0:7fca1bf48117 44 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
0x6d61726b 0:7fca1bf48117 45 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
0x6d61726b 0:7fca1bf48117 46 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
0x6d61726b 0:7fca1bf48117 47 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
0x6d61726b 0:7fca1bf48117 48 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
0x6d61726b 0:7fca1bf48117 49 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
0x6d61726b 0:7fca1bf48117 50 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
0x6d61726b 0:7fca1bf48117 51 * DAMAGE. *
0x6d61726b 0:7fca1bf48117 52 * *
0x6d61726b 0:7fca1bf48117 53 **********************************************************************
0x6d61726b 0:7fca1bf48117 54 * *
0x6d61726b 0:7fca1bf48117 55 * RTT version: 6.44i *
0x6d61726b 0:7fca1bf48117 56 * *
0x6d61726b 0:7fca1bf48117 57 **********************************************************************
0x6d61726b 0:7fca1bf48117 58 ---------------------------END-OF-HEADER------------------------------
0x6d61726b 0:7fca1bf48117 59 File : SEGGER_RTT.h
0x6d61726b 0:7fca1bf48117 60 Purpose : Implementation of SEGGER real-time transfer which allows
0x6d61726b 0:7fca1bf48117 61 real-time communication on targets which support debugger
0x6d61726b 0:7fca1bf48117 62 memory accesses while the CPU is running.
0x6d61726b 0:7fca1bf48117 63 Revision: Rev: 13430
0x6d61726b 0:7fca1bf48117 64 ----------------------------------------------------------------------
0x6d61726b 0:7fca1bf48117 65 */
0x6d61726b 0:7fca1bf48117 66
0x6d61726b 0:7fca1bf48117 67 #ifndef SEGGER_RTT_H
0x6d61726b 0:7fca1bf48117 68 #define SEGGER_RTT_H
0x6d61726b 0:7fca1bf48117 69
0x6d61726b 0:7fca1bf48117 70 #include "SEGGER_RTT_Conf.h"
0x6d61726b 0:7fca1bf48117 71
0x6d61726b 0:7fca1bf48117 72
0x6d61726b 0:7fca1bf48117 73
0x6d61726b 0:7fca1bf48117 74 /*********************************************************************
0x6d61726b 0:7fca1bf48117 75 *
0x6d61726b 0:7fca1bf48117 76 * Defines, defaults
0x6d61726b 0:7fca1bf48117 77 *
0x6d61726b 0:7fca1bf48117 78 **********************************************************************
0x6d61726b 0:7fca1bf48117 79 */
0x6d61726b 0:7fca1bf48117 80 #ifndef RTT_USE_ASM
0x6d61726b 0:7fca1bf48117 81 #if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__) || (defined __clang__)) && (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__))
0x6d61726b 0:7fca1bf48117 82 #define RTT_USE_ASM (1)
0x6d61726b 0:7fca1bf48117 83 #else
0x6d61726b 0:7fca1bf48117 84 #define RTT_USE_ASM (0)
0x6d61726b 0:7fca1bf48117 85 #endif
0x6d61726b 0:7fca1bf48117 86 #endif
0x6d61726b 0:7fca1bf48117 87
0x6d61726b 0:7fca1bf48117 88 #ifndef SEGGER_RTT_ASM // defined when SEGGER_RTT.h is included from assembly file
0x6d61726b 0:7fca1bf48117 89 #include <stdlib.h>
0x6d61726b 0:7fca1bf48117 90 #include <stdarg.h>
0x6d61726b 0:7fca1bf48117 91
0x6d61726b 0:7fca1bf48117 92 /*********************************************************************
0x6d61726b 0:7fca1bf48117 93 *
0x6d61726b 0:7fca1bf48117 94 * Defines, fixed
0x6d61726b 0:7fca1bf48117 95 *
0x6d61726b 0:7fca1bf48117 96 **********************************************************************
0x6d61726b 0:7fca1bf48117 97 */
0x6d61726b 0:7fca1bf48117 98
0x6d61726b 0:7fca1bf48117 99 /*********************************************************************
0x6d61726b 0:7fca1bf48117 100 *
0x6d61726b 0:7fca1bf48117 101 * Types
0x6d61726b 0:7fca1bf48117 102 *
0x6d61726b 0:7fca1bf48117 103 **********************************************************************
0x6d61726b 0:7fca1bf48117 104 */
0x6d61726b 0:7fca1bf48117 105
0x6d61726b 0:7fca1bf48117 106 //
0x6d61726b 0:7fca1bf48117 107 // Description for a circular buffer (also called "ring buffer")
0x6d61726b 0:7fca1bf48117 108 // which is used as up-buffer (T->H)
0x6d61726b 0:7fca1bf48117 109 //
0x6d61726b 0:7fca1bf48117 110 typedef struct {
0x6d61726b 0:7fca1bf48117 111 const char* sName; // Optional name. Standard names so far are: "Terminal", "SysView", "J-Scope_t4i4"
0x6d61726b 0:7fca1bf48117 112 char* pBuffer; // Pointer to start of buffer
0x6d61726b 0:7fca1bf48117 113 unsigned SizeOfBuffer; // Buffer size in bytes. Note that one byte is lost, as this implementation does not fill up the buffer in order to avoid the problem of being unable to distinguish between full and empty.
0x6d61726b 0:7fca1bf48117 114 unsigned WrOff; // Position of next item to be written by either target.
0x6d61726b 0:7fca1bf48117 115 volatile unsigned RdOff; // Position of next item to be read by host. Must be volatile since it may be modified by host.
0x6d61726b 0:7fca1bf48117 116 unsigned Flags; // Contains configuration flags
0x6d61726b 0:7fca1bf48117 117 } SEGGER_RTT_BUFFER_UP;
0x6d61726b 0:7fca1bf48117 118
0x6d61726b 0:7fca1bf48117 119 //
0x6d61726b 0:7fca1bf48117 120 // Description for a circular buffer (also called "ring buffer")
0x6d61726b 0:7fca1bf48117 121 // which is used as down-buffer (H->T)
0x6d61726b 0:7fca1bf48117 122 //
0x6d61726b 0:7fca1bf48117 123 typedef struct {
0x6d61726b 0:7fca1bf48117 124 const char* sName; // Optional name. Standard names so far are: "Terminal", "SysView", "J-Scope_t4i4"
0x6d61726b 0:7fca1bf48117 125 char* pBuffer; // Pointer to start of buffer
0x6d61726b 0:7fca1bf48117 126 unsigned SizeOfBuffer; // Buffer size in bytes. Note that one byte is lost, as this implementation does not fill up the buffer in order to avoid the problem of being unable to distinguish between full and empty.
0x6d61726b 0:7fca1bf48117 127 volatile unsigned WrOff; // Position of next item to be written by host. Must be volatile since it may be modified by host.
0x6d61726b 0:7fca1bf48117 128 unsigned RdOff; // Position of next item to be read by target (down-buffer).
0x6d61726b 0:7fca1bf48117 129 unsigned Flags; // Contains configuration flags
0x6d61726b 0:7fca1bf48117 130 } SEGGER_RTT_BUFFER_DOWN;
0x6d61726b 0:7fca1bf48117 131
0x6d61726b 0:7fca1bf48117 132 //
0x6d61726b 0:7fca1bf48117 133 // RTT control block which describes the number of buffers available
0x6d61726b 0:7fca1bf48117 134 // as well as the configuration for each buffer
0x6d61726b 0:7fca1bf48117 135 //
0x6d61726b 0:7fca1bf48117 136 //
0x6d61726b 0:7fca1bf48117 137 typedef struct {
0x6d61726b 0:7fca1bf48117 138 char acID[16]; // Initialized to "SEGGER RTT"
0x6d61726b 0:7fca1bf48117 139 int MaxNumUpBuffers; // Initialized to SEGGER_RTT_MAX_NUM_UP_BUFFERS (type. 2)
0x6d61726b 0:7fca1bf48117 140 int MaxNumDownBuffers; // Initialized to SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (type. 2)
0x6d61726b 0:7fca1bf48117 141 SEGGER_RTT_BUFFER_UP aUp[SEGGER_RTT_MAX_NUM_UP_BUFFERS]; // Up buffers, transferring information up from target via debug probe to host
0x6d61726b 0:7fca1bf48117 142 SEGGER_RTT_BUFFER_DOWN aDown[SEGGER_RTT_MAX_NUM_DOWN_BUFFERS]; // Down buffers, transferring information down from host via debug probe to target
0x6d61726b 0:7fca1bf48117 143 } SEGGER_RTT_CB;
0x6d61726b 0:7fca1bf48117 144
0x6d61726b 0:7fca1bf48117 145 /*********************************************************************
0x6d61726b 0:7fca1bf48117 146 *
0x6d61726b 0:7fca1bf48117 147 * Global data
0x6d61726b 0:7fca1bf48117 148 *
0x6d61726b 0:7fca1bf48117 149 **********************************************************************
0x6d61726b 0:7fca1bf48117 150 */
0x6d61726b 0:7fca1bf48117 151 extern SEGGER_RTT_CB _SEGGER_RTT;
0x6d61726b 0:7fca1bf48117 152
0x6d61726b 0:7fca1bf48117 153 /*********************************************************************
0x6d61726b 0:7fca1bf48117 154 *
0x6d61726b 0:7fca1bf48117 155 * RTT API functions
0x6d61726b 0:7fca1bf48117 156 *
0x6d61726b 0:7fca1bf48117 157 **********************************************************************
0x6d61726b 0:7fca1bf48117 158 */
0x6d61726b 0:7fca1bf48117 159 #ifdef __cplusplus
0x6d61726b 0:7fca1bf48117 160 extern "C" {
0x6d61726b 0:7fca1bf48117 161 #endif
0x6d61726b 0:7fca1bf48117 162 int SEGGER_RTT_AllocDownBuffer (const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
0x6d61726b 0:7fca1bf48117 163 int SEGGER_RTT_AllocUpBuffer (const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
0x6d61726b 0:7fca1bf48117 164 int SEGGER_RTT_ConfigUpBuffer (unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
0x6d61726b 0:7fca1bf48117 165 int SEGGER_RTT_ConfigDownBuffer (unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
0x6d61726b 0:7fca1bf48117 166 int SEGGER_RTT_GetKey (void);
0x6d61726b 0:7fca1bf48117 167 unsigned SEGGER_RTT_HasData (unsigned BufferIndex);
0x6d61726b 0:7fca1bf48117 168 int SEGGER_RTT_HasKey (void);
0x6d61726b 0:7fca1bf48117 169 unsigned SEGGER_RTT_HasDataUp (unsigned BufferIndex);
0x6d61726b 0:7fca1bf48117 170 void SEGGER_RTT_Init (void);
0x6d61726b 0:7fca1bf48117 171 unsigned SEGGER_RTT_Read (unsigned BufferIndex, void* pBuffer, unsigned BufferSize);
0x6d61726b 0:7fca1bf48117 172 unsigned SEGGER_RTT_ReadNoLock (unsigned BufferIndex, void* pData, unsigned BufferSize);
0x6d61726b 0:7fca1bf48117 173 int SEGGER_RTT_SetNameDownBuffer (unsigned BufferIndex, const char* sName);
0x6d61726b 0:7fca1bf48117 174 int SEGGER_RTT_SetNameUpBuffer (unsigned BufferIndex, const char* sName);
0x6d61726b 0:7fca1bf48117 175 int SEGGER_RTT_SetFlagsDownBuffer (unsigned BufferIndex, unsigned Flags);
0x6d61726b 0:7fca1bf48117 176 int SEGGER_RTT_SetFlagsUpBuffer (unsigned BufferIndex, unsigned Flags);
0x6d61726b 0:7fca1bf48117 177 int SEGGER_RTT_WaitKey (void);
0x6d61726b 0:7fca1bf48117 178 unsigned SEGGER_RTT_Write (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
0x6d61726b 0:7fca1bf48117 179 unsigned SEGGER_RTT_WriteNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
0x6d61726b 0:7fca1bf48117 180 unsigned SEGGER_RTT_WriteSkipNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
0x6d61726b 0:7fca1bf48117 181 unsigned SEGGER_RTT_ASM_WriteSkipNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
0x6d61726b 0:7fca1bf48117 182 unsigned SEGGER_RTT_WriteString (unsigned BufferIndex, const char* s);
0x6d61726b 0:7fca1bf48117 183 void SEGGER_RTT_WriteWithOverwriteNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
0x6d61726b 0:7fca1bf48117 184 unsigned SEGGER_RTT_PutChar (unsigned BufferIndex, char c);
0x6d61726b 0:7fca1bf48117 185 unsigned SEGGER_RTT_PutCharSkip (unsigned BufferIndex, char c);
0x6d61726b 0:7fca1bf48117 186 unsigned SEGGER_RTT_PutCharSkipNoLock (unsigned BufferIndex, char c);
0x6d61726b 0:7fca1bf48117 187 //
0x6d61726b 0:7fca1bf48117 188 // Function macro for performance optimization
0x6d61726b 0:7fca1bf48117 189 //
0x6d61726b 0:7fca1bf48117 190 #define SEGGER_RTT_HASDATA(n) (_SEGGER_RTT.aDown[n].WrOff - _SEGGER_RTT.aDown[n].RdOff)
0x6d61726b 0:7fca1bf48117 191
0x6d61726b 0:7fca1bf48117 192 #if RTT_USE_ASM
0x6d61726b 0:7fca1bf48117 193 #define SEGGER_RTT_WriteSkipNoLock SEGGER_RTT_ASM_WriteSkipNoLock
0x6d61726b 0:7fca1bf48117 194 #endif
0x6d61726b 0:7fca1bf48117 195
0x6d61726b 0:7fca1bf48117 196 /*********************************************************************
0x6d61726b 0:7fca1bf48117 197 *
0x6d61726b 0:7fca1bf48117 198 * RTT "Terminal" API functions
0x6d61726b 0:7fca1bf48117 199 *
0x6d61726b 0:7fca1bf48117 200 **********************************************************************
0x6d61726b 0:7fca1bf48117 201 */
0x6d61726b 0:7fca1bf48117 202 int SEGGER_RTT_SetTerminal (char TerminalId);
0x6d61726b 0:7fca1bf48117 203 int SEGGER_RTT_TerminalOut (char TerminalId, const char* s);
0x6d61726b 0:7fca1bf48117 204
0x6d61726b 0:7fca1bf48117 205 /*********************************************************************
0x6d61726b 0:7fca1bf48117 206 *
0x6d61726b 0:7fca1bf48117 207 * RTT printf functions (require SEGGER_RTT_printf.c)
0x6d61726b 0:7fca1bf48117 208 *
0x6d61726b 0:7fca1bf48117 209 **********************************************************************
0x6d61726b 0:7fca1bf48117 210 */
0x6d61726b 0:7fca1bf48117 211 int SEGGER_RTT_printf(unsigned BufferIndex, const char * sFormat, ...);
0x6d61726b 0:7fca1bf48117 212 int SEGGER_RTT_vprintf(unsigned BufferIndex, const char * sFormat, va_list * pParamList);
0x6d61726b 0:7fca1bf48117 213
0x6d61726b 0:7fca1bf48117 214 #ifdef __cplusplus
0x6d61726b 0:7fca1bf48117 215 }
0x6d61726b 0:7fca1bf48117 216 #endif
0x6d61726b 0:7fca1bf48117 217
0x6d61726b 0:7fca1bf48117 218 #endif // ifndef(SEGGER_RTT_ASM)
0x6d61726b 0:7fca1bf48117 219
0x6d61726b 0:7fca1bf48117 220 /*********************************************************************
0x6d61726b 0:7fca1bf48117 221 *
0x6d61726b 0:7fca1bf48117 222 * Defines
0x6d61726b 0:7fca1bf48117 223 *
0x6d61726b 0:7fca1bf48117 224 **********************************************************************
0x6d61726b 0:7fca1bf48117 225 */
0x6d61726b 0:7fca1bf48117 226
0x6d61726b 0:7fca1bf48117 227 //
0x6d61726b 0:7fca1bf48117 228 // Operating modes. Define behavior if buffer is full (not enough space for entire message)
0x6d61726b 0:7fca1bf48117 229 //
0x6d61726b 0:7fca1bf48117 230 #define SEGGER_RTT_MODE_NO_BLOCK_SKIP (0) // Skip. Do not block, output nothing. (Default)
0x6d61726b 0:7fca1bf48117 231 #define SEGGER_RTT_MODE_NO_BLOCK_TRIM (1) // Trim: Do not block, output as much as fits.
0x6d61726b 0:7fca1bf48117 232 #define SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL (2) // Block: Wait until there is space in the buffer.
0x6d61726b 0:7fca1bf48117 233 #define SEGGER_RTT_MODE_MASK (3)
0x6d61726b 0:7fca1bf48117 234
0x6d61726b 0:7fca1bf48117 235 //
0x6d61726b 0:7fca1bf48117 236 // Control sequences, based on ANSI.
0x6d61726b 0:7fca1bf48117 237 // Can be used to control color, and clear the screen
0x6d61726b 0:7fca1bf48117 238 //
0x6d61726b 0:7fca1bf48117 239 #define RTT_CTRL_RESET "\x1B[0m" // Reset to default colors
0x6d61726b 0:7fca1bf48117 240 #define RTT_CTRL_CLEAR "\x1B[2J" // Clear screen, reposition cursor to top left
0x6d61726b 0:7fca1bf48117 241
0x6d61726b 0:7fca1bf48117 242 #define RTT_CTRL_TEXT_BLACK "\x1B[2;30m"
0x6d61726b 0:7fca1bf48117 243 #define RTT_CTRL_TEXT_RED "\x1B[2;31m"
0x6d61726b 0:7fca1bf48117 244 #define RTT_CTRL_TEXT_GREEN "\x1B[2;32m"
0x6d61726b 0:7fca1bf48117 245 #define RTT_CTRL_TEXT_YELLOW "\x1B[2;33m"
0x6d61726b 0:7fca1bf48117 246 #define RTT_CTRL_TEXT_BLUE "\x1B[2;34m"
0x6d61726b 0:7fca1bf48117 247 #define RTT_CTRL_TEXT_MAGENTA "\x1B[2;35m"
0x6d61726b 0:7fca1bf48117 248 #define RTT_CTRL_TEXT_CYAN "\x1B[2;36m"
0x6d61726b 0:7fca1bf48117 249 #define RTT_CTRL_TEXT_WHITE "\x1B[2;37m"
0x6d61726b 0:7fca1bf48117 250
0x6d61726b 0:7fca1bf48117 251 #define RTT_CTRL_TEXT_BRIGHT_BLACK "\x1B[1;30m"
0x6d61726b 0:7fca1bf48117 252 #define RTT_CTRL_TEXT_BRIGHT_RED "\x1B[1;31m"
0x6d61726b 0:7fca1bf48117 253 #define RTT_CTRL_TEXT_BRIGHT_GREEN "\x1B[1;32m"
0x6d61726b 0:7fca1bf48117 254 #define RTT_CTRL_TEXT_BRIGHT_YELLOW "\x1B[1;33m"
0x6d61726b 0:7fca1bf48117 255 #define RTT_CTRL_TEXT_BRIGHT_BLUE "\x1B[1;34m"
0x6d61726b 0:7fca1bf48117 256 #define RTT_CTRL_TEXT_BRIGHT_MAGENTA "\x1B[1;35m"
0x6d61726b 0:7fca1bf48117 257 #define RTT_CTRL_TEXT_BRIGHT_CYAN "\x1B[1;36m"
0x6d61726b 0:7fca1bf48117 258 #define RTT_CTRL_TEXT_BRIGHT_WHITE "\x1B[1;37m"
0x6d61726b 0:7fca1bf48117 259
0x6d61726b 0:7fca1bf48117 260 #define RTT_CTRL_BG_BLACK "\x1B[24;40m"
0x6d61726b 0:7fca1bf48117 261 #define RTT_CTRL_BG_RED "\x1B[24;41m"
0x6d61726b 0:7fca1bf48117 262 #define RTT_CTRL_BG_GREEN "\x1B[24;42m"
0x6d61726b 0:7fca1bf48117 263 #define RTT_CTRL_BG_YELLOW "\x1B[24;43m"
0x6d61726b 0:7fca1bf48117 264 #define RTT_CTRL_BG_BLUE "\x1B[24;44m"
0x6d61726b 0:7fca1bf48117 265 #define RTT_CTRL_BG_MAGENTA "\x1B[24;45m"
0x6d61726b 0:7fca1bf48117 266 #define RTT_CTRL_BG_CYAN "\x1B[24;46m"
0x6d61726b 0:7fca1bf48117 267 #define RTT_CTRL_BG_WHITE "\x1B[24;47m"
0x6d61726b 0:7fca1bf48117 268
0x6d61726b 0:7fca1bf48117 269 #define RTT_CTRL_BG_BRIGHT_BLACK "\x1B[4;40m"
0x6d61726b 0:7fca1bf48117 270 #define RTT_CTRL_BG_BRIGHT_RED "\x1B[4;41m"
0x6d61726b 0:7fca1bf48117 271 #define RTT_CTRL_BG_BRIGHT_GREEN "\x1B[4;42m"
0x6d61726b 0:7fca1bf48117 272 #define RTT_CTRL_BG_BRIGHT_YELLOW "\x1B[4;43m"
0x6d61726b 0:7fca1bf48117 273 #define RTT_CTRL_BG_BRIGHT_BLUE "\x1B[4;44m"
0x6d61726b 0:7fca1bf48117 274 #define RTT_CTRL_BG_BRIGHT_MAGENTA "\x1B[4;45m"
0x6d61726b 0:7fca1bf48117 275 #define RTT_CTRL_BG_BRIGHT_CYAN "\x1B[4;46m"
0x6d61726b 0:7fca1bf48117 276 #define RTT_CTRL_BG_BRIGHT_WHITE "\x1B[4;47m"
0x6d61726b 0:7fca1bf48117 277
0x6d61726b 0:7fca1bf48117 278
0x6d61726b 0:7fca1bf48117 279 #endif
0x6d61726b 0:7fca1bf48117 280
0x6d61726b 0:7fca1bf48117 281 /*************************** End of file ****************************/