123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404 |
- /** @file
- Simple Text Out protocol from the UEFI 2.0 specification.
-
- Abstraction of a very simple text based output device like VGA text mode or
- a serial terminal. The Simple Text Out protocol instance can represent
- a single hardware device or a virtual device that is an aggregation
- of multiple physical devices.
-
- Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials are licensed and made available under
- the terms and conditions of the BSD License that accompanies this distribution.
- The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php.
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- **/
-
- #ifndef __SIMPLE_TEXT_OUT_H__
- #define __SIMPLE_TEXT_OUT_H__
-
- #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \
- { \
- 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
- }
-
- ///
- /// Protocol GUID defined in EFI1.1.
- ///
- #define SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID
-
- typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
-
- ///
- /// Backward-compatible with EFI1.1.
- ///
- typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE;
-
- //
- // Define's for required EFI Unicode Box Draw characters
- //
- #define BOXDRAW_HORIZONTAL 0x2500
- #define BOXDRAW_VERTICAL 0x2502
- #define BOXDRAW_DOWN_RIGHT 0x250c
- #define BOXDRAW_DOWN_LEFT 0x2510
- #define BOXDRAW_UP_RIGHT 0x2514
- #define BOXDRAW_UP_LEFT 0x2518
- #define BOXDRAW_VERTICAL_RIGHT 0x251c
- #define BOXDRAW_VERTICAL_LEFT 0x2524
- #define BOXDRAW_DOWN_HORIZONTAL 0x252c
- #define BOXDRAW_UP_HORIZONTAL 0x2534
- #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c
- #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550
- #define BOXDRAW_DOUBLE_VERTICAL 0x2551
- #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552
- #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553
- #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554
- #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555
- #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556
- #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557
- #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558
- #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559
- #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a
- #define BOXDRAW_UP_LEFT_DOUBLE 0x255b
- #define BOXDRAW_UP_DOUBLE_LEFT 0x255c
- #define BOXDRAW_DOUBLE_UP_LEFT 0x255d
- #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e
- #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f
- #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560
- #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561
- #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562
- #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563
- #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564
- #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565
- #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566
- #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567
- #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568
- #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569
- #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a
- #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b
- #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c
-
- //
- // EFI Required Block Elements Code Chart
- //
- #define BLOCKELEMENT_FULL_BLOCK 0x2588
- #define BLOCKELEMENT_LIGHT_SHADE 0x2591
-
- //
- // EFI Required Geometric Shapes Code Chart
- //
- #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2
- #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
- #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc
- #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4
-
- //
- // EFI Required Arrow shapes
- //
- #define ARROW_LEFT 0x2190
- #define ARROW_UP 0x2191
- #define ARROW_RIGHT 0x2192
- #define ARROW_DOWN 0x2193
-
- //
- // EFI Console Colours
- //
- #define EFI_BLACK 0x00
- #define EFI_BLUE 0x01
- #define EFI_GREEN 0x02
- #define EFI_CYAN (EFI_BLUE | EFI_GREEN)
- #define EFI_RED 0x04
- #define EFI_MAGENTA (EFI_BLUE | EFI_RED)
- #define EFI_BROWN (EFI_GREEN | EFI_RED)
- #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)
- #define EFI_BRIGHT 0x08
- #define EFI_DARKGRAY (EFI_BRIGHT)
- #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)
- #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)
- #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)
- #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT)
- #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT)
- #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)
- #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
-
- #define EFI_TEXT_ATTR(f, b) ((f) | ((b) << 4))
-
- #define EFI_BACKGROUND_BLACK 0x00
- #define EFI_BACKGROUND_BLUE 0x10
- #define EFI_BACKGROUND_GREEN 0x20
- #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
- #define EFI_BACKGROUND_RED 0x40
- #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
- #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
- #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
-
- //
- // We currently define attributes from 0 - 7F for color manipulations
- // To internally handle the local display characteristics for a particular character,
- // Bit 7 signifies the local glyph representation for a character. If turned on, glyphs will be
- // pulled from the wide glyph database and will display locally as a wide character (16 X 19 versus 8 X 19)
- // If bit 7 is off, the narrow glyph database will be used. This does NOT affect information that is sent to
- // non-local displays, such as serial or LAN consoles.
- //
- #define EFI_WIDE_ATTRIBUTE 0x80
-
- /**
- Reset the text output device hardware and optionaly run diagnostics
-
- @param This The protocol instance pointer.
- @param ExtendedVerification Driver may perform more exhaustive verfication
- operation of the device during reset.
-
- @retval EFI_SUCCESS The text output device was reset.
- @retval EFI_DEVICE_ERROR The text output device is not functioning correctly and
- could not be reset.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_RESET)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
- IN BOOLEAN ExtendedVerification
- );
-
- /**
- Write a string to the output device.
-
- @param This The protocol instance pointer.
- @param String The NULL-terminated string to be displayed on the output
- device(s). All output devices must also support the Unicode
- drawing character codes defined in this file.
-
- @retval EFI_SUCCESS The string was output to the device.
- @retval EFI_DEVICE_ERROR The device reported an error while attempting to output
- the text.
- @retval EFI_UNSUPPORTED The output device's mode is not currently in a
- defined text mode.
- @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the
- characters in the string could not be
- rendered and were skipped.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_STRING)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
- IN CHAR16 *String
- );
-
- /**
- Verifies that all characters in a string can be output to the
- target device.
-
- @param This The protocol instance pointer.
- @param String The NULL-terminated string to be examined for the output
- device(s).
-
- @retval EFI_SUCCESS The device(s) are capable of rendering the output string.
- @retval EFI_UNSUPPORTED Some of the characters in the string cannot be
- rendered by one or more of the output devices mapped
- by the EFI handle.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_TEST_STRING)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
- IN CHAR16 *String
- );
-
- /**
- Returns information for an available text mode that the output device(s)
- supports.
-
- @param This The protocol instance pointer.
- @param ModeNumber The mode number to return information on.
- @param Columns Returns the geometry of the text output device for the
- requested ModeNumber.
- @param Rows Returns the geometry of the text output device for the
- requested ModeNumber.
-
- @retval EFI_SUCCESS The requested mode information was returned.
- @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
- @retval EFI_UNSUPPORTED The mode number was not valid.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_QUERY_MODE)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
- IN UINTN ModeNumber,
- OUT UINTN *Columns,
- OUT UINTN *Rows
- );
-
- /**
- Sets the output device(s) to a specified mode.
-
- @param This The protocol instance pointer.
- @param ModeNumber The mode number to set.
-
- @retval EFI_SUCCESS The requested text mode was set.
- @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
- @retval EFI_UNSUPPORTED The mode number was not valid.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_SET_MODE)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
- IN UINTN ModeNumber
- );
-
- /**
- Sets the background and foreground colors for the OutputString () and
- ClearScreen () functions.
-
- @param This The protocol instance pointer.
- @param Attribute The attribute to set. Bits 0..3 are the foreground color, and
- bits 4..6 are the background color. All other bits are undefined
- and must be zero. The valid Attributes are defined in this file.
-
- @retval EFI_SUCCESS The attribute was set.
- @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
- @retval EFI_UNSUPPORTED The attribute requested is not defined.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_SET_ATTRIBUTE)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
- IN UINTN Attribute
- );
-
- /**
- Clears the output device(s) display to the currently selected background
- color.
-
- @param This The protocol instance pointer.
-
- @retval EFI_SUCCESS The operation completed successfully.
- @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
- @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_CLEAR_SCREEN)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This
- );
-
- /**
- Sets the current coordinates of the cursor position
-
- @param This The protocol instance pointer.
- @param Column The position to set the cursor to. Must be greater than or
- equal to zero and less than the number of columns and rows
- by QueryMode ().
- @param Row The position to set the cursor to. Must be greater than or
- equal to zero and less than the number of columns and rows
- by QueryMode ().
-
- @retval EFI_SUCCESS The operation completed successfully.
- @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
- @retval EFI_UNSUPPORTED The output device is not in a valid text mode, or the
- cursor position is invalid for the current mode.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
- IN UINTN Column,
- IN UINTN Row
- );
-
- /**
- Makes the cursor visible or invisible
-
- @param This The protocol instance pointer.
- @param Visible If TRUE, the cursor is set to be visible. If FALSE, the cursor is
- set to be invisible.
-
- @retval EFI_SUCCESS The operation completed successfully.
- @retval EFI_DEVICE_ERROR The device had an error and could not complete the
- request, or the device does not support changing
- the cursor mode.
- @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
-
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_TEXT_ENABLE_CURSOR)(
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
- IN BOOLEAN Visible
- );
-
- /**
- @par Data Structure Description:
- Mode Structure pointed to by Simple Text Out protocol.
- **/
- typedef struct {
- ///
- /// The number of modes supported by QueryMode () and SetMode ().
- ///
- INT32 MaxMode;
-
- //
- // current settings
- //
-
- ///
- /// The text mode of the output device(s).
- ///
- INT32 Mode;
- ///
- /// The current character output attribute.
- ///
- INT32 Attribute;
- ///
- /// The cursor's column.
- ///
- INT32 CursorColumn;
- ///
- /// The cursor's row.
- ///
- INT32 CursorRow;
- ///
- /// The cursor is currently visbile or not.
- ///
- BOOLEAN CursorVisible;
- } EFI_SIMPLE_TEXT_OUTPUT_MODE;
-
- ///
- /// The SIMPLE_TEXT_OUTPUT protocol is used to control text-based output devices.
- /// It is the minimum required protocol for any handle supplied as the ConsoleOut
- /// or StandardError device. In addition, the minimum supported text mode of such
- /// devices is at least 80 x 25 characters.
- ///
- struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
- EFI_TEXT_RESET Reset;
-
- EFI_TEXT_STRING OutputString;
- EFI_TEXT_TEST_STRING TestString;
-
- EFI_TEXT_QUERY_MODE QueryMode;
- EFI_TEXT_SET_MODE SetMode;
- EFI_TEXT_SET_ATTRIBUTE SetAttribute;
-
- EFI_TEXT_CLEAR_SCREEN ClearScreen;
- EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
- EFI_TEXT_ENABLE_CURSOR EnableCursor;
-
- ///
- /// Pointer to SIMPLE_TEXT_OUTPUT_MODE data.
- ///
- EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;
- };
-
- extern EFI_GUID gEfiSimpleTextOutProtocolGuid;
-
- #endif
|