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