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