Add memtest support.
[syslinux-debian/hramrach.git] / efi32 / include / efi / eficon.h
blob089db9816ceb4b01e45a8e332bd6f0c77f6c3961
1 #ifndef _EFI_CON_H
2 #define _EFI_CON_H
4 /*++
6 Copyright (c) 1998 Intel Corporation
8 Module Name:
10 eficon.h
12 Abstract:
14 EFI console protocols
18 Revision History
20 --*/
23 // Text output protocol
26 #define SIMPLE_TEXT_OUTPUT_PROTOCOL \
27 { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
29 INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE);
31 typedef
32 EFI_STATUS
33 (EFIAPI *EFI_TEXT_RESET) (
34 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
35 IN BOOLEAN ExtendedVerification
38 typedef
39 EFI_STATUS
40 (EFIAPI *EFI_TEXT_OUTPUT_STRING) (
41 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
42 IN CHAR16 *String
45 typedef
46 EFI_STATUS
47 (EFIAPI *EFI_TEXT_TEST_STRING) (
48 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
49 IN CHAR16 *String
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
61 typedef
62 EFI_STATUS
63 (EFIAPI *EFI_TEXT_SET_MODE) (
64 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
65 IN UINTN ModeNumber
68 typedef
69 EFI_STATUS
70 (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
71 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
72 IN UINTN Attribute
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)
93 #define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4))
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)
105 typedef
106 EFI_STATUS
107 (EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
108 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This
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
119 typedef
120 EFI_STATUS
121 (EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
122 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
123 IN BOOLEAN Enable
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;
136 typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
137 EFI_TEXT_RESET Reset;
139 EFI_TEXT_OUTPUT_STRING OutputString;
140 EFI_TEXT_TEST_STRING TestString;
142 EFI_TEXT_QUERY_MODE QueryMode;
143 EFI_TEXT_SET_MODE SetMode;
144 EFI_TEXT_SET_ATTRIBUTE SetAttribute;
146 EFI_TEXT_CLEAR_SCREEN ClearScreen;
147 EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
148 EFI_TEXT_ENABLE_CURSOR EnableCursor;
150 // Current mode
151 SIMPLE_TEXT_OUTPUT_MODE *Mode;
152 } SIMPLE_TEXT_OUTPUT_INTERFACE;
155 // Define's for required EFI Unicode Box Draw character
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
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
176 #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555
177 #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556
178 #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557
180 #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558
181 #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559
182 #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a
184 #define BOXDRAW_UP_LEFT_DOUBLE 0x255b
185 #define BOXDRAW_UP_DOUBLE_LEFT 0x255c
186 #define BOXDRAW_DOUBLE_UP_LEFT 0x255d
188 #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e
189 #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f
190 #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560
192 #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561
193 #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562
194 #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563
196 #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564
197 #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565
198 #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566
200 #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567
201 #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568
202 #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569
204 #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a
205 #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b
206 #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c
209 // EFI Required Block Elements Code Chart
212 #define BLOCKELEMENT_FULL_BLOCK 0x2588
213 #define BLOCKELEMENT_LIGHT_SHADE 0x2591
215 // EFI Required Geometric Shapes Code Chart
218 #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2
219 #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
220 #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc
221 #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4
224 // EFI Required Arrow shapes
227 #define ARROW_UP 0x2191
228 #define ARROW_DOWN 0x2193
231 // Text input protocol
234 #define SIMPLE_TEXT_INPUT_PROTOCOL \
235 { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
237 INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE);
239 typedef struct {
240 UINT16 ScanCode;
241 CHAR16 UnicodeChar;
242 } EFI_INPUT_KEY;
245 // Baseline unicode control chars
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
255 // Scan codes for base line keys
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
281 typedef
282 EFI_STATUS
283 (EFIAPI *EFI_INPUT_RESET) (
284 IN struct _SIMPLE_INPUT_INTERFACE *This,
285 IN BOOLEAN ExtendedVerification
288 typedef
289 EFI_STATUS
290 (EFIAPI *EFI_INPUT_READ_KEY) (
291 IN struct _SIMPLE_INPUT_INTERFACE *This,
292 OUT EFI_INPUT_KEY *Key
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;
301 #endif