10d1ba665SWarner Losh /** @file 20d1ba665SWarner Losh Simple Text Out protocol from the UEFI 2.0 specification. 30d1ba665SWarner Losh 40d1ba665SWarner Losh Abstraction of a very simple text based output device like VGA text mode or 50d1ba665SWarner Losh a serial terminal. The Simple Text Out protocol instance can represent 60d1ba665SWarner Losh a single hardware device or a virtual device that is an aggregation 70d1ba665SWarner Losh of multiple physical devices. 80d1ba665SWarner Losh 9*3245fa21SMitchell Horne Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 10*3245fa21SMitchell Horne SPDX-License-Identifier: BSD-2-Clause-Patent 110d1ba665SWarner Losh 120d1ba665SWarner Losh **/ 130d1ba665SWarner Losh 140d1ba665SWarner Losh #ifndef __SIMPLE_TEXT_OUT_H__ 150d1ba665SWarner Losh #define __SIMPLE_TEXT_OUT_H__ 160d1ba665SWarner Losh 170d1ba665SWarner Losh #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ 180d1ba665SWarner Losh { \ 190d1ba665SWarner Losh 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ 200d1ba665SWarner Losh } 210d1ba665SWarner Losh 220d1ba665SWarner Losh /// 230d1ba665SWarner Losh /// Protocol GUID defined in EFI1.1. 240d1ba665SWarner Losh /// 250d1ba665SWarner Losh #define SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID 260d1ba665SWarner Losh 270d1ba665SWarner Losh typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL; 280d1ba665SWarner Losh 290d1ba665SWarner Losh /// 300d1ba665SWarner Losh /// Backward-compatible with EFI1.1. 310d1ba665SWarner Losh /// 320d1ba665SWarner Losh typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE; 330d1ba665SWarner Losh 340d1ba665SWarner Losh // 350d1ba665SWarner Losh // Define's for required EFI Unicode Box Draw characters 360d1ba665SWarner Losh // 370d1ba665SWarner Losh #define BOXDRAW_HORIZONTAL 0x2500 380d1ba665SWarner Losh #define BOXDRAW_VERTICAL 0x2502 390d1ba665SWarner Losh #define BOXDRAW_DOWN_RIGHT 0x250c 400d1ba665SWarner Losh #define BOXDRAW_DOWN_LEFT 0x2510 410d1ba665SWarner Losh #define BOXDRAW_UP_RIGHT 0x2514 420d1ba665SWarner Losh #define BOXDRAW_UP_LEFT 0x2518 430d1ba665SWarner Losh #define BOXDRAW_VERTICAL_RIGHT 0x251c 440d1ba665SWarner Losh #define BOXDRAW_VERTICAL_LEFT 0x2524 450d1ba665SWarner Losh #define BOXDRAW_DOWN_HORIZONTAL 0x252c 460d1ba665SWarner Losh #define BOXDRAW_UP_HORIZONTAL 0x2534 470d1ba665SWarner Losh #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c 480d1ba665SWarner Losh #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550 490d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL 0x2551 500d1ba665SWarner Losh #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552 510d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553 520d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554 530d1ba665SWarner Losh #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555 540d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556 550d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557 560d1ba665SWarner Losh #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558 570d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559 580d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a 590d1ba665SWarner Losh #define BOXDRAW_UP_LEFT_DOUBLE 0x255b 600d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_LEFT 0x255c 610d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_LEFT 0x255d 620d1ba665SWarner Losh #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e 630d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f 640d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560 650d1ba665SWarner Losh #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561 660d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562 670d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563 680d1ba665SWarner Losh #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564 690d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565 700d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566 710d1ba665SWarner Losh #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567 720d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568 730d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569 740d1ba665SWarner Losh #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a 750d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b 760d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c 770d1ba665SWarner Losh 780d1ba665SWarner Losh // 790d1ba665SWarner Losh // EFI Required Block Elements Code Chart 800d1ba665SWarner Losh // 810d1ba665SWarner Losh #define BLOCKELEMENT_FULL_BLOCK 0x2588 820d1ba665SWarner Losh #define BLOCKELEMENT_LIGHT_SHADE 0x2591 830d1ba665SWarner Losh 840d1ba665SWarner Losh // 850d1ba665SWarner Losh // EFI Required Geometric Shapes Code Chart 860d1ba665SWarner Losh // 870d1ba665SWarner Losh #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2 880d1ba665SWarner Losh #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba 890d1ba665SWarner Losh #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc 900d1ba665SWarner Losh #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4 910d1ba665SWarner Losh 920d1ba665SWarner Losh // 930d1ba665SWarner Losh // EFI Required Arrow shapes 940d1ba665SWarner Losh // 950d1ba665SWarner Losh #define ARROW_LEFT 0x2190 960d1ba665SWarner Losh #define ARROW_UP 0x2191 970d1ba665SWarner Losh #define ARROW_RIGHT 0x2192 980d1ba665SWarner Losh #define ARROW_DOWN 0x2193 990d1ba665SWarner Losh 1000d1ba665SWarner Losh // 1010d1ba665SWarner Losh // EFI Console Colours 1020d1ba665SWarner Losh // 1030d1ba665SWarner Losh #define EFI_BLACK 0x00 1040d1ba665SWarner Losh #define EFI_BLUE 0x01 1050d1ba665SWarner Losh #define EFI_GREEN 0x02 1060d1ba665SWarner Losh #define EFI_CYAN (EFI_BLUE | EFI_GREEN) 1070d1ba665SWarner Losh #define EFI_RED 0x04 1080d1ba665SWarner Losh #define EFI_MAGENTA (EFI_BLUE | EFI_RED) 1090d1ba665SWarner Losh #define EFI_BROWN (EFI_GREEN | EFI_RED) 1100d1ba665SWarner Losh #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED) 1110d1ba665SWarner Losh #define EFI_BRIGHT 0x08 1120d1ba665SWarner Losh #define EFI_DARKGRAY (EFI_BLACK | EFI_BRIGHT) 1130d1ba665SWarner Losh #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT) 1140d1ba665SWarner Losh #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT) 1150d1ba665SWarner Losh #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT) 1160d1ba665SWarner Losh #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT) 1170d1ba665SWarner Losh #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT) 1180d1ba665SWarner Losh #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT) 1190d1ba665SWarner Losh #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT) 1200d1ba665SWarner Losh 1210d1ba665SWarner Losh // 1220d1ba665SWarner Losh // Macro to accept color values in their raw form to create 1230d1ba665SWarner Losh // a value that represents both a foreground and background 1240d1ba665SWarner Losh // color in a single byte. 1250d1ba665SWarner Losh // For Foreground, and EFI_* value is valid from EFI_BLACK(0x00) to 1260d1ba665SWarner Losh // EFI_WHITE (0x0F). 1270d1ba665SWarner Losh // For Background, only EFI_BLACK, EFI_BLUE, EFI_GREEN, EFI_CYAN, 1280d1ba665SWarner Losh // EFI_RED, EFI_MAGENTA, EFI_BROWN, and EFI_LIGHTGRAY are acceptable 1290d1ba665SWarner Losh // 1300d1ba665SWarner Losh // Do not use EFI_BACKGROUND_xxx values with this macro. 1310d1ba665SWarner Losh // 1320d1ba665SWarner Losh #define EFI_TEXT_ATTR(Foreground,Background) ((Foreground) | ((Background) << 4)) 1330d1ba665SWarner Losh 1340d1ba665SWarner Losh #define EFI_BACKGROUND_BLACK 0x00 1350d1ba665SWarner Losh #define EFI_BACKGROUND_BLUE 0x10 1360d1ba665SWarner Losh #define EFI_BACKGROUND_GREEN 0x20 1370d1ba665SWarner Losh #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN) 1380d1ba665SWarner Losh #define EFI_BACKGROUND_RED 0x40 1390d1ba665SWarner Losh #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED) 1400d1ba665SWarner Losh #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) 1410d1ba665SWarner Losh #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) 1420d1ba665SWarner Losh 1430d1ba665SWarner Losh // 1440d1ba665SWarner Losh // We currently define attributes from 0 - 7F for color manipulations 1450d1ba665SWarner Losh // To internally handle the local display characteristics for a particular character, 1460d1ba665SWarner Losh // Bit 7 signifies the local glyph representation for a character. If turned on, glyphs will be 1470d1ba665SWarner Losh // pulled from the wide glyph database and will display locally as a wide character (16 X 19 versus 8 X 19) 1480d1ba665SWarner Losh // If bit 7 is off, the narrow glyph database will be used. This does NOT affect information that is sent to 1490d1ba665SWarner Losh // non-local displays, such as serial or LAN consoles. 1500d1ba665SWarner Losh // 1510d1ba665SWarner Losh #define EFI_WIDE_ATTRIBUTE 0x80 1520d1ba665SWarner Losh 1530d1ba665SWarner Losh /** 1540d1ba665SWarner Losh Reset the text output device hardware and optionaly run diagnostics 1550d1ba665SWarner Losh 1560d1ba665SWarner Losh @param This The protocol instance pointer. 1570d1ba665SWarner Losh @param ExtendedVerification Driver may perform more exhaustive verification 1580d1ba665SWarner Losh operation of the device during reset. 1590d1ba665SWarner Losh 1600d1ba665SWarner Losh @retval EFI_SUCCESS The text output device was reset. 1610d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The text output device is not functioning correctly and 1620d1ba665SWarner Losh could not be reset. 1630d1ba665SWarner Losh 1640d1ba665SWarner Losh **/ 1650d1ba665SWarner Losh typedef 1660d1ba665SWarner Losh EFI_STATUS 1670d1ba665SWarner Losh (EFIAPI *EFI_TEXT_RESET)( 1680d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 1690d1ba665SWarner Losh IN BOOLEAN ExtendedVerification 1700d1ba665SWarner Losh ); 1710d1ba665SWarner Losh 1720d1ba665SWarner Losh /** 1730d1ba665SWarner Losh Write a string to the output device. 1740d1ba665SWarner Losh 1750d1ba665SWarner Losh @param This The protocol instance pointer. 1760d1ba665SWarner Losh @param String The NULL-terminated string to be displayed on the output 1770d1ba665SWarner Losh device(s). All output devices must also support the Unicode 1780d1ba665SWarner Losh drawing character codes defined in this file. 1790d1ba665SWarner Losh 1800d1ba665SWarner Losh @retval EFI_SUCCESS The string was output to the device. 1810d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device reported an error while attempting to output 1820d1ba665SWarner Losh the text. 1830d1ba665SWarner Losh @retval EFI_UNSUPPORTED The output device's mode is not currently in a 1840d1ba665SWarner Losh defined text mode. 1850d1ba665SWarner Losh @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the 1860d1ba665SWarner Losh characters in the string could not be 1870d1ba665SWarner Losh rendered and were skipped. 1880d1ba665SWarner Losh 1890d1ba665SWarner Losh **/ 1900d1ba665SWarner Losh typedef 1910d1ba665SWarner Losh EFI_STATUS 1920d1ba665SWarner Losh (EFIAPI *EFI_TEXT_STRING)( 1930d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 1940d1ba665SWarner Losh IN CHAR16 *String 1950d1ba665SWarner Losh ); 1960d1ba665SWarner Losh 1970d1ba665SWarner Losh /** 1980d1ba665SWarner Losh Verifies that all characters in a string can be output to the 1990d1ba665SWarner Losh target device. 2000d1ba665SWarner Losh 2010d1ba665SWarner Losh @param This The protocol instance pointer. 2020d1ba665SWarner Losh @param String The NULL-terminated string to be examined for the output 2030d1ba665SWarner Losh device(s). 2040d1ba665SWarner Losh 2050d1ba665SWarner Losh @retval EFI_SUCCESS The device(s) are capable of rendering the output string. 2060d1ba665SWarner Losh @retval EFI_UNSUPPORTED Some of the characters in the string cannot be 2070d1ba665SWarner Losh rendered by one or more of the output devices mapped 2080d1ba665SWarner Losh by the EFI handle. 2090d1ba665SWarner Losh 2100d1ba665SWarner Losh **/ 2110d1ba665SWarner Losh typedef 2120d1ba665SWarner Losh EFI_STATUS 2130d1ba665SWarner Losh (EFIAPI *EFI_TEXT_TEST_STRING)( 2140d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 2150d1ba665SWarner Losh IN CHAR16 *String 2160d1ba665SWarner Losh ); 2170d1ba665SWarner Losh 2180d1ba665SWarner Losh /** 2190d1ba665SWarner Losh Returns information for an available text mode that the output device(s) 2200d1ba665SWarner Losh supports. 2210d1ba665SWarner Losh 2220d1ba665SWarner Losh @param This The protocol instance pointer. 2230d1ba665SWarner Losh @param ModeNumber The mode number to return information on. 2240d1ba665SWarner Losh @param Columns Returns the geometry of the text output device for the 2250d1ba665SWarner Losh requested ModeNumber. 2260d1ba665SWarner Losh @param Rows Returns the geometry of the text output device for the 2270d1ba665SWarner Losh requested ModeNumber. 2280d1ba665SWarner Losh 2290d1ba665SWarner Losh @retval EFI_SUCCESS The requested mode information was returned. 2300d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 2310d1ba665SWarner Losh @retval EFI_UNSUPPORTED The mode number was not valid. 2320d1ba665SWarner Losh 2330d1ba665SWarner Losh **/ 2340d1ba665SWarner Losh typedef 2350d1ba665SWarner Losh EFI_STATUS 2360d1ba665SWarner Losh (EFIAPI *EFI_TEXT_QUERY_MODE)( 2370d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 2380d1ba665SWarner Losh IN UINTN ModeNumber, 2390d1ba665SWarner Losh OUT UINTN *Columns, 2400d1ba665SWarner Losh OUT UINTN *Rows 2410d1ba665SWarner Losh ); 2420d1ba665SWarner Losh 2430d1ba665SWarner Losh /** 2440d1ba665SWarner Losh Sets the output device(s) to a specified mode. 2450d1ba665SWarner Losh 2460d1ba665SWarner Losh @param This The protocol instance pointer. 2470d1ba665SWarner Losh @param ModeNumber The mode number to set. 2480d1ba665SWarner Losh 2490d1ba665SWarner Losh @retval EFI_SUCCESS The requested text mode was set. 2500d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 2510d1ba665SWarner Losh @retval EFI_UNSUPPORTED The mode number was not valid. 2520d1ba665SWarner Losh 2530d1ba665SWarner Losh **/ 2540d1ba665SWarner Losh typedef 2550d1ba665SWarner Losh EFI_STATUS 2560d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_MODE)( 2570d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 2580d1ba665SWarner Losh IN UINTN ModeNumber 2590d1ba665SWarner Losh ); 2600d1ba665SWarner Losh 2610d1ba665SWarner Losh /** 2620d1ba665SWarner Losh Sets the background and foreground colors for the OutputString () and 2630d1ba665SWarner Losh ClearScreen () functions. 2640d1ba665SWarner Losh 2650d1ba665SWarner Losh @param This The protocol instance pointer. 2660d1ba665SWarner Losh @param Attribute The attribute to set. Bits 0..3 are the foreground color, and 2670d1ba665SWarner Losh bits 4..6 are the background color. All other bits are undefined 2680d1ba665SWarner Losh and must be zero. The valid Attributes are defined in this file. 2690d1ba665SWarner Losh 2700d1ba665SWarner Losh @retval EFI_SUCCESS The attribute was set. 2710d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 2720d1ba665SWarner Losh @retval EFI_UNSUPPORTED The attribute requested is not defined. 2730d1ba665SWarner Losh 2740d1ba665SWarner Losh **/ 2750d1ba665SWarner Losh typedef 2760d1ba665SWarner Losh EFI_STATUS 2770d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_ATTRIBUTE)( 2780d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 2790d1ba665SWarner Losh IN UINTN Attribute 2800d1ba665SWarner Losh ); 2810d1ba665SWarner Losh 2820d1ba665SWarner Losh /** 2830d1ba665SWarner Losh Clears the output device(s) display to the currently selected background 2840d1ba665SWarner Losh color. 2850d1ba665SWarner Losh 2860d1ba665SWarner Losh @param This The protocol instance pointer. 2870d1ba665SWarner Losh 2880d1ba665SWarner Losh @retval EFI_SUCCESS The operation completed successfully. 2890d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 2900d1ba665SWarner Losh @retval EFI_UNSUPPORTED The output device is not in a valid text mode. 2910d1ba665SWarner Losh 2920d1ba665SWarner Losh **/ 2930d1ba665SWarner Losh typedef 2940d1ba665SWarner Losh EFI_STATUS 2950d1ba665SWarner Losh (EFIAPI *EFI_TEXT_CLEAR_SCREEN)( 2960d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This 2970d1ba665SWarner Losh ); 2980d1ba665SWarner Losh 2990d1ba665SWarner Losh /** 3000d1ba665SWarner Losh Sets the current coordinates of the cursor position 3010d1ba665SWarner Losh 3020d1ba665SWarner Losh @param This The protocol instance pointer. 3030d1ba665SWarner Losh @param Column The position to set the cursor to. Must be greater than or 3040d1ba665SWarner Losh equal to zero and less than the number of columns and rows 3050d1ba665SWarner Losh by QueryMode (). 3060d1ba665SWarner Losh @param Row The position to set the cursor to. Must be greater than or 3070d1ba665SWarner Losh equal to zero and less than the number of columns and rows 3080d1ba665SWarner Losh by QueryMode (). 3090d1ba665SWarner Losh 3100d1ba665SWarner Losh @retval EFI_SUCCESS The operation completed successfully. 3110d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. 3120d1ba665SWarner Losh @retval EFI_UNSUPPORTED The output device is not in a valid text mode, or the 3130d1ba665SWarner Losh cursor position is invalid for the current mode. 3140d1ba665SWarner Losh 3150d1ba665SWarner Losh **/ 3160d1ba665SWarner Losh typedef 3170d1ba665SWarner Losh EFI_STATUS 3180d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)( 3190d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 3200d1ba665SWarner Losh IN UINTN Column, 3210d1ba665SWarner Losh IN UINTN Row 3220d1ba665SWarner Losh ); 3230d1ba665SWarner Losh 3240d1ba665SWarner Losh /** 3250d1ba665SWarner Losh Makes the cursor visible or invisible 3260d1ba665SWarner Losh 3270d1ba665SWarner Losh @param This The protocol instance pointer. 3280d1ba665SWarner Losh @param Visible If TRUE, the cursor is set to be visible. If FALSE, the cursor is 3290d1ba665SWarner Losh set to be invisible. 3300d1ba665SWarner Losh 3310d1ba665SWarner Losh @retval EFI_SUCCESS The operation completed successfully. 3320d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device had an error and could not complete the 3330d1ba665SWarner Losh request, or the device does not support changing 3340d1ba665SWarner Losh the cursor mode. 3350d1ba665SWarner Losh @retval EFI_UNSUPPORTED The output device is not in a valid text mode. 3360d1ba665SWarner Losh 3370d1ba665SWarner Losh **/ 3380d1ba665SWarner Losh typedef 3390d1ba665SWarner Losh EFI_STATUS 3400d1ba665SWarner Losh (EFIAPI *EFI_TEXT_ENABLE_CURSOR)( 3410d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 3420d1ba665SWarner Losh IN BOOLEAN Visible 3430d1ba665SWarner Losh ); 3440d1ba665SWarner Losh 3450d1ba665SWarner Losh /** 3460d1ba665SWarner Losh @par Data Structure Description: 3470d1ba665SWarner Losh Mode Structure pointed to by Simple Text Out protocol. 3480d1ba665SWarner Losh **/ 3490d1ba665SWarner Losh typedef struct { 3500d1ba665SWarner Losh /// 3510d1ba665SWarner Losh /// The number of modes supported by QueryMode () and SetMode (). 3520d1ba665SWarner Losh /// 3530d1ba665SWarner Losh INT32 MaxMode; 3540d1ba665SWarner Losh 3550d1ba665SWarner Losh // 3560d1ba665SWarner Losh // current settings 3570d1ba665SWarner Losh // 3580d1ba665SWarner Losh 3590d1ba665SWarner Losh /// 3600d1ba665SWarner Losh /// The text mode of the output device(s). 3610d1ba665SWarner Losh /// 3620d1ba665SWarner Losh INT32 Mode; 3630d1ba665SWarner Losh /// 3640d1ba665SWarner Losh /// The current character output attribute. 3650d1ba665SWarner Losh /// 3660d1ba665SWarner Losh INT32 Attribute; 3670d1ba665SWarner Losh /// 3680d1ba665SWarner Losh /// The cursor's column. 3690d1ba665SWarner Losh /// 3700d1ba665SWarner Losh INT32 CursorColumn; 3710d1ba665SWarner Losh /// 3720d1ba665SWarner Losh /// The cursor's row. 3730d1ba665SWarner Losh /// 3740d1ba665SWarner Losh INT32 CursorRow; 3750d1ba665SWarner Losh /// 3760d1ba665SWarner Losh /// The cursor is currently visbile or not. 3770d1ba665SWarner Losh /// 3780d1ba665SWarner Losh BOOLEAN CursorVisible; 3790d1ba665SWarner Losh } EFI_SIMPLE_TEXT_OUTPUT_MODE; 3800d1ba665SWarner Losh 3810d1ba665SWarner Losh /// 3820d1ba665SWarner Losh /// The SIMPLE_TEXT_OUTPUT protocol is used to control text-based output devices. 3830d1ba665SWarner Losh /// It is the minimum required protocol for any handle supplied as the ConsoleOut 3840d1ba665SWarner Losh /// or StandardError device. In addition, the minimum supported text mode of such 3850d1ba665SWarner Losh /// devices is at least 80 x 25 characters. 3860d1ba665SWarner Losh /// 3870d1ba665SWarner Losh struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL { 3880d1ba665SWarner Losh EFI_TEXT_RESET Reset; 3890d1ba665SWarner Losh 3900d1ba665SWarner Losh EFI_TEXT_STRING OutputString; 3910d1ba665SWarner Losh EFI_TEXT_TEST_STRING TestString; 3920d1ba665SWarner Losh 3930d1ba665SWarner Losh EFI_TEXT_QUERY_MODE QueryMode; 3940d1ba665SWarner Losh EFI_TEXT_SET_MODE SetMode; 3950d1ba665SWarner Losh EFI_TEXT_SET_ATTRIBUTE SetAttribute; 3960d1ba665SWarner Losh 3970d1ba665SWarner Losh EFI_TEXT_CLEAR_SCREEN ClearScreen; 3980d1ba665SWarner Losh EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; 3990d1ba665SWarner Losh EFI_TEXT_ENABLE_CURSOR EnableCursor; 4000d1ba665SWarner Losh 4010d1ba665SWarner Losh /// 4020d1ba665SWarner Losh /// Pointer to SIMPLE_TEXT_OUTPUT_MODE data. 4030d1ba665SWarner Losh /// 4040d1ba665SWarner Losh EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode; 4050d1ba665SWarner Losh }; 4060d1ba665SWarner Losh 4070d1ba665SWarner Losh extern EFI_GUID gEfiSimpleTextOutProtocolGuid; 4080d1ba665SWarner Losh 4090d1ba665SWarner Losh #endif 410