Home | History | Annotate | Line # | Download | only in inc
      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