RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
bsps
shared
freebsd
stand
efi
include
eficon.h
1
/* $FreeBSD$ */
2
#ifndef _EFI_CON_H
3
#define _EFI_CON_H
4
5
/*++
6
7
Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
8
This software and associated documentation (if any) is furnished
9
under a license and may only be used or copied in accordance
10
with the terms of the license. Except as permitted by such
11
license, no part of this software or documentation may be
12
reproduced, stored in a retrieval system, or transmitted in any
13
form or by any means without the express written consent of
14
Intel Corporation.
15
16
Module Name:
17
18
eficon.h
19
20
Abstract:
21
22
EFI console protocols
23
24
25
26
Revision History
27
28
--*/
29
30
//
31
// Text output protocol
32
//
33
34
#define SIMPLE_TEXT_OUTPUT_PROTOCOL \
35
{ 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
36
37
INTERFACE_DECL(
_SIMPLE_TEXT_OUTPUT_INTERFACE
);
38
39
typedef
40
EFI_STATUS
41
(EFIAPI *EFI_TEXT_RESET) (
42
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This,
43
IN BOOLEAN ExtendedVerification
44
);
45
46
typedef
47
EFI_STATUS
48
(EFIAPI *EFI_TEXT_OUTPUT_STRING) (
49
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This,
50
IN CHAR16 *String
51
);
52
53
typedef
54
EFI_STATUS
55
(EFIAPI *EFI_TEXT_TEST_STRING) (
56
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This,
57
IN CHAR16 *String
58
);
59
60
typedef
61
EFI_STATUS
62
(EFIAPI *EFI_TEXT_QUERY_MODE) (
63
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This,
64
IN UINTN ModeNumber,
65
OUT UINTN *Columns,
66
OUT UINTN *Rows
67
);
68
69
typedef
70
EFI_STATUS
71
(EFIAPI *EFI_TEXT_SET_MODE) (
72
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This,
73
IN UINTN ModeNumber
74
);
75
76
typedef
77
EFI_STATUS
78
(EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
79
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This,
80
IN UINTN Attribute
81
);
82
83
#define EFI_BLACK 0x00
84
#define EFI_BLUE 0x01
85
#define EFI_GREEN 0x02
86
#define EFI_CYAN (EFI_BLUE | EFI_GREEN)
87
#define EFI_RED 0x04
88
#define EFI_MAGENTA (EFI_BLUE | EFI_RED)
89
#define EFI_BROWN (EFI_GREEN | EFI_RED)
90
#define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)
91
#define EFI_BRIGHT 0x08
92
#define EFI_DARKGRAY (EFI_BRIGHT)
93
#define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)
94
#define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)
95
#define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)
96
#define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT)
97
#define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT)
98
#define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)
99
#define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
100
101
#define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4))
102
103
#define EFI_BACKGROUND_BLACK 0x00
104
#define EFI_BACKGROUND_BLUE 0x10
105
#define EFI_BACKGROUND_GREEN 0x20
106
#define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
107
#define EFI_BACKGROUND_RED 0x40
108
#define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
109
#define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
110
#define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
111
112
113
typedef
114
EFI_STATUS
115
(EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
116
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
117
);
118
119
typedef
120
EFI_STATUS
121
(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
122
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This,
123
IN UINTN Column,
124
IN UINTN Row
125
);
126
127
typedef
128
EFI_STATUS
129
(EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
130
IN
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
*This,
131
IN BOOLEAN Enable
132
);
133
134
typedef
struct
{
135
INT32 MaxMode;
136
// current settings
137
INT32 Mode;
138
INT32 Attribute;
139
INT32 CursorColumn;
140
INT32 CursorRow;
141
BOOLEAN CursorVisible;
142
}
SIMPLE_TEXT_OUTPUT_MODE
;
143
144
typedef
struct
_SIMPLE_TEXT_OUTPUT_INTERFACE
{
145
EFI_TEXT_RESET Reset;
146
147
EFI_TEXT_OUTPUT_STRING OutputString;
148
EFI_TEXT_TEST_STRING TestString;
149
150
EFI_TEXT_QUERY_MODE QueryMode;
151
EFI_TEXT_SET_MODE SetMode;
152
EFI_TEXT_SET_ATTRIBUTE SetAttribute;
153
154
EFI_TEXT_CLEAR_SCREEN ClearScreen;
155
EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
156
EFI_TEXT_ENABLE_CURSOR EnableCursor;
157
158
// Current mode
159
SIMPLE_TEXT_OUTPUT_MODE
*Mode;
160
} SIMPLE_TEXT_OUTPUT_INTERFACE;
161
162
//
163
// Define's for required EFI Unicode Box Draw character
164
//
165
166
#define BOXDRAW_HORIZONTAL 0x2500
167
#define BOXDRAW_VERTICAL 0x2502
168
#define BOXDRAW_DOWN_RIGHT 0x250c
169
#define BOXDRAW_DOWN_LEFT 0x2510
170
#define BOXDRAW_UP_RIGHT 0x2514
171
#define BOXDRAW_UP_LEFT 0x2518
172
#define BOXDRAW_VERTICAL_RIGHT 0x251c
173
#define BOXDRAW_VERTICAL_LEFT 0x2524
174
#define BOXDRAW_DOWN_HORIZONTAL 0x252c
175
#define BOXDRAW_UP_HORIZONTAL 0x2534
176
#define BOXDRAW_VERTICAL_HORIZONTAL 0x253c
177
178
#define BOXDRAW_DOUBLE_HORIZONTAL 0x2550
179
#define BOXDRAW_DOUBLE_VERTICAL 0x2551
180
#define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552
181
#define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553
182
#define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554
183
184
#define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555
185
#define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556
186
#define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557
187
188
#define BOXDRAW_UP_RIGHT_DOUBLE 0x2558
189
#define BOXDRAW_UP_DOUBLE_RIGHT 0x2559
190
#define BOXDRAW_DOUBLE_UP_RIGHT 0x255a
191
192
#define BOXDRAW_UP_LEFT_DOUBLE 0x255b
193
#define BOXDRAW_UP_DOUBLE_LEFT 0x255c
194
#define BOXDRAW_DOUBLE_UP_LEFT 0x255d
195
196
#define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e
197
#define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f
198
#define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560
199
200
#define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561
201
#define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562
202
#define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563
203
204
#define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564
205
#define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565
206
#define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566
207
208
#define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567
209
#define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568
210
#define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569
211
212
#define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a
213
#define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b
214
#define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c
215
216
//
217
// EFI Required Block Elements Code Chart
218
//
219
220
#define BLOCKELEMENT_FULL_BLOCK 0x2588
221
#define BLOCKELEMENT_LIGHT_SHADE 0x2591
222
//
223
// EFI Required Geometric Shapes Code Chart
224
//
225
226
#define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2
227
#define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
228
#define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc
229
#define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4
230
231
//
232
// EFI Required Arrow shapes
233
//
234
235
#define ARROW_UP 0x2191
236
#define ARROW_DOWN 0x2193
237
238
//
239
// Text input protocol
240
//
241
242
#define SIMPLE_TEXT_INPUT_PROTOCOL \
243
{ 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
244
245
INTERFACE_DECL(
_SIMPLE_INPUT_INTERFACE
);
246
247
typedef
struct
{
248
UINT16 ScanCode;
249
CHAR16 UnicodeChar;
250
}
EFI_INPUT_KEY
;
251
252
//
253
// Baseline unicode control chars
254
//
255
256
#define CHAR_NULL 0x0000
257
#define CHAR_BACKSPACE 0x0008
258
#define CHAR_TAB 0x0009
259
#define CHAR_LINEFEED 0x000A
260
#define CHAR_CARRIAGE_RETURN 0x000D
261
262
//
263
// Scan codes for base line keys
264
//
265
266
#define SCAN_NULL 0x0000
267
#define SCAN_UP 0x0001
268
#define SCAN_DOWN 0x0002
269
#define SCAN_RIGHT 0x0003
270
#define SCAN_LEFT 0x0004
271
#define SCAN_HOME 0x0005
272
#define SCAN_END 0x0006
273
#define SCAN_INSERT 0x0007
274
#define SCAN_DELETE 0x0008
275
#define SCAN_PAGE_UP 0x0009
276
#define SCAN_PAGE_DOWN 0x000A
277
#define SCAN_F1 0x000B
278
#define SCAN_F2 0x000C
279
#define SCAN_F3 0x000D
280
#define SCAN_F4 0x000E
281
#define SCAN_F5 0x000F
282
#define SCAN_F6 0x0010
283
#define SCAN_F7 0x0011
284
#define SCAN_F8 0x0012
285
#define SCAN_F9 0x0013
286
#define SCAN_F10 0x0014
287
#define SCAN_ESC 0x0017
288
289
//
290
// EFI Scan code Ex
291
//
292
#define SCAN_F11 0x0015
293
#define SCAN_F12 0x0016
294
#define SCAN_F13 0x0068
295
#define SCAN_F14 0x0069
296
#define SCAN_F15 0x006A
297
#define SCAN_F16 0x006B
298
#define SCAN_F17 0x006C
299
#define SCAN_F18 0x006D
300
#define SCAN_F19 0x006E
301
#define SCAN_F20 0x006F
302
#define SCAN_F21 0x0070
303
#define SCAN_F22 0x0071
304
#define SCAN_F23 0x0072
305
#define SCAN_F24 0x0073
306
#define SCAN_MUTE 0x007F
307
#define SCAN_VOLUME_UP 0x0080
308
#define SCAN_VOLUME_DOWN 0x0081
309
#define SCAN_BRIGHTNESS_UP 0x0100
310
#define SCAN_BRIGHTNESS_DOWN 0x0101
311
#define SCAN_SUSPEND 0x0102
312
#define SCAN_HIBERNATE 0x0103
313
#define SCAN_TOGGLE_DISPLAY 0x0104
314
#define SCAN_RECOVERY 0x0105
315
#define SCAN_EJECT 0x0106
316
317
typedef
318
EFI_STATUS
319
(EFIAPI *EFI_INPUT_RESET) (
320
IN
struct
_SIMPLE_INPUT_INTERFACE
*This,
321
IN BOOLEAN ExtendedVerification
322
);
323
324
typedef
325
EFI_STATUS
326
(EFIAPI *EFI_INPUT_READ_KEY) (
327
IN
struct
_SIMPLE_INPUT_INTERFACE
*This,
328
OUT
EFI_INPUT_KEY
*Key
329
);
330
331
typedef
struct
_SIMPLE_INPUT_INTERFACE
{
332
EFI_INPUT_RESET Reset;
333
EFI_INPUT_READ_KEY ReadKeyStroke;
334
EFI_EVENT WaitForKey;
335
} SIMPLE_INPUT_INTERFACE;
336
337
#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
338
{0xdd9e7534, 0x7762, 0x4698, {0x8c, 0x14, 0xf5, 0x85, \
339
0x17, 0xa6, 0x25, 0xaa} }
340
341
INTERFACE_DECL(
_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
);
342
343
typedef
UINT8 EFI_KEY_TOGGLE_STATE;
344
//
345
// Any Shift or Toggle State that is valid should have
346
// high order bit set.
347
//
348
typedef
struct
EFI_KEY_STATE
{
349
UINT32 KeyShiftState;
350
EFI_KEY_TOGGLE_STATE KeyToggleState;
351
}
EFI_KEY_STATE
;
352
353
typedef
struct
{
354
EFI_INPUT_KEY
Key;
355
EFI_KEY_STATE
KeyState;
356
}
EFI_KEY_DATA
;
357
358
//
359
// Shift state
360
//
361
#define EFI_SHIFT_STATE_VALID 0x80000000
362
#define EFI_RIGHT_SHIFT_PRESSED 0x00000001
363
#define EFI_LEFT_SHIFT_PRESSED 0x00000002
364
#define EFI_RIGHT_CONTROL_PRESSED 0x00000004
365
#define EFI_LEFT_CONTROL_PRESSED 0x00000008
366
#define EFI_RIGHT_ALT_PRESSED 0x00000010
367
#define EFI_LEFT_ALT_PRESSED 0x00000020
368
#define EFI_RIGHT_LOGO_PRESSED 0x00000040
369
#define EFI_LEFT_LOGO_PRESSED 0x00000080
370
#define EFI_MENU_KEY_PRESSED 0x00000100
371
#define EFI_SYS_REQ_PRESSED 0x00000200
372
373
//
374
// Toggle state
375
//
376
#define EFI_TOGGLE_STATE_VALID 0x80
377
#define EFI_KEY_STATE_EXPOSED 0x40
378
#define EFI_SCROLL_LOCK_ACTIVE 0x01
379
#define EFI_NUM_LOCK_ACTIVE 0x02
380
#define EFI_CAPS_LOCK_ACTIVE 0x04
381
382
//
383
// EFI Key Notfication Function
384
//
385
typedef
386
EFI_STATUS
387
(EFIAPI *EFI_KEY_NOTIFY_FUNCTION) (
388
IN
EFI_KEY_DATA
*KeyData
389
);
390
391
typedef
392
EFI_STATUS
393
(EFIAPI *EFI_INPUT_RESET_EX) (
394
IN
struct
_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This,
395
IN BOOLEAN ExtendedVerification
396
)
397
/*++
398
399
Routine Description:
400
Reset the input device and optionaly run diagnostics
401
402
Arguments:
403
This - Protocol instance pointer.
404
ExtendedVerification - Driver may perform diagnostics on reset.
405
406
Returns:
407
EFI_SUCCESS - The device was reset.
408
EFI_DEVICE_ERROR - The device is not functioning properly and could
409
not be reset.
410
411
--*/
412
;
413
414
typedef
415
EFI_STATUS
416
(EFIAPI *EFI_INPUT_READ_KEY_EX) (
417
IN
struct
_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This,
418
OUT
EFI_KEY_DATA
*KeyData
419
)
420
/*++
421
422
Routine Description:
423
Reads the next keystroke from the input device. The WaitForKey Event can
424
be used to test for existence of a keystroke via WaitForEvent () call.
425
426
Arguments:
427
This - Protocol instance pointer.
428
KeyData - A pointer to a buffer that is filled in with the keystroke
429
state data for the key that was pressed.
430
431
Returns:
432
EFI_SUCCESS - The keystroke information was returned.
433
EFI_NOT_READY - There was no keystroke data availiable.
434
EFI_DEVICE_ERROR - The keystroke information was not returned due to
435
hardware errors.
436
EFI_INVALID_PARAMETER - KeyData is NULL.
437
--*/
438
;
439
440
typedef
441
EFI_STATUS
442
(EFIAPI *EFI_SET_STATE) (
443
IN
struct
_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This,
444
IN EFI_KEY_TOGGLE_STATE *KeyToggleState
445
)
446
/*++
447
448
Routine Description:
449
Set certain state for the input device.
450
451
Arguments:
452
This - Protocol instance pointer.
453
KeyToggleState - A pointer to the EFI_KEY_TOGGLE_STATE to set the
454
state for the input device.
455
456
Returns:
457
EFI_SUCCESS - The device state was set successfully.
458
EFI_DEVICE_ERROR - The device is not functioning correctly and could
459
not have the setting adjusted.
460
EFI_UNSUPPORTED - The device does not have the ability to set its state.
461
EFI_INVALID_PARAMETER - KeyToggleState is NULL.
462
463
--*/
464
;
465
466
typedef
467
EFI_STATUS
468
(EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY) (
469
IN
struct
_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This,
470
IN
EFI_KEY_DATA
*KeyData,
471
IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,
472
OUT EFI_HANDLE *NotifyHandle
473
)
474
/*++
475
476
Routine Description:
477
Register a notification function for a particular keystroke for the input device.
478
479
Arguments:
480
This - Protocol instance pointer.
481
KeyData - A pointer to a buffer that is filled in with the keystroke
482
information data for the key that was pressed.
483
KeyNotificationFunction - Points to the function to be called when the key
484
sequence is typed specified by KeyData.
485
NotifyHandle - Points to the unique handle assigned to the registered notification.
486
487
Returns:
488
EFI_SUCCESS - The notification function was registered successfully.
489
EFI_OUT_OF_RESOURCES - Unable to allocate resources for necesssary data structures.
490
EFI_INVALID_PARAMETER - KeyData or NotifyHandle is NULL.
491
492
--*/
493
;
494
495
typedef
496
EFI_STATUS
497
(EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY) (
498
IN
struct
_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This,
499
IN EFI_HANDLE NotificationHandle
500
)
501
/*++
502
503
Routine Description:
504
Remove a registered notification function from a particular keystroke.
505
506
Arguments:
507
This - Protocol instance pointer.
508
NotificationHandle - The handle of the notification function being unregistered.
509
510
Returns:
511
EFI_SUCCESS - The notification function was unregistered successfully.
512
EFI_INVALID_PARAMETER - The NotificationHandle is invalid.
513
EFI_NOT_FOUND - Can not find the matching entry in database.
514
515
--*/
516
;
517
518
typedef
struct
_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
{
519
EFI_INPUT_RESET_EX Reset;
520
EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx;
521
EFI_EVENT WaitForKeyEx;
522
EFI_SET_STATE SetState;
523
EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify;
524
EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify;
525
} EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
526
527
#endif
EFI_INPUT_KEY
Definition
eficon.h:247
EFI_KEY_DATA
Definition
eficon.h:353
EFI_KEY_STATE
Definition
eficon.h:348
SIMPLE_TEXT_OUTPUT_MODE
Definition
eficon.h:134
_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
Definition
eficon.h:518
_SIMPLE_INPUT_INTERFACE
Definition
eficon.h:331
_SIMPLE_TEXT_OUTPUT_INTERFACE
Definition
eficon.h:144
Generated by
1.18.0