1*0d1ba665SWarner Losh /** @file 2*0d1ba665SWarner Losh Simple Text Out protocol from the UEFI 2.0 specification. 3*0d1ba665SWarner Losh 4*0d1ba665SWarner Losh Abstraction of a very simple text based output device like VGA text mode or 5*0d1ba665SWarner Losh a serial terminal. The Simple Text Out protocol instance can represent 6*0d1ba665SWarner Losh a single hardware device or a virtual device that is an aggregation 7*0d1ba665SWarner Losh of multiple physical devices. 8*0d1ba665SWarner Losh 9*0d1ba665SWarner Losh Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR> 10*0d1ba665SWarner Losh This program and the accompanying materials are licensed and made available under 11*0d1ba665SWarner Losh the terms and conditions of the BSD License that accompanies this distribution. 12*0d1ba665SWarner Losh The full text of the license may be found at 13*0d1ba665SWarner Losh http://opensource.org/licenses/bsd-license.php. 14*0d1ba665SWarner Losh 15*0d1ba665SWarner Losh THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 16*0d1ba665SWarner Losh WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 17*0d1ba665SWarner Losh 18*0d1ba665SWarner Losh **/ 19*0d1ba665SWarner Losh 20*0d1ba665SWarner Losh #ifndef __SIMPLE_TEXT_OUT_H__ 21*0d1ba665SWarner Losh #define __SIMPLE_TEXT_OUT_H__ 22*0d1ba665SWarner Losh 23*0d1ba665SWarner Losh #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ 24*0d1ba665SWarner Losh { \ 25*0d1ba665SWarner Losh 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ 26*0d1ba665SWarner Losh } 27*0d1ba665SWarner Losh 28*0d1ba665SWarner Losh /// 29*0d1ba665SWarner Losh /// Protocol GUID defined in EFI1.1. 30*0d1ba665SWarner Losh /// 31*0d1ba665SWarner Losh #define SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID 32*0d1ba665SWarner Losh 33*0d1ba665SWarner Losh typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL; 34*0d1ba665SWarner Losh 35*0d1ba665SWarner Losh /// 36*0d1ba665SWarner Losh /// Backward-compatible with EFI1.1. 37*0d1ba665SWarner Losh /// 38*0d1ba665SWarner Losh typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE; 39*0d1ba665SWarner Losh 40*0d1ba665SWarner Losh // 41*0d1ba665SWarner Losh // Define's for required EFI Unicode Box Draw characters 42*0d1ba665SWarner Losh // 43*0d1ba665SWarner Losh #define BOXDRAW_HORIZONTAL 0x2500 44*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL 0x2502 45*0d1ba665SWarner Losh #define BOXDRAW_DOWN_RIGHT 0x250c 46*0d1ba665SWarner Losh #define BOXDRAW_DOWN_LEFT 0x2510 47*0d1ba665SWarner Losh #define BOXDRAW_UP_RIGHT 0x2514 48*0d1ba665SWarner Losh #define BOXDRAW_UP_LEFT 0x2518 49*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_RIGHT 0x251c 50*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_LEFT 0x2524 51*0d1ba665SWarner Losh #define BOXDRAW_DOWN_HORIZONTAL 0x252c 52*0d1ba665SWarner Losh #define BOXDRAW_UP_HORIZONTAL 0x2534 53*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c 54*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550 55*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL 0x2551 56*0d1ba665SWarner Losh #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552 57*0d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553 58*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554 59*0d1ba665SWarner Losh #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555 60*0d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556 61*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557 62*0d1ba665SWarner Losh #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558 63*0d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559 64*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a 65*0d1ba665SWarner Losh #define BOXDRAW_UP_LEFT_DOUBLE 0x255b 66*0d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_LEFT 0x255c 67*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_LEFT 0x255d 68*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e 69*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f 70*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560 71*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561 72*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562 73*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563 74*0d1ba665SWarner Losh #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564 75*0d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565 76*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566 77*0d1ba665SWarner Losh #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567 78*0d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568 79*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569 80*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a 81*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b 82*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c 83*0d1ba665SWarner Losh 84*0d1ba665SWarner Losh // 85*0d1ba665SWarner Losh // EFI Required Block Elements Code Chart 86*0d1ba665SWarner Losh // 87*0d1ba665SWarner Losh #define BLOCKELEMENT_FULL_BLOCK 0x2588 88*0d1ba665SWarner Losh #define BLOCKELEMENT_LIGHT_SHADE 0x2591 89*0d1ba665SWarner Losh 90*0d1ba665SWarner Losh // 91*0d1ba665SWarner Losh // EFI Required Geometric Shapes Code Chart 92*0d1ba665SWarner Losh // 93*0d1ba665SWarner Losh #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2 94*0d1ba665SWarner Losh #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba 95*0d1ba665SWarner Losh #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc 96*0d1ba665SWarner Losh #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4 97*0d1ba665SWarner Losh 98*0d1ba665SWarner Losh // 99*0d1ba665SWarner Losh // EFI Required Arrow shapes 100*0d1ba665SWarner Losh // 101*0d1ba665SWarner Losh #define ARROW_LEFT 0x2190 102*0d1ba665SWarner Losh #define ARROW_UP 0x2191 103*0d1ba665SWarner Losh #define ARROW_RIGHT 0x2192 104*0d1ba665SWarner Losh #define ARROW_DOWN 0x2193 105*0d1ba665SWarner Losh 106*0d1ba665SWarner Losh // 107*0d1ba665SWarner Losh // EFI Console Colours 108*0d1ba665SWarner Losh // 109*0d1ba665SWarner Losh #define EFI_BLACK 0x00 110*0d1ba665SWarner Losh #define EFI_BLUE 0x01 111*0d1ba665SWarner Losh #define EFI_GREEN 0x02 112*0d1ba665SWarner Losh #define EFI_CYAN (EFI_BLUE | EFI_GREEN) 113*0d1ba665SWarner Losh #define EFI_RED 0x04 114*0d1ba665SWarner Losh #define EFI_MAGENTA (EFI_BLUE | EFI_RED) 115*0d1ba665SWarner Losh #define EFI_BROWN (EFI_GREEN | EFI_RED) 116*0d1ba665SWarner Losh #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED) 117*0d1ba665SWarner Losh #define EFI_BRIGHT 0x08 118*0d1ba665SWarner Losh #define EFI_DARKGRAY (EFI_BLACK | EFI_BRIGHT) 119*0d1ba665SWarner Losh #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT) 120*0d1ba665SWarner Losh #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT) 121*0d1ba665SWarner Losh #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT) 122*0d1ba665SWarner Losh #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT) 123*0d1ba665SWarner Losh #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT) 124*0d1ba665SWarner Losh #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT) 125*0d1ba665SWarner Losh #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT) 126*0d1ba665SWarner Losh 127*0d1ba665SWarner Losh // 128*0d1ba665SWarner Losh // Macro to accept color values in their raw form to create 129*0d1ba665SWarner Losh // a value that represents both a foreground and background 130*0d1ba665SWarner Losh // color in a single byte. 131*0d1ba665SWarner Losh // For Foreground, and EFI_* value is valid from EFI_BLACK(0x00) to 132*0d1ba665SWarner Losh // EFI_WHITE (0x0F). 133*0d1ba665SWarner Losh // For Background, only EFI_BLACK, EFI_BLUE, EFI_GREEN, EFI_CYAN, 134*0d1ba665SWarner Losh // EFI_RED, EFI_MAGENTA, EFI_BROWN, and EFI_LIGHTGRAY are acceptable 135*0d1ba665SWarner Losh // 136*0d1ba665SWarner Losh // Do not use EFI_BACKGROUND_xxx values with this macro. 137*0d1ba665SWarner Losh // 138*0d1ba665SWarner Losh #define EFI_TEXT_ATTR(Foreground,Background) ((Foreground) | ((Background) << 4)) 139*0d1ba665SWarner Losh 140*0d1ba665SWarner Losh #define EFI_BACKGROUND_BLACK 0x00 141*0d1ba665SWarner Losh #define EFI_BACKGROUND_BLUE 0x10 142*0d1ba665SWarner Losh #define EFI_BACKGROUND_GREEN 0x20 143*0d1ba665SWarner Losh #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN) 144*0d1ba665SWarner Losh #define EFI_BACKGROUND_RED 0x40 145*0d1ba665SWarner Losh #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED) 146*0d1ba665SWarner Losh #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) 147*0d1ba665SWarner Losh #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) 148*0d1ba665SWarner Losh 149*0d1ba665SWarner Losh // 150*0d1ba665SWarner Losh // We currently define attributes from 0 - 7F for color manipulations 151*0d1ba665SWarner Losh // To internally handle the local display characteristics for a particular character, 152*0d1ba665SWarner Losh // Bit 7 signifies the local glyph representation for a character. If turned on, glyphs will be 153*0d1ba665SWarner Losh // pulled from the wide glyph database and will display locally as a wide character (16 X 19 versus 8 X 19) 154*0d1ba665SWarner Losh // If bit 7 is off, the narrow glyph database will be used. This does NOT affect information that is sent to 155*0d1ba665SWarner Losh // non-local displays, such as serial or LAN consoles. 156*0d1ba665SWarner Losh // 157*0d1ba665SWarner Losh #define EFI_WIDE_ATTRIBUTE 0x80 158*0d1ba665SWarner Losh 159*0d1ba665SWarner Losh /** 160*0d1ba665SWarner Losh Reset the text output device hardware and optionaly run diagnostics 161*0d1ba665SWarner Losh 162*0d1ba665SWarner Losh @param This The protocol instance pointer. 163*0d1ba665SWarner Losh @param ExtendedVerification Driver may perform more exhaustive verification 164*0d1ba665SWarner Losh operation of the device during reset. 165*0d1ba665SWarner Losh 166*0d1ba665SWarner Losh @retval EFI_SUCCESS The text output device was reset. 167*0d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The text output device is not functioning correctly and 168*0d1ba665SWarner Losh could not be reset. 169*0d1ba665SWarner Losh 170*0d1ba665SWarner Losh **/ 171*0d1ba665SWarner Losh typedef 172*0d1ba665SWarner Losh EFI_STATUS 173*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_RESET)( 174*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 175*0d1ba665SWarner Losh IN BOOLEAN ExtendedVerification 176*0d1ba665SWarner Losh ); 177*0d1ba665SWarner Losh 178*0d1ba665SWarner Losh /** 179*0d1ba665SWarner Losh Write a string to the output device. 180*0d1ba665SWarner Losh 181*0d1ba665SWarner Losh @param This The protocol instance pointer. 182*0d1ba665SWarner Losh @param String The NULL-terminated string to be displayed on the output 183*0d1ba665SWarner Losh device(s). All output devices must also support the Unicode 184*0d1ba665SWarner Losh drawing character codes defined in this file. 185*0d1ba665SWarner Losh 186*0d1ba665SWarner Losh @retval EFI_SUCCESS The string was output to the device. 187*0d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device reported an error while attempting to output 188*0d1ba665SWarner Losh the text. 189*0d1ba665SWarner Losh @retval EFI_UNSUPPORTED The output device's mode is not currently in a 190*0d1ba665SWarner Losh defined text mode. 191*0d1ba665SWarner Losh @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the 192*0d1ba665SWarner Losh characters in the string could not be 193*0d1ba665SWarner Losh rendered and were skipped. 194*0d1ba665SWarner Losh 195*0d1ba665SWarner Losh **/ 196*0d1ba665SWarner Losh typedef 197*0d1ba665SWarner Losh EFI_STATUS 198*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_STRING)( 199*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 200*0d1ba665SWarner Losh IN CHAR16 *String 201*0d1ba665SWarner Losh ); 202*0d1ba665SWarner Losh 203*0d1ba665SWarner Losh /** 204*0d1ba665SWarner Losh Verifies that all characters in a string can be output to the 205*0d1ba665SWarner Losh target device. 206*0d1ba665SWarner Losh 207*0d1ba665SWarner Losh @param This The protocol instance pointer. 208*0d1ba665SWarner Losh @param String The NULL-terminated string to be examined for the output 209*0d1ba665SWarner Losh device(s). 210*0d1ba665SWarner Losh 211*0d1ba665SWarner Losh @retval EFI_SUCCESS The device(s) are capable of rendering the output string. 212*0d1ba665SWarner Losh @retval EFI_UNSUPPORTED Some of the characters in the string cannot be 213*0d1ba665SWarner Losh rendered by one or more of the output devices mapped 214*0d1ba665SWarner Losh by the EFI handle. 215*0d1ba665SWarner Losh 216*0d1ba665SWarner Losh **/ 217*0d1ba665SWarner Losh typedef 218*0d1ba665SWarner Losh EFI_STATUS 219*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_TEST_STRING)( 220*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 221*0d1ba665SWarner Losh IN CHAR16 *String 222*0d1ba665SWarner Losh ); 223*0d1ba665SWarner Losh 224*0d1ba665SWarner Losh /** 225*0d1ba665SWarner Losh Returns information for an available text mode that the output device(s) 226*0d1ba665SWarner Losh supports. 227*0d1ba665SWarner Losh 228*0d1ba665SWarner Losh @param This The protocol instance pointer. 229*0d1ba665SWarner Losh @param ModeNumber The mode number to return information on. 230*0d1ba665SWarner Losh @param Columns Returns the geometry of the text output device for the 231*0d1ba665SWarner Losh requested ModeNumber. 232*0d1ba665SWarner Losh @param Rows Returns the geometry of the text output device for the 233*0d1ba665SWarner Losh requested ModeNumber. 234*0d1ba665SWarner Losh 235*0d1ba665SWarner Losh @retval EFI_SUCCESS The requested mode information was returned. 236*0d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 237*0d1ba665SWarner Losh @retval EFI_UNSUPPORTED The mode number was not valid. 238*0d1ba665SWarner Losh 239*0d1ba665SWarner Losh **/ 240*0d1ba665SWarner Losh typedef 241*0d1ba665SWarner Losh EFI_STATUS 242*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_QUERY_MODE)( 243*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 244*0d1ba665SWarner Losh IN UINTN ModeNumber, 245*0d1ba665SWarner Losh OUT UINTN *Columns, 246*0d1ba665SWarner Losh OUT UINTN *Rows 247*0d1ba665SWarner Losh ); 248*0d1ba665SWarner Losh 249*0d1ba665SWarner Losh /** 250*0d1ba665SWarner Losh Sets the output device(s) to a specified mode. 251*0d1ba665SWarner Losh 252*0d1ba665SWarner Losh @param This The protocol instance pointer. 253*0d1ba665SWarner Losh @param ModeNumber The mode number to set. 254*0d1ba665SWarner Losh 255*0d1ba665SWarner Losh @retval EFI_SUCCESS The requested text mode was set. 256*0d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 257*0d1ba665SWarner Losh @retval EFI_UNSUPPORTED The mode number was not valid. 258*0d1ba665SWarner Losh 259*0d1ba665SWarner Losh **/ 260*0d1ba665SWarner Losh typedef 261*0d1ba665SWarner Losh EFI_STATUS 262*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_MODE)( 263*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 264*0d1ba665SWarner Losh IN UINTN ModeNumber 265*0d1ba665SWarner Losh ); 266*0d1ba665SWarner Losh 267*0d1ba665SWarner Losh /** 268*0d1ba665SWarner Losh Sets the background and foreground colors for the OutputString () and 269*0d1ba665SWarner Losh ClearScreen () functions. 270*0d1ba665SWarner Losh 271*0d1ba665SWarner Losh @param This The protocol instance pointer. 272*0d1ba665SWarner Losh @param Attribute The attribute to set. Bits 0..3 are the foreground color, and 273*0d1ba665SWarner Losh bits 4..6 are the background color. All other bits are undefined 274*0d1ba665SWarner Losh and must be zero. The valid Attributes are defined in this file. 275*0d1ba665SWarner Losh 276*0d1ba665SWarner Losh @retval EFI_SUCCESS The attribute was set. 277*0d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 278*0d1ba665SWarner Losh @retval EFI_UNSUPPORTED The attribute requested is not defined. 279*0d1ba665SWarner Losh 280*0d1ba665SWarner Losh **/ 281*0d1ba665SWarner Losh typedef 282*0d1ba665SWarner Losh EFI_STATUS 283*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_ATTRIBUTE)( 284*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 285*0d1ba665SWarner Losh IN UINTN Attribute 286*0d1ba665SWarner Losh ); 287*0d1ba665SWarner Losh 288*0d1ba665SWarner Losh /** 289*0d1ba665SWarner Losh Clears the output device(s) display to the currently selected background 290*0d1ba665SWarner Losh color. 291*0d1ba665SWarner Losh 292*0d1ba665SWarner Losh @param This The protocol instance pointer. 293*0d1ba665SWarner Losh 294*0d1ba665SWarner Losh @retval EFI_SUCCESS The operation completed successfully. 295*0d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 296*0d1ba665SWarner Losh @retval EFI_UNSUPPORTED The output device is not in a valid text mode. 297*0d1ba665SWarner Losh 298*0d1ba665SWarner Losh **/ 299*0d1ba665SWarner Losh typedef 300*0d1ba665SWarner Losh EFI_STATUS 301*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_CLEAR_SCREEN)( 302*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This 303*0d1ba665SWarner Losh ); 304*0d1ba665SWarner Losh 305*0d1ba665SWarner Losh /** 306*0d1ba665SWarner Losh Sets the current coordinates of the cursor position 307*0d1ba665SWarner Losh 308*0d1ba665SWarner Losh @param This The protocol instance pointer. 309*0d1ba665SWarner Losh @param Column The position to set the cursor to. Must be greater than or 310*0d1ba665SWarner Losh equal to zero and less than the number of columns and rows 311*0d1ba665SWarner Losh by QueryMode (). 312*0d1ba665SWarner Losh @param Row The position to set the cursor to. Must be greater than or 313*0d1ba665SWarner Losh equal to zero and less than the number of columns and rows 314*0d1ba665SWarner Losh by QueryMode (). 315*0d1ba665SWarner Losh 316*0d1ba665SWarner Losh @retval EFI_SUCCESS The operation completed successfully. 317*0d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 318*0d1ba665SWarner Losh @retval EFI_UNSUPPORTED The output device is not in a valid text mode, or the 319*0d1ba665SWarner Losh cursor position is invalid for the current mode. 320*0d1ba665SWarner Losh 321*0d1ba665SWarner Losh **/ 322*0d1ba665SWarner Losh typedef 323*0d1ba665SWarner Losh EFI_STATUS 324*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)( 325*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 326*0d1ba665SWarner Losh IN UINTN Column, 327*0d1ba665SWarner Losh IN UINTN Row 328*0d1ba665SWarner Losh ); 329*0d1ba665SWarner Losh 330*0d1ba665SWarner Losh /** 331*0d1ba665SWarner Losh Makes the cursor visible or invisible 332*0d1ba665SWarner Losh 333*0d1ba665SWarner Losh @param This The protocol instance pointer. 334*0d1ba665SWarner Losh @param Visible If TRUE, the cursor is set to be visible. If FALSE, the cursor is 335*0d1ba665SWarner Losh set to be invisible. 336*0d1ba665SWarner Losh 337*0d1ba665SWarner Losh @retval EFI_SUCCESS The operation completed successfully. 338*0d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the 339*0d1ba665SWarner Losh request, or the device does not support changing 340*0d1ba665SWarner Losh the cursor mode. 341*0d1ba665SWarner Losh @retval EFI_UNSUPPORTED The output device is not in a valid text mode. 342*0d1ba665SWarner Losh 343*0d1ba665SWarner Losh **/ 344*0d1ba665SWarner Losh typedef 345*0d1ba665SWarner Losh EFI_STATUS 346*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_ENABLE_CURSOR)( 347*0d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 348*0d1ba665SWarner Losh IN BOOLEAN Visible 349*0d1ba665SWarner Losh ); 350*0d1ba665SWarner Losh 351*0d1ba665SWarner Losh /** 352*0d1ba665SWarner Losh @par Data Structure Description: 353*0d1ba665SWarner Losh Mode Structure pointed to by Simple Text Out protocol. 354*0d1ba665SWarner Losh **/ 355*0d1ba665SWarner Losh typedef struct { 356*0d1ba665SWarner Losh /// 357*0d1ba665SWarner Losh /// The number of modes supported by QueryMode () and SetMode (). 358*0d1ba665SWarner Losh /// 359*0d1ba665SWarner Losh INT32 MaxMode; 360*0d1ba665SWarner Losh 361*0d1ba665SWarner Losh // 362*0d1ba665SWarner Losh // current settings 363*0d1ba665SWarner Losh // 364*0d1ba665SWarner Losh 365*0d1ba665SWarner Losh /// 366*0d1ba665SWarner Losh /// The text mode of the output device(s). 367*0d1ba665SWarner Losh /// 368*0d1ba665SWarner Losh INT32 Mode; 369*0d1ba665SWarner Losh /// 370*0d1ba665SWarner Losh /// The current character output attribute. 371*0d1ba665SWarner Losh /// 372*0d1ba665SWarner Losh INT32 Attribute; 373*0d1ba665SWarner Losh /// 374*0d1ba665SWarner Losh /// The cursor's column. 375*0d1ba665SWarner Losh /// 376*0d1ba665SWarner Losh INT32 CursorColumn; 377*0d1ba665SWarner Losh /// 378*0d1ba665SWarner Losh /// The cursor's row. 379*0d1ba665SWarner Losh /// 380*0d1ba665SWarner Losh INT32 CursorRow; 381*0d1ba665SWarner Losh /// 382*0d1ba665SWarner Losh /// The cursor is currently visbile or not. 383*0d1ba665SWarner Losh /// 384*0d1ba665SWarner Losh BOOLEAN CursorVisible; 385*0d1ba665SWarner Losh } EFI_SIMPLE_TEXT_OUTPUT_MODE; 386*0d1ba665SWarner Losh 387*0d1ba665SWarner Losh /// 388*0d1ba665SWarner Losh /// The SIMPLE_TEXT_OUTPUT protocol is used to control text-based output devices. 389*0d1ba665SWarner Losh /// It is the minimum required protocol for any handle supplied as the ConsoleOut 390*0d1ba665SWarner Losh /// or StandardError device. In addition, the minimum supported text mode of such 391*0d1ba665SWarner Losh /// devices is at least 80 x 25 characters. 392*0d1ba665SWarner Losh /// 393*0d1ba665SWarner Losh struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL { 394*0d1ba665SWarner Losh EFI_TEXT_RESET Reset; 395*0d1ba665SWarner Losh 396*0d1ba665SWarner Losh EFI_TEXT_STRING OutputString; 397*0d1ba665SWarner Losh EFI_TEXT_TEST_STRING TestString; 398*0d1ba665SWarner Losh 399*0d1ba665SWarner Losh EFI_TEXT_QUERY_MODE QueryMode; 400*0d1ba665SWarner Losh EFI_TEXT_SET_MODE SetMode; 401*0d1ba665SWarner Losh EFI_TEXT_SET_ATTRIBUTE SetAttribute; 402*0d1ba665SWarner Losh 403*0d1ba665SWarner Losh EFI_TEXT_CLEAR_SCREEN ClearScreen; 404*0d1ba665SWarner Losh EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; 405*0d1ba665SWarner Losh EFI_TEXT_ENABLE_CURSOR EnableCursor; 406*0d1ba665SWarner Losh 407*0d1ba665SWarner Losh /// 408*0d1ba665SWarner Losh /// Pointer to SIMPLE_TEXT_OUTPUT_MODE data. 409*0d1ba665SWarner Losh /// 410*0d1ba665SWarner Losh EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode; 411*0d1ba665SWarner Losh }; 412*0d1ba665SWarner Losh 413*0d1ba665SWarner Losh extern EFI_GUID gEfiSimpleTextOutProtocolGuid; 414*0d1ba665SWarner Losh 415*0d1ba665SWarner Losh #endif 416