• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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