X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkUnixPkg%2FDxe%2FUnixThunk%2FBus%2FConsole%2FConsoleOut.c;fp=EdkUnixPkg%2FDxe%2FUnixThunk%2FBus%2FConsole%2FConsoleOut.c;h=0000000000000000000000000000000000000000;hp=5fbc77e51d867d95a78ab88c7fbda08b1793adaa;hb=808def96aa4589fba9c2d0ea55837754a3b7a4f7;hpb=9216450d1143056a50a5f916984a2d7faf590488 diff --git a/EdkUnixPkg/Dxe/UnixThunk/Bus/Console/ConsoleOut.c b/EdkUnixPkg/Dxe/UnixThunk/Bus/Console/ConsoleOut.c deleted file mode 100644 index 5fbc77e51d..0000000000 --- a/EdkUnixPkg/Dxe/UnixThunk/Bus/Console/ConsoleOut.c +++ /dev/null @@ -1,635 +0,0 @@ -/*++ - -Copyright (c) 2004, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which 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. - -Module Name: - - ConsoleOut.c - -Abstract: - - Console based on Posix APIs. - - This file creates an Posix window and attaches a SimpleTextOut protocol. - ---*/ - -#include "Console.h" -// -// Private worker functions. -// - -#if 0 -STATIC -VOID -UnixSimpleTextOutScrollScreen ( - IN OUT UNIX_SIMPLE_TEXT_PRIVATE_DATA *Console - ); - -#endif -STATIC -VOID -UnixSimpleTextOutPutChar ( - IN OUT UNIX_SIMPLE_TEXT_PRIVATE_DATA *Console, - IN CHAR16 Char - ); - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutSetAttribute ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN UINTN Attribute - ); -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutSetMode ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN UINTN ModeNumber - ); - -// -// Modeule Global for Simple Text Out Mode. -// -#define MAX_SIMPLE_TEXT_OUT_MODE \ - (sizeof(mUnixSimpleTextOutSupportedModes)/sizeof(UNIX_SIMPLE_TEXT_OUT_MODE)) - -STATIC UNIX_SIMPLE_TEXT_OUT_MODE mUnixSimpleTextOutSupportedModes[] = { - { 80, 25 }, -#if 0 - { 80, 50 }, - { 80, 43 }, - { 100, 100 }, - { 100, 999 } -#endif -}; - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutReset ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - ExtendedVerification - TODO: add argument description - -Returns: - - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - - UnixSimpleTextOutSetAttribute (This, EFI_TEXT_ATTR (This->Mode->Attribute & 0x0F, EFI_BACKGROUND_BLACK)); - - UnixSimpleTextOutSetMode (This, 0); - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutOutputString ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN CHAR16 *String - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - String - TODO: add argument description - -Returns: - - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; - CHAR16 *Str; - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - - for (Str = String; *Str != '\0'; Str++) { - switch (*Str) { -#if 0 - case '\n': - if (Private->Position.Y == (Private->MaxScreenSize.Y - 1)) { - UnixSimpleTextOutScrollScreen (Private); - } - - if (Private->Position.Y < (Private->MaxScreenSize.Y - 1)) { - Private->Position.Y++; - This->Mode->CursorRow++; - } - break; - - case '\r': - Private->Position.X = 0; - This->Mode->CursorColumn = 0; - break; - - case '\b': - if (Private->Position.X > 0) { - Private->Position.X--; - This->Mode->CursorColumn--; - } - break; - -#endif - default: - UnixSimpleTextOutPutChar (Private, *Str); - } - } - - return EFI_SUCCESS; -} - -STATIC -VOID -UnixSimpleTextOutPutChar ( - IN OUT UNIX_SIMPLE_TEXT_PRIVATE_DATA *Console, - IN CHAR16 Char - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - Console - TODO: add argument description - Char - TODO: add argument description - -Returns: - - TODO: add return values - ---*/ -{ - char c = Char; - Console->UnixThunk->Write (1, &c, 1); -} - -#if 0 -STATIC -VOID -UnixSimpleTextOutScrollScreen ( - IN OUT UNIX_SIMPLE_TEXT_PRIVATE_DATA *Console - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - Console - TODO: add argument description - -Returns: - - TODO: add return values - ---*/ -{ -} -#endif - - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutTestString ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN CHAR16 *String - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - String - TODO: add argument description - -Returns: - - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - - // - // BugBug: The correct answer would be a function of what code pages - // are currently loaded? For now we will just return success. - // - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutQueryMode ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN UINTN ModeNumber, - OUT UINTN *Columns, - OUT UINTN *Rows - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - ModeNumber - TODO: add argument description - Columns - TODO: add argument description - Rows - TODO: add argument description - -Returns: - - EFI_INVALID_PARAMETER - TODO: Add description for return value - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - - if (ModeNumber > MAX_SIMPLE_TEXT_OUT_MODE) { - return EFI_INVALID_PARAMETER; - } - - *Columns = mUnixSimpleTextOutSupportedModes[ModeNumber].ColumnsX; - *Rows = mUnixSimpleTextOutSupportedModes[ModeNumber].RowsY; - - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutSetMode ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN UINTN ModeNumber - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - ModeNumber - TODO: add argument description - -Returns: - - EFI_INVALID_PARAMETER - TODO: Add description for return value - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - - if (ModeNumber > MAX_SIMPLE_TEXT_OUT_MODE) { - return EFI_INVALID_PARAMETER; - } - - - This->Mode->Mode = (INT32) ModeNumber; - - This->EnableCursor (This, TRUE); - This->ClearScreen (This); - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutSetAttribute ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN UINTN Attribute - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - Attribute - TODO: add argument description - -Returns: - - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - -#if 0 - Private->Attribute = (WORD) Attribute; -#endif - This->Mode->Attribute = (INT32) Attribute; - - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutClearScreen ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - -Returns: - - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; - // DWORD ConsoleWindow; - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - - This->SetCursorPosition (This, 0, 0); - Private->UnixThunk->Write (1, "\e[2J", 4); - - -#if 0 - Private->UnixThunk->FillConsoleOutputCharacter ( - Private->NtOutHandle, - ' ', - Private->MaxScreenSize.X * Private->MaxScreenSize.Y, - Private->Possition, - &ConsoleWindow - ); - Private->UnixThunk->FillConsoleOutputAttribute ( - Private->NtOutHandle, - Private->Attribute, - Private->MaxScreenSize.X * Private->MaxScreenSize.Y, - Private->Possition, - &ConsoleWindow - ); -#endif - - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutSetCursorPosition ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN UINTN Column, - IN UINTN Row - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - Column - TODO: add argument description - Row - TODO: add argument description - -Returns: - - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - char buf[12]; - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - -#if 0 - Private->Position.X = (WORD) Column; -#endif - This->Mode->CursorColumn = (INT32) Column; - -#if 0 - Private->Position.Y = (WORD) Row; -#endif - This->Mode->CursorRow = (INT32) Row; -#if 0 - Private->UnixThunk->SetConsoleCursorPosition (Private->NtOutHandle, Private->Possition); -#endif - - buf[0] = '\e'; - buf[1] = '['; - buf[2] = '0' + ((Row / 100) % 10); - buf[3] = '0' + ((Row / 10) % 10); - buf[4] = '0' + ((Row / 1) % 10); - buf[5] = ';'; - buf[6] = '0' + ((Column / 100) % 10); - buf[7] = '0' + ((Column / 10) % 10); - buf[8] = '0' + ((Column / 1) % 10); - buf[9] = 'H'; - Private->UnixThunk->Write (1, buf, 10); - - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -EFIAPI -UnixSimpleTextOutEnableCursor ( - IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This, - IN BOOLEAN Enable - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - This - TODO: add argument description - Enable - TODO: add argument description - -Returns: - - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ - UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private; -#if 0 - CONSOLE_CURSOR_INFO Info; -#endif - - Private = UNIX_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This); - Private->CursorEnable = Enable; - This->Mode->CursorVisible = Enable; - -#if 0 - Private->UnixThunk->GetConsoleCursorInfo (Private->NtOutHandle, &Info); - Info.bVisible = Enable; - Private->UnixThunk->SetConsoleCursorInfo (Private->NtOutHandle, &Info); -#endif - - return EFI_SUCCESS; -} - -EFI_STATUS -UnixSimpleTextOutOpenWindow ( - IN OUT UNIX_SIMPLE_TEXT_PRIVATE_DATA *Private - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - Private - TODO: add argument description - -Returns: - - TODO: add return values - ---*/ -{ - EFI_SIMPLE_TEXT_OUT_PROTOCOL *SimpleTextOut; - CHAR16 *WindowName; - - //WindowName = Private->UnixIo->EnvString; -#if 0 - Private->Attribute = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY; - if (*WindowName == '?') { - Private->Attribute = BACKGROUND_RED | FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN; - WindowName = L"EFI Emulator Error Console"; - } -#endif - WindowName = L"EFI Emulator Error Console"; - - AddUnicodeString ( - "eng", - gUnixConsoleComponentName.SupportedLanguages, - &Private->ControllerNameTable, - WindowName - ); - - // - // Fill in protocol member functions - // - SimpleTextOut = &Private->SimpleTextOut; - SimpleTextOut->Reset = UnixSimpleTextOutReset; - SimpleTextOut->OutputString = UnixSimpleTextOutOutputString; - SimpleTextOut->TestString = UnixSimpleTextOutTestString; - SimpleTextOut->QueryMode = UnixSimpleTextOutQueryMode; - SimpleTextOut->SetMode = UnixSimpleTextOutSetMode; - SimpleTextOut->SetAttribute = UnixSimpleTextOutSetAttribute; - SimpleTextOut->ClearScreen = UnixSimpleTextOutClearScreen; - SimpleTextOut->SetCursorPosition = UnixSimpleTextOutSetCursorPosition; - SimpleTextOut->EnableCursor = UnixSimpleTextOutEnableCursor; - - // - // Initialize SimpleTextOut protocol mode structure - // - SimpleTextOut->Mode = &Private->SimpleTextOutMode; - SimpleTextOut->Mode->MaxMode = MAX_SIMPLE_TEXT_OUT_MODE; - SimpleTextOut->Mode->Attribute = 0; //FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY; - -#if 0 - // - // Open the window an initialize it! - // - Private->NtOutHandle = Private->UnixThunk->CreateConsoleScreenBuffer ( - GENERIC_WRITE | GENERIC_READ, - FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, - CONSOLE_TEXTMODE_BUFFER, - NULL - ); - Private->UnixThunk->SetConsoleTitle (WindowName); -#endif - - return SimpleTextOut->SetMode (SimpleTextOut, 0); -} - -EFI_STATUS -UnixSimpleTextOutCloseWindow ( - IN OUT UNIX_SIMPLE_TEXT_PRIVATE_DATA *Console - ) -/*++ - -Routine Description: - - TODO: Add function description - -Arguments: - - Console - TODO: add argument description - -Returns: - - EFI_SUCCESS - TODO: Add description for return value - ---*/ -{ -#if 0 - Console->UnixThunk->CloseHandle (Console->NtOutHandle); -#endif - return EFI_SUCCESS; -}