From 415df2a396a2d7c1bc4be2af6db6cb1ff45f0200 Mon Sep 17 00:00:00 2001 From: vanjeff Date: Thu, 10 Jul 2008 03:25:37 +0000 Subject: add functions header for ConPlatformDxe and ConSplitterdxe modules. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5442 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/Console/ConPlatformDxe/ConPlatform.c | 2 +- .../Universal/Console/ConPlatformDxe/ConPlatform.h | 4 +- .../Universal/Console/ConSplitterDxe/ConSplitter.c | 426 +++++++---- .../Universal/Console/ConSplitterDxe/ConSplitter.h | 852 ++++++++++++++++++++- .../Console/ConSplitterDxe/ConSplitterDxe.inf | 2 +- .../Console/ConSplitterDxe/ConSplitterGraphics.c | 8 +- 6 files changed, 1114 insertions(+), 180 deletions(-) (limited to 'MdeModulePkg/Universal') diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c index bfa25f7be4..56bdd11693 100644 --- a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c +++ b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.c @@ -217,7 +217,7 @@ ConPlatformDriverBindingSupported ( @retval EFI_SUCCESS This driver is added to ControllerHandle @retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle - @retval other This driver does not support this device + @retval other This driver does not support this device. **/ EFI_STATUS diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.h b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.h index d3adcc56a5..1ec31a170b 100644 --- a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.h +++ b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatform.h @@ -12,8 +12,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ -#ifndef _CON_MANAGE_H_ -#define _CON_MANAGE_H_ +#ifndef _CON_PLATFORM_H_ +#define _CON_PLATFORM_H_ #include #include diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c index 6e996c5fc2..9d45af26ea 100644 --- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c +++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c @@ -309,6 +309,11 @@ EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding = { /** The user Entry Point for module ConSplitter. The user code starts with this function. + Installs driver module protocols and. Creates virtual device handles for ConIn, + ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol, + Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers. + Installs Graphics Output protocol and/or UGA Draw protocol if needed. + @param[in] ImageHandle The firmware allocated handle for the EFI image. @param[in] SystemTable A pointer to the EFI System Table. @@ -318,7 +323,7 @@ EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding = { **/ EFI_STATUS EFIAPI -InitializeConSplitter( +ConSplitterDriverEntry( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) @@ -379,36 +384,6 @@ InitializeConSplitter( ASSERT_EFI_ERROR (Status); - // - // Call the original Entry Point - // - Status = ConSplitterDriverEntry (ImageHandle, SystemTable); - - return Status; -} - - - -/** - Intialize a virtual console device to act as an agrigator of physical console - devices. - - @param ImageHandle (Standard EFI Image entry - - EFI_IMAGE_ENTRY_POINT) - @param SystemTable (Standard EFI Image entry - - EFI_IMAGE_ENTRY_POINT) - EFI_SUCCESS - -**/ -EFI_STATUS -EFIAPI -ConSplitterDriverEntry ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - ASSERT (FeaturePcdGet (PcdConOutGopSupport) || FeaturePcdGet (PcdConOutUgaSupport)); // @@ -535,16 +510,18 @@ ConSplitterDriverEntry ( ); return EFI_SUCCESS; + } /** - Construct the ConSplitter. + Construct console input devices' private data. @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA structure. @retval EFI_OUT_OF_RESOURCES Out of resources. + @retval other Out of resources. **/ EFI_STATUS @@ -654,6 +631,15 @@ ConSplitterTextInConstructor ( return Status; } +/** + Construct console output devices' private data. + + @param ConOutPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA + structure. + + @retval EFI_OUT_OF_RESOURCES Out of resources. + +**/ EFI_STATUS ConSplitterTextOutConstructor ( TEXT_OUT_SPLITTER_PRIVATE_DATA *ConOutPrivate @@ -760,14 +746,14 @@ ConSplitterTextOutConstructor ( /** - Generic Supported Check + Test to see if the specified protocol could be supported on the ControllerHandle. - @param This Pointer to protocol. - @param ControllerHandle Controller Handle. - @param Guid Guid. + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to test. + @param Guid The specified protocol guid. - @retval EFI_UNSUPPORTED unsupported. - @retval EFI_SUCCESS operation is OK. + @retval EFI_SUCCESS The specified protocol is supported on this device. + @retval other The specified protocol is not supported on this device. **/ EFI_STATUS @@ -820,15 +806,16 @@ ConSplitterSupported ( return EFI_SUCCESS; } - /** - Console In Supported Check + Test to see if Console In Device could be supported on the ControllerHandle. - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to test. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @return EFI_STATUS + @retval EFI_SUCCESS This driver supports this device + @retval other This driver does not support this device **/ EFI_STATUS @@ -846,15 +833,16 @@ ConSplitterConInDriverBindingSupported ( ); } - /** - Standard Error Supported Check + Test to see if Simple Pointer protocol could be supported on the ControllerHandle. - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to test. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @return EFI_STATUS + @retval EFI_SUCCESS This driver supports this device + @retval other This driver does not support this device **/ EFI_STATUS @@ -874,13 +862,15 @@ ConSplitterSimplePointerDriverBindingSupported ( /** - Absolute Pointer Supported Check + Test to see if Absolute Pointer protocol could be supported on the ControllerHandle. - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to test. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @return EFI_STATUS + @retval EFI_SUCCESS This driver supports this device + @retval other This driver does not support this device **/ EFI_STATUS @@ -900,13 +890,15 @@ ConSplitterAbsolutePointerDriverBindingSupported ( /** - Console Out Supported Check + Test to see if Console Out Device could be supported on the ControllerHandle. - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to test. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @return EFI_STATUS + @retval EFI_SUCCESS This driver supports this device + @retval other This driver does not support this device **/ EFI_STATUS @@ -924,15 +916,16 @@ ConSplitterConOutDriverBindingSupported ( ); } - /** - Standard Error Supported Check + Test to see if Standard Error Device could be supported on the ControllerHandle. - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to test. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @return EFI_STATUS + @retval EFI_SUCCESS This driver supports this device + @retval other This driver does not support this device **/ EFI_STATUS @@ -952,30 +945,37 @@ ConSplitterStdErrDriverBindingSupported ( /** - Start ConSplitter on ControllerHandle, and create the virtual - agrogated console device on first call Start for a SimpleTextIn handle. - - (Standard DriverBinding Protocol Start() function) - - @return EFI_ERROR if a SimpleTextIn protocol is not started. + Start ConSplitter on devcie handle by opening Console Device Guid on device handle + and the console virtual handle. And Get the console interface on controller handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device. + @param ConSplitterVirtualHandle Console virtual Handle. + @param DeviceGuid The specified Console Device, such as ConInDev, + ConOutDev. + @param InterfaceGuid The specified protocol to be opened. + @param Interface Protocol interface returned. + + @retval EFI_SUCCESS This driver supports this device + @retval other Failed to open the specified Console Device Guid + or specified protocol. **/ EFI_STATUS -EFIAPI ConSplitterStart ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ConSplitterVirtualHandle, IN EFI_GUID *DeviceGuid, IN EFI_GUID *InterfaceGuid, - IN VOID **Interface + OUT VOID **Interface ) { EFI_STATUS Status; VOID *Instance; // - // Check to see whether the handle has the ConsoleInDevice GUID on it + // Check to see whether the ControllerHandle has the InterfaceGuid on it. // Status = gBS->OpenProtocol ( ControllerHandle, @@ -1013,15 +1013,15 @@ ConSplitterStart ( /** - Start ConSplitter on ControllerHandle, and create the virtual - agrogated console device on first call Start for a SimpleTextIn handle. - - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. + Start Console In Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @return EFI_STATUS - @return EFI_ERROR if a SimpleTextIn protocol is not started. + @retval EFI_SUCCESS Console In Consplitter is added to ControllerHandle. + @retval other Console In Consplitter does not support this device. **/ EFI_STATUS @@ -1032,9 +1032,9 @@ ConSplitterConInDriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; - EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn; - EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx; + EFI_STATUS Status; + EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn; + EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx; // // Start ConSplitter on ControllerHandle, and create the virtual @@ -1076,14 +1076,15 @@ ConSplitterConInDriverBindingStart ( /** - Start ConSplitter on ControllerHandle, and create the virtual - agrogated console device on first call Start for a SimpleTextIn handle. + Start Simple Pointer Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. - - @return EFI_ERROR if a SimpleTextIn protocol is not started. + @retval EFI_SUCCESS Simple Pointer Consplitter is added to ControllerHandle. + @retval other Simple Pointer Consplitter does not support this device. **/ EFI_STATUS @@ -1114,14 +1115,15 @@ ConSplitterSimplePointerDriverBindingStart ( /** - Start ConSplitter on ControllerHandle, and create the virtual - agrogated console device on first call Start for a ConIn handle. - - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. + Start Absolute Pointer Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @return EFI_ERROR if a AbsolutePointer protocol is not started. + @retval EFI_SUCCESS Absolute Pointer Consplitter is added to ControllerHandle. + @retval other Absolute Pointer Consplitter does not support this device. **/ EFI_STATUS @@ -1153,14 +1155,15 @@ ConSplitterAbsolutePointerDriverBindingStart ( /** - Start ConSplitter on ControllerHandle, and create the virtual - agrogated console device on first call Start for a SimpleTextIn handle. + Start Console Out Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. - - @return EFI_ERROR if a SimpleTextIn protocol is not started. + @retval EFI_SUCCESS Console Out Consplitter is added to ControllerHandle. + @retval other Console Out Consplitter does not support this device. **/ EFI_STATUS @@ -1248,14 +1251,15 @@ ConSplitterConOutDriverBindingStart ( /** - Start ConSplitter on ControllerHandle, and create the virtual - agrogated console device on first call Start for a SimpleTextIn handle. - - @param This Pointer to protocol. - @param ControllerHandle Controller handle. - @param RemainingDevicePath Remaining device path. + Start Standard Error Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. - @return EFI_ERROR if a SimpleTextIn protocol is not started. + @retval EFI_SUCCESS Standard Error Consplitter is added to ControllerHandle. + @retval other Standard Error Consplitter does not support this device. **/ EFI_STATUS @@ -1316,14 +1320,22 @@ ConSplitterStdErrDriverBindingStart ( /** - - (Standard DriverBinding Protocol Stop() function) - - @return None + Stop ConSplitter on device handle by opening Console Device Guid on device handle + and the console virtual handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device. + @param ConSplitterVirtualHandle Console virtual Handle. + @param DeviceGuid The specified Console Device, such as ConInDev, + ConOutDev. + @param InterfaceGuid The specified protocol to be opened. + @param Interface Protocol interface returned. + + @retval EFI_SUCCESS Stop ConSplitter on ControllerHandle successfully. + @retval other Failed to Stop ConSplitter on ControllerHandle. **/ EFI_STATUS -EFIAPI ConSplitterStop ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, @@ -1367,10 +1379,16 @@ ConSplitterStop ( /** + Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID. - (Standard DriverBinding Protocol Stop() function) + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. - @return None + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device **/ EFI_STATUS @@ -1427,10 +1445,17 @@ ConSplitterConInDriverBindingStop ( /** + Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing + Simple Pointer protocol. - (Standard DriverBinding Protocol Stop() function) + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. - @return None + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device **/ EFI_STATUS @@ -1468,10 +1493,17 @@ ConSplitterSimplePointerDriverBindingStop ( /** + Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing + Absolute Pointer protocol. - (Standard DriverBinding Protocol Stop() function) + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. - @return None + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device **/ EFI_STATUS @@ -1509,10 +1541,16 @@ ConSplitterAbsolutePointerDriverBindingStop ( /** + Stop Console Out ConSplitter on device handle by closing Console Out Devcice GUID. - (Standard DriverBinding Protocol Stop() function) + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. - @return None + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device **/ EFI_STATUS @@ -1551,10 +1589,16 @@ ConSplitterConOutDriverBindingStop ( /** + Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID. - (Standard DriverBinding Protocol Stop() function) + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. - @retval EFI_SUCCESS Complete successfully. + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device **/ EFI_STATUS @@ -1622,8 +1666,7 @@ ConSplitterStdErrDriverBindingStop ( data @retval EFI_SUCCESS Buffer size has grown - @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size - @return None + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. **/ EFI_STATUS @@ -1664,10 +1707,13 @@ ConSplitterGrowBuffer ( /** + Add Text Input Device in Consplitter Text Input list. + @param Private Text In Splitter pointer. + @param TextIn Simple Text Input protocol pointer. - @return EFI_SUCCESS - @return EFI_OUT_OF_RESOURCES + @retval EFI_SUCCESS Text Input Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. **/ EFI_STATUS @@ -1707,10 +1753,13 @@ ConSplitterTextInAddDevice ( /** + Remove Simple Text Device in Consplitter Absolute Pointer list. + @param Private Text In Splitter pointer. + @param TextIn Simple Text protocol pointer. - @return EFI_SUCCESS - @return EFI_NOT_FOUND + @retval EFI_SUCCESS Simple Text Device removed successfully. + @retval EFI_NOT_FOUND No Simple Text Device found. **/ EFI_STATUS @@ -1738,6 +1787,16 @@ ConSplitterTextInDeleteDevice ( return EFI_NOT_FOUND; } +/** + Add Text Input Ex Device in Consplitter Text Input Ex list. + + @param Private Text In Splitter pointer. + @param TextInEx Simple Text Ex Input protocol pointer. + + @retval EFI_SUCCESS Text Input Ex Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. + +**/ EFI_STATUS ConSplitterTextInExAddDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -1773,6 +1832,16 @@ ConSplitterTextInExAddDevice ( return EFI_SUCCESS; } +/** + Remove Simple Text Ex Device in Consplitter Absolute Pointer list. + + @param Private Text In Splitter pointer. + @param TextInEx Simple Text Ex protocol pointer. + + @retval EFI_SUCCESS Simple Text Ex Device removed successfully. + @retval EFI_NOT_FOUND No Simple Text Ex Device found. + +**/ EFI_STATUS ConSplitterTextInExDeleteDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -1800,10 +1869,13 @@ ConSplitterTextInExDeleteDevice ( /** + Add Simple Pointer Device in Consplitter Simple Pointer list. + @param Private Text In Splitter pointer. + @param SimplePointer Simple Pointer protocol pointer. - @return EFI_OUT_OF_RESOURCES - @return EFI_SUCCESS + @retval EFI_SUCCESS Simple Pointer Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. **/ EFI_STATUS @@ -1837,9 +1909,13 @@ ConSplitterSimplePointerAddDevice ( /** + Remove Simple Pointer Device in Consplitter Absolute Pointer list. + @param Private Text In Splitter pointer. + @param SimplePointer Simple Pointer protocol pointer. - @return None + @retval EFI_SUCCESS Simple Pointer Device removed successfully. + @retval EFI_NOT_FOUND No Simple Pointer Device found. **/ EFI_STATUS @@ -1869,10 +1945,13 @@ ConSplitterSimplePointerDeleteDevice ( /** + Add Absolute Pointer Device in Consplitter Absolute Pointer list. + @param Private Text In Splitter pointer. + @param AbsolutePointer Absolute Pointer protocol pointer. - @return EFI_OUT_OF_RESOURCES - @return EFI_SUCCESS + @retval EFI_SUCCESS Absolute Pointer Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. **/ EFI_STATUS @@ -1906,9 +1985,13 @@ ConSplitterAbsolutePointerAddDevice ( /** + Remove Absolute Pointer Device in Consplitter Absolute Pointer list. + @param Private Text In Splitter pointer. + @param AbsolutePointer Absolute Pointer protocol pointer. - @return None + @retval EFI_SUCCESS Absolute Pointer Device removed successfully. + @retval EFI_NOT_FOUND No Absolute Pointer Device found. **/ EFI_STATUS @@ -1936,13 +2019,6 @@ ConSplitterAbsolutePointerDeleteDevice ( return EFI_NOT_FOUND; } - -/** - - - @return None - -**/ EFI_STATUS ConSplitterGrowMapTable ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private @@ -2010,9 +2086,13 @@ ConSplitterGrowMapTable ( /** + Add the device's output mode to console splitter's mode list. - - @return None + @param Private Text Out Splitter pointer + @param TextOut Simple Text Output protocol pointer. + + @retval EFI_SUCCESS Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. **/ EFI_STATUS @@ -2158,11 +2238,12 @@ ConSplitterGetIntersection ( /** + Add the device's output mode to console splitter's mode list. - @param Private Private data structure. - @param TextOut Text Out Protocol. - - @return None + @param Private Text Out Splitter pointer + @param TextOut Simple Text Output protocol pointer. + + @reture None **/ VOID @@ -2241,10 +2322,10 @@ ConSplitterSyncOutputMode ( /** + Sync output device between ConOut and StdErr output. - - @return EFI_SUCCESS - @return EFI_OUT_OF_RESOURCES + @retval EFI_SUCCESS Sync implemented successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. **/ EFI_STATUS @@ -2402,9 +2483,14 @@ ConSplitterGetIntersectionBetweenConOutAndStrErr ( /** + Add GOP or UGA output mode into Consplitter Text Out list. + @param Private Text Out Splitter pointer. + @param GraphicsOutput Graphics Output protocol pointer. + @param UgaDraw UGA Draw protocol pointer. - @return None + @retval EFI_SUCCESS Output mode added successfully. + @retval other Failed to add output mode. **/ EFI_STATUS @@ -2751,11 +2837,16 @@ ConsplitterSetConsoleOutMode ( } - /** + Add Text Output Device in Consplitter Text Output list. + @param Private Text Out Splitter pointer. + @param TextOut Simple Text Output protocol pointer. + @param GraphicsOutput Graphics Output protocol pointer. + @param UgaDraw UGA Draw protocol pointer. - @return None + @retval EFI_SUCCESS Text Output Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. **/ EFI_STATUS @@ -2913,9 +3004,13 @@ ConSplitterTextOutAddDevice ( /** + Remove Text Out Device in Consplitter Text Out list. + @param Private Text Out Splitter pointer. + @param TextOut Simple Text Output Pointer protocol pointer. - @return None + @retval EFI_SUCCESS Text Out Device removed successfully. + @retval EFI_NOT_FOUND No Text Out Device found. **/ EFI_STATUS @@ -3127,7 +3222,9 @@ ConSpliterConssoleControlStdInLocked ( password will cause the check to reset. As long a mConIn.PasswordEnabled is TRUE the StdIn splitter will not report any input. - (Standard EFI_EVENT_NOTIFY) + @param Event The Event this notify function registered to. + @param Context Pointer to the context data registerd to the + Event. @return None @@ -3873,9 +3970,10 @@ ConSplitterSimplePointerPrivateGetState ( be used to test for existance of a keystroke via WaitForEvent () call. If the ConIn is password locked make it look like no keystroke is availible - @param This Protocol instance pointer. State - + @param This A pointer to protocol instance. + @param State A pointer to state information on the pointer device - @retval EFI_SUCCESS The keystroke information was returned. + @retval EFI_SUCCESS The keystroke information was returned in State. @retval EFI_NOT_READY There was no keystroke data availiable. @retval EFI_DEVICE_ERROR The keydtroke information was not returned due to hardware errors. diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h index 6f409e19a4..f43e63be78 100644 --- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h +++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h @@ -251,6 +251,22 @@ typedef struct { // // Function Prototypes // + +/** + The user Entry Point for module ConSplitter. The user code starts with this function. + + Installs driver module protocols and. Creates virtual device handles for ConIn, + ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol, + Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers. + Installs Graphics Output protocol and/or UGA Draw protocol if needed. + + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval other Some error occurs when executing this entry point. + +**/ EFI_STATUS EFIAPI ConSplitterDriverEntry ( @@ -274,6 +290,15 @@ ConSplitterTextInConstructor ( ) ; +/** + Construct console output devices' private data. + + @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA + structure. + + @retval EFI_OUT_OF_RESOURCES Out of resources. + +**/ EFI_STATUS ConSplitterTextOutConstructor ( TEXT_OUT_SPLITTER_PRIVATE_DATA *Private @@ -360,6 +385,18 @@ ConSplitterStdErrDriverBindingSupported ( ) ; +/** + Start Console In Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. + + @retval EFI_SUCCESS Console In Consplitter is added to ControllerHandle. + @retval other Console In Consplitter does not support this device. + +**/ EFI_STATUS EFIAPI ConSplitterConInDriverBindingStart ( @@ -369,6 +406,18 @@ ConSplitterConInDriverBindingStart ( ) ; +/** + Start Simple Pointer Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. + + @retval EFI_SUCCESS Simple Pointer Consplitter is added to ControllerHandle. + @retval other Simple Pointer Consplitter does not support this device. + +**/ EFI_STATUS EFIAPI ConSplitterSimplePointerDriverBindingStart ( @@ -378,6 +427,18 @@ ConSplitterSimplePointerDriverBindingStart ( ) ; +/** + Start Console Out Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. + + @retval EFI_SUCCESS Console Out Consplitter is added to ControllerHandle. + @retval other Console Out Consplitter does not support this device. + +**/ EFI_STATUS EFIAPI ConSplitterConOutDriverBindingStart ( @@ -387,6 +448,18 @@ ConSplitterConOutDriverBindingStart ( ) ; +/** + Start Standard Error Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. + + @retval EFI_SUCCESS Standard Error Consplitter is added to ControllerHandle. + @retval other Standard Error Consplitter does not support this device. + +**/ EFI_STATUS EFIAPI ConSplitterStdErrDriverBindingStart ( @@ -396,6 +469,19 @@ ConSplitterStdErrDriverBindingStart ( ) ; +/** + Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. + + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device + +**/ EFI_STATUS EFIAPI ConSplitterConInDriverBindingStop ( @@ -406,6 +492,20 @@ ConSplitterConInDriverBindingStop ( ) ; +/** + Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing + Simple Pointer protocol. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. + + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device + +**/ EFI_STATUS EFIAPI ConSplitterSimplePointerDriverBindingStop ( @@ -416,6 +516,19 @@ ConSplitterSimplePointerDriverBindingStop ( ) ; +/** + Stop Console Out ConSplitter on ControllerHandle by closing Console Out Devcice GUID. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. + + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device + +**/ EFI_STATUS EFIAPI ConSplitterConOutDriverBindingStop ( @@ -426,6 +539,19 @@ ConSplitterConOutDriverBindingStop ( ) ; +/** + Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. + + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device + +**/ EFI_STATUS EFIAPI ConSplitterStdErrDriverBindingStop ( @@ -436,10 +562,19 @@ ConSplitterStdErrDriverBindingStop ( ) ; -// -// Driver binding functions -// +/** + Test to see if Absolute Pointer protocol could be supported on the ControllerHandle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to test. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. + + @retval EFI_SUCCESS This driver supports this device + @retval other This driver does not support this device + +**/ EFI_STATUS EFIAPI ConSplitterAbsolutePointerDriverBindingSupported ( @@ -449,6 +584,18 @@ ConSplitterAbsolutePointerDriverBindingSupported ( ) ; +/** + Start Absolute Pointer Consplitter on device handle. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to bind driver to. + @param RemainingDevicePath Optional parameter use to pick a specific child + device to start. + + @retval EFI_SUCCESS Absolute Pointer Consplitter is added to ControllerHandle. + @retval other Absolute Pointer Consplitter does not support this device. + +**/ EFI_STATUS EFIAPI ConSplitterAbsolutePointerDriverBindingStart ( @@ -458,6 +605,20 @@ ConSplitterAbsolutePointerDriverBindingStart ( ) ; +/** + Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing + Absolute Pointer protocol. + + @param This Protocol instance pointer. + @param ControllerHandle Handle of device to stop driver on + @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of + children is zero stop the entire bus driver. + @param ChildHandleBuffer List of Child Handles to Stop. + + @retval EFI_SUCCESS This driver is removed ControllerHandle + @retval other This driver was not removed from this device + +**/ EFI_STATUS EFIAPI ConSplitterAbsolutePointerDriverBindingStop ( @@ -468,6 +629,16 @@ ConSplitterAbsolutePointerDriverBindingStop ( ) ; +/** + Add Absolute Pointer Device in Consplitter Absolute Pointer list. + + @param Private Text In Splitter pointer. + @param AbsolutePointer Absolute Pointer protocol pointer. + + @retval EFI_SUCCESS Absolute Pointer Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. + +**/ EFI_STATUS ConSplitterAbsolutePointerAddDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -475,6 +646,16 @@ ConSplitterAbsolutePointerAddDevice ( ) ; +/** + Remove Absolute Pointer Device in Consplitter Absolute Pointer list. + + @param Private Text In Splitter pointer. + @param AbsolutePointer Absolute Pointer protocol pointer. + + @retval EFI_SUCCESS Absolute Pointer Device removed successfully. + @retval EFI_NOT_FOUND No Absolute Pointer Device found. + +**/ EFI_STATUS ConSplitterAbsolutePointerDeleteDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -530,6 +711,19 @@ ConSplitterAbsolutePointerGetState ( ) ; +/** + This event agregates all the events of the pointer devices in the splitter. + If the ConIn is password locked then return. + If any events of physical pointer devices are signaled, signal the pointer + splitter event. This will cause the calling code to call + ConSplitterAbsolutePointerGetState (). + + @param Event The Event assoicated with callback. + @param Context Context registered when Event was created. + + @return None + +**/ VOID EFIAPI ConSplitterAbsolutePointerWaitForInput ( @@ -743,6 +937,50 @@ ConSplitterSimplePointerComponentNameGetControllerName ( OUT CHAR16 **ControllerName ); +/** + Retrieves a Unicode string that is the user readable name of the controller + that is being managed by an EFI Driver. + + @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL + instance. + @param ControllerHandle The handle of a controller that the driver + specified by This is managing. This handle + specifies the controller whose name is to be + returned. + @param ChildHandle The handle of the child controller to retrieve the + name of. This is an optional parameter that may + be NULL. It will be NULL for device drivers. It + will also be NULL for a bus drivers that wish to + retrieve the name of the bus controller. It will + not be NULL for a bus driver that wishes to + retrieve the name of a child controller. + @param Language A pointer to RFC3066 language identifier. This is + the language of the controller name that that the + caller is requesting, and it must match one of the + languages specified in SupportedLanguages. The + number of languages supported by a driver is up to + the driver writer. + @param ControllerName A pointer to the Unicode string to return. This + Unicode string is the name of the controller + specified by ControllerHandle and ChildHandle in + the language specified by Language from the point + of view of the driver specified by This. + + @retval EFI_SUCCESS The Unicode string for the user readable name in + the language specified by Language for the driver + specified by This was returned in DriverName. + @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. + @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid + EFI_HANDLE. + @retval EFI_INVALID_PARAMETER Language is NULL. + @retval EFI_INVALID_PARAMETER ControllerName is NULL. + @retval EFI_UNSUPPORTED The driver specified by This is not currently + managing the controller specified by + ControllerHandle and ChildHandle. + @retval EFI_UNSUPPORTED The driver specified by This does not support the + language specified by Language. + +**/ EFI_STATUS EFIAPI ConSplitterAbsolutePointerComponentNameGetControllerName ( @@ -915,6 +1153,17 @@ ConSplitterStdErrComponentNameGetControllerName ( // // TextIn Constructor/Destructor functions // + +/** + Add Text Input Device in Consplitter Text Input list. + + @param Private Text In Splitter pointer. + @param TextIn Simple Text Input protocol pointer. + + @retval EFI_SUCCESS Text Input Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. + +**/ EFI_STATUS ConSplitterTextInAddDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -922,6 +1171,16 @@ ConSplitterTextInAddDevice ( ) ; +/** + Remove Simple Text Device in Consplitter Absolute Pointer list. + + @param Private Text In Splitter pointer. + @param TextIn Simple Text protocol pointer. + + @retval EFI_SUCCESS Simple Text Device removed successfully. + @retval EFI_NOT_FOUND No Simple Text Device found. + +**/ EFI_STATUS ConSplitterTextInDeleteDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -932,6 +1191,17 @@ ConSplitterTextInDeleteDevice ( // // SimplePointer Constuctor/Destructor functions // + +/** + Add Simple Pointer Device in Consplitter Simple Pointer list. + + @param Private Text In Splitter pointer. + @param SimplePointer Simple Pointer protocol pointer. + + @retval EFI_SUCCESS Simple Pointer Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. + +**/ EFI_STATUS ConSplitterSimplePointerAddDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -939,6 +1209,16 @@ ConSplitterSimplePointerAddDevice ( ) ; +/** + Remove Simple Pointer Device in Consplitter Absolute Pointer list. + + @param Private Text In Splitter pointer. + @param SimplePointer Simple Pointer protocol pointer. + + @retval EFI_SUCCESS Simple Pointer Device removed successfully. + @retval EFI_NOT_FOUND No Simple Pointer Device found. + +**/ EFI_STATUS ConSplitterSimplePointerDeleteDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -949,6 +1229,19 @@ ConSplitterSimplePointerDeleteDevice ( // // TextOut Constuctor/Destructor functions // + +/** + Add Text Output Device in Consplitter Text Output list. + + @param Private Text Out Splitter pointer. + @param TextOut Simple Text Output protocol pointer. + @param GraphicsOutput Graphics Output protocol pointer. + @param UgaDraw UGA Draw protocol pointer. + + @retval EFI_SUCCESS Text Output Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. + +**/ EFI_STATUS ConSplitterTextOutAddDevice ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, @@ -958,6 +1251,16 @@ ConSplitterTextOutAddDevice ( ) ; +/** + Remove Text Out Device in Consplitter Text Out list. + + @param Private Text Out Splitter pointer. + @param TextOut Simple Text Output Pointer protocol pointer. + + @retval EFI_SUCCESS Text Out Device removed successfully. + @retval EFI_NOT_FOUND No Text Out Device found. + +**/ EFI_STATUS ConSplitterTextOutDeleteDevice ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, @@ -968,6 +1271,18 @@ ConSplitterTextOutDeleteDevice ( // // TextIn I/O Functions // + +/** + Reset the input device and optionaly run diagnostics + + @param This Protocol instance pointer. + @param ExtendedVerification Driver may perform diagnostics on reset. + + @retval EFI_SUCCESS The device was reset. + @retval EFI_DEVICE_ERROR The device is not functioning properly and could + not be reset. + +**/ EFI_STATUS EFIAPI ConSplitterTextInReset ( @@ -976,6 +1291,20 @@ ConSplitterTextInReset ( ) ; +/** + Reads the next keystroke from the input device. The WaitForKey Event can + be used to test for existance of a keystroke via WaitForEvent () call. + If the ConIn is password locked make it look like no keystroke is availible + + @param This Protocol instance pointer. + @param Key Driver may perform diagnostics on reset. + + @retval EFI_SUCCESS The keystroke information was returned. + @retval EFI_NOT_READY There was no keystroke data availiable. + @retval EFI_DEVICE_ERROR The keydtroke information was not returned due + to hardware errors. + +**/ EFI_STATUS EFIAPI ConSplitterTextInReadKeyStroke ( @@ -983,6 +1312,17 @@ ConSplitterTextInReadKeyStroke ( OUT EFI_INPUT_KEY *Key ) ; + +/** + Add Text Input Ex Device in Consplitter Text Input Ex list. + + @param Private Text In Splitter pointer. + @param TextInEx Simple Text Ex Input protocol pointer. + + @retval EFI_SUCCESS Text Input Ex Device added successfully. + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. + +**/ EFI_STATUS ConSplitterTextInExAddDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -990,6 +1330,16 @@ ConSplitterTextInExAddDevice ( ) ; +/** + Remove Simple Text Ex Device in Consplitter Absolute Pointer list. + + @param Private Text In Splitter pointer. + @param TextInEx Simple Text Ex protocol pointer. + + @retval EFI_SUCCESS Simple Text Ex Device removed successfully. + @retval EFI_NOT_FOUND No Simple Text Ex Device found. + +**/ EFI_STATUS ConSplitterTextInExDeleteDevice ( IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private, @@ -1121,6 +1471,20 @@ ConSplitterTextInUnregisterKeyNotify ( IN EFI_HANDLE NotificationHandle ) ; + +/** + This event agregates all the events of the ConIn devices in the spliter. + If the ConIn is password locked then return. + If any events of physical ConIn devices are signaled, signal the ConIn + spliter event. This will cause the calling code to call + ConSplitterTextInReadKeyStroke (). + + @param Event The Event assoicated with callback. + @param Context Context registered when Event was created. + + @return None + +**/ VOID EFIAPI ConSplitterTextInWaitForKey ( @@ -1128,13 +1492,34 @@ ConSplitterTextInWaitForKey ( IN VOID *Context ) ; +/** + Return TRUE if StdIn is locked. The ConIn device on the virtual handle is + the only device locked. + + NONE + + @retval TRUE StdIn locked + @retval FALSE StdIn working normally +**/ BOOLEAN ConSpliterConssoleControlStdInLocked ( VOID ) ; +/** + This timer event will fire when StdIn is locked. It will check the key + sequence on StdIn to see if it matches the password. Any error in the + password will cause the check to reset. As long a mConIn.PasswordEnabled is + TRUE the StdIn splitter will not report any input. + + @param Event The Event this notify function registered to. + @param Context Pointer to the context data registerd to the + Event. + @return None + +**/ VOID EFIAPI ConSpliterConsoleControlLockStdInEvent ( @@ -1143,6 +1528,17 @@ ConSpliterConsoleControlLockStdInEvent ( ) ; +/** + If Password is NULL unlock the password state variable and set the event + timer. If the Password is too big return an error. If the Password is valid + Copy the Password and enable state variable and then arm the periodic timer + + + @retval EFI_SUCCESS Lock the StdIn device + @retval EFI_INVALID_PARAMETER Password is NULL + @retval EFI_OUT_OF_RESOURCES Buffer allocation to store the password fails + +**/ EFI_STATUS EFIAPI ConSpliterConsoleControlLockStdIn ( @@ -1151,6 +1547,19 @@ ConSpliterConsoleControlLockStdIn ( ) ; +/** + Reads the next keystroke from the input device. The WaitForKey Event can + be used to test for existance of a keystroke via WaitForEvent () call. + + @param This Protocol instance pointer. + @param Key Driver may perform diagnostics on reset. + + @retval EFI_SUCCESS The keystroke information was returned. + @retval EFI_NOT_READY There was no keystroke data availiable. + @retval EFI_DEVICE_ERROR The keydtroke information was not returned due + to hardware errors. + +**/ EFI_STATUS EFIAPI ConSplitterTextInPrivateReadKeyStroke ( @@ -1159,6 +1568,17 @@ ConSplitterTextInPrivateReadKeyStroke ( ) ; +/** + Reset the input device and optionaly run diagnostics + + @param This Protocol instance pointer. + @param ExtendedVerification Driver may perform diagnostics on reset. + + @retval EFI_SUCCESS The device was reset. + @retval EFI_DEVICE_ERROR The device is not functioning properly and could + not be reset. + +**/ EFI_STATUS EFIAPI ConSplitterSimplePointerReset ( @@ -1167,6 +1587,20 @@ ConSplitterSimplePointerReset ( ) ; +/** + Reads the next keystroke from the input device. The WaitForKey Event can + be used to test for existance of a keystroke via WaitForEvent () call. + If the ConIn is password locked make it look like no keystroke is availible + + @param This A pointer to protocol instance. + @param State A pointer to state information on the pointer device + + @retval EFI_SUCCESS The keystroke information was returned in State. + @retval EFI_NOT_READY There was no keystroke data availiable. + @retval EFI_DEVICE_ERROR The keydtroke information was not returned due + to hardware errors. + +**/ EFI_STATUS EFIAPI ConSplitterSimplePointerGetState ( @@ -1199,12 +1633,19 @@ ConSplitterSimplePointerWaitForInput ( // // TextOut I/O Functions // -VOID -ConSplitterSynchronizeModeData ( - TEXT_OUT_SPLITTER_PRIVATE_DATA *Private - ) -; +/** + Reset the text output device hardware and optionaly run diagnostics + + @param This 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. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutReset ( @@ -1213,6 +1654,25 @@ ConSplitterTextOutReset ( ) ; +/** + Write a Unicode string to the output device. + + @param This Protocol instance pointer. + @param String The NULL-terminated Unicode string to be + displayed on the output device(s). All output + devices must also support the Unicode drawing + 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 Unicode string could not be + rendered and were skipped. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutOutputString ( @@ -1221,6 +1681,21 @@ ConSplitterTextOutOutputString ( ) ; +/** + Verifies that all characters in a Unicode string can be output to the + target device. + + @param This Protocol instance pointer. + @param String The NULL-terminated Unicode 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 Unicode string + cannot be rendered by one or more of the output + devices mapped by the EFI handle. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutTestString ( @@ -1229,6 +1704,21 @@ ConSplitterTextOutTestString ( ) ; +/** + Returns information for an available text mode that the output device(s) + supports. + + @param This Protocol instance pointer. + @param ModeNumber The mode number to return information on. + @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. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutQueryMode ( @@ -1239,6 +1729,18 @@ ConSplitterTextOutQueryMode ( ) ; +/** + Sets the output device(s) to a specified mode. + + @param This 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. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutSetMode ( @@ -1247,6 +1749,23 @@ ConSplitterTextOutSetMode ( ) ; +/** + Sets the background and foreground colors for the OutputString () and + ClearScreen () functions. + + @param This 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. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutSetAttribute ( @@ -1255,6 +1774,18 @@ ConSplitterTextOutSetAttribute ( ) ; +/** + Clears the output device(s) display to the currently selected background + color. + + @param This 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. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutClearScreen ( @@ -1262,6 +1793,22 @@ ConSplitterTextOutClearScreen ( ) ; +/** + Sets the current coordinates of the cursor position + + @param This Protocol instance pointer. + @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. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutSetCursorPosition ( @@ -1271,6 +1818,21 @@ ConSplitterTextOutSetCursorPosition ( ) ; + +/** + Makes the cursor visible or invisible + + @param This 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. + +**/ EFI_STATUS EFIAPI ConSplitterTextOutEnableCursor ( @@ -1279,6 +1841,21 @@ ConSplitterTextOutEnableCursor ( ) ; +/** + Take the passed in Buffer of size SizeOfCount and grow the buffer + by MAX (CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT, MaxGrow) * SizeOfCount + bytes. Copy the current data in Buffer to the new version of Buffer + and free the old version of buffer. + + @param SizeOfCount Size of element in array + @param Count Current number of elements in array + @param Buffer Bigger version of passed in Buffer with all the + data + + @retval EFI_SUCCESS Buffer size has grown + @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size. + +**/ EFI_STATUS ConSplitterGrowBuffer ( IN UINTN SizeOfCount, @@ -1287,6 +1864,20 @@ ConSplitterGrowBuffer ( ) ; +/** + Return the current video mode information. Also returns info about existence + of Graphics Output devices or UGA Draw devices in system, and if the Std In device is locked. All the + arguments are optional and only returned if a non NULL pointer is passed in. + + @param This Protocol instance pointer. + @param Mode Are we in text of grahics mode. + @param GopExists TRUE if GOP Spliter has found a GOP/UGA device + @param StdInLocked TRUE if StdIn device is keyboard locked + + @retval EFI_SUCCESS Mode information returned. + @retval EFI_INVALID_PARAMETER Invalid parameters. + +**/ EFI_STATUS EFIAPI ConSpliterConsoleControlGetMode ( @@ -1297,6 +1888,18 @@ ConSpliterConsoleControlGetMode ( ) ; +/** + Set the current mode to either text or graphics. Graphics is + for Quiet Boot. + + @param This Protocol instance pointer. + @param Mode Mode to set the + + @retval EFI_SUCCESS Mode information returned. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_UNSUPPORTED Operation unsupported. + +**/ EFI_STATUS EFIAPI ConSpliterConsoleControlSetMode ( @@ -1305,6 +1908,24 @@ ConSpliterConsoleControlSetMode ( ) ; +/** + Return the current video mode information. + + @param This Protocol instance pointer. + @param ModeNumber The mode number to return information on. + @param SizeOfInfo A pointer to the size, in bytes, of the Info + buffer. + @param Info Caller allocated buffer that returns information + about ModeNumber. + + @retval EFI_SUCCESS Mode information returned. + @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small. + @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the + video mode. + @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode () + @retval EFI_INVALID_PARAMETER One of the input args was NULL. + +**/ EFI_STATUS EFIAPI ConSpliterGraphicsOutputQueryMode ( @@ -1315,6 +1936,18 @@ ConSpliterGraphicsOutputQueryMode ( ) ; +/** + Graphics output protocol interface to set video mode + + @param This Protocol instance pointer. + @param ModeNumber The mode number to be set. + + @retval EFI_SUCCESS Graphics mode was changed. + @retval EFI_DEVICE_ERROR The device had an error and could not complete + the request. + @retval EFI_UNSUPPORTED ModeNumber is not supported by this device. + +**/ EFI_STATUS EFIAPI ConSpliterGraphicsOutputSetMode ( @@ -1323,6 +1956,52 @@ ConSpliterGraphicsOutputSetMode ( ) ; +/** + The following table defines actions for BltOperations. + + EfiBltVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY) + directly to every pixel of the video display rectangle + (DestinationX, DestinationY) + (DestinationX + Width, DestinationY + Height). + Only one pixel will be used from the BltBuffer. Delta is NOT used. + EfiBltVideoToBltBuffer - Read data from the video display rectangle + (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in + the BltBuffer rectangle (DestinationX, DestinationY ) + (DestinationX + Width, DestinationY + Height). If DestinationX or + DestinationY is not zero then Delta must be set to the length in bytes + of a row in the BltBuffer. + EfiBltBufferToVideo - Write data from the BltBuffer rectangle + (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the + video display rectangle (DestinationX, DestinationY) + (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is + not zero then Delta must be set to the length in bytes of a row in the + BltBuffer. + EfiBltVideoToVideo - Copy from the video display rectangle + (SourceX, SourceY) (SourceX + Width, SourceY + Height) . + to the video display rectangle (DestinationX, DestinationY) + (DestinationX + Width, DestinationY + Height). + The BltBuffer and Delta are not used in this mode. + + @param This Protocol instance pointer. + @param BltBuffer Buffer containing data to blit into video buffer. + This buffer has a size of + Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) + @param BltOperation Operation to perform on BlitBuffer and video + memory + @param SourceX X coordinate of source for the BltBuffer. + @param SourceY Y coordinate of source for the BltBuffer. + @param DestinationX X coordinate of destination for the BltBuffer. + @param DestinationY Y coordinate of destination for the BltBuffer. + @param Width Width of rectangle in BltBuffer in pixels. + @param Height Hight of rectangle in BltBuffer in pixels. Delta + - + + @retval EFI_SUCCESS The Blt operation completed. + @retval EFI_INVALID_PARAMETER BltOperation is not valid. + @retval EFI_DEVICE_ERROR A hardware error occured writting to the video + buffer. + +**/ EFI_STATUS EFIAPI ConSpliterGraphicsOutputBlt ( @@ -1347,6 +2026,20 @@ DevNullGopSync ( ) ; +/** + Return the current video mode information. + + @param This Protocol instance pointer. + @param HorizontalResolution Current video horizontal resolution in pixels + @param VerticalResolution Current video vertical resolution in pixels + @param ColorDepth Current video color depth in bits per pixel + @param RefreshRate Current video refresh rate in Hz. + + @retval EFI_SUCCESS Mode information returned. + @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode () + @retval EFI_INVALID_PARAMETER One of the input args was NULL. + +**/ EFI_STATUS EFIAPI ConSpliterUgaDrawGetMode ( @@ -1358,6 +2051,20 @@ ConSpliterUgaDrawGetMode ( ) ; +/** + Return the current video mode information. + + @param This Protocol instance pointer. + @param HorizontalResolution Current video horizontal resolution in pixels + @param VerticalResolution Current video vertical resolution in pixels + @param ColorDepth Current video color depth in bits per pixel + @param RefreshRate Current video refresh rate in Hz. + + @retval EFI_SUCCESS Mode information returned. + @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode () + @retval EFI_OUT_OF_RESOURCES Out of resources. + +**/ EFI_STATUS EFIAPI ConSpliterUgaDrawSetMode ( @@ -1369,6 +2076,52 @@ ConSpliterUgaDrawSetMode ( ) ; +/** + The following table defines actions for BltOperations. + + EfiUgaVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY) + directly to every pixel of the video display rectangle + (DestinationX, DestinationY) + (DestinationX + Width, DestinationY + Height). + Only one pixel will be used from the BltBuffer. Delta is NOT used. + EfiUgaVideoToBltBuffer - Read data from the video display rectangle + (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in + the BltBuffer rectangle (DestinationX, DestinationY ) + (DestinationX + Width, DestinationY + Height). If DestinationX or + DestinationY is not zero then Delta must be set to the length in bytes + of a row in the BltBuffer. + EfiUgaBltBufferToVideo - Write data from the BltBuffer rectangle + (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the + video display rectangle (DestinationX, DestinationY) + (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is + not zero then Delta must be set to the length in bytes of a row in the + BltBuffer. + EfiUgaVideoToVideo - Copy from the video display rectangle + (SourceX, SourceY) (SourceX + Width, SourceY + Height) . + to the video display rectangle (DestinationX, DestinationY) + (DestinationX + Width, DestinationY + Height). + The BltBuffer and Delta are not used in this mode. + + @param This Protocol instance pointer. + @param BltBuffer Buffer containing data to blit into video buffer. + This buffer has a size of + Width*Height*sizeof(EFI_UGA_PIXEL) + @param BltOperation Operation to perform on BlitBuffer and video + memory + @param SourceX X coordinate of source for the BltBuffer. + @param SourceY Y coordinate of source for the BltBuffer. + @param DestinationX X coordinate of destination for the BltBuffer. + @param DestinationY Y coordinate of destination for the BltBuffer. + @param Width Width of rectangle in BltBuffer in pixels. + @param Height Hight of rectangle in BltBuffer in pixels. Delta + - + + @retval EFI_SUCCESS The Blt operation completed. + @retval EFI_INVALID_PARAMETER BltOperation is not valid. + @retval EFI_DEVICE_ERROR A hardware error occured writting to the video + buffer. + +**/ EFI_STATUS EFIAPI ConSpliterUgaDrawBlt ( @@ -1393,6 +2146,26 @@ DevNullUgaSync ( ) ; +/** + Write a Unicode string to the output device. + + @param Private Pointer to the console output splitter's private + data. It indicates the calling context. + @param WString The NULL-terminated Unicode string to be + displayed on the output device(s). All output + devices must also support the Unicode drawing + 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 Unicode string could not be + rendered and were skipped. + +**/ EFI_STATUS DevNullTextOutOutputString ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, @@ -1400,6 +2173,19 @@ DevNullTextOutOutputString ( ) ; +/** + Sets the output device(s) to a specified mode. + + @param Private Private data structure 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. + @retval EFI_OUT_OF_RESOURCES Out of resources. + +**/ EFI_STATUS DevNullTextOutSetMode ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, @@ -1407,12 +2193,41 @@ DevNullTextOutSetMode ( ) ; +/** + Clears the output device(s) display to the currently selected background + color. + + @param Private 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. + +**/ EFI_STATUS DevNullTextOutClearScreen ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private ) ; +/** + Sets the current coordinates of the cursor position. + + @param Private Protocol instance pointer. + @param Column + @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. + +**/ EFI_STATUS DevNullTextOutSetCursorPosition ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, @@ -1421,6 +2236,17 @@ DevNullTextOutSetCursorPosition ( ) ; +/** + Implements SIMPLE_TEXT_OUTPUT.EnableCursor(). + In this driver, the cursor cannot be hidden. + + @param Private Indicates the calling context. + @param Visible If TRUE, the cursor is set to be visible, If + FALSE, the cursor is set to be invisible. + + @retval EFI_SUCCESS The request is valid. + +**/ EFI_STATUS DevNullTextOutEnableCursor ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private, @@ -1428,6 +2254,16 @@ DevNullTextOutEnableCursor ( ) ; +/** + Take the DevNull TextOut device and update the Simple Text Out on every + UGA device. + + @param Private Indicates the calling context. + + @retval EFI_SUCCESS The request is valid. + @retval other Return status of TextOut->OutputString () + +**/ EFI_STATUS DevNullSyncStdOut ( IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf index 213f2bd1a8..9fd0be8c05 100644 --- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf +++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf @@ -23,7 +23,7 @@ EDK_RELEASE_VERSION = 0x00020000 EFI_SPECIFICATION_VERSION = 0x00020000 - ENTRY_POINT = InitializeConSplitter + ENTRY_POINT = ConSplitterDriverEntry # # The following information is for reference only and not required by the build tools. diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c index 497adfda4c..aa083735c2 100644 --- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c +++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c @@ -485,8 +485,8 @@ DevNullGraphicsOutputBlt ( @param DestinationX X coordinate of destination for the BltBuffer. @param DestinationY Y coordinate of destination for the BltBuffer. @param Width Width of rectangle in BltBuffer in pixels. - @param Height Hight of rectangle in BltBuffer in pixels. Delta - - + @param Height Hight of rectangle in BltBuffer in pixels. + @param Delta (not used here). @retval EFI_SUCCESS The Blt operation completed. @retval EFI_INVALID_PARAMETER BltOperation is not valid. @@ -954,8 +954,8 @@ DevNullUgaBlt ( @param DestinationX X coordinate of destination for the BltBuffer. @param DestinationY Y coordinate of destination for the BltBuffer. @param Width Width of rectangle in BltBuffer in pixels. - @param Height Hight of rectangle in BltBuffer in pixels. Delta - - + @param Height Hight of rectangle in BltBuffer in pixels. + @param Delta (not used here) @retval EFI_SUCCESS The Blt operation completed. @retval EFI_INVALID_PARAMETER BltOperation is not valid. -- cgit v1.2.3