1 /* 2 * Copyright (c) 2009-2022 Huawei Technologies Co., Ltd. All rights reserved. 3 * 4 * UniProton is licensed under Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * http://license.coscl.org.cn/MulanPSL2 8 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 9 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 10 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 11 * See the Mulan PSL v2 for more details. 12 * Create: 2009-12-22 13 * Description: Hardware interrupt implementation 14 */ 15 #ifndef RTT_VIEWER_H 16 #define RTT_VIEWER_H 17 18 #ifdef __cplusplus 19 extern "C" 20 { 21 #endif 22 23 #define RTT_VIEWER_MODE_NO_BLOCK_SKIP 0 24 #define RTT_VIEWER_MODE_NO_BLOCK_TRIM 1 25 #define RTT_VIEWER_MODE_BLOCK_IF_FIFO_FULL 2 26 #define RTT_VIEWER_MODE_MASK 3 27 28 #ifndef RTT_VIEWER_MODE_DEFAULT 29 #define RTT_VIEWER_MODE_DEFAULT RTT_VIEWER_MODE_NO_BLOCK_SKIP 30 #endif 31 32 #ifndef RTT_VIEWER_WB_MAX_NUM 33 #define RTT_VIEWER_WB_MAX_NUM 1 34 #endif 35 36 #ifndef RTT_VIEWER_RB_MAX_NUM 37 #define RTT_VIEWER_RB_MAX_NUM 1 38 #endif 39 40 #ifndef RTT_VIEWER_WB_BUFFER_SIZE 41 #define RTT_VIEWER_WB_BUFFER_SIZE 1024 42 #endif 43 44 #ifndef RTT_VIEWER_RB_BUFFER_SIZE 45 #define RTT_VIEWER_RB_BUFFER_SIZE 16 46 #endif 47 48 #ifndef RTT_VIEWER_MAX_INT_PRI 49 #define RTT_VIEWER_MAX_INT_PRI 0x20 50 #endif 51 52 #ifndef RTT_VIEWER_MAX_SHOW_LEN 53 #define RTT_VIEWER_MAX_SHOW_LEN 0x200 54 #endif 55 56 #define RTT_DMB() __asm volatile ("dmb\n" : : :); 57 58 #define RTT_VIEWER_CTRL_RESET "\x1B[0m" 59 #define RTT_VIEWER_CTRL_CLEAR "\x1B[2J" 60 61 #define RTT_VIEWER_CTRL_TEXT_BLACK "\x1B[2;30m" 62 #define RTT_VIEWER_CTRL_TEXT_RED "\x1B[2;31m" 63 #define RTT_VIEWER_CTRL_TEXT_GREEN "\x1B[2;32m" 64 #define RTT_VIEWER_CTRL_TEXT_YELLOW "\x1B[2;33m" 65 #define RTT_VIEWER_CTRL_TEXT_BLUE "\x1B[2;34m" 66 #define RTT_VIEWER_CTRL_TEXT_MAGENTA "\x1B[2;35m" 67 #define RTT_VIEWER_CTRL_TEXT_CYAN "\x1B[2;36m" 68 #define RTT_VIEWER_CTRL_TEXT_WHITE "\x1B[2;37m" 69 70 #define RTT_VIEWER_CTRL_TEXT_BRIGHT_BLACK "\x1B[1;30m" 71 #define RTT_VIEWER_CTRL_TEXT_BRIGHT_RED "\x1B[1;31m" 72 #define RTT_VIEWER_CTRL_TEXT_BRIGHT_GREEN "\x1B[1;32m" 73 #define RTT_VIEWER_CTRL_TEXT_BRIGHT_YELLOW "\x1B[1;33m" 74 #define RTT_VIEWER_CTRL_TEXT_BRIGHT_BLUE "\x1B[1;34m" 75 #define RTT_VIEWER_CTRL_TEXT_BRIGHT_MAGENTA "\x1B[1;35m" 76 #define RTT_VIEWER_CTRL_TEXT_BRIGHT_CYAN "\x1B[1;36m" 77 #define RTT_VIEWER_CTRL_TEXT_BRIGHT_WHITE "\x1B[1;37m" 78 79 #define RTT_VIEWER_CTRL_BG_BLACK "\x1B[24;40m" 80 #define RTT_VIEWER_CTRL_BG_RED "\x1B[24;41m" 81 #define RTT_VIEWER_CTRL_BG_GREEN "\x1B[24;42m" 82 #define RTT_VIEWER_CTRL_BG_YELLOW "\x1B[24;43m" 83 #define RTT_VIEWER_CTRL_BG_BLUE "\x1B[24;44m" 84 #define RTT_VIEWER_CTRL_BG_MAGENTA "\x1B[24;45m" 85 #define RTT_VIEWER_CTRL_BG_CYAN "\x1B[24;46m" 86 #define RTT_VIEWER_CTRL_BG_WHITE "\x1B[24;47m" 87 88 #define RTT_VIEWER_CTRL_BG_BRIGHT_BLACK "\x1B[4;40m" 89 #define RTT_VIEWER_CTRL_BG_BRIGHT_RED "\x1B[4;41m" 90 #define RTT_VIEWER_CTRL_BG_BRIGHT_GREEN "\x1B[4;42m" 91 #define RTT_VIEWER_CTRL_BG_BRIGHT_YELLOW "\x1B[4;43m" 92 #define RTT_VIEWER_CTRL_BG_BRIGHT_BLUE "\x1B[4;44m" 93 #define RTT_VIEWER_CTRL_BG_BRIGHT_MAGENTA "\x1B[4;45m" 94 #define RTT_VIEWER_CTRL_BG_BRIGHT_CYAN "\x1B[4;46m" 95 #define RTT_VIEWER_CTRL_BG_BRIGHT_WHITE "\x1B[4;47m" 96 97 #define MIN(a, b) ((a) < (b) ? (a) : (b)) 98 #define MAX(a, b) ((a) > (b) ? (a) : (b)) 99 100 /* 101 * rtt viewer环形缓冲区 102 */ 103 typedef struct { 104 const char *sName; 105 char *pBuffer; 106 unsigned int size; 107 unsigned int wIdx; 108 volatile unsigned int rIdx; 109 unsigned int flags; 110 } RTT_VIEWER_RING_BUFFER; 111 112 typedef struct { 113 char acID[16]; 114 int wbMaxNum; 115 int rbMaxNum; 116 RTT_VIEWER_RING_BUFFER aUp[RTT_VIEWER_WB_MAX_NUM]; 117 RTT_VIEWER_RING_BUFFER aDown[RTT_VIEWER_RB_MAX_NUM]; 118 } TagRttViewerCb; 119 120 extern TagRttViewerCb _SEGGER_RTT; 121 #define g_rttViewerCb _SEGGER_RTT 122 123 void RttViewerInit(void); 124 unsigned int RttViewerModeSet(unsigned int chn, unsigned int mode); 125 unsigned int RttViewerWrite(unsigned int chn, const void *buffer, unsigned int numBytes); 126 unsigned int RttViewerRead(unsigned int chn, void *buffer, unsigned int numBytes); 127 unsigned int RttViewerPutChar(unsigned int chn, char c); 128 unsigned int RttViewerPrintf(unsigned int chn, const char *format, ...); 129 130 #ifdef __cplusplus 131 } 132 #endif 133 134 #endif /* RTT_VIEWER_H */ 135