1 /* $NetBSD: eficon.h,v 1.1.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