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