xref: /freebsd-src/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h (revision 3245fa215aca18d135839a15c80ae1c905666a37)
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