Rev 2726 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2726 | vana | 1 | #ifndef _EFI_CON_H |
2 | #define _EFI_CON_H |
||
3 | |||
4 | /*++ |
||
5 | |||
6 | Copyright (c) 1998 Intel Corporation |
||
7 | |||
8 | Module Name: |
||
9 | |||
10 | eficon.h |
||
11 | |||
12 | Abstract: |
||
13 | |||
14 | EFI console protocols |
||
15 | |||
16 | |||
17 | |||
18 | Revision History |
||
19 | |||
20 | --*/ |
||
21 | |||
22 | // |
||
23 | // Text output protocol |
||
24 | // |
||
25 | |||
26 | #define SIMPLE_TEXT_OUTPUT_PROTOCOL \ |
||
27 | { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
||
28 | |||
29 | INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE); |
||
30 | |||
31 | typedef |
||
32 | EFI_STATUS |
||
33 | (EFIAPI *EFI_TEXT_RESET) ( |
||
34 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
||
35 | IN BOOLEAN ExtendedVerification |
||
36 | ); |
||
37 | |||
38 | typedef |
||
39 | EFI_STATUS |
||
40 | (EFIAPI *EFI_TEXT_OUTPUT_STRING) ( |
||
41 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
||
42 | IN CHAR16 *String |
||
43 | ); |
||
44 | |||
45 | typedef |
||
46 | EFI_STATUS |
||
47 | (EFIAPI *EFI_TEXT_TEST_STRING) ( |
||
48 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
||
49 | IN CHAR16 *String |
||
50 | ); |
||
51 | |||
52 | typedef |
||
53 | EFI_STATUS |
||
54 | (EFIAPI *EFI_TEXT_QUERY_MODE) ( |
||
55 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
||
56 | IN UINTN ModeNumber, |
||
57 | OUT UINTN *Columns, |
||
58 | OUT UINTN *Rows |
||
59 | ); |
||
60 | |||
61 | typedef |
||
62 | EFI_STATUS |
||
63 | (EFIAPI *EFI_TEXT_SET_MODE) ( |
||
64 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
||
65 | IN UINTN ModeNumber |
||
66 | ); |
||
67 | |||
68 | typedef |
||
69 | EFI_STATUS |
||
70 | (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) ( |
||
71 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
||
72 | IN UINTN Attribute |
||
73 | ); |
||
74 | |||
75 | #define EFI_BLACK 0x00 |
||
76 | #define EFI_BLUE 0x01 |
||
77 | #define EFI_GREEN 0x02 |
||
78 | #define EFI_CYAN (EFI_BLUE | EFI_GREEN) |
||
79 | #define EFI_RED 0x04 |
||
80 | #define EFI_MAGENTA (EFI_BLUE | EFI_RED) |
||
81 | #define EFI_BROWN (EFI_GREEN | EFI_RED) |
||
82 | #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED) |
||
83 | #define EFI_BRIGHT 0x08 |
||
84 | #define EFI_DARKGRAY (EFI_BRIGHT) |
||
85 | #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT) |
||
86 | #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT) |
||
87 | #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT) |
||
88 | #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT) |
||
89 | #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT) |
||
90 | #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT) |
||
91 | #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT) |
||
92 | |||
93 | #define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4)) |
||
94 | |||
95 | #define EFI_BACKGROUND_BLACK 0x00 |
||
96 | #define EFI_BACKGROUND_BLUE 0x10 |
||
97 | #define EFI_BACKGROUND_GREEN 0x20 |
||
98 | #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN) |
||
99 | #define EFI_BACKGROUND_RED 0x40 |
||
100 | #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED) |
||
101 | #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) |
||
102 | #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) |
||
103 | |||
104 | |||
105 | typedef |
||
106 | EFI_STATUS |
||
107 | (EFIAPI *EFI_TEXT_CLEAR_SCREEN) ( |
||
108 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This |
||
109 | ); |
||
110 | |||
111 | typedef |
||
112 | EFI_STATUS |
||
113 | (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) ( |
||
114 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
||
115 | IN UINTN Column, |
||
116 | IN UINTN Row |
||
117 | ); |
||
118 | |||
119 | typedef |
||
120 | EFI_STATUS |
||
121 | (EFIAPI *EFI_TEXT_ENABLE_CURSOR) ( |
||
122 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
||
123 | IN BOOLEAN Enable |
||
124 | ); |
||
125 | |||
126 | typedef struct { |
||
127 | INT32 MaxMode; |
||
128 | // current settings |
||
129 | INT32 Mode; |
||
130 | INT32 Attribute; |
||
131 | INT32 CursorColumn; |
||
132 | INT32 CursorRow; |
||
133 | BOOLEAN CursorVisible; |
||
134 | } SIMPLE_TEXT_OUTPUT_MODE; |
||
135 | |||
136 | typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE { |
||
137 | EFI_TEXT_RESET Reset; |
||
138 | |||
139 | EFI_TEXT_OUTPUT_STRING OutputString; |
||
140 | EFI_TEXT_TEST_STRING TestString; |
||
141 | |||
142 | EFI_TEXT_QUERY_MODE QueryMode; |
||
143 | EFI_TEXT_SET_MODE SetMode; |
||
144 | EFI_TEXT_SET_ATTRIBUTE SetAttribute; |
||
145 | |||
146 | EFI_TEXT_CLEAR_SCREEN ClearScreen; |
||
147 | EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; |
||
148 | EFI_TEXT_ENABLE_CURSOR EnableCursor; |
||
149 | |||
150 | // Current mode |
||
151 | SIMPLE_TEXT_OUTPUT_MODE *Mode; |
||
152 | } SIMPLE_TEXT_OUTPUT_INTERFACE; |
||
153 | |||
154 | // |
||
155 | // Define's for required EFI Unicode Box Draw character |
||
156 | // |
||
157 | |||
158 | #define BOXDRAW_HORIZONTAL 0x2500 |
||
159 | #define BOXDRAW_VERTICAL 0x2502 |
||
160 | #define BOXDRAW_DOWN_RIGHT 0x250c |
||
161 | #define BOXDRAW_DOWN_LEFT 0x2510 |
||
162 | #define BOXDRAW_UP_RIGHT 0x2514 |
||
163 | #define BOXDRAW_UP_LEFT 0x2518 |
||
164 | #define BOXDRAW_VERTICAL_RIGHT 0x251c |
||
165 | #define BOXDRAW_VERTICAL_LEFT 0x2524 |
||
166 | #define BOXDRAW_DOWN_HORIZONTAL 0x252c |
||
167 | #define BOXDRAW_UP_HORIZONTAL 0x2534 |
||
168 | #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c |
||
169 | |||
170 | #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550 |
||
171 | #define BOXDRAW_DOUBLE_VERTICAL 0x2551 |
||
172 | #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552 |
||
173 | #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553 |
||
174 | #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554 |
||
175 | |||
176 | #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555 |
||
177 | #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556 |
||
178 | #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557 |
||
179 | |||
180 | #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558 |
||
181 | #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559 |
||
182 | #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a |
||
183 | |||
184 | #define BOXDRAW_UP_LEFT_DOUBLE 0x255b |
||
185 | #define BOXDRAW_UP_DOUBLE_LEFT 0x255c |
||
186 | #define BOXDRAW_DOUBLE_UP_LEFT 0x255d |
||
187 | |||
188 | #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e |
||
189 | #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f |
||
190 | #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560 |
||
191 | |||
192 | #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561 |
||
193 | #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562 |
||
194 | #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563 |
||
195 | |||
196 | #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564 |
||
197 | #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565 |
||
198 | #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566 |
||
199 | |||
200 | #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567 |
||
201 | #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568 |
||
202 | #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569 |
||
203 | |||
204 | #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a |
||
205 | #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b |
||
206 | #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c |
||
207 | |||
208 | // |
||
209 | // EFI Required Block Elements Code Chart |
||
210 | // |
||
211 | |||
212 | #define BLOCKELEMENT_FULL_BLOCK 0x2588 |
||
213 | #define BLOCKELEMENT_LIGHT_SHADE 0x2591 |
||
214 | // |
||
215 | // EFI Required Geometric Shapes Code Chart |
||
216 | // |
||
217 | |||
218 | #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2 |
||
219 | #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba |
||
220 | #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc |
||
221 | #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4 |
||
222 | |||
223 | // |
||
224 | // EFI Required Arrow shapes |
||
225 | // |
||
226 | |||
227 | #define ARROW_UP 0x2191 |
||
228 | #define ARROW_DOWN 0x2193 |
||
229 | |||
230 | // |
||
231 | // Text input protocol |
||
232 | // |
||
233 | |||
234 | #define SIMPLE_TEXT_INPUT_PROTOCOL \ |
||
235 | { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
||
236 | |||
237 | INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE); |
||
238 | |||
239 | typedef struct { |
||
240 | UINT16 ScanCode; |
||
241 | CHAR16 UnicodeChar; |
||
242 | } EFI_INPUT_KEY; |
||
243 | |||
244 | // |
||
245 | // Baseline unicode control chars |
||
246 | // |
||
247 | |||
248 | #define CHAR_NULL 0x0000 |
||
249 | #define CHAR_BACKSPACE 0x0008 |
||
250 | #define CHAR_TAB 0x0009 |
||
251 | #define CHAR_LINEFEED 0x000A |
||
252 | #define CHAR_CARRIAGE_RETURN 0x000D |
||
253 | |||
254 | // |
||
255 | // Scan codes for base line keys |
||
256 | // |
||
257 | |||
258 | #define SCAN_NULL 0x0000 |
||
259 | #define SCAN_UP 0x0001 |
||
260 | #define SCAN_DOWN 0x0002 |
||
261 | #define SCAN_RIGHT 0x0003 |
||
262 | #define SCAN_LEFT 0x0004 |
||
263 | #define SCAN_HOME 0x0005 |
||
264 | #define SCAN_END 0x0006 |
||
265 | #define SCAN_INSERT 0x0007 |
||
266 | #define SCAN_DELETE 0x0008 |
||
267 | #define SCAN_PAGE_UP 0x0009 |
||
268 | #define SCAN_PAGE_DOWN 0x000A |
||
269 | #define SCAN_F1 0x000B |
||
270 | #define SCAN_F2 0x000C |
||
271 | #define SCAN_F3 0x000D |
||
272 | #define SCAN_F4 0x000E |
||
273 | #define SCAN_F5 0x000F |
||
274 | #define SCAN_F6 0x0010 |
||
275 | #define SCAN_F7 0x0011 |
||
276 | #define SCAN_F8 0x0012 |
||
277 | #define SCAN_F9 0x0013 |
||
278 | #define SCAN_F10 0x0014 |
||
279 | #define SCAN_ESC 0x0017 |
||
280 | |||
281 | typedef |
||
282 | EFI_STATUS |
||
283 | (EFIAPI *EFI_INPUT_RESET) ( |
||
284 | IN struct _SIMPLE_INPUT_INTERFACE *This, |
||
285 | IN BOOLEAN ExtendedVerification |
||
286 | ); |
||
287 | |||
288 | typedef |
||
289 | EFI_STATUS |
||
290 | (EFIAPI *EFI_INPUT_READ_KEY) ( |
||
291 | IN struct _SIMPLE_INPUT_INTERFACE *This, |
||
292 | OUT EFI_INPUT_KEY *Key |
||
293 | ); |
||
294 | |||
295 | typedef struct _SIMPLE_INPUT_INTERFACE { |
||
296 | EFI_INPUT_RESET Reset; |
||
297 | EFI_INPUT_READ_KEY ReadKeyStroke; |
||
298 | EFI_EVENT WaitForKey; |
||
299 | } SIMPLE_INPUT_INTERFACE; |
||
300 | |||
301 | #endif |
||
302 |