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