#include "ConSplitter.h"\r
\r
//\r
-// Global Variables\r
+// Template for Text In Splitter\r
//\r
STATIC TEXT_IN_SPLITTER_PRIVATE_DATA mConIn = {\r
TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE,\r
FALSE\r
};\r
\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_UGA_DRAW_PROTOCOL gUgaDrawProtocolTemplate = {\r
+//\r
+// Template for Uga Draw Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UGA_DRAW_PROTOCOL mUgaDrawProtocolTemplate = {\r
ConSpliterUgaDrawGetMode,\r
ConSpliterUgaDrawSetMode,\r
ConSpliterUgaDrawBlt\r
};\r
\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_GRAPHICS_OUTPUT_PROTOCOL gGraphicsOutputProtocolTemplate = {\r
+//\r
+// Template for Graphics Output Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_GRAPHICS_OUTPUT_PROTOCOL mGraphicsOutputProtocolTemplate = {\r
ConSpliterGraphicsOutputQueryMode,\r
ConSpliterGraphicsOutputSetMode,\r
ConSpliterGraphicsOutputBlt,\r
NULL\r
};\r
\r
+//\r
+// Template for Text Out Splitter\r
+//\r
STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {\r
TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE,\r
(EFI_HANDLE) NULL,\r
(INT32 *) NULL\r
};\r
\r
+//\r
+// Template for Standard Error Text Out Splitter\r
+//\r
STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mStdErr = {\r
TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE,\r
(EFI_HANDLE) NULL,\r
(INT32 *) NULL\r
};\r
\r
+//\r
+// Driver binding instance for Console Input Device\r
+//\r
EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding = {\r
ConSplitterConInDriverBindingSupported,\r
ConSplitterConInDriverBindingStart,\r
NULL\r
};\r
\r
+//\r
+// Driver binding instance for Simple Pointer protocol\r
+//\r
EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding = {\r
ConSplitterSimplePointerDriverBindingSupported,\r
ConSplitterSimplePointerDriverBindingStart,\r
NULL\r
};\r
\r
+//\r
+// Driver binding instance for Console Out device\r
+//\r
EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding = {\r
ConSplitterConOutDriverBindingSupported,\r
ConSplitterConOutDriverBindingStart,\r
NULL\r
};\r
\r
+//\r
+// Driver binding instance for Standard Error device\r
+//\r
EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding = {\r
ConSplitterStdErrDriverBindingSupported,\r
ConSplitterStdErrDriverBindingStart,\r
structure.\r
\r
@retval EFI_OUT_OF_RESOURCES Out of resources.\r
- @retval other Out of resources.\r
+ @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.\r
+ @retval other Failed to construct private data.\r
\r
**/\r
EFI_STATUS\r
structure.\r
\r
@retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.\r
\r
**/\r
EFI_STATUS\r
// Copy protocols template\r
//\r
if (FeaturePcdGet (PcdConOutUgaSupport)) {\r
- CopyMem (&ConOutPrivate->UgaDraw, &gUgaDrawProtocolTemplate, sizeof (EFI_UGA_DRAW_PROTOCOL));\r
+ CopyMem (&ConOutPrivate->UgaDraw, &mUgaDrawProtocolTemplate, sizeof (EFI_UGA_DRAW_PROTOCOL));\r
}\r
\r
if (FeaturePcdGet (PcdConOutGopSupport)) {\r
- CopyMem (&ConOutPrivate->GraphicsOutput, &gGraphicsOutputProtocolTemplate, sizeof (EFI_GRAPHICS_OUTPUT_PROTOCOL));\r
+ CopyMem (&ConOutPrivate->GraphicsOutput, &mGraphicsOutputProtocolTemplate, sizeof (EFI_GRAPHICS_OUTPUT_PROTOCOL));\r
}\r
\r
//\r
\r
ConOutPrivate->GraphicsOutput.Mode->MaxMode = 1;\r
//\r
- // Initial current mode to unknow state, and then set to mode 0\r
+ // Initial current mode to unknown state, and then set to mode 0\r
//\r
ConOutPrivate->GraphicsOutput.Mode->Mode = 0xffff;\r
ConOutPrivate->GraphicsOutput.SetMode (&ConOutPrivate->GraphicsOutput, 0);\r
}\r
\r
- return Status;\r
+ return EFI_SUCCESS;\r
}\r
\r
\r
@param RemainingDevicePath Optional parameter use to pick a specific child\r
device to start.\r
\r
- @retval EFI_SUCCESS This driver supports this device\r
- @retval other This driver does not support this device\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
@param RemainingDevicePath Optional parameter use to pick a specific child\r
device to start.\r
\r
- @retval EFI_SUCCESS This driver supports this device\r
- @retval other This driver does not support this device\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
@param RemainingDevicePath Optional parameter use to pick a specific child\r
device to start.\r
\r
- @retval EFI_SUCCESS This driver supports this device\r
- @retval other This driver does not support this device\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
@param RemainingDevicePath Optional parameter use to pick a specific child\r
device to start.\r
\r
- @retval EFI_SUCCESS This driver supports this device\r
- @retval other This driver does not support this device\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
@param RemainingDevicePath Optional parameter use to pick a specific child\r
device to start.\r
\r
- @retval EFI_SUCCESS This driver supports this device\r
- @retval other This driver does not support this device\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
@param InterfaceGuid The specified protocol to be opened.\r
@param Interface Protocol interface returned.\r
\r
- @retval EFI_SUCCESS This driver supports this device\r
+ @retval EFI_SUCCESS This driver supports this device.\r
@retval other Failed to open the specified Console Device Guid\r
or specified protocol.\r
\r
return Status;\r
}\r
\r
+ //\r
+ // Add this device into Text In devices list.\r
+ //\r
Status = ConSplitterTextInAddDevice (&mConIn, TextIn);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
return Status;\r
}\r
\r
+ //\r
+ // Add this device into Text In Ex devices list.\r
+ //\r
Status = ConSplitterTextInExAddDevice (&mConIn, TextInEx);\r
\r
return Status;\r
EFI_STATUS Status;\r
EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer;\r
\r
+ //\r
+ // Start ConSplitter on ControllerHandle, and create the virtual\r
+ // agrogated console device on first call Start for a SimplePointer handle.\r
+ //\r
Status = ConSplitterStart (\r
This,\r
ControllerHandle,\r
return Status;\r
}\r
\r
+ //\r
+ // Add this devcie into Simple Pointer devices list.\r
+ //\r
return ConSplitterSimplePointerAddDevice (&mConIn, SimplePointer);\r
}\r
\r
EFI_STATUS Status;\r
EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer;\r
\r
+ //\r
+ // Start ConSplitter on ControllerHandle, and create the virtual\r
+ // agrogated console device on first call Start for a AbsolutePointer handle.\r
+ //\r
Status = ConSplitterStart (\r
This,\r
ControllerHandle,\r
return Status;\r
}\r
\r
+ //\r
+ // Add this devcie into Absolute Pointer devices list.\r
+ //\r
return ConSplitterAbsolutePointerAddDevice (&mConIn, AbsolutePointer);\r
}\r
\r
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
\r
+ //\r
+ // Start ConSplitter on ControllerHandle, and create the virtual\r
+ // agrogated console device on first call Start for a ConsoleOut handle.\r
+ //\r
Status = ConSplitterStart (\r
This,\r
ControllerHandle,\r
\r
if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
- // Open UGA_DRAW protocol\r
+ // Open UGA DRAW protocol\r
//\r
Status = gBS->OpenProtocol (\r
ControllerHandle,\r
EFI_STATUS Status;\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
\r
+ //\r
+ // Start ConSplitter on ControllerHandle, and create the virtual\r
+ // agrogated console device on first call Start for a StandardError handle.\r
+ //\r
Status = ConSplitterStart (\r
This,\r
ControllerHandle,\r
\r
\r
/**\r
- Stop ConSplitter on device handle by opening Console Device Guid on device handle \r
+ Stop ConSplitter on device handle by closing Console Device Guid on device handle \r
and the console virtual handle.\r
\r
@param This Protocol instance pointer.\r
This->DriverBindingHandle,\r
ConSplitterVirtualHandle\r
);\r
+\r
gBS->CloseProtocol (\r
ControllerHandle,\r
DeviceGuid,\r
return Status;\r
}\r
\r
+ //\r
+ // Remove device from Text Input Ex devices list.\r
+ // \r
Status = ConSplitterTextInExDeleteDevice (&mConIn, TextInEx);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
\r
+ //\r
+ // Close Simple Text In protocol on controller handle and virtual handle.\r
+ //\r
Status = ConSplitterStop (\r
This,\r
ControllerHandle,\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
//\r
- // Delete this console input device's data structures.\r
- //\r
+ // Remove device from Text Input devices list.\r
+ // \r
return ConSplitterTextInDeleteDevice (&mConIn, TextIn);\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
+ //\r
+ // Close Simple Pointer protocol on controller handle and virtual handle.\r
+ //\r
Status = ConSplitterStop (\r
This,\r
ControllerHandle,\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
//\r
- // Delete this console input device's data structures.\r
+ // Remove this device from Simple Pointer device list.\r
//\r
return ConSplitterSimplePointerDeleteDevice (&mConIn, SimplePointer);\r
}\r
return EFI_SUCCESS;\r
}\r
\r
+ //\r
+ // Close Absolute Pointer protocol on controller handle and virtual handle.\r
+ //\r
Status = ConSplitterStop (\r
This,\r
ControllerHandle,\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
//\r
- // Delete this console input device's data structures.\r
+ // Remove this device from Absolute Pointer device list.\r
//\r
return ConSplitterAbsolutePointerDeleteDevice (&mConIn, AbsolutePointer);\r
}\r
return EFI_SUCCESS;\r
}\r
\r
+ //\r
+ // Close Absolute Pointer protocol on controller handle and virtual handle.\r
+ //\r
Status = ConSplitterStop (\r
This,\r
ControllerHandle,\r
}\r
\r
//\r
- // Delete this console output device's data structures.\r
+ // Remove this device from Text Out device list.\r
//\r
return ConSplitterTextOutDeleteDevice (&mConOut, TextOut);\r
}\r
return EFI_SUCCESS;\r
}\r
\r
+ //\r
+ // Close Standard Error Device on controller handle and virtual handle.\r
+ //\r
Status = ConSplitterStop (\r
This,\r
ControllerHandle,\r
\r
return Status;\r
}\r
-//\r
-// ConSplitter TextIn member functions\r
-//\r
+\r
\r
/**\r
Reset the input device and optionaly run diagnostics\r
BackSpaceString[0] = CHAR_BACKSPACE;\r
BackSpaceString[1] = 0;\r
\r
- SpaceString[0] = ' ';\r
+ SpaceString[0] = L' ';\r
SpaceString[1] = 0;\r
\r
ConSplitterTextOutOutputString (&mConOut.TextOut, BackSpaceString);\r
\r
\r
/**\r
+ Test if the key has been registered on input device.\r
\r
@param RegsiteredData A pointer to a buffer that is filled in with the\r
keystroke state data for the key that was\r
\r
}\r
\r
-//\r
-// Simple Text Input Ex protocol functions\r
-//\r
-\r
\r
/**\r
Reset the input device and optionaly run diagnostics\r
}\r
}\r
\r
-//\r
-// Absolute Pointer Protocol functions\r
-//\r
-\r
-\r
/**\r
Resets the pointer device hardware.\r
\r
} TEXT_OUT_AND_GOP_DATA;\r
\r
typedef struct {\r
- UINT64 Signature;\r
- EFI_HANDLE VirtualHandle;\r
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;\r
- EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;\r
-\r
- EFI_UGA_DRAW_PROTOCOL UgaDraw;\r
- UINT32 UgaHorizontalResolution;\r
- UINT32 UgaVerticalResolution;\r
- UINT32 UgaColorDepth;\r
- UINT32 UgaRefreshRate;\r
- EFI_UGA_PIXEL *UgaBlt;\r
-\r
- EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;\r
+ UINT64 Signature;\r
+ EFI_HANDLE VirtualHandle;\r
+ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;\r
+ EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;\r
+ \r
+ EFI_UGA_DRAW_PROTOCOL UgaDraw;\r
+ UINT32 UgaHorizontalResolution;\r
+ UINT32 UgaVerticalResolution;\r
+ UINT32 UgaColorDepth;\r
+ UINT32 UgaRefreshRate;\r
+ EFI_UGA_PIXEL *UgaBlt;\r
+ \r
+ EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;\r
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *GraphicsOutputModeBuffer;\r
- UINTN CurrentNumberOfGraphicsOutput;\r
- UINTN CurrentNumberOfUgaDraw;\r
- BOOLEAN HardwareNeedsStarting;\r
-\r
- EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;\r
-\r
- UINTN CurrentNumberOfConsoles;\r
- TEXT_OUT_AND_GOP_DATA *TextOutList;\r
- UINTN TextOutListCount;\r
- TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;\r
- UINTN TextOutQueryDataCount;\r
- INT32 *TextOutModeMap;\r
-\r
- EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode;\r
-\r
- UINTN DevNullColumns;\r
- UINTN DevNullRows;\r
- CHAR16 *DevNullScreen;\r
- INT32 *DevNullAttributes;\r
+ UINTN CurrentNumberOfGraphicsOutput;\r
+ UINTN CurrentNumberOfUgaDraw;\r
+ BOOLEAN HardwareNeedsStarting;\r
+ \r
+ EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;\r
+ \r
+ UINTN CurrentNumberOfConsoles;\r
+ TEXT_OUT_AND_GOP_DATA *TextOutList;\r
+ UINTN TextOutListCount;\r
+ TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;\r
+ UINTN TextOutQueryDataCount;\r
+ INT32 *TextOutModeMap;\r
+ \r
+ EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode;\r
+ \r
+ UINTN DevNullColumns;\r
+ UINTN DevNullRows;\r
+ CHAR16 *DevNullScreen;\r
+ INT32 *DevNullAttributes;\r
\r
} TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
\r
;\r
\r
/**\r
- Construct the ConSplitter.\r
+ Construct console input devices' private data.\r
\r
@param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
structure.\r
\r
@retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS Console Input Devcie's private data has been constructed.\r
+ @retval other Failed to construct private data.\r
\r
**/\r
EFI_STATUS\r
/**\r
Construct console output devices' private data.\r
\r
- @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
+ @param ConOutPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
structure.\r
\r
@retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.\r
\r
**/\r
EFI_STATUS\r
//\r
\r
/**\r
- Console In Supported Check\r
+ Test to see if Console In Device could be supported on the ControllerHandle. \r
\r
- @param This Pointer to protocol.\r
- @param ControllerHandle Controller handle.\r
- @param RemainingDevicePath Remaining device path.\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to test.\r
+ @param RemainingDevicePath Optional parameter use to pick a specific child\r
+ device to start.\r
\r
- @return EFI_STATUS\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
;\r
\r
/**\r
- Standard Error Supported Check\r
+ Test to see if Simple Pointer protocol could be supported on the ControllerHandle. \r
\r
- @param This Pointer to protocol.\r
- @param ControllerHandle Controller handle.\r
- @param RemainingDevicePath Remaining device path.\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to test.\r
+ @param RemainingDevicePath Optional parameter use to pick a specific child\r
+ device to start.\r
\r
- @return EFI_STATUS\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
;\r
\r
/**\r
- Console Out Supported Check\r
+ Test to see if Console Out Device could be supported on the ControllerHandle. \r
\r
- @param This Pointer to protocol.\r
- @param ControllerHandle Controller handle.\r
- @param RemainingDevicePath Remaining device path.\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to test.\r
+ @param RemainingDevicePath Optional parameter use to pick a specific child\r
+ device to start.\r
\r
- @return EFI_STATUS\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
;\r
\r
/**\r
- Standard Error Supported Check\r
+ Test to see if Standard Error Device could be supported on the ControllerHandle. \r
\r
- @param This Pointer to protocol.\r
- @param ControllerHandle Controller handle.\r
- @param RemainingDevicePath Remaining device path.\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to test.\r
+ @param RemainingDevicePath Optional parameter use to pick a specific child\r
+ device to start.\r
\r
- @return EFI_STATUS\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
@param RemainingDevicePath Optional parameter use to pick a specific child\r
device to start.\r
\r
- @retval EFI_SUCCESS This driver supports this device\r
- @retval other This driver does not support this device\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
;\r
\r
/**\r
- Graphics output protocol interface to set video mode\r
+ Graphics output protocol interface to set video mode.\r
\r
@param This Protocol instance pointer.\r
@param ModeNumber The mode number to be set.\r