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