MdeModulePkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
committed by
mergify[bot]
parent
7c7184e201
commit
1436aea4d5
@@ -20,14 +20,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConPlatformComponent
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConPlatformComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConPlatformComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConPlatformComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConPlatformComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)ConPlatformComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)ConPlatformComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConPlatformDriverNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConPlatformDriverNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
L"Platform Console Management Driver"
|
||||
@@ -150,11 +149,11 @@ ConPlatformComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConPlatformComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
return EFI_UNSUPPORTED;
|
||||
|
@@ -9,8 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
#include "ConPlatform.h"
|
||||
|
||||
|
||||
EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding = {
|
||||
EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding = {
|
||||
ConPlatformTextInDriverBindingSupported,
|
||||
ConPlatformTextInDriverBindingStart,
|
||||
ConPlatformTextInDriverBindingStop,
|
||||
@@ -19,7 +18,7 @@ EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding = {
|
||||
NULL
|
||||
};
|
||||
|
||||
EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding = {
|
||||
EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding = {
|
||||
ConPlatformTextOutDriverBindingSupported,
|
||||
ConPlatformTextOutDriverBindingStart,
|
||||
ConPlatformTextOutDriverBindingStop,
|
||||
@@ -42,12 +41,12 @@ EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding = {
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InitializeConPlatform(
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
InitializeConPlatform (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = EfiLibInstallDriverBindingComponentName2 (
|
||||
ImageHandle,
|
||||
@@ -72,7 +71,6 @@ InitializeConPlatform(
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Test to see if EFI_SIMPLE_TEXT_INPUT_PROTOCOL is supported on ControllerHandle.
|
||||
|
||||
@@ -100,7 +98,6 @@ ConPlatformTextInDriverBindingSupported (
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Test to see if EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL is supported on ControllerHandle.
|
||||
|
||||
@@ -128,7 +125,6 @@ ConPlatformTextOutDriverBindingSupported (
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Test to see if the specified protocol is supported on ControllerHandle.
|
||||
|
||||
@@ -165,13 +161,14 @@ ConPlatformDriverBindingSupported (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Test to see if this device supports the specified Protocol.
|
||||
//
|
||||
Status = gBS->OpenProtocol (
|
||||
ControllerHandle,
|
||||
ProtocolGuid,
|
||||
(VOID **) &Interface,
|
||||
(VOID **)&Interface,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -211,15 +208,15 @@ ConPlatformDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConPlatformTextInDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn;
|
||||
BOOLEAN IsInConInVariable;
|
||||
EFI_STATUS Status;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn;
|
||||
BOOLEAN IsInConInVariable;
|
||||
|
||||
//
|
||||
// Get the Device Path Protocol so the environment variables can be updated
|
||||
@@ -227,7 +224,7 @@ ConPlatformTextInDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
ControllerHandle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &DevicePath,
|
||||
(VOID **)&DevicePath,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -235,13 +232,14 @@ ConPlatformTextInDriverBindingStart (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Open the Simple Text Input Protocol BY_DRIVER
|
||||
//
|
||||
Status = gBS->OpenProtocol (
|
||||
ControllerHandle,
|
||||
&gEfiSimpleTextInProtocolGuid,
|
||||
(VOID **) &TextIn,
|
||||
(VOID **)&TextIn,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -249,15 +247,16 @@ ConPlatformTextInDriverBindingStart (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Check if the device path is in ConIn Variable
|
||||
//
|
||||
IsInConInVariable = FALSE;
|
||||
Status = ConPlatformUpdateDeviceVariable (
|
||||
L"ConIn",
|
||||
DevicePath,
|
||||
Check
|
||||
);
|
||||
Status = ConPlatformUpdateDeviceVariable (
|
||||
L"ConIn",
|
||||
DevicePath,
|
||||
Check
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
IsInConInVariable = TRUE;
|
||||
}
|
||||
@@ -316,9 +315,9 @@ ConPlatformTextInDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConPlatformTextOutDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -336,7 +335,7 @@ ConPlatformTextOutDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
ControllerHandle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &DevicePath,
|
||||
(VOID **)&DevicePath,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -344,13 +343,14 @@ ConPlatformTextOutDriverBindingStart (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Open the Simple Text Output Protocol BY_DRIVER
|
||||
//
|
||||
Status = gBS->OpenProtocol (
|
||||
ControllerHandle,
|
||||
&gEfiSimpleTextOutProtocolGuid,
|
||||
(VOID **) &TextOut,
|
||||
(VOID **)&TextOut,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -358,25 +358,26 @@ ConPlatformTextOutDriverBindingStart (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Check if the device path is in ConOut & ErrOut Variable
|
||||
//
|
||||
IsInConOutVariable = FALSE;
|
||||
Status = ConPlatformUpdateDeviceVariable (
|
||||
L"ConOut",
|
||||
DevicePath,
|
||||
Check
|
||||
);
|
||||
Status = ConPlatformUpdateDeviceVariable (
|
||||
L"ConOut",
|
||||
DevicePath,
|
||||
Check
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
IsInConOutVariable = TRUE;
|
||||
}
|
||||
|
||||
IsInErrOutVariable = FALSE;
|
||||
Status = ConPlatformUpdateDeviceVariable (
|
||||
L"ErrOut",
|
||||
DevicePath,
|
||||
Check
|
||||
);
|
||||
Status = ConPlatformUpdateDeviceVariable (
|
||||
L"ErrOut",
|
||||
DevicePath,
|
||||
Check
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
IsInErrOutVariable = TRUE;
|
||||
}
|
||||
@@ -407,13 +408,14 @@ ConPlatformTextOutDriverBindingStart (
|
||||
//
|
||||
if (IsInConOutVariable) {
|
||||
NeedClose = FALSE;
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&ControllerHandle,
|
||||
&gEfiConsoleOutDeviceGuid,
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&ControllerHandle,
|
||||
&gEfiConsoleOutDeviceGuid,
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// If the device path is an instance in the ErrOut environment variable,
|
||||
// then install EfiStandardErrorDeviceGuid onto ControllerHandle
|
||||
@@ -472,7 +474,7 @@ ConPlatformTextInDriverBindingStop (
|
||||
Status = gBS->OpenProtocol (
|
||||
ControllerHandle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &DevicePath,
|
||||
(VOID **)&DevicePath,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -513,7 +515,6 @@ ConPlatformTextInDriverBindingStop (
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Stop this driver on ControllerHandle by removing Console Out Devcice GUID
|
||||
and closing the Simple Text Output protocol on ControllerHandle.
|
||||
@@ -546,7 +547,7 @@ ConPlatformTextOutDriverBindingStop (
|
||||
Status = gBS->OpenProtocol (
|
||||
ControllerHandle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &DevicePath,
|
||||
(VOID **)&DevicePath,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -586,16 +587,15 @@ ConPlatformTextOutDriverBindingStop (
|
||||
// Close the Simple Text Output Protocol
|
||||
//
|
||||
gBS->CloseProtocol (
|
||||
ControllerHandle,
|
||||
&gEfiSimpleTextOutProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle
|
||||
);
|
||||
ControllerHandle,
|
||||
&gEfiSimpleTextOutProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
ControllerHandle
|
||||
);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Uninstall the specified protocol.
|
||||
|
||||
@@ -631,7 +631,7 @@ ConPlatformUnInstallProtocol (
|
||||
);
|
||||
}
|
||||
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -650,15 +650,15 @@ ConPlatformUnInstallProtocol (
|
||||
**/
|
||||
VOID *
|
||||
ConPlatformGetVariable (
|
||||
IN CHAR16 *Name
|
||||
IN CHAR16 *Name
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
VOID *Buffer;
|
||||
UINTN BufferSize;
|
||||
|
||||
BufferSize = 0;
|
||||
Buffer = NULL;
|
||||
BufferSize = 0;
|
||||
Buffer = NULL;
|
||||
|
||||
//
|
||||
// Test to see if the variable exists. If it doesn't, return NULL.
|
||||
@@ -679,6 +679,7 @@ ConPlatformGetVariable (
|
||||
if (Buffer == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//
|
||||
// Read variable into the allocated buffer.
|
||||
//
|
||||
@@ -722,9 +723,10 @@ IsGopSibling (
|
||||
EFI_DEVICE_PATH_PROTOCOL *NodeRight;
|
||||
|
||||
for (NodeLeft = Left; !IsDevicePathEndType (NodeLeft); NodeLeft = NextDevicePathNode (NodeLeft)) {
|
||||
if ((DevicePathType (NodeLeft) == ACPI_DEVICE_PATH && DevicePathSubType (NodeLeft) == ACPI_ADR_DP) ||
|
||||
(DevicePathType (NodeLeft) == HARDWARE_DEVICE_PATH && DevicePathSubType (NodeLeft) == HW_CONTROLLER_DP &&
|
||||
DevicePathType (NextDevicePathNode (NodeLeft)) == ACPI_DEVICE_PATH && DevicePathSubType (NextDevicePathNode (NodeLeft)) == ACPI_ADR_DP)) {
|
||||
if (((DevicePathType (NodeLeft) == ACPI_DEVICE_PATH) && (DevicePathSubType (NodeLeft) == ACPI_ADR_DP)) ||
|
||||
((DevicePathType (NodeLeft) == HARDWARE_DEVICE_PATH) && (DevicePathSubType (NodeLeft) == HW_CONTROLLER_DP) &&
|
||||
(DevicePathType (NextDevicePathNode (NodeLeft)) == ACPI_DEVICE_PATH) && (DevicePathSubType (NextDevicePathNode (NodeLeft)) == ACPI_ADR_DP)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -734,9 +736,10 @@ IsGopSibling (
|
||||
}
|
||||
|
||||
for (NodeRight = Right; !IsDevicePathEndType (NodeRight); NodeRight = NextDevicePathNode (NodeRight)) {
|
||||
if ((DevicePathType (NodeRight) == ACPI_DEVICE_PATH && DevicePathSubType (NodeRight) == ACPI_ADR_DP) ||
|
||||
(DevicePathType (NodeRight) == HARDWARE_DEVICE_PATH && DevicePathSubType (NodeRight) == HW_CONTROLLER_DP &&
|
||||
DevicePathType (NextDevicePathNode (NodeRight)) == ACPI_DEVICE_PATH && DevicePathSubType (NextDevicePathNode (NodeRight)) == ACPI_ADR_DP)) {
|
||||
if (((DevicePathType (NodeRight) == ACPI_DEVICE_PATH) && (DevicePathSubType (NodeRight) == ACPI_ADR_DP)) ||
|
||||
((DevicePathType (NodeRight) == HARDWARE_DEVICE_PATH) && (DevicePathSubType (NodeRight) == HW_CONTROLLER_DP) &&
|
||||
(DevicePathType (NextDevicePathNode (NodeRight)) == ACPI_DEVICE_PATH) && (DevicePathSubType (NextDevicePathNode (NodeRight)) == ACPI_ADR_DP)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -745,11 +748,11 @@ IsGopSibling (
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (((UINTN) NodeLeft - (UINTN) Left) != ((UINTN) NodeRight - (UINTN) Right)) {
|
||||
if (((UINTN)NodeLeft - (UINTN)Left) != ((UINTN)NodeRight - (UINTN)Right)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return (BOOLEAN) (CompareMem (Left, Right, (UINTN) NodeLeft - (UINTN) Left) == 0);
|
||||
return (BOOLEAN)(CompareMem (Left, Right, (UINTN)NodeLeft - (UINTN)Left) == 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -765,8 +768,8 @@ IsGopSibling (
|
||||
**/
|
||||
BOOLEAN
|
||||
MatchUsbClass (
|
||||
IN EFI_USB_IO_PROTOCOL *UsbIo,
|
||||
IN USB_CLASS_DEVICE_PATH *UsbClass
|
||||
IN EFI_USB_IO_PROTOCOL *UsbIo,
|
||||
IN USB_CLASS_DEVICE_PATH *UsbClass
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -777,7 +780,8 @@ MatchUsbClass (
|
||||
UINT8 DeviceProtocol;
|
||||
|
||||
if ((DevicePathType (UsbClass) != MESSAGING_DEVICE_PATH) ||
|
||||
(DevicePathSubType (UsbClass) != MSG_USB_CLASS_DP)){
|
||||
(DevicePathSubType (UsbClass) != MSG_USB_CLASS_DP))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -790,12 +794,14 @@ MatchUsbClass (
|
||||
}
|
||||
|
||||
if ((UsbClass->VendorId != 0xffff) &&
|
||||
(UsbClass->VendorId != DevDesc.IdVendor)) {
|
||||
(UsbClass->VendorId != DevDesc.IdVendor))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((UsbClass->ProductId != 0xffff) &&
|
||||
(UsbClass->ProductId != DevDesc.IdProduct)) {
|
||||
(UsbClass->ProductId != DevDesc.IdProduct))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -821,17 +827,20 @@ MatchUsbClass (
|
||||
// Check Class, SubClass and Protocol.
|
||||
//
|
||||
if ((UsbClass->DeviceClass != 0xff) &&
|
||||
(UsbClass->DeviceClass != DeviceClass)) {
|
||||
(UsbClass->DeviceClass != DeviceClass))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((UsbClass->DeviceSubClass != 0xff) &&
|
||||
(UsbClass->DeviceSubClass != DeviceSubClass)) {
|
||||
(UsbClass->DeviceSubClass != DeviceSubClass))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((UsbClass->DeviceProtocol != 0xff) &&
|
||||
(UsbClass->DeviceProtocol != DeviceProtocol)) {
|
||||
(UsbClass->DeviceProtocol != DeviceProtocol))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -851,23 +860,24 @@ MatchUsbClass (
|
||||
**/
|
||||
BOOLEAN
|
||||
MatchUsbWwid (
|
||||
IN EFI_USB_IO_PROTOCOL *UsbIo,
|
||||
IN USB_WWID_DEVICE_PATH *UsbWwid
|
||||
IN EFI_USB_IO_PROTOCOL *UsbIo,
|
||||
IN USB_WWID_DEVICE_PATH *UsbWwid
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_USB_DEVICE_DESCRIPTOR DevDesc;
|
||||
EFI_USB_INTERFACE_DESCRIPTOR IfDesc;
|
||||
UINT16 *LangIdTable;
|
||||
UINT16 TableSize;
|
||||
UINT16 Index;
|
||||
CHAR16 *CompareStr;
|
||||
UINTN CompareLen;
|
||||
CHAR16 *SerialNumberStr;
|
||||
UINTN Length;
|
||||
EFI_STATUS Status;
|
||||
EFI_USB_DEVICE_DESCRIPTOR DevDesc;
|
||||
EFI_USB_INTERFACE_DESCRIPTOR IfDesc;
|
||||
UINT16 *LangIdTable;
|
||||
UINT16 TableSize;
|
||||
UINT16 Index;
|
||||
CHAR16 *CompareStr;
|
||||
UINTN CompareLen;
|
||||
CHAR16 *SerialNumberStr;
|
||||
UINTN Length;
|
||||
|
||||
if ((DevicePathType (UsbWwid) != MESSAGING_DEVICE_PATH) ||
|
||||
(DevicePathSubType (UsbWwid) != MSG_USB_WWID_DP)) {
|
||||
(DevicePathSubType (UsbWwid) != MSG_USB_WWID_DP))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -878,8 +888,10 @@ MatchUsbWwid (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((DevDesc.IdVendor != UsbWwid->VendorId) ||
|
||||
(DevDesc.IdProduct != UsbWwid->ProductId)) {
|
||||
(DevDesc.IdProduct != UsbWwid->ProductId))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -890,6 +902,7 @@ MatchUsbWwid (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (IfDesc.InterfaceNumber != UsbWwid->InterfaceNumber) {
|
||||
return FALSE;
|
||||
}
|
||||
@@ -904,9 +917,9 @@ MatchUsbWwid (
|
||||
//
|
||||
// Get all supported languages.
|
||||
//
|
||||
TableSize = 0;
|
||||
TableSize = 0;
|
||||
LangIdTable = NULL;
|
||||
Status = UsbIo->UsbGetSupportedLanguages (UsbIo, &LangIdTable, &TableSize);
|
||||
Status = UsbIo->UsbGetSupportedLanguages (UsbIo, &LangIdTable, &TableSize);
|
||||
if (EFI_ERROR (Status) || (TableSize == 0) || (LangIdTable == NULL)) {
|
||||
return FALSE;
|
||||
}
|
||||
@@ -914,7 +927,7 @@ MatchUsbWwid (
|
||||
//
|
||||
// Serial number in USB WWID device path is the last 64-or-less UTF-16 characters.
|
||||
//
|
||||
CompareStr = (CHAR16 *) (UINTN) (UsbWwid + 1);
|
||||
CompareStr = (CHAR16 *)(UINTN)(UsbWwid + 1);
|
||||
CompareLen = (DevicePathNodeLength (UsbWwid) - sizeof (USB_WWID_DEVICE_PATH)) / sizeof (CHAR16);
|
||||
if (CompareStr[CompareLen - 1] == L'\0') {
|
||||
CompareLen--;
|
||||
@@ -925,19 +938,20 @@ MatchUsbWwid (
|
||||
//
|
||||
for (Index = 0; Index < TableSize / sizeof (UINT16); Index++) {
|
||||
SerialNumberStr = NULL;
|
||||
Status = UsbIo->UsbGetStringDescriptor (
|
||||
UsbIo,
|
||||
LangIdTable[Index],
|
||||
DevDesc.StrSerialNumber,
|
||||
&SerialNumberStr
|
||||
);
|
||||
Status = UsbIo->UsbGetStringDescriptor (
|
||||
UsbIo,
|
||||
LangIdTable[Index],
|
||||
DevDesc.StrSerialNumber,
|
||||
&SerialNumberStr
|
||||
);
|
||||
if (EFI_ERROR (Status) || (SerialNumberStr == NULL)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Length = StrLen (SerialNumberStr);
|
||||
if ((Length >= CompareLen) &&
|
||||
(CompareMem (SerialNumberStr + Length - CompareLen, CompareStr, CompareLen * sizeof (CHAR16)) == 0)) {
|
||||
(CompareMem (SerialNumberStr + Length - CompareLen, CompareStr, CompareLen * sizeof (CHAR16)) == 0))
|
||||
{
|
||||
FreePool (SerialNumberStr);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -971,13 +985,15 @@ MatchUsbShortformDevicePath (
|
||||
EFI_HANDLE Handle;
|
||||
|
||||
for ( ShortformNode = ShortformPath
|
||||
; !IsDevicePathEnd (ShortformNode)
|
||||
; ShortformNode = NextDevicePathNode (ShortformNode)
|
||||
) {
|
||||
; !IsDevicePathEnd (ShortformNode)
|
||||
; ShortformNode = NextDevicePathNode (ShortformNode)
|
||||
)
|
||||
{
|
||||
if ((DevicePathType (ShortformNode) == MESSAGING_DEVICE_PATH) &&
|
||||
((DevicePathSubType (ShortformNode) == MSG_USB_CLASS_DP) ||
|
||||
(DevicePathSubType (ShortformNode) == MSG_USB_WWID_DP))
|
||||
) {
|
||||
)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -992,15 +1008,17 @@ MatchUsbShortformDevicePath (
|
||||
//
|
||||
// Compare the parent device path when the ShortformPath doesn't start with short-form node.
|
||||
//
|
||||
ParentDevicePathSize = (UINTN) ShortformNode - (UINTN) ShortformPath;
|
||||
ParentDevicePathSize = (UINTN)ShortformNode - (UINTN)ShortformPath;
|
||||
RemainingDevicePath = FullPath;
|
||||
Status = gBS->LocateDevicePath (&gEfiUsbIoProtocolGuid, &RemainingDevicePath, &Handle);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (ParentDevicePathSize != 0) {
|
||||
if ((ParentDevicePathSize > (UINTN) RemainingDevicePath - (UINTN) FullPath) ||
|
||||
(CompareMem (FullPath, ShortformPath, ParentDevicePathSize) != 0)) {
|
||||
if ((ParentDevicePathSize > (UINTN)RemainingDevicePath - (UINTN)FullPath) ||
|
||||
(CompareMem (FullPath, ShortformPath, ParentDevicePathSize) != 0))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
@@ -1008,10 +1026,10 @@ MatchUsbShortformDevicePath (
|
||||
//
|
||||
// Compar the USB layer.
|
||||
//
|
||||
Status = gBS->HandleProtocol(
|
||||
Status = gBS->HandleProtocol (
|
||||
Handle,
|
||||
&gEfiUsbIoProtocolGuid,
|
||||
(VOID **) &UsbIo
|
||||
(VOID **)&UsbIo
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
@@ -1071,15 +1089,16 @@ ConPlatformMatchDevicePaths (
|
||||
|
||||
TempDevicePath1 = NULL;
|
||||
|
||||
DevicePath = Multi;
|
||||
DevicePathInst = GetNextDevicePathInstance (&DevicePath, &Size);
|
||||
DevicePath = Multi;
|
||||
DevicePathInst = GetNextDevicePathInstance (&DevicePath, &Size);
|
||||
|
||||
//
|
||||
// Search for the match of 'Single' in 'Multi'
|
||||
//
|
||||
while (DevicePathInst != NULL) {
|
||||
if ((CompareMem (Single, DevicePathInst, Size) == 0) ||
|
||||
IsGopSibling (Single, DevicePathInst) || MatchUsbShortformDevicePath (Single, DevicePathInst)) {
|
||||
IsGopSibling (Single, DevicePathInst) || MatchUsbShortformDevicePath (Single, DevicePathInst))
|
||||
{
|
||||
if (!Delete) {
|
||||
//
|
||||
// If Delete is FALSE, return EFI_SUCCESS if Single is found in Multi.
|
||||
@@ -1100,6 +1119,7 @@ ConPlatformMatchDevicePaths (
|
||||
if (TempDevicePath1 != NULL) {
|
||||
FreePool (TempDevicePath1);
|
||||
}
|
||||
|
||||
TempDevicePath1 = TempDevicePath2;
|
||||
}
|
||||
}
|
||||
@@ -1134,9 +1154,9 @@ ConPlatformMatchDevicePaths (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConPlatformUpdateDeviceVariable (
|
||||
IN CHAR16 *VariableName,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN CONPLATFORM_VAR_OPERATION Operation
|
||||
IN CHAR16 *VariableName,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN CONPLATFORM_VAR_OPERATION Operation
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1176,10 +1196,11 @@ ConPlatformUpdateDeviceVariable (
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// We reach here to append a device path that does not exist in variable.
|
||||
//
|
||||
Status = EFI_SUCCESS;
|
||||
Status = EFI_SUCCESS;
|
||||
NewVariableDevicePath = AppendDevicePathInstance (
|
||||
VariableDevicePath,
|
||||
DevicePath
|
||||
@@ -1187,7 +1208,6 @@ ConPlatformUpdateDeviceVariable (
|
||||
if (NewVariableDevicePath == NULL) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
} else {
|
||||
//
|
||||
// We reach here to remove DevicePath from the environment variable that
|
||||
@@ -1239,22 +1259,23 @@ ConPlatformUpdateDeviceVariable (
|
||||
**/
|
||||
BOOLEAN
|
||||
ConPlatformUpdateGopCandidate (
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HANDLE PciHandle;
|
||||
EFI_HANDLE GopHandle;
|
||||
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
||||
EFI_STATUS Status;
|
||||
EFI_HANDLE PciHandle;
|
||||
EFI_HANDLE GopHandle;
|
||||
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
||||
|
||||
//
|
||||
// Check whether it's a GOP device.
|
||||
//
|
||||
TempDevicePath = DevicePath;
|
||||
Status = gBS->LocateDevicePath (&gEfiGraphicsOutputProtocolGuid, &TempDevicePath, &GopHandle);
|
||||
Status = gBS->LocateDevicePath (&gEfiGraphicsOutputProtocolGuid, &TempDevicePath, &GopHandle);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//
|
||||
// Get the parent PciIo handle in order to find all the children
|
||||
//
|
||||
@@ -1262,10 +1283,12 @@ ConPlatformUpdateGopCandidate (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
TempDevicePath = EfiBootManagerGetGopDevicePath (PciHandle);
|
||||
if (TempDevicePath != NULL) {
|
||||
ConPlatformUpdateDeviceVariable (L"ConOutDev", TempDevicePath, Append);
|
||||
ConPlatformUpdateDeviceVariable (L"ErrOutDev", TempDevicePath, Append);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@@ -36,13 +36,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
//
|
||||
// Driver Binding Externs
|
||||
//
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConPlatformComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConPlatformComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConPlatformComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConPlatformComponentName2;
|
||||
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConPlatformComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConPlatformComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConPlatformComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConPlatformComponentName2;
|
||||
|
||||
typedef enum {
|
||||
Check,
|
||||
@@ -129,9 +128,9 @@ ConPlatformTextOutDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConPlatformTextInDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -156,9 +155,9 @@ ConPlatformTextInDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConPlatformTextOutDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Handle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -235,7 +234,7 @@ ConPlatformUnInstallProtocol (
|
||||
**/
|
||||
VOID *
|
||||
ConPlatformGetVariable (
|
||||
IN CHAR16 *Name
|
||||
IN CHAR16 *Name
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -282,14 +281,15 @@ ConPlatformMatchDevicePaths (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConPlatformUpdateDeviceVariable (
|
||||
IN CHAR16 *VariableName,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN CONPLATFORM_VAR_OPERATION Operation
|
||||
IN CHAR16 *VariableName,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN CONPLATFORM_VAR_OPERATION Operation
|
||||
);
|
||||
|
||||
//
|
||||
// EFI Component Name Functions
|
||||
//
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the driver.
|
||||
|
||||
@@ -332,7 +332,6 @@ ConPlatformComponentNameGetDriverName (
|
||||
OUT CHAR16 **DriverName
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
@@ -394,11 +393,11 @@ ConPlatformComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConPlatformComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -413,7 +412,7 @@ ConPlatformComponentNameGetControllerName (
|
||||
**/
|
||||
BOOLEAN
|
||||
ConPlatformUpdateGopCandidate (
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
);
|
||||
|
||||
#endif
|
||||
|
@@ -20,13 +20,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComp
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterConInComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)ConSplitterConInComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// EFI Component Name Protocol
|
||||
//
|
||||
@@ -39,16 +38,16 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePoi
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterSimplePointerComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)ConSplitterSimplePointerComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
//
|
||||
// EFI Component Name Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName = {
|
||||
ConSplitterComponentNameGetDriverName,
|
||||
ConSplitterAbsolutePointerComponentNameGetControllerName,
|
||||
"eng"
|
||||
@@ -57,9 +56,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePo
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterAbsolutePointerComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)ConSplitterAbsolutePointerComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
@@ -75,13 +74,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutCom
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterConOutComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)ConSplitterConOutComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// EFI Component Name Protocol
|
||||
//
|
||||
@@ -94,17 +92,16 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrCom
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterStdErrComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)ConSplitterComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)ConSplitterStdErrComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
(CHAR16 *) L"Console Splitter Driver"
|
||||
(CHAR16 *)L"Console Splitter Driver"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
@@ -112,10 +109,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTab
|
||||
}
|
||||
};
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConInControllerNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConInControllerNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
(CHAR16 *) L"Primary Console Input Device"
|
||||
(CHAR16 *)L"Primary Console Input Device"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
@@ -123,10 +120,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConInControll
|
||||
}
|
||||
};
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterSimplePointerControllerNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterSimplePointerControllerNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
(CHAR16 *) L"Primary Simple Pointer Device"
|
||||
(CHAR16 *)L"Primary Simple Pointer Device"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
@@ -134,7 +131,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterSimplePointer
|
||||
}
|
||||
};
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterAbsolutePointerControllerNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterAbsolutePointerControllerNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
(CHAR16 *)L"Primary Absolute Pointer Device"
|
||||
@@ -145,10 +142,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterAbsolutePoint
|
||||
}
|
||||
};
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
(CHAR16 *) L"Primary Console Output Device"
|
||||
(CHAR16 *)L"Primary Console Output Device"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
@@ -156,10 +153,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConOutControl
|
||||
}
|
||||
};
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterStdErrControllerNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterStdErrControllerNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
(CHAR16 *) L"Primary Standard Error Device"
|
||||
(CHAR16 *)L"Primary Standard Error Device"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
@@ -252,14 +249,14 @@ ConSplitterComponentNameGetDriverName (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterTestControllerHandles (
|
||||
IN CONST EFI_HANDLE ControllerHandle,
|
||||
IN CONST EFI_HANDLE DriverBindingHandle,
|
||||
IN CONST EFI_GUID *ProtocolGuid,
|
||||
IN EFI_HANDLE ChildHandle,
|
||||
IN CONST EFI_GUID *ConsumsedGuid
|
||||
IN CONST EFI_HANDLE ControllerHandle,
|
||||
IN CONST EFI_HANDLE DriverBindingHandle,
|
||||
IN CONST EFI_GUID *ProtocolGuid,
|
||||
IN EFI_HANDLE ChildHandle,
|
||||
IN CONST EFI_GUID *ConsumsedGuid
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// here ChildHandle is not an Optional parameter.
|
||||
@@ -363,14 +360,14 @@ ConSplitterTestControllerHandles (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConInComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = ConSplitterTestControllerHandles (
|
||||
ControllerHandle,
|
||||
@@ -463,14 +460,14 @@ ConSplitterConInComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterSimplePointerComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = ConSplitterTestControllerHandles (
|
||||
ControllerHandle,
|
||||
@@ -492,7 +489,6 @@ ConSplitterSimplePointerComponentNameGetControllerName (
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by an EFI Driver.
|
||||
@@ -540,14 +536,14 @@ ConSplitterSimplePointerComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterAbsolutePointerComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = ConSplitterTestControllerHandles (
|
||||
ControllerHandle,
|
||||
@@ -640,14 +636,14 @@ ConSplitterAbsolutePointerComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConOutComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = ConSplitterTestControllerHandles (
|
||||
ControllerHandle,
|
||||
@@ -740,14 +736,14 @@ ConSplitterConOutComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterStdErrComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = ConSplitterTestControllerHandles (
|
||||
ControllerHandle,
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -41,60 +41,57 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
//
|
||||
// Driver Binding Externs
|
||||
//
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;
|
||||
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;
|
||||
|
||||
//
|
||||
// These definitions were in the old Hii protocol, but are not in the new UEFI
|
||||
// version. So they are defined locally.
|
||||
//
|
||||
#define UNICODE_NARROW_CHAR 0xFFF0
|
||||
#define UNICODE_WIDE_CHAR 0xFFF1
|
||||
|
||||
#define UNICODE_NARROW_CHAR 0xFFF0
|
||||
#define UNICODE_WIDE_CHAR 0xFFF1
|
||||
|
||||
//
|
||||
// Private Data Structures
|
||||
//
|
||||
#define CONSOLE_SPLITTER_ALLOC_UNIT 32
|
||||
|
||||
|
||||
typedef struct {
|
||||
UINTN Column;
|
||||
UINTN Row;
|
||||
UINTN Column;
|
||||
UINTN Row;
|
||||
} CONSOLE_OUT_MODE;
|
||||
|
||||
typedef struct {
|
||||
UINTN Columns;
|
||||
UINTN Rows;
|
||||
UINTN Columns;
|
||||
UINTN Rows;
|
||||
} TEXT_OUT_SPLITTER_QUERY_DATA;
|
||||
|
||||
#define KEY_STATE_VALID_EXPOSED (EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED)
|
||||
#define KEY_STATE_VALID_EXPOSED (EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED)
|
||||
|
||||
#define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'n')
|
||||
#define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'n')
|
||||
|
||||
//
|
||||
// Private data for Text In Ex Splitter Notify
|
||||
//
|
||||
typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {
|
||||
UINTN Signature;
|
||||
VOID **NotifyHandleList;
|
||||
EFI_KEY_DATA KeyData;
|
||||
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;
|
||||
LIST_ENTRY NotifyEntry;
|
||||
UINTN Signature;
|
||||
VOID **NotifyHandleList;
|
||||
EFI_KEY_DATA KeyData;
|
||||
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;
|
||||
LIST_ENTRY NotifyEntry;
|
||||
} TEXT_IN_EX_SPLITTER_NOTIFY;
|
||||
|
||||
#define TEXT_IN_EX_SPLITTER_NOTIFY_FROM_THIS(a) \
|
||||
@@ -104,55 +101,54 @@ typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {
|
||||
TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE \
|
||||
)
|
||||
|
||||
#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'p')
|
||||
#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'p')
|
||||
|
||||
//
|
||||
// Private data for the Console In splitter
|
||||
//
|
||||
typedef struct {
|
||||
UINT64 Signature;
|
||||
EFI_HANDLE VirtualHandle;
|
||||
UINT64 Signature;
|
||||
EFI_HANDLE VirtualHandle;
|
||||
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;
|
||||
UINTN CurrentNumberOfConsoles;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;
|
||||
UINTN TextInListCount;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;
|
||||
UINTN CurrentNumberOfConsoles;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;
|
||||
UINTN TextInListCount;
|
||||
|
||||
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx;
|
||||
UINTN CurrentNumberOfExConsoles;
|
||||
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL **TextInExList;
|
||||
UINTN TextInExListCount;
|
||||
LIST_ENTRY NotifyList;
|
||||
EFI_KEY_DATA *KeyQueue;
|
||||
UINTN CurrentNumberOfKeys;
|
||||
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx;
|
||||
UINTN CurrentNumberOfExConsoles;
|
||||
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL **TextInExList;
|
||||
UINTN TextInExListCount;
|
||||
LIST_ENTRY NotifyList;
|
||||
EFI_KEY_DATA *KeyQueue;
|
||||
UINTN CurrentNumberOfKeys;
|
||||
//
|
||||
// It will be initialized and synced between console input devices
|
||||
// for toggle state sync.
|
||||
//
|
||||
EFI_KEY_TOGGLE_STATE PhysicalKeyToggleState;
|
||||
EFI_KEY_TOGGLE_STATE PhysicalKeyToggleState;
|
||||
//
|
||||
// It will be initialized and used to record if virtual KeyState
|
||||
// has been required to be exposed.
|
||||
//
|
||||
BOOLEAN VirtualKeyStateExported;
|
||||
BOOLEAN VirtualKeyStateExported;
|
||||
|
||||
EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;
|
||||
EFI_SIMPLE_POINTER_MODE SimplePointerMode;
|
||||
UINTN CurrentNumberOfPointers;
|
||||
EFI_SIMPLE_POINTER_PROTOCOL **PointerList;
|
||||
UINTN PointerListCount;
|
||||
|
||||
EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;
|
||||
EFI_SIMPLE_POINTER_MODE SimplePointerMode;
|
||||
UINTN CurrentNumberOfPointers;
|
||||
EFI_SIMPLE_POINTER_PROTOCOL **PointerList;
|
||||
UINTN PointerListCount;
|
||||
EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer;
|
||||
EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode;
|
||||
UINTN CurrentNumberOfAbsolutePointers;
|
||||
EFI_ABSOLUTE_POINTER_PROTOCOL **AbsolutePointerList;
|
||||
UINTN AbsolutePointerListCount;
|
||||
BOOLEAN AbsoluteInputEventSignalState;
|
||||
|
||||
EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer;
|
||||
EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode;
|
||||
UINTN CurrentNumberOfAbsolutePointers;
|
||||
EFI_ABSOLUTE_POINTER_PROTOCOL **AbsolutePointerList;
|
||||
UINTN AbsolutePointerListCount;
|
||||
BOOLEAN AbsoluteInputEventSignalState;
|
||||
|
||||
BOOLEAN KeyEventSignalState;
|
||||
BOOLEAN InputEventSignalState;
|
||||
EFI_EVENT ConnectConInEvent;
|
||||
BOOLEAN KeyEventSignalState;
|
||||
BOOLEAN InputEventSignalState;
|
||||
EFI_EVENT ConnectConInEvent;
|
||||
} TEXT_IN_SPLITTER_PRIVATE_DATA;
|
||||
|
||||
#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
|
||||
@@ -182,44 +178,42 @@ typedef struct {
|
||||
TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
|
||||
)
|
||||
|
||||
|
||||
#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'o', 'S', 'p')
|
||||
|
||||
typedef struct {
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;
|
||||
} TEXT_OUT_AND_GOP_DATA;
|
||||
|
||||
//
|
||||
// Private data for the Console Out splitter
|
||||
//
|
||||
typedef struct {
|
||||
UINT64 Signature;
|
||||
EFI_HANDLE VirtualHandle;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;
|
||||
UINT64 Signature;
|
||||
EFI_HANDLE VirtualHandle;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;
|
||||
|
||||
EFI_UGA_DRAW_PROTOCOL UgaDraw;
|
||||
UINT32 UgaHorizontalResolution;
|
||||
UINT32 UgaVerticalResolution;
|
||||
UINT32 UgaColorDepth;
|
||||
UINT32 UgaRefreshRate;
|
||||
EFI_UGA_DRAW_PROTOCOL UgaDraw;
|
||||
UINT32 UgaHorizontalResolution;
|
||||
UINT32 UgaVerticalResolution;
|
||||
UINT32 UgaColorDepth;
|
||||
UINT32 UgaRefreshRate;
|
||||
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *GraphicsOutputModeBuffer;
|
||||
UINTN CurrentNumberOfGraphicsOutput;
|
||||
UINTN CurrentNumberOfUgaDraw;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *GraphicsOutputModeBuffer;
|
||||
UINTN CurrentNumberOfGraphicsOutput;
|
||||
UINTN CurrentNumberOfUgaDraw;
|
||||
|
||||
UINTN CurrentNumberOfConsoles;
|
||||
TEXT_OUT_AND_GOP_DATA *TextOutList;
|
||||
UINTN TextOutListCount;
|
||||
TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;
|
||||
UINTN TextOutQueryDataCount;
|
||||
INT32 *TextOutModeMap;
|
||||
|
||||
BOOLEAN AddingConOutDevice;
|
||||
UINTN CurrentNumberOfConsoles;
|
||||
TEXT_OUT_AND_GOP_DATA *TextOutList;
|
||||
UINTN TextOutListCount;
|
||||
TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;
|
||||
UINTN TextOutQueryDataCount;
|
||||
INT32 *TextOutModeMap;
|
||||
|
||||
BOOLEAN AddingConOutDevice;
|
||||
} TEXT_OUT_SPLITTER_PRIVATE_DATA;
|
||||
|
||||
#define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
|
||||
@@ -272,8 +266,8 @@ typedef struct {
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterDriverEntry (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -289,7 +283,7 @@ ConSplitterDriverEntry (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterTextInConstructor (
|
||||
TEXT_IN_SPLITTER_PRIVATE_DATA *ConInPrivate
|
||||
TEXT_IN_SPLITTER_PRIVATE_DATA *ConInPrivate
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -304,10 +298,9 @@ ConSplitterTextInConstructor (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterTextOutConstructor (
|
||||
TEXT_OUT_SPLITTER_PRIVATE_DATA *ConOutPrivate
|
||||
TEXT_OUT_SPLITTER_PRIVATE_DATA *ConOutPrivate
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Test to see if Console In Device could be supported on the Controller.
|
||||
|
||||
@@ -323,9 +316,9 @@ ConSplitterTextOutConstructor (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConInDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -343,9 +336,9 @@ ConSplitterConInDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterSimplePointerDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -363,9 +356,9 @@ ConSplitterSimplePointerDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConOutDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -383,9 +376,9 @@ ConSplitterConOutDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterStdErrDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -403,9 +396,9 @@ ConSplitterStdErrDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConInDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -423,9 +416,9 @@ ConSplitterConInDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterSimplePointerDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -443,9 +436,9 @@ ConSplitterSimplePointerDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConOutDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -463,9 +456,9 @@ ConSplitterConOutDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterStdErrDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -484,10 +477,10 @@ ConSplitterStdErrDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConInDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -507,10 +500,10 @@ ConSplitterConInDriverBindingStop (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterSimplePointerDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -529,10 +522,10 @@ ConSplitterSimplePointerDriverBindingStop (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConOutDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -551,13 +544,12 @@ ConSplitterConOutDriverBindingStop (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterStdErrDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Test to see if Absolute Pointer protocol could be supported on the Controller.
|
||||
|
||||
@@ -573,9 +565,9 @@ ConSplitterStdErrDriverBindingStop (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterAbsolutePointerDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -593,9 +585,9 @@ ConSplitterAbsolutePointerDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterAbsolutePointerDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -615,10 +607,10 @@ ConSplitterAbsolutePointerDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterAbsolutePointerDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -633,8 +625,8 @@ ConSplitterAbsolutePointerDriverBindingStop (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterAbsolutePointerAddDevice (
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -649,15 +641,14 @@ ConSplitterAbsolutePointerAddDevice (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterAbsolutePointerDeleteDevice (
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer
|
||||
);
|
||||
|
||||
//
|
||||
// Absolute Pointer protocol interfaces
|
||||
//
|
||||
|
||||
|
||||
/**
|
||||
Resets the pointer device hardware.
|
||||
|
||||
@@ -672,11 +663,10 @@ ConSplitterAbsolutePointerDeleteDevice (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterAbsolutePointerReset (
|
||||
IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves the current state of a pointer device.
|
||||
|
||||
@@ -713,8 +703,8 @@ ConSplitterAbsolutePointerGetState (
|
||||
VOID
|
||||
EFIAPI
|
||||
ConSplitterAbsolutePointerWaitForInput (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -764,7 +754,6 @@ ConSplitterComponentNameGetDriverName (
|
||||
OUT CHAR16 **DriverName
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
@@ -836,14 +825,13 @@ ConSplitterComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConInComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
@@ -915,11 +903,11 @@ ConSplitterConInComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterSimplePointerComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -969,11 +957,11 @@ ConSplitterSimplePointerComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterAbsolutePointerComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1047,14 +1035,13 @@ ConSplitterAbsolutePointerComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterConOutComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
@@ -1126,14 +1113,13 @@ ConSplitterConOutComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterStdErrComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// TextIn Constructor/Destructor functions
|
||||
//
|
||||
@@ -1186,8 +1172,8 @@ ConSplitterTextInDeleteDevice (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterSimplePointerAddDevice (
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1202,8 +1188,8 @@ ConSplitterSimplePointerAddDevice (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterSimplePointerDeleteDevice (
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer
|
||||
);
|
||||
|
||||
//
|
||||
@@ -1224,10 +1210,10 @@ ConSplitterSimplePointerDeleteDevice (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterTextOutAddDevice (
|
||||
IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut,
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,
|
||||
IN EFI_UGA_DRAW_PROTOCOL *UgaDraw
|
||||
IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut,
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,
|
||||
IN EFI_UGA_DRAW_PROTOCOL *UgaDraw
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1242,8 +1228,8 @@ ConSplitterTextOutAddDevice (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterTextOutDeleteDevice (
|
||||
IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut
|
||||
IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut
|
||||
);
|
||||
|
||||
//
|
||||
@@ -1300,8 +1286,8 @@ ConSplitterTextInReadKeyStroke (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterTextInExAddDevice (
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1316,8 +1302,8 @@ ConSplitterTextInExAddDevice (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterTextInExDeleteDevice (
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx
|
||||
);
|
||||
|
||||
//
|
||||
@@ -1342,7 +1328,6 @@ ConSplitterTextInResetEx (
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Reads the next keystroke from the input device. The WaitForKey Event can
|
||||
be used to test for existance of a keystroke via WaitForEvent () call.
|
||||
@@ -1362,11 +1347,10 @@ ConSplitterTextInResetEx (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextInReadKeyStrokeEx (
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
OUT EFI_KEY_DATA *KeyData
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
OUT EFI_KEY_DATA *KeyData
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Set certain state for the input device.
|
||||
|
||||
@@ -1389,7 +1373,6 @@ ConSplitterTextInSetState (
|
||||
IN EFI_KEY_TOGGLE_STATE *KeyToggleState
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Register a notification function for a particular keystroke for the input device.
|
||||
|
||||
@@ -1421,7 +1404,6 @@ ConSplitterTextInRegisterKeyNotify (
|
||||
OUT VOID **NotifyHandle
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Remove a registered notification function from a particular keystroke.
|
||||
|
||||
@@ -1456,11 +1438,10 @@ ConSplitterTextInUnregisterKeyNotify (
|
||||
VOID
|
||||
EFIAPI
|
||||
ConSplitterTextInWaitForKey (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Reads the next keystroke from the input device. The WaitForKey Event can
|
||||
be used to test for existance of a keystroke via WaitForEvent () call.
|
||||
@@ -1477,8 +1458,8 @@ ConSplitterTextInWaitForKey (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextInPrivateReadKeyStroke (
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
OUT EFI_INPUT_KEY *Key
|
||||
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
|
||||
OUT EFI_INPUT_KEY *Key
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1495,8 +1476,8 @@ ConSplitterTextInPrivateReadKeyStroke (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterSimplePointerReset (
|
||||
IN EFI_SIMPLE_POINTER_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
IN EFI_SIMPLE_POINTER_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1515,8 +1496,8 @@ ConSplitterSimplePointerReset (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterSimplePointerGetState (
|
||||
IN EFI_SIMPLE_POINTER_PROTOCOL *This,
|
||||
IN OUT EFI_SIMPLE_POINTER_STATE *State
|
||||
IN EFI_SIMPLE_POINTER_PROTOCOL *This,
|
||||
IN OUT EFI_SIMPLE_POINTER_STATE *State
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1532,8 +1513,8 @@ ConSplitterSimplePointerGetState (
|
||||
VOID
|
||||
EFIAPI
|
||||
ConSplitterSimplePointerWaitForInput (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
//
|
||||
@@ -1555,8 +1536,8 @@ ConSplitterSimplePointerWaitForInput (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutReset (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1581,8 +1562,8 @@ ConSplitterTextOutReset (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutOutputString (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN CHAR16 *WString
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN CHAR16 *WString
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1603,8 +1584,8 @@ ConSplitterTextOutOutputString (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutTestString (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN CHAR16 *WString
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN CHAR16 *WString
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1627,10 +1608,10 @@ ConSplitterTextOutTestString (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutQueryMode (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN ModeNumber,
|
||||
OUT UINTN *Columns,
|
||||
OUT UINTN *Rows
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN ModeNumber,
|
||||
OUT UINTN *Columns,
|
||||
OUT UINTN *Rows
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1648,8 +1629,8 @@ ConSplitterTextOutQueryMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutSetMode (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN ModeNumber
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN ModeNumber
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1672,8 +1653,8 @@ ConSplitterTextOutSetMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutSetAttribute (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN Attribute
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN Attribute
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1691,7 +1672,7 @@ ConSplitterTextOutSetAttribute (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutClearScreen (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1716,12 +1697,11 @@ ConSplitterTextOutClearScreen (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutSetCursorPosition (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN Column,
|
||||
IN UINTN Row
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN Column,
|
||||
IN UINTN Row
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Makes the cursor visible or invisible
|
||||
|
||||
@@ -1739,8 +1719,8 @@ ConSplitterTextOutSetCursorPosition (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterTextOutEnableCursor (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN Visible
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN Visible
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1760,9 +1740,9 @@ ConSplitterTextOutEnableCursor (
|
||||
**/
|
||||
EFI_STATUS
|
||||
ConSplitterGrowBuffer (
|
||||
IN UINTN ElementSize,
|
||||
IN OUT UINTN *Count,
|
||||
IN OUT VOID **Buffer
|
||||
IN UINTN ElementSize,
|
||||
IN OUT UINTN *Count,
|
||||
IN OUT VOID **Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1806,8 +1786,8 @@ ConSplitterGraphicsOutputQueryMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterGraphicsOutputSetMode (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,
|
||||
IN UINT32 ModeNumber
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN UINT32 ModeNumber
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1859,19 +1839,18 @@ ConSplitterGraphicsOutputSetMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterGraphicsOutputBlt (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Return the current video mode information.
|
||||
|
||||
@@ -1889,11 +1868,11 @@ ConSplitterGraphicsOutputBlt (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterUgaDrawGetMode (
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
OUT UINT32 *HorizontalResolution,
|
||||
OUT UINT32 *VerticalResolution,
|
||||
OUT UINT32 *ColorDepth,
|
||||
OUT UINT32 *RefreshRate
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
OUT UINT32 *HorizontalResolution,
|
||||
OUT UINT32 *VerticalResolution,
|
||||
OUT UINT32 *ColorDepth,
|
||||
OUT UINT32 *RefreshRate
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1913,11 +1892,11 @@ ConSplitterUgaDrawGetMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterUgaDrawSetMode (
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
IN UINT32 HorizontalResolution,
|
||||
IN UINT32 VerticalResolution,
|
||||
IN UINT32 ColorDepth,
|
||||
IN UINT32 RefreshRate
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
IN UINT32 HorizontalResolution,
|
||||
IN UINT32 VerticalResolution,
|
||||
IN UINT32 ColorDepth,
|
||||
IN UINT32 RefreshRate
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1972,16 +1951,16 @@ ConSplitterUgaDrawSetMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterUgaDrawBlt (
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
|
@@ -9,8 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
#include "ConSplitter.h"
|
||||
|
||||
|
||||
CHAR16 mCrLfString[3] = { CHAR_CARRIAGE_RETURN, CHAR_LINEFEED, CHAR_NULL };
|
||||
CHAR16 mCrLfString[3] = { CHAR_CARRIAGE_RETURN, CHAR_LINEFEED, CHAR_NULL };
|
||||
|
||||
/**
|
||||
Returns information for an available graphics mode that the graphics device
|
||||
@@ -42,7 +41,7 @@ ConSplitterGraphicsOutputQueryMode (
|
||||
EFI_STATUS Status;
|
||||
UINTN Index;
|
||||
|
||||
if (This == NULL || Info == NULL || SizeOfInfo == NULL || ModeNumber >= This->Mode->MaxMode) {
|
||||
if ((This == NULL) || (Info == NULL) || (SizeOfInfo == NULL) || (ModeNumber >= This->Mode->MaxMode)) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
@@ -69,7 +68,7 @@ ConSplitterGraphicsOutputQueryMode (
|
||||
//
|
||||
// If only one physical GOP device exist, return its information.
|
||||
//
|
||||
Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32) ModeNumber, SizeOfInfo, Info);
|
||||
Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32)ModeNumber, SizeOfInfo, Info);
|
||||
return Status;
|
||||
} else {
|
||||
//
|
||||
@@ -80,6 +79,7 @@ ConSplitterGraphicsOutputQueryMode (
|
||||
if (*Info == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
*SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION);
|
||||
CopyMem (*Info, &Private->GraphicsOutputModeBuffer[ModeNumber], *SizeOfInfo);
|
||||
}
|
||||
@@ -87,7 +87,6 @@ ConSplitterGraphicsOutputQueryMode (
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Set the video device into the specified mode and clears the visible portions of
|
||||
the output display to black.
|
||||
@@ -104,31 +103,31 @@ ConSplitterGraphicsOutputQueryMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterGraphicsOutputSetMode (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,
|
||||
IN UINT32 ModeNumber
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN UINT32 ModeNumber
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
TEXT_OUT_SPLITTER_PRIVATE_DATA *Private;
|
||||
UINTN Index;
|
||||
EFI_STATUS ReturnStatus;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Mode;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *PhysicalGraphicsOutput;
|
||||
UINTN NumberIndex;
|
||||
UINTN SizeOfInfo;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
EFI_STATUS Status;
|
||||
TEXT_OUT_SPLITTER_PRIVATE_DATA *Private;
|
||||
UINTN Index;
|
||||
EFI_STATUS ReturnStatus;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Mode;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *PhysicalGraphicsOutput;
|
||||
UINTN NumberIndex;
|
||||
UINTN SizeOfInfo;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
|
||||
if (ModeNumber >= This->Mode->MaxMode) {
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
Private = GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);
|
||||
Mode = &Private->GraphicsOutputModeBuffer[ModeNumber];
|
||||
Mode = &Private->GraphicsOutputModeBuffer[ModeNumber];
|
||||
|
||||
ReturnStatus = EFI_SUCCESS;
|
||||
GraphicsOutput = NULL;
|
||||
ReturnStatus = EFI_SUCCESS;
|
||||
GraphicsOutput = NULL;
|
||||
PhysicalGraphicsOutput = NULL;
|
||||
//
|
||||
// return the worst status met
|
||||
@@ -140,19 +139,21 @@ ConSplitterGraphicsOutputSetMode (
|
||||
//
|
||||
// Find corresponding ModeNumber of this GraphicsOutput instance
|
||||
//
|
||||
for (NumberIndex = 0; NumberIndex < GraphicsOutput->Mode->MaxMode; NumberIndex ++) {
|
||||
Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32) NumberIndex, &SizeOfInfo, &Info);
|
||||
for (NumberIndex = 0; NumberIndex < GraphicsOutput->Mode->MaxMode; NumberIndex++) {
|
||||
Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32)NumberIndex, &SizeOfInfo, &Info);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
if ((Info->HorizontalResolution == Mode->HorizontalResolution) && (Info->VerticalResolution == Mode->VerticalResolution)) {
|
||||
FreePool (Info);
|
||||
break;
|
||||
}
|
||||
|
||||
FreePool (Info);
|
||||
}
|
||||
|
||||
Status = GraphicsOutput->SetMode (GraphicsOutput, (UINT32) NumberIndex);
|
||||
Status = GraphicsOutput->SetMode (GraphicsOutput, (UINT32)NumberIndex);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ReturnStatus = Status;
|
||||
}
|
||||
@@ -180,7 +181,7 @@ ConSplitterGraphicsOutputSetMode (
|
||||
// If only one physical GOP device exist, copy physical information to consplitter.
|
||||
//
|
||||
CopyMem (This->Mode->Info, PhysicalGraphicsOutput->Mode->Info, PhysicalGraphicsOutput->Mode->SizeOfInfo);
|
||||
This->Mode->SizeOfInfo = PhysicalGraphicsOutput->Mode->SizeOfInfo;
|
||||
This->Mode->SizeOfInfo = PhysicalGraphicsOutput->Mode->SizeOfInfo;
|
||||
This->Mode->FrameBufferBase = PhysicalGraphicsOutput->Mode->FrameBufferBase;
|
||||
This->Mode->FrameBufferSize = PhysicalGraphicsOutput->Mode->FrameBufferSize;
|
||||
} else {
|
||||
@@ -194,8 +195,6 @@ ConSplitterGraphicsOutputSetMode (
|
||||
return ReturnStatus;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
The following table defines actions for BltOperations.
|
||||
|
||||
@@ -245,16 +244,16 @@ ConSplitterGraphicsOutputSetMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterGraphicsOutputBlt (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -264,7 +263,7 @@ ConSplitterGraphicsOutputBlt (
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
|
||||
if (This == NULL || ((UINTN) BltOperation) >= EfiGraphicsOutputBltOperationMax) {
|
||||
if ((This == NULL) || (((UINTN)BltOperation) >= EfiGraphicsOutputBltOperationMax)) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
@@ -279,17 +278,17 @@ ConSplitterGraphicsOutputBlt (
|
||||
GraphicsOutput = Private->TextOutList[Index].GraphicsOutput;
|
||||
if (GraphicsOutput != NULL) {
|
||||
Status = GraphicsOutput->Blt (
|
||||
GraphicsOutput,
|
||||
BltBuffer,
|
||||
BltOperation,
|
||||
SourceX,
|
||||
SourceY,
|
||||
DestinationX,
|
||||
DestinationY,
|
||||
Width,
|
||||
Height,
|
||||
Delta
|
||||
);
|
||||
GraphicsOutput,
|
||||
BltBuffer,
|
||||
BltOperation,
|
||||
SourceX,
|
||||
SourceY,
|
||||
DestinationX,
|
||||
DestinationY,
|
||||
Width,
|
||||
Height,
|
||||
Delta
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ReturnStatus = Status;
|
||||
} else if (BltOperation == EfiBltVideoToBltBuffer) {
|
||||
@@ -301,19 +300,19 @@ ConSplitterGraphicsOutputBlt (
|
||||
}
|
||||
|
||||
UgaDraw = Private->TextOutList[Index].UgaDraw;
|
||||
if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {
|
||||
if ((UgaDraw != NULL) && FeaturePcdGet (PcdUgaConsumeSupport)) {
|
||||
Status = UgaDraw->Blt (
|
||||
UgaDraw,
|
||||
(EFI_UGA_PIXEL *) BltBuffer,
|
||||
(EFI_UGA_BLT_OPERATION) BltOperation,
|
||||
SourceX,
|
||||
SourceY,
|
||||
DestinationX,
|
||||
DestinationY,
|
||||
Width,
|
||||
Height,
|
||||
Delta
|
||||
);
|
||||
UgaDraw,
|
||||
(EFI_UGA_PIXEL *)BltBuffer,
|
||||
(EFI_UGA_BLT_OPERATION)BltOperation,
|
||||
SourceX,
|
||||
SourceY,
|
||||
DestinationX,
|
||||
DestinationY,
|
||||
Width,
|
||||
Height,
|
||||
Delta
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ReturnStatus = Status;
|
||||
} else if (BltOperation == EfiBltVideoToBltBuffer) {
|
||||
@@ -345,11 +344,11 @@ ConSplitterGraphicsOutputBlt (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterUgaDrawGetMode (
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
OUT UINT32 *HorizontalResolution,
|
||||
OUT UINT32 *VerticalResolution,
|
||||
OUT UINT32 *ColorDepth,
|
||||
OUT UINT32 *RefreshRate
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
OUT UINT32 *HorizontalResolution,
|
||||
OUT UINT32 *VerticalResolution,
|
||||
OUT UINT32 *ColorDepth,
|
||||
OUT UINT32 *RefreshRate
|
||||
)
|
||||
{
|
||||
TEXT_OUT_SPLITTER_PRIVATE_DATA *Private;
|
||||
@@ -357,13 +356,15 @@ ConSplitterUgaDrawGetMode (
|
||||
if ((HorizontalResolution == NULL) ||
|
||||
(VerticalResolution == NULL) ||
|
||||
(RefreshRate == NULL) ||
|
||||
(ColorDepth == NULL)) {
|
||||
(ColorDepth == NULL))
|
||||
{
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
//
|
||||
// retrieve private data
|
||||
//
|
||||
Private = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);
|
||||
Private = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);
|
||||
|
||||
*HorizontalResolution = Private->UgaHorizontalResolution;
|
||||
*VerticalResolution = Private->UgaVerticalResolution;
|
||||
@@ -373,7 +374,6 @@ ConSplitterUgaDrawGetMode (
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Set the current video mode information.
|
||||
|
||||
@@ -391,22 +391,22 @@ ConSplitterUgaDrawGetMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterUgaDrawSetMode (
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
IN UINT32 HorizontalResolution,
|
||||
IN UINT32 VerticalResolution,
|
||||
IN UINT32 ColorDepth,
|
||||
IN UINT32 RefreshRate
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
IN UINT32 HorizontalResolution,
|
||||
IN UINT32 VerticalResolution,
|
||||
IN UINT32 ColorDepth,
|
||||
IN UINT32 RefreshRate
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
TEXT_OUT_SPLITTER_PRIVATE_DATA *Private;
|
||||
UINTN Index;
|
||||
EFI_STATUS ReturnStatus;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
UINTN NumberIndex;
|
||||
UINTN SizeOfInfo;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
EFI_STATUS Status;
|
||||
TEXT_OUT_SPLITTER_PRIVATE_DATA *Private;
|
||||
UINTN Index;
|
||||
EFI_STATUS ReturnStatus;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
UINTN NumberIndex;
|
||||
UINTN SizeOfInfo;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
|
||||
Private = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);
|
||||
|
||||
@@ -415,47 +415,48 @@ ConSplitterUgaDrawSetMode (
|
||||
//
|
||||
// Update the Mode data
|
||||
//
|
||||
Private->UgaHorizontalResolution = HorizontalResolution;
|
||||
Private->UgaVerticalResolution = VerticalResolution;
|
||||
Private->UgaColorDepth = ColorDepth;
|
||||
Private->UgaRefreshRate = RefreshRate;
|
||||
Private->UgaHorizontalResolution = HorizontalResolution;
|
||||
Private->UgaVerticalResolution = VerticalResolution;
|
||||
Private->UgaColorDepth = ColorDepth;
|
||||
Private->UgaRefreshRate = RefreshRate;
|
||||
|
||||
//
|
||||
// return the worst status met
|
||||
//
|
||||
for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {
|
||||
|
||||
GraphicsOutput = Private->TextOutList[Index].GraphicsOutput;
|
||||
if (GraphicsOutput != NULL) {
|
||||
//
|
||||
// Find corresponding ModeNumber of this GraphicsOutput instance
|
||||
//
|
||||
for (NumberIndex = 0; NumberIndex < GraphicsOutput->Mode->MaxMode; NumberIndex ++) {
|
||||
Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32) NumberIndex, &SizeOfInfo, &Info);
|
||||
for (NumberIndex = 0; NumberIndex < GraphicsOutput->Mode->MaxMode; NumberIndex++) {
|
||||
Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32)NumberIndex, &SizeOfInfo, &Info);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
if ((Info->HorizontalResolution == HorizontalResolution) && (Info->VerticalResolution == VerticalResolution)) {
|
||||
FreePool (Info);
|
||||
break;
|
||||
}
|
||||
|
||||
FreePool (Info);
|
||||
}
|
||||
|
||||
Status = GraphicsOutput->SetMode (GraphicsOutput, (UINT32) NumberIndex);
|
||||
Status = GraphicsOutput->SetMode (GraphicsOutput, (UINT32)NumberIndex);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ReturnStatus = Status;
|
||||
}
|
||||
} else if (FeaturePcdGet (PcdUgaConsumeSupport)){
|
||||
} else if (FeaturePcdGet (PcdUgaConsumeSupport)) {
|
||||
UgaDraw = Private->TextOutList[Index].UgaDraw;
|
||||
if (UgaDraw != NULL) {
|
||||
Status = UgaDraw->SetMode (
|
||||
UgaDraw,
|
||||
HorizontalResolution,
|
||||
VerticalResolution,
|
||||
ColorDepth,
|
||||
RefreshRate
|
||||
);
|
||||
UgaDraw,
|
||||
HorizontalResolution,
|
||||
VerticalResolution,
|
||||
ColorDepth,
|
||||
RefreshRate
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ReturnStatus = Status;
|
||||
}
|
||||
@@ -466,7 +467,6 @@ ConSplitterUgaDrawSetMode (
|
||||
return ReturnStatus;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Blt a rectangle of pixels on the graphics screen.
|
||||
|
||||
@@ -519,16 +519,16 @@ ConSplitterUgaDrawSetMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
ConSplitterUgaDrawBlt (
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
IN EFI_UGA_DRAW_PROTOCOL *This,
|
||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -547,17 +547,17 @@ ConSplitterUgaDrawBlt (
|
||||
GraphicsOutput = Private->TextOutList[Index].GraphicsOutput;
|
||||
if (GraphicsOutput != NULL) {
|
||||
Status = GraphicsOutput->Blt (
|
||||
GraphicsOutput,
|
||||
(EFI_GRAPHICS_OUTPUT_BLT_PIXEL *) BltBuffer,
|
||||
(EFI_GRAPHICS_OUTPUT_BLT_OPERATION) BltOperation,
|
||||
SourceX,
|
||||
SourceY,
|
||||
DestinationX,
|
||||
DestinationY,
|
||||
Width,
|
||||
Height,
|
||||
Delta
|
||||
);
|
||||
GraphicsOutput,
|
||||
(EFI_GRAPHICS_OUTPUT_BLT_PIXEL *)BltBuffer,
|
||||
(EFI_GRAPHICS_OUTPUT_BLT_OPERATION)BltOperation,
|
||||
SourceX,
|
||||
SourceY,
|
||||
DestinationX,
|
||||
DestinationY,
|
||||
Width,
|
||||
Height,
|
||||
Delta
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ReturnStatus = Status;
|
||||
} else if (BltOperation == EfiUgaVideoToBltBuffer) {
|
||||
@@ -568,7 +568,7 @@ ConSplitterUgaDrawBlt (
|
||||
}
|
||||
}
|
||||
|
||||
if (Private->TextOutList[Index].UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {
|
||||
if ((Private->TextOutList[Index].UgaDraw != NULL) && FeaturePcdGet (PcdUgaConsumeSupport)) {
|
||||
Status = Private->TextOutList[Index].UgaDraw->Blt (
|
||||
Private->TextOutList[Index].UgaDraw,
|
||||
BltBuffer,
|
||||
@@ -613,7 +613,7 @@ TextOutSetMode (
|
||||
// been checked in ConSplitterTextOutSetCursorPosition. And (0, 0) should
|
||||
// always be supported.
|
||||
//
|
||||
Private->TextOutMode.Mode = (INT32) ModeNumber;
|
||||
Private->TextOutMode.Mode = (INT32)ModeNumber;
|
||||
Private->TextOutMode.CursorColumn = 0;
|
||||
Private->TextOutMode.CursorRow = 0;
|
||||
Private->TextOutMode.CursorVisible = TRUE;
|
||||
|
@@ -20,14 +20,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gGraphicsConsoleCompo
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gGraphicsConsoleComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) GraphicsConsoleComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) GraphicsConsoleComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gGraphicsConsoleComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)GraphicsConsoleComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)GraphicsConsoleComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mGraphicsConsoleDriverNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mGraphicsConsoleDriverNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
(CHAR16 *)L"Graphics Console Driver"
|
||||
@@ -165,11 +164,11 @@ GraphicsConsoleComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsConsoleComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
return EFI_UNSUPPORTED;
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -29,17 +29,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#include <Protocol/HiiFont.h>
|
||||
#include <Protocol/HiiDatabase.h>
|
||||
|
||||
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gGraphicsConsoleComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gGraphicsConsoleComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gGraphicsConsoleDriverBinding;
|
||||
extern EFI_NARROW_GLYPH gUsStdNarrowGlyphData[];
|
||||
|
||||
extern UINT32 mNarrowFontSize;
|
||||
extern UINT32 mNarrowFontSize;
|
||||
|
||||
typedef union {
|
||||
EFI_NARROW_GLYPH NarrowGlyph;
|
||||
EFI_WIDE_GLYPH WideGlyph;
|
||||
EFI_NARROW_GLYPH NarrowGlyph;
|
||||
EFI_WIDE_GLYPH WideGlyph;
|
||||
} GLYPH_UNION;
|
||||
|
||||
//
|
||||
@@ -48,32 +47,32 @@ typedef union {
|
||||
#define GRAPHICS_CONSOLE_DEV_SIGNATURE SIGNATURE_32 ('g', 's', 't', 'o')
|
||||
|
||||
typedef struct {
|
||||
UINTN Columns;
|
||||
UINTN Rows;
|
||||
INTN DeltaX;
|
||||
INTN DeltaY;
|
||||
UINT32 GopWidth;
|
||||
UINT32 GopHeight;
|
||||
UINT32 GopModeNumber;
|
||||
UINTN Columns;
|
||||
UINTN Rows;
|
||||
INTN DeltaX;
|
||||
INTN DeltaY;
|
||||
UINT32 GopWidth;
|
||||
UINT32 GopHeight;
|
||||
UINT32 GopModeNumber;
|
||||
} GRAPHICS_CONSOLE_MODE_DATA;
|
||||
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOutput;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode;
|
||||
GRAPHICS_CONSOLE_MODE_DATA *ModeData;
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *LineBuffer;
|
||||
UINTN Signature;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||
EFI_UGA_DRAW_PROTOCOL *UgaDraw;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOutput;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode;
|
||||
GRAPHICS_CONSOLE_MODE_DATA *ModeData;
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *LineBuffer;
|
||||
} GRAPHICS_CONSOLE_DEV;
|
||||
|
||||
#define GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS(a) \
|
||||
CR (a, GRAPHICS_CONSOLE_DEV, SimpleTextOutput, GRAPHICS_CONSOLE_DEV_SIGNATURE)
|
||||
|
||||
|
||||
//
|
||||
// EFI Component Name Functions
|
||||
//
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the driver.
|
||||
|
||||
@@ -121,7 +120,6 @@ GraphicsConsoleComponentNameGetDriverName (
|
||||
OUT CHAR16 **DriverName
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
@@ -193,14 +191,13 @@ GraphicsConsoleComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsConsoleComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Reset the text output device hardware and optionally run diagnostics.
|
||||
|
||||
@@ -222,8 +219,8 @@ GraphicsConsoleComponentNameGetControllerName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsConsoleConOutReset (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -307,7 +304,6 @@ GraphicsConsoleConOutQueryMode (
|
||||
OUT UINTN *Rows
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Sets the output device(s) to a specified mode.
|
||||
|
||||
@@ -399,7 +395,6 @@ GraphicsConsoleConOutSetCursorPosition (
|
||||
IN UINTN Row
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Makes the cursor visible or invisible.
|
||||
|
||||
@@ -438,12 +433,11 @@ GraphicsConsoleConOutEnableCursor (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsConsoleControllerDriverSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Start this driver on Controller by opening Graphics Output protocol or
|
||||
UGA Draw protocol, and installing Simple Text Out protocol on Controller.
|
||||
@@ -461,9 +455,9 @@ GraphicsConsoleControllerDriverSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsConsoleControllerDriverStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -487,13 +481,12 @@ GraphicsConsoleControllerDriverStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsConsoleControllerDriverStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Locate HII Database protocol and HII Font protocol.
|
||||
|
||||
@@ -508,7 +501,6 @@ EfiLocateHiiProtocol (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Gets Graphics Console device's foreground color and background color.
|
||||
|
||||
@@ -586,9 +578,9 @@ FlushCursor (
|
||||
EFI_STATUS
|
||||
CheckModeSupported (
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,
|
||||
IN UINT32 HorizontalResolution,
|
||||
IN UINT32 VerticalResolution,
|
||||
OUT UINT32 *CurrentModeNumber
|
||||
IN UINT32 HorizontalResolution,
|
||||
IN UINT32 VerticalResolution,
|
||||
OUT UINT32 *CurrentModeNumber
|
||||
);
|
||||
|
||||
#endif
|
||||
|
@@ -8,264 +8,503 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
#include "GraphicsConsole.h"
|
||||
|
||||
|
||||
|
||||
EFI_NARROW_GLYPH gUsStdNarrowGlyphData[] = {
|
||||
//
|
||||
// Unicode glyphs from 0x20 to 0x7e are the same as ASCII characters 0x20 to 0x7e
|
||||
//
|
||||
{ 0x0020, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0021, 0x00, {0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0022, 0x00, {0x00,0x00,0x00,0x6C,0x6C,0x6C,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0023, 0x00, {0x00,0x00,0x00,0x00,0x6C,0x6C,0x6C,0xFE,0x6C,0x6C,0x6C,0xFE,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0024, 0x00, {0x00,0x00,0x18,0x18,0x7C,0xC6,0xC6,0x60,0x38,0x0C,0x06,0xC6,0xC6,0x7C,0x18,0x18,0x00,0x00,0x00}},
|
||||
{ 0x0025, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0x0C,0x0C,0x18,0x18,0x30,0x30,0x60,0x60,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0026, 0x00, {0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x76,0xDC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0027, 0x00, {0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0028, 0x00, {0x00,0x00,0x00,0x06,0x0C,0x0C,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x0C,0x06,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0029, 0x00, {0x00,0x00,0x00,0xC0,0x60,0x60,0x30,0x30,0x30,0x30,0x30,0x30,0x60,0x60,0xC0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x002a, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x38,0xFE,0x38,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x002b, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x002c, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00,0x00,0x00}},
|
||||
{ 0x002d, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x002e, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x002f, 0x00, {0x00,0x00,0x00,0x06,0x06,0x0C,0x0C,0x18,0x18,0x30,0x30,0x60,0x60,0xC0,0xC0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0030, 0x00, {0x00,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xD6,0xD6,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0031, 0x00, {0x00,0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0032, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0x06,0x06,0x06,0x0C,0x18,0x30,0x60,0xC0,0xC2,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0033, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0x06,0x06,0x06,0x3C,0x06,0x06,0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0034, 0x00, {0x00,0x00,0x00,0x1C,0x1C,0x3C,0x3C,0x6C,0x6C,0xCC,0xFE,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0035, 0x00, {0x00,0x00,0x00,0xFE,0xC0,0xC0,0xC0,0xC0,0xFC,0x06,0x06,0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0036, 0x00, {0x00,0x00,0x00,0x3C,0x60,0xC0,0xC0,0xC0,0xFC,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0037, 0x00, {0x00,0x00,0x00,0xFE,0xC6,0x06,0x06,0x06,0x0C,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0038, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0039, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x06,0x06,0x06,0x0C,0x78,0x00,0x00,0x00,0x00}},
|
||||
{ 0x003a, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x003b, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x00}},
|
||||
{ 0x003c, 0x00, {0x00,0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0xC0,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00}},
|
||||
{ 0x003d, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x003e, 0x00, {0x00,0x00,0x00,0x00,0xC0,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0xC0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x003f, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0x0C,0x0C,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0040, 0x00, {0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xDE,0xDE,0xDE,0xDC,0xC0,0xC0,0x7E,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0020, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0021, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0022, 0x00, { 0x00, 0x00, 0x00, 0x6C, 0x6C, 0x6C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0023, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0x6C, 0xFE, 0x6C, 0x6C, 0x6C, 0xFE, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0024, 0x00, { 0x00, 0x00, 0x18, 0x18, 0x7C, 0xC6, 0xC6, 0x60, 0x38, 0x0C, 0x06, 0xC6, 0xC6, 0x7C, 0x18, 0x18, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0025, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0026, 0x00, { 0x00, 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x76, 0xDC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0027, 0x00, { 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0028, 0x00, { 0x00, 0x00, 0x00, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0029, 0x00, { 0x00, 0x00, 0x00, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x002a, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x38, 0xFE, 0x38, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x002b, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x002c, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x002d, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x002e, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x002f, 0x00, { 0x00, 0x00, 0x00, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0030, 0x00, { 0x00, 0x00, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xD6, 0xD6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0031, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0032, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC2, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0033, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x06, 0x3C, 0x06, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0034, 0x00, { 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3C, 0x3C, 0x6C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0035, 0x00, { 0x00, 0x00, 0x00, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x06, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0036, 0x00, { 0x00, 0x00, 0x00, 0x3C, 0x60, 0xC0, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0037, 0x00, { 0x00, 0x00, 0x00, 0xFE, 0xC6, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0038, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0039, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x78, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x003a, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x003b, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x003c, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x003d, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x003e, 0x00, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x003f, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0040, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xDE, 0xDE, 0xDE, 0xDC, 0xC0, 0xC0, 0x7E, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
|
||||
{ 0x0041, 0x00, {0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0041, 0x00, { 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
|
||||
{ 0x0042, 0x00, {0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x66,0x7C,0x66,0x66,0x66,0x66,0x66,0xFC,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0043, 0x00, {0x00,0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC2,0x66,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0044, 0x00, {0x00,0x00,0x00,0xF8,0x6C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x6C,0xF8,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0045, 0x00, {0x00,0x00,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0046, 0x00, {0x00,0x00,0x00,0xFE,0x66,0x62,0x60,0x64,0x7C,0x64,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0047, 0x00, {0x00,0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,0xDE,0xC6,0xC6,0xC6,0x66,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0048, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0049, 0x00, {0x00,0x00,0x00,0xFC,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0x00,0x00,0x00,0x00}},
|
||||
{ 0x004a, 0x00, {0x00,0x00,0x00,0x1E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00}},
|
||||
{ 0x004b, 0x00, {0x00,0x00,0x00,0xE6,0x66,0x6C,0x6C,0x78,0x70,0x78,0x6C,0x6C,0x66,0x66,0xE6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x004c, 0x00, {0x00,0x00,0x00,0xF0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x004d, 0x00, {0x00,0x00,0x00,0xC6,0xEE,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x004e, 0x00, {0x00,0x00,0x00,0xC6,0xE6,0xF6,0xF6,0xF6,0xDE,0xCE,0xCE,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x004f, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0050, 0x00, {0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0051, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xD6,0x7C,0x1C,0x0E,0x00,0x00}},
|
||||
{ 0x0052, 0x00, {0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x66,0x7C,0x78,0x6C,0x6C,0x66,0x66,0xE6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0053, 0x00, {0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0x60,0x38,0x0C,0x06,0x06,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0054, 0x00, {0x00,0x00,0x00,0xFC,0xFC,0xB4,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0055, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0056, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x6C,0x38,0x10,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0057, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xD6,0xD6,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0058, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0xC6,0x6C,0x6C,0x38,0x6C,0x6C,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0059, 0x00, {0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00}},
|
||||
{ 0x005a, 0x00, {0x00,0x00,0x00,0xFE,0xC6,0x86,0x0C,0x0C,0x18,0x30,0x60,0xC0,0xC2,0xC6,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x005b, 0x00, {0x00,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1E,0x00,0x00,0x00,0x00}},
|
||||
{ 0x005c, 0x00, {0x00,0x00,0x00,0xC0,0xC0,0x60,0x60,0x30,0x30,0x18,0x18,0x0C,0x0C,0x06,0x06,0x00,0x00,0x00,0x00}},
|
||||
{ 0x005d, 0x00, {0x00,0x00,0x00,0xF0,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0xF0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x005e, 0x00, {0x00,0x00,0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x005f, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0060, 0x00, {0x00,0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0061, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0062, 0x00, {0x00,0x00,0x00,0xE0,0x60,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0063, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0,0xC0,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0064, 0x00, {0x00,0x00,0x00,0x1C,0x0C,0x0C,0x0C,0x3C,0x6C,0xCC,0xCC,0xCC,0xCC,0xCC,0x7E,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0065, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0066, 0x00, {0x00,0x00,0x00,0x1E,0x33,0x30,0x30,0x30,0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0067, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x7C,0x0C,0xCC,0x78,0x00}},
|
||||
{ 0x0068, 0x00, {0x00,0x00,0x00,0xE0,0x60,0x60,0x60,0x7C,0x76,0x66,0x66,0x66,0x66,0x66,0xE6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0069, 0x00, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x006a, 0x00, {0x00,0x00,0x00,0x0C,0x0C,0x0C,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x6C,0x38,0x00}},
|
||||
{ 0x006b, 0x00, {0x00,0x00,0x00,0xE0,0x60,0x60,0x66,0x6C,0x78,0x70,0x78,0x6C,0x6C,0x66,0xE6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x006c, 0x00, {0x00,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x006d, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0xEE,0xFE,0xD6,0xD6,0xD6,0xD6,0xD6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x006e, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00}},
|
||||
{ 0x006f, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0070, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00}},
|
||||
{ 0x0071, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x7C,0x0C,0x0C,0x1E,0x00}},
|
||||
{ 0x0072, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x60,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0073, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0,0x7C,0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0074, 0x00, {0x00,0x00,0x00,0x10,0x30,0x30,0x30,0xFC,0x30,0x30,0x30,0x30,0x30,0x36,0x1C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0075, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0076, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0077, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xD6,0xD6,0xFE,0xEE,0x6C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0078, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x6C,0x38,0x38,0x6C,0x6C,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0079, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0xF8,0x00}},
|
||||
{ 0x007a, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x86,0x0C,0x18,0x30,0x60,0xC0,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x007b, 0x00, {0x00,0x00,0x00,0x0E,0x18,0x18,0x18,0x18,0x30,0x18,0x18,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x00}},
|
||||
{ 0x007c, 0x00, {0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00}},
|
||||
{ 0x007d, 0x00, {0x00,0x00,0x00,0xE0,0x30,0x30,0x30,0x30,0x18,0x30,0x30,0x30,0x30,0x30,0xE0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x007e, 0x00, {0x00,0x00,0x00,0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x0042, 0x00, { 0x00, 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0043, 0x00, { 0x00, 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC2, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0044, 0x00, { 0x00, 0x00, 0x00, 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0045, 0x00, { 0x00, 0x00, 0x00, 0xFE, 0x66, 0x62, 0x60, 0x68, 0x78, 0x68, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0046, 0x00, { 0x00, 0x00, 0x00, 0xFE, 0x66, 0x62, 0x60, 0x64, 0x7C, 0x64, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0047, 0x00, { 0x00, 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0, 0xDE, 0xC6, 0xC6, 0xC6, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0048, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0049, 0x00, { 0x00, 0x00, 0x00, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFC, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x004a, 0x00, { 0x00, 0x00, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x004b, 0x00, { 0x00, 0x00, 0x00, 0xE6, 0x66, 0x6C, 0x6C, 0x78, 0x70, 0x78, 0x6C, 0x6C, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x004c, 0x00, { 0x00, 0x00, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x004d, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xEE, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x004e, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xE6, 0xF6, 0xF6, 0xF6, 0xDE, 0xCE, 0xCE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x004f, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0050, 0x00, { 0x00, 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0051, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xD6, 0x7C, 0x1C, 0x0E, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0052, 0x00, { 0x00, 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x78, 0x6C, 0x6C, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0053, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x60, 0x38, 0x0C, 0x06, 0x06, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0054, 0x00, { 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xB4, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0055, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0056, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0057, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xFE, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0058, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0x6C, 0x6C, 0x38, 0x6C, 0x6C, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0059, 0x00, { 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x005a, 0x00, { 0x00, 0x00, 0x00, 0xFE, 0xC6, 0x86, 0x0C, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC2, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x005b, 0x00, { 0x00, 0x00, 0x00, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x005c, 0x00, { 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x005d, 0x00, { 0x00, 0x00, 0x00, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x005e, 0x00, { 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x005f, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0060, 0x00, { 0x00, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0061, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0062, 0x00, { 0x00, 0x00, 0x00, 0xE0, 0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0063, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0064, 0x00, { 0x00, 0x00, 0x00, 0x1C, 0x0C, 0x0C, 0x0C, 0x3C, 0x6C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7E, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0065, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0066, 0x00, { 0x00, 0x00, 0x00, 0x1E, 0x33, 0x30, 0x30, 0x30, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0067, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xCC, 0x78, 0x00 }
|
||||
},
|
||||
{ 0x0068, 0x00, { 0x00, 0x00, 0x00, 0xE0, 0x60, 0x60, 0x60, 0x7C, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0069, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x006a, 0x00, { 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x00, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x6C, 0x38, 0x00 }
|
||||
},
|
||||
{ 0x006b, 0x00, { 0x00, 0x00, 0x00, 0xE0, 0x60, 0x60, 0x66, 0x6C, 0x78, 0x70, 0x78, 0x6C, 0x6C, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x006c, 0x00, { 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x006d, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xEE, 0xFE, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x006e, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x006f, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0070, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00 }
|
||||
},
|
||||
{ 0x0071, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0x0C, 0x1E, 0x00 }
|
||||
},
|
||||
{ 0x0072, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0073, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0x7C, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0074, 0x00, { 0x00, 0x00, 0x00, 0x10, 0x30, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0075, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0076, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0077, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, 0xD6, 0xFE, 0xEE, 0x6C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0078, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x38, 0x6C, 0x6C, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x0079, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x0C, 0xF8, 0x00 }
|
||||
},
|
||||
{ 0x007a, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x86, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x007b, 0x00, { 0x00, 0x00, 0x00, 0x0E, 0x18, 0x18, 0x18, 0x18, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0E, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x007c, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x007d, 0x00, { 0x00, 0x00, 0x00, 0xE0, 0x30, 0x30, 0x30, 0x30, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0xE0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x007e, 0x00, { 0x00, 0x00, 0x00, 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
|
||||
{ 0x00a0, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a1, 0x00, {0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x3C,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a2, 0x00, {0x00,0x00,0x00,0x00,0x18,0x18,0x7C,0xC6,0xC0,0xC0,0xC0,0xC6,0x7C,0x18,0x18,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a3, 0x00, {0x00,0x00,0x00,0x38,0x6C,0x64,0x60,0x60,0xF0,0x60,0x60,0x60,0x60,0xE6,0xFC,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a4, 0x00, {0x00,0x00,0x18,0x00,0x00,0x00,0xC6,0x7C,0xC6,0xC6,0xC6,0xC6,0x7C,0xC6,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a5, 0x00, {0x00,0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x7E,0x18,0x7E,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a6, 0x00, {0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a7, 0x00, {0x00,0x00,0x18,0x7C,0xC6,0x60,0x38,0x6C,0xC6,0xC6,0x6C,0x38,0x0C,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a8, 0x00, {0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00a9, 0x00, {0x00,0x00,0x00,0x00,0x7C,0x82,0x9A,0xA2,0xA2,0xA2,0x9A,0x82,0x7C,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00aa, 0x00, {0x00,0x00,0x00,0x00,0x3C,0x6C,0x6C,0x6C,0x3E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ab, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x6C,0xD8,0x6C,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ac, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ad, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ae, 0x00, {0x00,0x00,0x00,0x00,0x7C,0x82,0xB2,0xAA,0xAA,0xB2,0xAA,0xAA,0x82,0x7C,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00af, 0x00, {0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00b0, 0x00, {0x00,0x00,0x00,0x38,0x6C,0x6C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00b1, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00b2, 0x00, {0x00,0x00,0x00,0x3C,0x66,0x0C,0x18,0x32,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00b3, 0x00, {0x00,0x00,0x00,0x7C,0x06,0x3C,0x06,0x06,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00b4, 0x00, {0x00,0x00,0x00,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00b5, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0xC0,0x00}},
|
||||
{ 0x00b6, 0x00, {0x00,0x00,0x00,0x7F,0xDB,0xDB,0xDB,0xDB,0x7B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00b7, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00b8, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x0C,0x78,0x00,0x00,0x00}},
|
||||
{ 0x00b9, 0x00, {0x00,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ba, 0x00, {0x00,0x00,0x00,0x00,0x38,0x6C,0x6C,0x6C,0x38,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00bb, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x6C,0x36,0x6C,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00bc, 0x00, {0x00,0x00,0x00,0x60,0xE0,0x62,0x66,0x6C,0x18,0x30,0x66,0xCE,0x9A,0x3F,0x06,0x06,0x00,0x00,0x00}},
|
||||
{ 0x00bd, 0x00, {0x00,0x00,0x00,0x60,0xE0,0x62,0x66,0x6C,0x18,0x30,0x60,0xDC,0x86,0x0C,0x18,0x3E,0x00,0x00,0x00}},
|
||||
{ 0x00be, 0x00, {0x00,0x00,0x00,0xE0,0x30,0x62,0x36,0xEC,0x18,0x30,0x66,0xCE,0x9A,0x3F,0x06,0x06,0x00,0x00,0x00}},
|
||||
{ 0x00bf, 0x00, {0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x60,0x60,0xC0,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c0, 0x00, {0x60,0x30,0x18,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c1, 0x00, {0x18,0x30,0x60,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c2, 0x00, {0x10,0x38,0x6C,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c3, 0x00, {0x76,0xDC,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c4, 0x00, {0xCC,0xCC,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c5, 0x00, {0x38,0x6C,0x38,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c6, 0x00, {0x00,0x00,0x00,0x00,0x3E,0x6C,0xCC,0xCC,0xCC,0xFE,0xCC,0xCC,0xCC,0xCC,0xCE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c7, 0x00, {0x00,0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC2,0x66,0x3C,0x18,0x70,0x00,0x00}},
|
||||
{ 0x00c8, 0x00, {0x60,0x30,0x18,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00c9, 0x00, {0x18,0x30,0x60,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ca, 0x00, {0x10,0x38,0x6C,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00cb, 0x00, {0xCC,0xCC,0x00,0x00,0xFE,0x66,0x62,0x60,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00cc, 0x00, {0x60,0x30,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00cd, 0x00, {0x18,0x30,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ce, 0x00, {0x10,0x38,0x6C,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00cf, 0x00, {0xCC,0xCC,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d0, 0x00, {0x00,0x00,0x00,0xF8,0x6C,0x66,0x66,0x66,0xF6,0x66,0x66,0x66,0x66,0x6C,0xF8,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d1, 0x00, {0x76,0xDC,0x00,0x00,0xC6,0xE6,0xE6,0xF6,0xF6,0xDE,0xDE,0xCE,0xCE,0xC6,0xC6,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d2, 0x00, {0x60,0x30,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d3, 0x00, {0x18,0x30,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d4, 0x00, {0x10,0x38,0x6C,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d5, 0x00, {0x76,0xDC,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d6, 0x00, {0xCC,0xCC,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d7, 0x00, {0x10,0x28,0x00,0x00,0x00,0x00,0x00,0xC6,0x6C,0x38,0x38,0x6C,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00d8, 0x00, {0x00,0x00,0x00,0x7C,0xCE,0xCE,0xDE,0xD6,0xD6,0xD6,0xD6,0xF6,0xE6,0xE6,0x7C,0x40,0x00,0x00,0x00}},
|
||||
{ 0x00d9, 0x00, {0x60,0x30,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00da, 0x00, {0x18,0x30,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00db, 0x00, {0x10,0x38,0x6C,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00dc, 0x00, {0xCC,0xCC,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00dd, 0x00, {0x18,0x30,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00de, 0x00, {0x00,0x00,0x10,0x00,0xF0,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x7C,0x60,0xF0,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00df, 0x00, {0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0xCC,0xD8,0xCC,0xC6,0xC6,0xC6,0xC6,0xCC,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e0, 0x00, {0x00,0x30,0x30,0x60,0x30,0x18,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e1, 0x00, {0x00,0x00,0x00,0x18,0x30,0x60,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e2, 0x00, {0x00,0x00,0x00,0x10,0x38,0x6C,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e3, 0x00, {0x00,0x00,0x00,0x00,0x76,0xDC,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e4, 0x00, {0x00,0x00,0x00,0xCC,0xCC,0x00,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e5, 0x00, {0x00,0x00,0x00,0x38,0x6C,0x38,0x00,0x78,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e6, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0x36,0x36,0x7E,0xD8,0xD8,0xD8,0x6E,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e7, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0,0xC0,0xC0,0xC0,0xC6,0x7C,0x18,0x70,0x00,0x00}},
|
||||
{ 0x00e8, 0x00, {0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00e9, 0x00, {0x00,0x00,0x00,0x0C,0x18,0x30,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ea, 0x00, {0x00,0x00,0x00,0x10,0x38,0x6C,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00eb, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0x00,0x00,0x7C,0xC6,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ec, 0x00, {0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ed, 0x00, {0x00,0x00,0x00,0x0C,0x18,0x30,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ee, 0x00, {0x00,0x00,0x00,0x18,0x3C,0x66,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00ef, 0x00, {0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f0, 0x00, {0x00,0x00,0x00,0x34,0x18,0x2C,0x0C,0x06,0x3E,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f1, 0x00, {0x00,0x00,0x00,0x00,0x76,0xDC,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f2, 0x00, {0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f3, 0x00, {0x00,0x00,0x00,0x18,0x30,0x60,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f4, 0x00, {0x00,0x00,0x00,0x10,0x38,0x6C,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f5, 0x00, {0x00,0x00,0x00,0x00,0x76,0xDC,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f6, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f7, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x7E,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f8, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xCE,0xDE,0xD6,0xF6,0xE6,0xC6,0x7C,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00f9, 0x00, {0x00,0x00,0x00,0x60,0x30,0x18,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00fa, 0x00, {0x00,0x00,0x00,0x18,0x30,0x60,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00fb, 0x00, {0x00,0x00,0x00,0x30,0x78,0xCC,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00fc, 0x00, {0x00,0x00,0x00,0xCC,0xCC,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00}},
|
||||
{ 0x00fd, 0x00, {0x00,0x00,0x00,0x0C,0x18,0x30,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0xF8,0x00}},
|
||||
{ 0x00fe, 0x00, {0x00,0x00,0x00,0xE0,0x60,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00}},
|
||||
{ 0x00ff, 0x00, {0x00,0x00,0x00,0xC6,0xC6,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0x78,0x00}},
|
||||
{ 0x00a0, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a1, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a2, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a3, 0x00, { 0x00, 0x00, 0x00, 0x38, 0x6C, 0x64, 0x60, 0x60, 0xF0, 0x60, 0x60, 0x60, 0x60, 0xE6, 0xFC, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a4, 0x00, { 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xC6, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a5, 0x00, { 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a6, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a7, 0x00, { 0x00, 0x00, 0x18, 0x7C, 0xC6, 0x60, 0x38, 0x6C, 0xC6, 0xC6, 0x6C, 0x38, 0x0C, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a8, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00a9, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x82, 0x9A, 0xA2, 0xA2, 0xA2, 0x9A, 0x82, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00aa, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x6C, 0x6C, 0x6C, 0x3E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ab, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6C, 0xD8, 0x6C, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ac, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ad, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ae, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x82, 0xB2, 0xAA, 0xAA, 0xB2, 0xAA, 0xAA, 0x82, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00af, 0x00, { 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b0, 0x00, { 0x00, 0x00, 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b1, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b2, 0x00, { 0x00, 0x00, 0x00, 0x3C, 0x66, 0x0C, 0x18, 0x32, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b3, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0x06, 0x3C, 0x06, 0x06, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b4, 0x00, { 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b5, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xC0, 0x00 }
|
||||
},
|
||||
{ 0x00b6, 0x00, { 0x00, 0x00, 0x00, 0x7F, 0xDB, 0xDB, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b7, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b8, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0C, 0x78, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00b9, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x38, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ba, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x38, 0x6C, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00bb, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x6C, 0x36, 0x6C, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00bc, 0x00, { 0x00, 0x00, 0x00, 0x60, 0xE0, 0x62, 0x66, 0x6C, 0x18, 0x30, 0x66, 0xCE, 0x9A, 0x3F, 0x06, 0x06, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00bd, 0x00, { 0x00, 0x00, 0x00, 0x60, 0xE0, 0x62, 0x66, 0x6C, 0x18, 0x30, 0x60, 0xDC, 0x86, 0x0C, 0x18, 0x3E, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00be, 0x00, { 0x00, 0x00, 0x00, 0xE0, 0x30, 0x62, 0x36, 0xEC, 0x18, 0x30, 0x66, 0xCE, 0x9A, 0x3F, 0x06, 0x06, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00bf, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c0, 0x00, { 0x60, 0x30, 0x18, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c1, 0x00, { 0x18, 0x30, 0x60, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c2, 0x00, { 0x10, 0x38, 0x6C, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c3, 0x00, { 0x76, 0xDC, 0x00, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c4, 0x00, { 0xCC, 0xCC, 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c5, 0x00, { 0x38, 0x6C, 0x38, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c6, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x6C, 0xCC, 0xCC, 0xCC, 0xFE, 0xCC, 0xCC, 0xCC, 0xCC, 0xCE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c7, 0x00, { 0x00, 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC2, 0x66, 0x3C, 0x18, 0x70, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c8, 0x00, { 0x60, 0x30, 0x18, 0x00, 0xFE, 0x66, 0x62, 0x60, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00c9, 0x00, { 0x18, 0x30, 0x60, 0x00, 0xFE, 0x66, 0x62, 0x60, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ca, 0x00, { 0x10, 0x38, 0x6C, 0x00, 0xFE, 0x66, 0x62, 0x60, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00cb, 0x00, { 0xCC, 0xCC, 0x00, 0x00, 0xFE, 0x66, 0x62, 0x60, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00cc, 0x00, { 0x60, 0x30, 0x00, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00cd, 0x00, { 0x18, 0x30, 0x00, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ce, 0x00, { 0x10, 0x38, 0x6C, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00cf, 0x00, { 0xCC, 0xCC, 0x00, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d0, 0x00, { 0x00, 0x00, 0x00, 0xF8, 0x6C, 0x66, 0x66, 0x66, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d1, 0x00, { 0x76, 0xDC, 0x00, 0x00, 0xC6, 0xE6, 0xE6, 0xF6, 0xF6, 0xDE, 0xDE, 0xCE, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d2, 0x00, { 0x60, 0x30, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d3, 0x00, { 0x18, 0x30, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d4, 0x00, { 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d5, 0x00, { 0x76, 0xDC, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d6, 0x00, { 0xCC, 0xCC, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d7, 0x00, { 0x10, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x38, 0x6C, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d8, 0x00, { 0x00, 0x00, 0x00, 0x7C, 0xCE, 0xCE, 0xDE, 0xD6, 0xD6, 0xD6, 0xD6, 0xF6, 0xE6, 0xE6, 0x7C, 0x40, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00d9, 0x00, { 0x60, 0x30, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00da, 0x00, { 0x18, 0x30, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00db, 0x00, { 0x10, 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00dc, 0x00, { 0xCC, 0xCC, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00dd, 0x00, { 0x18, 0x30, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00de, 0x00, { 0x00, 0x00, 0x10, 0x00, 0xF0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00df, 0x00, { 0x00, 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xD8, 0xCC, 0xC6, 0xC6, 0xC6, 0xC6, 0xCC, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e0, 0x00, { 0x00, 0x30, 0x30, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e1, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e2, 0x00, { 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0x00, 0x78, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e3, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0x00, 0x78, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e4, 0x00, { 0x00, 0x00, 0x00, 0xCC, 0xCC, 0x00, 0x00, 0x78, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e5, 0x00, { 0x00, 0x00, 0x00, 0x38, 0x6C, 0x38, 0x00, 0x78, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e6, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x36, 0x36, 0x7E, 0xD8, 0xD8, 0xD8, 0x6E, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e7, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x18, 0x70, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e8, 0x00, { 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00e9, 0x00, { 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7C, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ea, 0x00, { 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00eb, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ec, 0x00, { 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ed, 0x00, { 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ee, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x3C, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00ef, 0x00, { 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f0, 0x00, { 0x00, 0x00, 0x00, 0x34, 0x18, 0x2C, 0x0C, 0x06, 0x3E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f1, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f2, 0x00, { 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f3, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f4, 0x00, { 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f5, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f6, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f7, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f8, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xCE, 0xDE, 0xD6, 0xF6, 0xE6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00f9, 0x00, { 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00fa, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00fb, 0x00, { 0x00, 0x00, 0x00, 0x30, 0x78, 0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00fc, 0x00, { 0x00, 0x00, 0x00, 0xCC, 0xCC, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ 0x00fd, 0x00, { 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x0C, 0xF8, 0x00 }
|
||||
},
|
||||
{ 0x00fe, 0x00, { 0x00, 0x00, 0x00, 0xE0, 0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00 }
|
||||
},
|
||||
{ 0x00ff, 0x00, { 0x00, 0x00, 0x00, 0xC6, 0xC6, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x0C, 0x78, 0x00 }
|
||||
},
|
||||
|
||||
{ (CHAR16)BOXDRAW_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_RIGHT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_LEFT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_UP_RIGHT, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_UP_LEFT, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_RIGHT, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_LEFT, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_UP_HORIZONTAL, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_HORIZONTAL, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_VERTICAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_RIGHT_DOUBLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_DOUBLE_RIGHT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_DOWN_RIGHT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x30,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_LEFT_DOUBLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_DOUBLE_LEFT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_DOWN_LEFT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x06,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_UP_RIGHT_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_UP_DOUBLE_RIGHT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_UP_RIGHT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_UP_LEFT_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_UP_DOUBLE_LEFT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_UP_LEFT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF6,0x06,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_RIGHT_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_DOUBLE_RIGHT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_VERTICAL_RIGHT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_LEFT_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_DOUBLE_LEFT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_VERTICAL_LEFT, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF6,0x06,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_HORIZONTAL_DOUBLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_DOWN_DOUBLE_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_DOWN_HORIZONTAL, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xF7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_UP_HORIZONTAL_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_UP_DOUBLE_HORIZONTAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_UP_HORIZONTAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF7,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE, 0x00, {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFF,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL, 0x00, {0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF7,0x00,0xF7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36}},
|
||||
{ (CHAR16)BOXDRAW_HORIZONTAL, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_RIGHT, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_LEFT, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_RIGHT, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_LEFT, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_RIGHT, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_LEFT, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_HORIZONTAL, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_HORIZONTAL, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_HORIZONTAL, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_HORIZONTAL, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_VERTICAL, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_RIGHT_DOUBLE, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_DOUBLE_RIGHT, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_DOWN_RIGHT, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_LEFT_DOUBLE, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_DOUBLE_LEFT, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_DOWN_LEFT, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_RIGHT_DOUBLE, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_DOUBLE_RIGHT, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_UP_RIGHT, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_LEFT_DOUBLE, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_DOUBLE_LEFT, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_UP_LEFT, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_RIGHT_DOUBLE, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_DOUBLE_RIGHT, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_VERTICAL_RIGHT, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_LEFT_DOUBLE, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_DOUBLE_LEFT, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_VERTICAL_LEFT, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_HORIZONTAL_DOUBLE, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOWN_DOUBLE_HORIZONTAL, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_DOWN_HORIZONTAL, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_HORIZONTAL_DOUBLE, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_UP_DOUBLE_HORIZONTAL, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_UP_HORIZONTAL, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE, 0x00, { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
{ (CHAR16)BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL, 0x00, { 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 }
|
||||
},
|
||||
|
||||
{ (CHAR16)BLOCKELEMENT_FULL_BLOCK, 0x00, {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}},
|
||||
{ (CHAR16)BLOCKELEMENT_LIGHT_SHADE, 0x00, {0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22}},
|
||||
{ (CHAR16)BLOCKELEMENT_FULL_BLOCK, 0x00, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
{ (CHAR16)BLOCKELEMENT_LIGHT_SHADE, 0x00, { 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22 }
|
||||
},
|
||||
|
||||
{ (CHAR16)GEOMETRICSHAPE_RIGHT_TRIANGLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF8,0xFE,0xF8,0xF0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)GEOMETRICSHAPE_LEFT_TRIANGLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x06,0x0E,0x1E,0x3E,0xFE,0x3E,0x1E,0x0E,0x06,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)GEOMETRICSHAPE_UP_TRIANGLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x38,0x7C,0x7C,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)GEOMETRICSHAPE_DOWN_TRIANGLE, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x7C,0x7C,0x38,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)GEOMETRICSHAPE_RIGHT_TRIANGLE, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFE, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)GEOMETRICSHAPE_LEFT_TRIANGLE, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1E, 0x3E, 0xFE, 0x3E, 0x1E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)GEOMETRICSHAPE_UP_TRIANGLE, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7C, 0x7C, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)GEOMETRICSHAPE_DOWN_TRIANGLE, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x7C, 0x7C, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
|
||||
{ (CHAR16)ARROW_UP, 0x00, {0x00,0x00,0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)ARROW_DOWN, 0x00, {0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)ARROW_LEFT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x20,0x60,0x60,0xFE,0xFE,0x60,0x60,0x20,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)ARROW_RIGHT, 0x00, {0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x0C,0xFE,0xFE,0x0C,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x00}},
|
||||
{ (CHAR16)ARROW_UP, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)ARROW_DOWN, 0x00, { 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)ARROW_LEFT, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
{ (CHAR16)ARROW_RIGHT, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0C, 0xFE, 0xFE, 0x0C, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
},
|
||||
|
||||
{ 0x0000, 0x00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} //EOL
|
||||
{ 0x0000, 0x00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
} // EOL
|
||||
};
|
||||
|
||||
// Get available Unicode glyphs narrow fonts(8*19 pixels) size.
|
||||
UINT32 mNarrowFontSize = sizeof (gUsStdNarrowGlyphData);
|
||||
|
||||
UINT32 mNarrowFontSize = sizeof (gUsStdNarrowGlyphData);
|
||||
|
@@ -10,14 +10,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#include <PiDxe.h>
|
||||
#include <Library/UefiLib.h>
|
||||
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL mGraphicsOutputComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL mGraphicsOutputComponentName2;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL mGraphicsOutputComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL mGraphicsOutputComponentName2;
|
||||
|
||||
//
|
||||
// Driver name table for GraphicsOutput module.
|
||||
// It is shared by the implementation of ComponentName & ComponentName2 Protocol.
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mGraphicsOutputDriverNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mGraphicsOutputDriverNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
L"Generic Graphics Output Driver"
|
||||
@@ -80,7 +80,7 @@ GraphicsOutputComponentNameGetDriverName (
|
||||
This->SupportedLanguages,
|
||||
mGraphicsOutputDriverNameTable,
|
||||
DriverName,
|
||||
(BOOLEAN) (This == &mGraphicsOutputComponentName)
|
||||
(BOOLEAN)(This == &mGraphicsOutputComponentName)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -155,11 +155,11 @@ GraphicsOutputComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsOutputComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
return EFI_UNSUPPORTED;
|
||||
@@ -177,8 +177,8 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL mGraphicsOutputCompon
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL mGraphicsOutputComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) GraphicsOutputComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) GraphicsOutputComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL mGraphicsOutputComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)GraphicsOutputComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)GraphicsOutputComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
@@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
|
||||
#include "GraphicsOutput.h"
|
||||
CONST ACPI_ADR_DEVICE_PATH mGraphicsOutputAdrNode = {
|
||||
CONST ACPI_ADR_DEVICE_PATH mGraphicsOutputAdrNode = {
|
||||
{
|
||||
ACPI_DEVICE_PATH,
|
||||
ACPI_ADR_DP,
|
||||
@@ -17,7 +17,7 @@ CONST ACPI_ADR_DEVICE_PATH mGraphicsOutputAdrNode = {
|
||||
ACPI_DISPLAY_ADR (1, 0, 0, 1, 0, ACPI_ADR_DISPLAY_TYPE_VGA, 0, 0)
|
||||
};
|
||||
|
||||
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB mDefaultGraphicsDeviceInfo = {
|
||||
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB mDefaultGraphicsDeviceInfo = {
|
||||
MAX_UINT16, MAX_UINT16, MAX_UINT16, MAX_UINT16, MAX_UINT8, MAX_UINT8
|
||||
};
|
||||
|
||||
@@ -25,7 +25,7 @@ EFI_PEI_GRAPHICS_DEVICE_INFO_HOB mDefaultGraphicsDeviceInfo = {
|
||||
// The driver should only start on one graphics controller.
|
||||
// So a global flag is used to remember that the driver is already started.
|
||||
//
|
||||
BOOLEAN mDriverStarted = FALSE;
|
||||
BOOLEAN mDriverStarted = FALSE;
|
||||
|
||||
/**
|
||||
Returns information for an available graphics mode that the graphics device
|
||||
@@ -50,7 +50,7 @@ GraphicsOutputQueryMode (
|
||||
OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
|
||||
)
|
||||
{
|
||||
if (This == NULL || Info == NULL || SizeOfInfo == NULL || ModeNumber >= This->Mode->MaxMode) {
|
||||
if ((This == NULL) || (Info == NULL) || (SizeOfInfo == NULL) || (ModeNumber >= This->Mode->MaxMode)) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
@@ -74,13 +74,13 @@ GraphicsOutputQueryMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsOutputSetMode (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN UINT32 ModeNumber
|
||||
)
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN UINT32 ModeNumber
|
||||
)
|
||||
{
|
||||
RETURN_STATUS Status;
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Black;
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA *Private;
|
||||
RETURN_STATUS Status;
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Black;
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA *Private;
|
||||
|
||||
if (ModeNumber >= This->Mode->MaxMode) {
|
||||
return EFI_UNSUPPORTED;
|
||||
@@ -88,17 +88,19 @@ GraphicsOutputSetMode (
|
||||
|
||||
Private = GRAPHICS_OUTPUT_PRIVATE_FROM_THIS (This);
|
||||
|
||||
Black.Blue = 0;
|
||||
Black.Green = 0;
|
||||
Black.Red = 0;
|
||||
Black.Blue = 0;
|
||||
Black.Green = 0;
|
||||
Black.Red = 0;
|
||||
Black.Reserved = 0;
|
||||
|
||||
Status = FrameBufferBlt (
|
||||
Private->FrameBufferBltLibConfigure,
|
||||
&Black,
|
||||
EfiBltVideoFill,
|
||||
0, 0,
|
||||
0, 0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
This->Mode->Info->HorizontalResolution,
|
||||
This->Mode->Info->VerticalResolution,
|
||||
0
|
||||
@@ -132,21 +134,21 @@ GraphicsOutputSetMode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsOutputBlt (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta OPTIONAL
|
||||
)
|
||||
{
|
||||
RETURN_STATUS Status;
|
||||
EFI_TPL Tpl;
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA *Private;
|
||||
RETURN_STATUS Status;
|
||||
EFI_TPL Tpl;
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA *Private;
|
||||
|
||||
Private = GRAPHICS_OUTPUT_PRIVATE_FROM_THIS (This);
|
||||
//
|
||||
@@ -154,13 +156,17 @@ GraphicsOutputBlt (
|
||||
// We would not want a timer based event (Cursor, ...) to come in while we are
|
||||
// doing this operation.
|
||||
//
|
||||
Tpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
Tpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
Status = FrameBufferBlt (
|
||||
Private->FrameBufferBltLibConfigure,
|
||||
BltBuffer,
|
||||
BltOperation,
|
||||
SourceX, SourceY,
|
||||
DestinationX, DestinationY, Width, Height,
|
||||
SourceX,
|
||||
SourceY,
|
||||
DestinationX,
|
||||
DestinationY,
|
||||
Width,
|
||||
Height,
|
||||
Delta
|
||||
);
|
||||
gBS->RestoreTPL (Tpl);
|
||||
@@ -168,7 +174,7 @@ GraphicsOutputBlt (
|
||||
return RETURN_ERROR (Status) ? EFI_INVALID_PARAMETER : EFI_SUCCESS;
|
||||
}
|
||||
|
||||
CONST GRAPHICS_OUTPUT_PRIVATE_DATA mGraphicsOutputInstanceTemplate = {
|
||||
CONST GRAPHICS_OUTPUT_PRIVATE_DATA mGraphicsOutputInstanceTemplate = {
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA_SIGNATURE, // Signature
|
||||
NULL, // GraphicsOutputHandle
|
||||
{
|
||||
@@ -206,14 +212,14 @@ CONST GRAPHICS_OUTPUT_PRIVATE_DATA mGraphicsOutputInstanceTemplate = {
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsOutputDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_STATUS Status;
|
||||
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
|
||||
//
|
||||
// Since there is only one GraphicsInfo HOB, the driver only manages one video device.
|
||||
@@ -228,7 +234,7 @@ GraphicsOutputDriverBindingSupported (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiPciIoProtocolGuid,
|
||||
(VOID **) &PciIo,
|
||||
(VOID **)&PciIo,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -236,9 +242,11 @@ GraphicsOutputDriverBindingSupported (
|
||||
if (Status == EFI_ALREADY_STARTED) {
|
||||
Status = EFI_SUCCESS;
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
gBS->CloseProtocol (
|
||||
Controller,
|
||||
&gEfiPciIoProtocolGuid,
|
||||
@@ -252,7 +260,7 @@ GraphicsOutputDriverBindingSupported (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &DevicePath,
|
||||
(VOID **)&DevicePath,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -260,9 +268,11 @@ GraphicsOutputDriverBindingSupported (
|
||||
if (Status == EFI_ALREADY_STARTED) {
|
||||
Status = EFI_SUCCESS;
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
gBS->CloseProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
@@ -272,7 +282,8 @@ GraphicsOutputDriverBindingSupported (
|
||||
|
||||
if ((RemainingDevicePath == NULL) ||
|
||||
IsDevicePathEnd (RemainingDevicePath) ||
|
||||
CompareMem (RemainingDevicePath, &mGraphicsOutputAdrNode, sizeof (mGraphicsOutputAdrNode)) == 0) {
|
||||
(CompareMem (RemainingDevicePath, &mGraphicsOutputAdrNode, sizeof (mGraphicsOutputAdrNode)) == 0))
|
||||
{
|
||||
return EFI_SUCCESS;
|
||||
} else {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
@@ -293,29 +304,29 @@ GraphicsOutputDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsOutputDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
RETURN_STATUS ReturnStatus;
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA *Private;
|
||||
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||
EFI_DEVICE_PATH *PciDevicePath;
|
||||
PCI_TYPE00 Pci;
|
||||
UINT8 Index;
|
||||
EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Resources;
|
||||
VOID *HobStart;
|
||||
EFI_PEI_GRAPHICS_INFO_HOB *GraphicsInfo;
|
||||
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *DeviceInfo;
|
||||
EFI_PHYSICAL_ADDRESS FrameBufferBase;
|
||||
EFI_STATUS Status;
|
||||
RETURN_STATUS ReturnStatus;
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA *Private;
|
||||
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||
EFI_DEVICE_PATH *PciDevicePath;
|
||||
PCI_TYPE00 Pci;
|
||||
UINT8 Index;
|
||||
EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Resources;
|
||||
VOID *HobStart;
|
||||
EFI_PEI_GRAPHICS_INFO_HOB *GraphicsInfo;
|
||||
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *DeviceInfo;
|
||||
EFI_PHYSICAL_ADDRESS FrameBufferBase;
|
||||
|
||||
FrameBufferBase = 0;
|
||||
|
||||
HobStart = GetFirstGuidHob (&gEfiGraphicsInfoHobGuid);
|
||||
ASSERT ((HobStart != NULL) && (GET_GUID_HOB_DATA_SIZE (HobStart) == sizeof (EFI_PEI_GRAPHICS_INFO_HOB)));
|
||||
GraphicsInfo = (EFI_PEI_GRAPHICS_INFO_HOB *) (GET_GUID_HOB_DATA (HobStart));
|
||||
GraphicsInfo = (EFI_PEI_GRAPHICS_INFO_HOB *)(GET_GUID_HOB_DATA (HobStart));
|
||||
|
||||
HobStart = GetFirstGuidHob (&gEfiGraphicsDeviceInfoHobGuid);
|
||||
if ((HobStart == NULL) || (GET_GUID_HOB_DATA_SIZE (HobStart) < sizeof (*DeviceInfo))) {
|
||||
@@ -325,15 +336,21 @@ GraphicsOutputDriverBindingStart (
|
||||
DeviceInfo = &mDefaultGraphicsDeviceInfo;
|
||||
DEBUG ((DEBUG_INFO, "[%a]: GraphicsDeviceInfo HOB doesn't exist!\n", gEfiCallerBaseName));
|
||||
} else {
|
||||
DeviceInfo = (EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *) (GET_GUID_HOB_DATA (HobStart));
|
||||
DEBUG ((DEBUG_INFO, "[%a]: GraphicsDeviceInfo HOB:\n"
|
||||
" VendorId = %04x, DeviceId = %04x,\n"
|
||||
" RevisionId = %02x, BarIndex = %x,\n"
|
||||
" SubsystemVendorId = %04x, SubsystemId = %04x\n",
|
||||
gEfiCallerBaseName,
|
||||
DeviceInfo->VendorId, DeviceInfo->DeviceId,
|
||||
DeviceInfo->RevisionId, DeviceInfo->BarIndex,
|
||||
DeviceInfo->SubsystemVendorId, DeviceInfo->SubsystemId));
|
||||
DeviceInfo = (EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *)(GET_GUID_HOB_DATA (HobStart));
|
||||
DEBUG ((
|
||||
DEBUG_INFO,
|
||||
"[%a]: GraphicsDeviceInfo HOB:\n"
|
||||
" VendorId = %04x, DeviceId = %04x,\n"
|
||||
" RevisionId = %02x, BarIndex = %x,\n"
|
||||
" SubsystemVendorId = %04x, SubsystemId = %04x\n",
|
||||
gEfiCallerBaseName,
|
||||
DeviceInfo->VendorId,
|
||||
DeviceInfo->DeviceId,
|
||||
DeviceInfo->RevisionId,
|
||||
DeviceInfo->BarIndex,
|
||||
DeviceInfo->SubsystemVendorId,
|
||||
DeviceInfo->SubsystemId
|
||||
));
|
||||
}
|
||||
|
||||
//
|
||||
@@ -342,7 +359,7 @@ GraphicsOutputDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiPciIoProtocolGuid,
|
||||
(VOID **) &PciIo,
|
||||
(VOID **)&PciIo,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -350,12 +367,13 @@ GraphicsOutputDriverBindingStart (
|
||||
if (Status == EFI_ALREADY_STARTED) {
|
||||
Status = EFI_SUCCESS;
|
||||
}
|
||||
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &PciDevicePath,
|
||||
(VOID **)&PciDevicePath,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -363,6 +381,7 @@ GraphicsOutputDriverBindingStart (
|
||||
if (Status == EFI_ALREADY_STARTED) {
|
||||
Status = EFI_SUCCESS;
|
||||
}
|
||||
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
@@ -371,13 +390,14 @@ GraphicsOutputDriverBindingStart (
|
||||
Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint8, 0, sizeof (Pci), &Pci);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
if (!IS_PCI_DISPLAY (&Pci) || (
|
||||
((DeviceInfo->VendorId != MAX_UINT16) && (DeviceInfo->VendorId != Pci.Hdr.VendorId)) ||
|
||||
((DeviceInfo->DeviceId != MAX_UINT16) && (DeviceInfo->DeviceId != Pci.Hdr.DeviceId)) ||
|
||||
((DeviceInfo->RevisionId != MAX_UINT8) && (DeviceInfo->RevisionId != Pci.Hdr.RevisionID)) ||
|
||||
((DeviceInfo->SubsystemVendorId != MAX_UINT16) && (DeviceInfo->SubsystemVendorId != Pci.Device.SubsystemVendorID)) ||
|
||||
((DeviceInfo->SubsystemId != MAX_UINT16) && (DeviceInfo->SubsystemId != Pci.Device.SubsystemID))
|
||||
((DeviceInfo->VendorId != MAX_UINT16) && (DeviceInfo->VendorId != Pci.Hdr.VendorId)) ||
|
||||
((DeviceInfo->DeviceId != MAX_UINT16) && (DeviceInfo->DeviceId != Pci.Hdr.DeviceId)) ||
|
||||
((DeviceInfo->RevisionId != MAX_UINT8) && (DeviceInfo->RevisionId != Pci.Hdr.RevisionID)) ||
|
||||
((DeviceInfo->SubsystemVendorId != MAX_UINT16) && (DeviceInfo->SubsystemVendorId != Pci.Device.SubsystemVendorID)) ||
|
||||
((DeviceInfo->SubsystemId != MAX_UINT16) && (DeviceInfo->SubsystemId != Pci.Device.SubsystemID))
|
||||
)
|
||||
)
|
||||
) {
|
||||
{
|
||||
//
|
||||
// It's not a video device, or device infomation doesn't match.
|
||||
//
|
||||
@@ -393,21 +413,30 @@ GraphicsOutputDriverBindingStart (
|
||||
if ((DeviceInfo->BarIndex != MAX_UINT8) && (DeviceInfo->BarIndex != Index)) {
|
||||
continue;
|
||||
}
|
||||
Status = PciIo->GetBarAttributes (PciIo, Index, NULL, (VOID**) &Resources);
|
||||
|
||||
Status = PciIo->GetBarAttributes (PciIo, Index, NULL, (VOID **)&Resources);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
DEBUG ((DEBUG_INFO, "[%a]: BAR[%d]: Base = %lx, Length = %lx\n",
|
||||
gEfiCallerBaseName, Index, Resources->AddrRangeMin, Resources->AddrLen));
|
||||
DEBUG ((
|
||||
DEBUG_INFO,
|
||||
"[%a]: BAR[%d]: Base = %lx, Length = %lx\n",
|
||||
gEfiCallerBaseName,
|
||||
Index,
|
||||
Resources->AddrRangeMin,
|
||||
Resources->AddrLen
|
||||
));
|
||||
if ((Resources->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) &&
|
||||
(Resources->Len == (UINT16) (sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3)) &&
|
||||
(Resources->Len == (UINT16)(sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3)) &&
|
||||
(Resources->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) &&
|
||||
(Resources->AddrLen >= GraphicsInfo->FrameBufferSize)
|
||||
) {
|
||||
)
|
||||
{
|
||||
FrameBufferBase = Resources->AddrRangeMin;
|
||||
DEBUG ((DEBUG_INFO, "[%a]: ... matched!\n", gEfiCallerBaseName));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Index == MAX_PCI_BAR) {
|
||||
Status = EFI_UNSUPPORTED;
|
||||
}
|
||||
@@ -430,7 +459,7 @@ GraphicsOutputDriverBindingStart (
|
||||
|
||||
Private->GraphicsOutputMode.FrameBufferBase = FrameBufferBase;
|
||||
Private->GraphicsOutputMode.FrameBufferSize = GraphicsInfo->FrameBufferSize;
|
||||
Private->GraphicsOutputMode.Info = &GraphicsInfo->GraphicsMode;
|
||||
Private->GraphicsOutputMode.Info = &GraphicsInfo->GraphicsMode;
|
||||
|
||||
//
|
||||
// Fix up Mode pointer in GraphicsOutput
|
||||
@@ -463,7 +492,7 @@ GraphicsOutputDriverBindingStart (
|
||||
// Create the FrameBufferBltLib configuration.
|
||||
//
|
||||
ReturnStatus = FrameBufferBltConfigure (
|
||||
(VOID *) (UINTN) Private->GraphicsOutput.Mode->FrameBufferBase,
|
||||
(VOID *)(UINTN)Private->GraphicsOutput.Mode->FrameBufferBase,
|
||||
Private->GraphicsOutput.Mode->Info,
|
||||
Private->FrameBufferBltLibConfigure,
|
||||
&Private->FrameBufferBltLibConfigureSize
|
||||
@@ -472,19 +501,20 @@ GraphicsOutputDriverBindingStart (
|
||||
Private->FrameBufferBltLibConfigure = AllocatePool (Private->FrameBufferBltLibConfigureSize);
|
||||
if (Private->FrameBufferBltLibConfigure != NULL) {
|
||||
ReturnStatus = FrameBufferBltConfigure (
|
||||
(VOID *) (UINTN) Private->GraphicsOutput.Mode->FrameBufferBase,
|
||||
(VOID *)(UINTN)Private->GraphicsOutput.Mode->FrameBufferBase,
|
||||
Private->GraphicsOutput.Mode->Info,
|
||||
Private->FrameBufferBltLibConfigure,
|
||||
&Private->FrameBufferBltLibConfigureSize
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (RETURN_ERROR (ReturnStatus)) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto RestorePciAttributes;
|
||||
}
|
||||
|
||||
Private->DevicePath = AppendDevicePathNode (PciDevicePath, (EFI_DEVICE_PATH_PROTOCOL *) &mGraphicsOutputAdrNode);
|
||||
Private->DevicePath = AppendDevicePathNode (PciDevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&mGraphicsOutputAdrNode);
|
||||
if (Private->DevicePath == NULL) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto RestorePciAttributes;
|
||||
@@ -492,8 +522,10 @@ GraphicsOutputDriverBindingStart (
|
||||
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&Private->GraphicsOutputHandle,
|
||||
&gEfiGraphicsOutputProtocolGuid, &Private->GraphicsOutput,
|
||||
&gEfiDevicePathProtocolGuid, Private->DevicePath,
|
||||
&gEfiGraphicsOutputProtocolGuid,
|
||||
&Private->GraphicsOutput,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
Private->DevicePath,
|
||||
NULL
|
||||
);
|
||||
|
||||
@@ -501,7 +533,7 @@ GraphicsOutputDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiPciIoProtocolGuid,
|
||||
(VOID **) &Private->PciIo,
|
||||
(VOID **)&Private->PciIo,
|
||||
This->DriverBindingHandle,
|
||||
Private->GraphicsOutputHandle,
|
||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||
@@ -511,8 +543,10 @@ GraphicsOutputDriverBindingStart (
|
||||
} else {
|
||||
gBS->UninstallMultipleProtocolInterfaces (
|
||||
Private->GraphicsOutputHandle,
|
||||
&gEfiGraphicsOutputProtocolGuid, &Private->GraphicsOutput,
|
||||
&gEfiDevicePathProtocolGuid, Private->DevicePath,
|
||||
&gEfiGraphicsOutputProtocolGuid,
|
||||
&Private->GraphicsOutput,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
Private->DevicePath,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
@@ -537,9 +571,11 @@ FreeMemory:
|
||||
if (Private->DevicePath != NULL) {
|
||||
FreePool (Private->DevicePath);
|
||||
}
|
||||
|
||||
if (Private->FrameBufferBltLibConfigure != NULL) {
|
||||
FreePool (Private->FrameBufferBltLibConfigure);
|
||||
}
|
||||
|
||||
FreePool (Private);
|
||||
}
|
||||
}
|
||||
@@ -566,6 +602,7 @@ CloseProtocols:
|
||||
Controller
|
||||
);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
@@ -584,18 +621,17 @@ CloseProtocols:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GraphicsOutputDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop;
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA *Private;
|
||||
EFI_STATUS Status;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop;
|
||||
GRAPHICS_OUTPUT_PRIVATE_DATA *Private;
|
||||
|
||||
if (NumberOfChildren == 0) {
|
||||
|
||||
//
|
||||
// Close the PCI I/O Protocol
|
||||
//
|
||||
@@ -621,7 +657,7 @@ GraphicsOutputDriverBindingStop (
|
||||
Status = gBS->OpenProtocol (
|
||||
ChildHandleBuffer[0],
|
||||
&gEfiGraphicsOutputProtocolGuid,
|
||||
(VOID **) &Gop,
|
||||
(VOID **)&Gop,
|
||||
This->DriverBindingHandle,
|
||||
ChildHandleBuffer[0],
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -644,8 +680,10 @@ GraphicsOutputDriverBindingStop (
|
||||
//
|
||||
Status = gBS->UninstallMultipleProtocolInterfaces (
|
||||
Private->GraphicsOutputHandle,
|
||||
&gEfiGraphicsOutputProtocolGuid, &Private->GraphicsOutput,
|
||||
&gEfiDevicePathProtocolGuid, Private->DevicePath,
|
||||
&gEfiGraphicsOutputProtocolGuid,
|
||||
&Private->GraphicsOutput,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
Private->DevicePath,
|
||||
NULL
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
@@ -667,17 +705,18 @@ GraphicsOutputDriverBindingStop (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiPciIoProtocolGuid,
|
||||
(VOID **) &Private->PciIo,
|
||||
(VOID **)&Private->PciIo,
|
||||
This->DriverBindingHandle,
|
||||
Private->GraphicsOutputHandle,
|
||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
EFI_DRIVER_BINDING_PROTOCOL mGraphicsOutputDriverBinding = {
|
||||
EFI_DRIVER_BINDING_PROTOCOL mGraphicsOutputDriverBinding = {
|
||||
GraphicsOutputDriverBindingSupported,
|
||||
GraphicsOutputDriverBindingStart,
|
||||
GraphicsOutputDriverBindingStop,
|
||||
@@ -702,12 +741,12 @@ EFI_DRIVER_BINDING_PROTOCOL mGraphicsOutputDriverBinding = {
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InitializeGraphicsOutput (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
VOID *HobStart;
|
||||
EFI_STATUS Status;
|
||||
VOID *HobStart;
|
||||
|
||||
HobStart = GetFirstGuidHob (&gEfiGraphicsInfoHobGuid);
|
||||
|
||||
|
@@ -6,6 +6,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _GRAPHICS_OUTPUT_DXE_H_
|
||||
#define _GRAPHICS_OUTPUT_DXE_H_
|
||||
#include <PiDxe.h>
|
||||
@@ -33,21 +34,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#define MAX_PCI_BAR 6
|
||||
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
EFI_HANDLE GraphicsOutputHandle;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE GraphicsOutputMode;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||
UINT64 PciAttributes;
|
||||
FRAME_BUFFER_CONFIGURE *FrameBufferBltLibConfigure;
|
||||
UINTN FrameBufferBltLibConfigureSize;
|
||||
UINT32 Signature;
|
||||
EFI_HANDLE GraphicsOutputHandle;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE GraphicsOutputMode;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||
UINT64 PciAttributes;
|
||||
FRAME_BUFFER_CONFIGURE *FrameBufferBltLibConfigure;
|
||||
UINTN FrameBufferBltLibConfigureSize;
|
||||
} GRAPHICS_OUTPUT_PRIVATE_DATA;
|
||||
|
||||
#define GRAPHICS_OUTPUT_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('g', 'g', 'o', 'p')
|
||||
#define GRAPHICS_OUTPUT_PRIVATE_FROM_THIS(a) \
|
||||
CR(a, GRAPHICS_OUTPUT_PRIVATE_DATA, GraphicsOutput, GRAPHICS_OUTPUT_PRIVATE_DATA_SIGNATURE)
|
||||
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL mGraphicsOutputComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL mGraphicsOutputComponentName2;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL mGraphicsOutputComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL mGraphicsOutputComponentName2;
|
||||
#endif
|
||||
|
@@ -6,7 +6,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
|
||||
#include "Terminal.h"
|
||||
|
||||
/**
|
||||
@@ -18,10 +17,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
VOID
|
||||
AnsiRawDataToUnicode (
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
)
|
||||
{
|
||||
UINT8 RawData;
|
||||
UINT8 RawData;
|
||||
|
||||
//
|
||||
// pop the raw data out from the raw fifo,
|
||||
@@ -29,10 +28,9 @@ AnsiRawDataToUnicode (
|
||||
// the unicode into unicode fifo, until the raw fifo is empty.
|
||||
//
|
||||
while (!IsRawFiFoEmpty (TerminalDevice) && !IsUnicodeFiFoFull (TerminalDevice)) {
|
||||
|
||||
RawFiFoRemoveOneKey (TerminalDevice, &RawData);
|
||||
|
||||
UnicodeFiFoInsertOneKey (TerminalDevice, (UINT16) RawData);
|
||||
UnicodeFiFoInsertOneKey (TerminalDevice, (UINT16)RawData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,22 +47,21 @@ AnsiRawDataToUnicode (
|
||||
**/
|
||||
EFI_STATUS
|
||||
AnsiTestString (
|
||||
IN TERMINAL_DEV *TerminalDevice,
|
||||
IN CHAR16 *WString
|
||||
IN TERMINAL_DEV *TerminalDevice,
|
||||
IN CHAR16 *WString
|
||||
)
|
||||
{
|
||||
CHAR8 GraphicChar;
|
||||
CHAR8 GraphicChar;
|
||||
|
||||
//
|
||||
// support three kind of character:
|
||||
// valid ascii, valid efi control char, valid text graphics.
|
||||
//
|
||||
for (; *WString != CHAR_NULL; WString++) {
|
||||
|
||||
for ( ; *WString != CHAR_NULL; WString++) {
|
||||
if ( !(TerminalIsValidAscii (*WString) ||
|
||||
TerminalIsValidEfiCntlChar (*WString) ||
|
||||
TerminalIsValidTextGraphics (*WString, &GraphicChar, NULL) )) {
|
||||
|
||||
TerminalIsValidEfiCntlChar (*WString) ||
|
||||
TerminalIsValidTextGraphics (*WString, &GraphicChar, NULL)))
|
||||
{
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
}
|
||||
|
@@ -20,17 +20,16 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gTerminalComponentNam
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gTerminalComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) TerminalComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) TerminalComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gTerminalComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)TerminalComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)TerminalComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mTerminalDriverNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mTerminalDriverNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
(CHAR16 *) L"Serial Terminal Driver"
|
||||
(CHAR16 *)L"Serial Terminal Driver"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
@@ -165,11 +164,11 @@ TerminalComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -210,7 +209,7 @@ TerminalComponentNameGetControllerName (
|
||||
Status = gBS->OpenProtocol (
|
||||
ChildHandle,
|
||||
&gEfiSimpleTextOutProtocolGuid,
|
||||
(VOID **) &SimpleTextOutput,
|
||||
(VOID **)&SimpleTextOutput,
|
||||
gTerminalDriverBinding.DriverBindingHandle,
|
||||
ChildHandle,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
|
@@ -7,13 +7,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
|
||||
#include "Terminal.h"
|
||||
|
||||
//
|
||||
// Globals
|
||||
//
|
||||
EFI_DRIVER_BINDING_PROTOCOL gTerminalDriverBinding = {
|
||||
EFI_DRIVER_BINDING_PROTOCOL gTerminalDriverBinding = {
|
||||
TerminalDriverBindingSupported,
|
||||
TerminalDriverBindingStart,
|
||||
TerminalDriverBindingStop,
|
||||
@@ -22,7 +21,6 @@ EFI_DRIVER_BINDING_PROTOCOL gTerminalDriverBinding = {
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
EFI_GUID *mTerminalType[] = {
|
||||
&gEfiPcAnsiGuid,
|
||||
&gEfiVT100Guid,
|
||||
@@ -35,8 +33,7 @@ EFI_GUID *mTerminalType[] = {
|
||||
&gEdkiiSCOTermGuid
|
||||
};
|
||||
|
||||
|
||||
CHAR16 *mSerialConsoleNames[] = {
|
||||
CHAR16 *mSerialConsoleNames[] = {
|
||||
L"PC-ANSI Serial Console",
|
||||
L"VT-100 Serial Console",
|
||||
L"VT-100+ Serial Console",
|
||||
@@ -71,16 +68,16 @@ TERMINAL_DEV mTerminalDevTemplate = {
|
||||
TerminalConOutEnableCursor,
|
||||
NULL
|
||||
},
|
||||
{ // SimpleTextOutputMode
|
||||
1, // MaxMode
|
||||
0, // Mode
|
||||
EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK), // Attribute
|
||||
0, // CursorColumn
|
||||
0, // CursorRow
|
||||
TRUE // CursorVisible
|
||||
{ // SimpleTextOutputMode
|
||||
1, // MaxMode
|
||||
0, // Mode
|
||||
EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK), // Attribute
|
||||
0, // CursorColumn
|
||||
0, // CursorRow
|
||||
TRUE // CursorVisible
|
||||
},
|
||||
NULL, // TerminalConsoleModeData
|
||||
0, // SerialInTimeOut
|
||||
0, // SerialInTimeOut
|
||||
|
||||
NULL, // RawFifo
|
||||
NULL, // UnicodeFiFo
|
||||
@@ -93,9 +90,9 @@ TERMINAL_DEV mTerminalDevTemplate = {
|
||||
INPUT_STATE_DEFAULT,
|
||||
RESET_STATE_DEFAULT,
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
0,
|
||||
FALSE,
|
||||
@@ -114,10 +111,10 @@ TERMINAL_DEV mTerminalDevTemplate = {
|
||||
NULL // KeyNotifyProcessEvent
|
||||
};
|
||||
|
||||
TERMINAL_CONSOLE_MODE_DATA mTerminalConsoleModeData[] = {
|
||||
{80, 25},
|
||||
{80, 50},
|
||||
{100, 31},
|
||||
TERMINAL_CONSOLE_MODE_DATA mTerminalConsoleModeData[] = {
|
||||
{ 80, 25 },
|
||||
{ 80, 50 },
|
||||
{ 100, 31 },
|
||||
//
|
||||
// New modes can be added here.
|
||||
//
|
||||
@@ -132,16 +129,17 @@ TERMINAL_CONSOLE_MODE_DATA mTerminalConsoleModeData[] = {
|
||||
**/
|
||||
TERMINAL_TYPE
|
||||
TerminalTypeFromGuid (
|
||||
IN EFI_GUID *Guid
|
||||
)
|
||||
IN EFI_GUID *Guid
|
||||
)
|
||||
{
|
||||
TERMINAL_TYPE Type;
|
||||
TERMINAL_TYPE Type;
|
||||
|
||||
for (Type = 0; Type < ARRAY_SIZE (mTerminalType); Type++) {
|
||||
if (CompareGuid (Guid, mTerminalType[Type])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Type;
|
||||
}
|
||||
|
||||
@@ -161,9 +159,9 @@ TerminalTypeFromGuid (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -185,15 +183,15 @@ TerminalDriverBindingSupported (
|
||||
// If RemainingDevicePath isn't the End of Device Path Node,
|
||||
// check its validation
|
||||
//
|
||||
Node = (VENDOR_DEVICE_PATH *) RemainingDevicePath;
|
||||
|
||||
if (Node->Header.Type != MESSAGING_DEVICE_PATH ||
|
||||
Node->Header.SubType != MSG_VENDOR_DP ||
|
||||
DevicePathNodeLength(&Node->Header) != sizeof(VENDOR_DEVICE_PATH)) {
|
||||
Node = (VENDOR_DEVICE_PATH *)RemainingDevicePath;
|
||||
|
||||
if ((Node->Header.Type != MESSAGING_DEVICE_PATH) ||
|
||||
(Node->Header.SubType != MSG_VENDOR_DP) ||
|
||||
(DevicePathNodeLength (&Node->Header) != sizeof (VENDOR_DEVICE_PATH)))
|
||||
{
|
||||
return EFI_UNSUPPORTED;
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
// only supports PC ANSI, VT100, VT100+, VT-UTF8, TtyTerm
|
||||
// Linux, XtermR6, VT400 and SCO terminal types
|
||||
@@ -203,6 +201,7 @@ TerminalDriverBindingSupported (
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Open the IO Abstraction(s) needed to perform the supported test
|
||||
// The Controller must support the Serial I/O Protocol.
|
||||
@@ -212,7 +211,7 @@ TerminalDriverBindingSupported (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
(VOID **) &SerialIo,
|
||||
(VOID **)&SerialIo,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -229,11 +228,11 @@ TerminalDriverBindingSupported (
|
||||
// Close the I/O Abstraction(s) used to perform the supported test
|
||||
//
|
||||
gBS->CloseProtocol (
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
|
||||
//
|
||||
// Open the EFI Device Path protocol needed to perform the supported test
|
||||
@@ -241,7 +240,7 @@ TerminalDriverBindingSupported (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &ParentDevicePath,
|
||||
(VOID **)&ParentDevicePath,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -258,16 +257,15 @@ TerminalDriverBindingSupported (
|
||||
// Close protocol, don't use device path protocol in the Support() function
|
||||
//
|
||||
gBS->CloseProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Free notify functions list.
|
||||
|
||||
@@ -279,14 +277,15 @@ TerminalDriverBindingSupported (
|
||||
**/
|
||||
EFI_STATUS
|
||||
TerminalFreeNotifyList (
|
||||
IN OUT LIST_ENTRY *ListHead
|
||||
IN OUT LIST_ENTRY *ListHead
|
||||
)
|
||||
{
|
||||
TERMINAL_CONSOLE_IN_EX_NOTIFY *NotifyNode;
|
||||
TERMINAL_CONSOLE_IN_EX_NOTIFY *NotifyNode;
|
||||
|
||||
if (ListHead == NULL) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
while (!IsListEmpty (ListHead)) {
|
||||
NotifyNode = CR (
|
||||
ListHead->ForwardLink,
|
||||
@@ -314,8 +313,8 @@ TerminalFreeNotifyList (
|
||||
**/
|
||||
TERMINAL_CONSOLE_MODE_DATA *
|
||||
InitializeTerminalConsoleTextMode (
|
||||
OUT INT32 *TextModeCount
|
||||
)
|
||||
OUT INT32 *TextModeCount
|
||||
)
|
||||
{
|
||||
TERMINAL_CONSOLE_MODE_DATA *TextModeData;
|
||||
|
||||
@@ -325,14 +324,22 @@ InitializeTerminalConsoleTextMode (
|
||||
if (TextModeData == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*TextModeCount = ARRAY_SIZE (mTerminalConsoleModeData);
|
||||
|
||||
DEBUG_CODE_BEGIN ();
|
||||
INT32 Index;
|
||||
for (Index = 0; Index < *TextModeCount; Index++) {
|
||||
DEBUG ((DEBUG_INFO, "Terminal - Mode %d, Column = %d, Row = %d\n",
|
||||
Index, TextModeData[Index].Columns, TextModeData[Index].Rows));
|
||||
}
|
||||
INT32 Index;
|
||||
|
||||
for (Index = 0; Index < *TextModeCount; Index++) {
|
||||
DEBUG ((
|
||||
DEBUG_INFO,
|
||||
"Terminal - Mode %d, Column = %d, Row = %d\n",
|
||||
Index,
|
||||
TextModeData[Index].Columns,
|
||||
TextModeData[Index].Rows
|
||||
));
|
||||
}
|
||||
|
||||
DEBUG_CODE_END ();
|
||||
return TextModeData;
|
||||
}
|
||||
@@ -344,10 +351,10 @@ InitializeTerminalConsoleTextMode (
|
||||
**/
|
||||
VOID
|
||||
StopTerminalStateMachine (
|
||||
TERMINAL_DEV *TerminalDevice
|
||||
TERMINAL_DEV *TerminalDevice
|
||||
)
|
||||
{
|
||||
EFI_TPL OriginalTpl;
|
||||
EFI_TPL OriginalTpl;
|
||||
|
||||
OriginalTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
|
||||
@@ -364,10 +371,11 @@ StopTerminalStateMachine (
|
||||
**/
|
||||
VOID
|
||||
StartTerminalStateMachine (
|
||||
TERMINAL_DEV *TerminalDevice
|
||||
TERMINAL_DEV *TerminalDevice
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = gBS->CreateEvent (
|
||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||
TPL_NOTIFY,
|
||||
@@ -407,13 +415,13 @@ EFI_STATUS
|
||||
InitializeControllerNameTable (
|
||||
TERMINAL_TYPE TerminalType,
|
||||
EFI_UNICODE_STRING_TABLE **ControllerNameTable
|
||||
)
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_UNICODE_STRING_TABLE *Table;
|
||||
|
||||
ASSERT (TerminalType < ARRAY_SIZE (mTerminalType));
|
||||
Table = NULL;
|
||||
Table = NULL;
|
||||
Status = AddUnicodeString2 (
|
||||
"eng",
|
||||
gTerminalComponentName.SupportedLanguages,
|
||||
@@ -433,9 +441,11 @@ InitializeControllerNameTable (
|
||||
FreeUnicodeStringTable (Table);
|
||||
}
|
||||
}
|
||||
|
||||
if (!EFI_ERROR (Status)) {
|
||||
*ControllerNameTable = Table;
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
@@ -458,26 +468,26 @@ InitializeControllerNameTable (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_SERIAL_IO_PROTOCOL *SerialIo;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *Vendor;
|
||||
EFI_HANDLE SerialIoHandle;
|
||||
EFI_SERIAL_IO_MODE *Mode;
|
||||
UINTN SerialInTimeOut;
|
||||
TERMINAL_DEV *TerminalDevice;
|
||||
UINT8 TerminalType;
|
||||
EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenInfoBuffer;
|
||||
UINTN EntryCount;
|
||||
UINTN Index;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOutput;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *SimpleTextInput;
|
||||
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
||||
EFI_STATUS Status;
|
||||
EFI_SERIAL_IO_PROTOCOL *SerialIo;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *Vendor;
|
||||
EFI_HANDLE SerialIoHandle;
|
||||
EFI_SERIAL_IO_MODE *Mode;
|
||||
UINTN SerialInTimeOut;
|
||||
TERMINAL_DEV *TerminalDevice;
|
||||
UINT8 TerminalType;
|
||||
EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenInfoBuffer;
|
||||
UINTN EntryCount;
|
||||
UINTN Index;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOutput;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *SimpleTextInput;
|
||||
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
||||
|
||||
//
|
||||
// Get the Device Path Protocol to build the device path of the child device
|
||||
@@ -485,7 +495,7 @@ TerminalDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &ParentDevicePath,
|
||||
(VOID **)&ParentDevicePath,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -501,7 +511,7 @@ TerminalDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
(VOID **) &SerialIo,
|
||||
(VOID **)&SerialIo,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -529,7 +539,6 @@ TerminalDriverBindingStart (
|
||||
}
|
||||
|
||||
if (Status == EFI_ALREADY_STARTED) {
|
||||
|
||||
if (RemainingDevicePath == NULL) {
|
||||
//
|
||||
// If RemainingDevicePath is NULL or is the End of Device Path Node
|
||||
@@ -554,14 +563,14 @@ TerminalDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
OpenInfoBuffer[Index].ControllerHandle,
|
||||
&gEfiSimpleTextInProtocolGuid,
|
||||
(VOID **) &SimpleTextInput,
|
||||
(VOID **)&SimpleTextInput,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
TerminalDevice = TERMINAL_CON_IN_DEV_FROM_THIS (SimpleTextInput);
|
||||
TerminalType = TerminalTypeFromGuid (&((VENDOR_DEVICE_PATH *) RemainingDevicePath)->Guid);
|
||||
TerminalType = TerminalTypeFromGuid (&((VENDOR_DEVICE_PATH *)RemainingDevicePath)->Guid);
|
||||
ASSERT (TerminalType < ARRAY_SIZE (mTerminalType));
|
||||
if (TerminalDevice->TerminalType != TerminalType) {
|
||||
Status = InitializeControllerNameTable (TerminalType, &ControllerNameTable);
|
||||
@@ -573,7 +582,7 @@ TerminalDriverBindingStart (
|
||||
Vendor = TerminalDevice->DevicePath;
|
||||
Status = gBS->LocateDevicePath (&gEfiSerialIoProtocolGuid, &Vendor, &SerialIoHandle);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
CopyGuid (&((VENDOR_DEVICE_PATH *) Vendor)->Guid, mTerminalType[TerminalType]);
|
||||
CopyGuid (&((VENDOR_DEVICE_PATH *)Vendor)->Guid, mTerminalType[TerminalType]);
|
||||
Status = gBS->ReinstallProtocolInterface (
|
||||
TerminalDevice->Handle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
@@ -589,17 +598,20 @@ TerminalDriverBindingStart (
|
||||
//
|
||||
// Restore the device path on failure
|
||||
//
|
||||
CopyGuid (&((VENDOR_DEVICE_PATH *) Vendor)->Guid, mTerminalType[TerminalDevice->TerminalType]);
|
||||
CopyGuid (&((VENDOR_DEVICE_PATH *)Vendor)->Guid, mTerminalType[TerminalDevice->TerminalType]);
|
||||
FreeUnicodeStringTable (ControllerNameTable);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
FreePool (OpenInfoBuffer);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
@@ -626,8 +638,9 @@ TerminalDriverBindingStart (
|
||||
// If RemainingDevicePath isn't the End of Device Path Node,
|
||||
// Use the RemainingDevicePath to determine the terminal type
|
||||
//
|
||||
TerminalDevice->TerminalType = TerminalTypeFromGuid (&((VENDOR_DEVICE_PATH *) RemainingDevicePath)->Guid);
|
||||
TerminalDevice->TerminalType = TerminalTypeFromGuid (&((VENDOR_DEVICE_PATH *)RemainingDevicePath)->Guid);
|
||||
}
|
||||
|
||||
ASSERT (TerminalDevice->TerminalType < ARRAY_SIZE (mTerminalType));
|
||||
TerminalDevice->SerialIo = SerialIo;
|
||||
|
||||
@@ -682,14 +695,17 @@ TerminalDriverBindingStart (
|
||||
if (TerminalDevice->RawFiFo == NULL) {
|
||||
goto FreeResources;
|
||||
}
|
||||
|
||||
TerminalDevice->UnicodeFiFo = AllocateZeroPool (sizeof (UNICODE_FIFO));
|
||||
if (TerminalDevice->UnicodeFiFo == NULL) {
|
||||
goto FreeResources;
|
||||
}
|
||||
|
||||
TerminalDevice->EfiKeyFiFo = AllocateZeroPool (sizeof (EFI_KEY_FIFO));
|
||||
if (TerminalDevice->EfiKeyFiFo == NULL) {
|
||||
goto FreeResources;
|
||||
}
|
||||
|
||||
TerminalDevice->EfiKeyFiFoForNotify = AllocateZeroPool (sizeof (EFI_KEY_FIFO));
|
||||
if (TerminalDevice->EfiKeyFiFoForNotify == NULL) {
|
||||
goto FreeResources;
|
||||
@@ -702,17 +718,17 @@ TerminalDriverBindingStart (
|
||||
|
||||
SerialInTimeOut = 0;
|
||||
if (Mode->BaudRate != 0) {
|
||||
SerialInTimeOut = (1 + Mode->DataBits + Mode->StopBits) * 2 * 1000000 / (UINTN) Mode->BaudRate;
|
||||
SerialInTimeOut = (1 + Mode->DataBits + Mode->StopBits) * 2 * 1000000 / (UINTN)Mode->BaudRate;
|
||||
}
|
||||
|
||||
Status = TerminalDevice->SerialIo->SetAttributes (
|
||||
TerminalDevice->SerialIo,
|
||||
Mode->BaudRate,
|
||||
Mode->ReceiveFifoDepth,
|
||||
(UINT32) SerialInTimeOut,
|
||||
(EFI_PARITY_TYPE) (Mode->Parity),
|
||||
(UINT8) Mode->DataBits,
|
||||
(EFI_STOP_BITS_TYPE) (Mode->StopBits)
|
||||
(UINT32)SerialInTimeOut,
|
||||
(EFI_PARITY_TYPE)(Mode->Parity),
|
||||
(UINT8)Mode->DataBits,
|
||||
(EFI_STOP_BITS_TYPE)(Mode->StopBits)
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
//
|
||||
@@ -728,26 +744,28 @@ TerminalDriverBindingStart (
|
||||
}
|
||||
|
||||
SimpleTextOutput = &TerminalDevice->SimpleTextOutput;
|
||||
SimpleTextInput = &TerminalDevice->SimpleInput;
|
||||
SimpleTextInput = &TerminalDevice->SimpleInput;
|
||||
|
||||
//
|
||||
// Initialize SimpleTextOut instance
|
||||
//
|
||||
SimpleTextOutput->Mode = &TerminalDevice->SimpleTextOutputMode;
|
||||
SimpleTextOutput->Mode = &TerminalDevice->SimpleTextOutputMode;
|
||||
TerminalDevice->TerminalConsoleModeData = InitializeTerminalConsoleTextMode (
|
||||
&SimpleTextOutput->Mode->MaxMode
|
||||
);
|
||||
&SimpleTextOutput->Mode->MaxMode
|
||||
);
|
||||
if (TerminalDevice->TerminalConsoleModeData == NULL) {
|
||||
goto FreeResources;
|
||||
}
|
||||
|
||||
//
|
||||
// For terminal devices, cursor is always visible
|
||||
//
|
||||
SimpleTextOutput->Mode->CursorVisible = TRUE;
|
||||
Status = SimpleTextOutput->SetAttribute (SimpleTextOutput, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
|
||||
Status = SimpleTextOutput->SetAttribute (SimpleTextOutput, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
|
||||
if (!EFI_ERROR (Status)) {
|
||||
Status = SimpleTextOutput->Reset (SimpleTextOutput, FALSE);
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto ReportError;
|
||||
}
|
||||
@@ -762,17 +780,21 @@ TerminalDriverBindingStart (
|
||||
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&TerminalDevice->Handle,
|
||||
&gEfiSimpleTextInProtocolGuid, &TerminalDevice->SimpleInput,
|
||||
&gEfiSimpleTextInputExProtocolGuid, &TerminalDevice->SimpleInputEx,
|
||||
&gEfiSimpleTextOutProtocolGuid, &TerminalDevice->SimpleTextOutput,
|
||||
&gEfiDevicePathProtocolGuid, TerminalDevice->DevicePath,
|
||||
&gEfiSimpleTextInProtocolGuid,
|
||||
&TerminalDevice->SimpleInput,
|
||||
&gEfiSimpleTextInputExProtocolGuid,
|
||||
&TerminalDevice->SimpleInputEx,
|
||||
&gEfiSimpleTextOutProtocolGuid,
|
||||
&TerminalDevice->SimpleTextOutput,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
TerminalDevice->DevicePath,
|
||||
NULL
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
(VOID **) &TerminalDevice->SerialIo,
|
||||
(VOID **)&TerminalDevice->SerialIo,
|
||||
This->DriverBindingHandle,
|
||||
TerminalDevice->Handle,
|
||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||
@@ -795,9 +817,11 @@ FreeResources:
|
||||
if (TerminalDevice->SimpleInput.WaitForKey != NULL) {
|
||||
gBS->CloseEvent (TerminalDevice->SimpleInput.WaitForKey);
|
||||
}
|
||||
|
||||
if (TerminalDevice->SimpleInputEx.WaitForKeyEx != NULL) {
|
||||
gBS->CloseEvent (TerminalDevice->SimpleInputEx.WaitForKeyEx);
|
||||
}
|
||||
|
||||
if (TerminalDevice->KeyNotifyProcessEvent != NULL) {
|
||||
gBS->CloseEvent (TerminalDevice->KeyNotifyProcessEvent);
|
||||
}
|
||||
@@ -805,12 +829,15 @@ FreeResources:
|
||||
if (TerminalDevice->RawFiFo != NULL) {
|
||||
FreePool (TerminalDevice->RawFiFo);
|
||||
}
|
||||
|
||||
if (TerminalDevice->UnicodeFiFo != NULL) {
|
||||
FreePool (TerminalDevice->UnicodeFiFo);
|
||||
}
|
||||
|
||||
if (TerminalDevice->EfiKeyFiFo != NULL) {
|
||||
FreePool (TerminalDevice->EfiKeyFiFo);
|
||||
}
|
||||
|
||||
if (TerminalDevice->EfiKeyFiFoForNotify != NULL) {
|
||||
FreePool (TerminalDevice->EfiKeyFiFoForNotify);
|
||||
}
|
||||
@@ -875,10 +902,10 @@ CloseProtocols:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -900,7 +927,7 @@ TerminalDriverBindingStop (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &ParentDevicePath,
|
||||
(VOID **)&ParentDevicePath,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -916,18 +943,18 @@ TerminalDriverBindingStop (
|
||||
TerminalRemoveConsoleDevVariable (EFI_ERR_OUT_DEV_VARIABLE_NAME, ParentDevicePath);
|
||||
|
||||
gBS->CloseProtocol (
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
|
||||
gBS->CloseProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
@@ -935,25 +962,23 @@ TerminalDriverBindingStop (
|
||||
AllChildrenStopped = TRUE;
|
||||
|
||||
for (Index = 0; Index < NumberOfChildren; Index++) {
|
||||
|
||||
Status = gBS->OpenProtocol (
|
||||
ChildHandleBuffer[Index],
|
||||
&gEfiSimpleTextOutProtocolGuid,
|
||||
(VOID **) &SimpleTextOutput,
|
||||
(VOID **)&SimpleTextOutput,
|
||||
This->DriverBindingHandle,
|
||||
ChildHandleBuffer[Index],
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
|
||||
TerminalDevice = TERMINAL_CON_OUT_DEV_FROM_THIS (SimpleTextOutput);
|
||||
|
||||
gBS->CloseProtocol (
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
ChildHandleBuffer[Index]
|
||||
);
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
ChildHandleBuffer[Index]
|
||||
);
|
||||
|
||||
Status = gBS->UninstallMultipleProtocolInterfaces (
|
||||
ChildHandleBuffer[Index],
|
||||
@@ -969,15 +994,14 @@ TerminalDriverBindingStop (
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
(VOID **) &SerialIo,
|
||||
This->DriverBindingHandle,
|
||||
ChildHandleBuffer[Index],
|
||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||
);
|
||||
Controller,
|
||||
&gEfiSerialIoProtocolGuid,
|
||||
(VOID **)&SerialIo,
|
||||
This->DriverBindingHandle,
|
||||
ChildHandleBuffer[Index],
|
||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||
);
|
||||
} else {
|
||||
|
||||
FreeUnicodeStringTable (TerminalDevice->ControllerNameTable);
|
||||
StopTerminalStateMachine (TerminalDevice);
|
||||
gBS->CloseEvent (TerminalDevice->SimpleInput.WaitForKey);
|
||||
@@ -1023,8 +1047,8 @@ MatchDevicePaths (
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePathInst;
|
||||
UINTN Size;
|
||||
|
||||
DevicePath = Multi;
|
||||
DevicePathInst = GetNextDevicePathInstance (&DevicePath, &Size);
|
||||
DevicePath = Multi;
|
||||
DevicePathInst = GetNextDevicePathInstance (&DevicePath, &Size);
|
||||
//
|
||||
// Search for the match of 'Single' in 'Multi'
|
||||
//
|
||||
@@ -1058,23 +1082,24 @@ TerminalUpdateConsoleDevVariable (
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINTN NameSize;
|
||||
UINTN VariableSize;
|
||||
TERMINAL_TYPE TerminalType;
|
||||
EFI_DEVICE_PATH_PROTOCOL *Variable;
|
||||
EFI_DEVICE_PATH_PROTOCOL *NewVariable;
|
||||
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
||||
EDKII_SET_VARIABLE_STATUS *SetVariableStatus;
|
||||
EFI_STATUS Status;
|
||||
UINTN NameSize;
|
||||
UINTN VariableSize;
|
||||
TERMINAL_TYPE TerminalType;
|
||||
EFI_DEVICE_PATH_PROTOCOL *Variable;
|
||||
EFI_DEVICE_PATH_PROTOCOL *NewVariable;
|
||||
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
||||
EDKII_SET_VARIABLE_STATUS *SetVariableStatus;
|
||||
|
||||
//
|
||||
// Get global variable and its size according to the name given.
|
||||
//
|
||||
Status = GetEfiGlobalVariable2 (VariableName, (VOID**)&Variable, NULL);
|
||||
Status = GetEfiGlobalVariable2 (VariableName, (VOID **)&Variable, NULL);
|
||||
if (Status == EFI_NOT_FOUND) {
|
||||
Status = EFI_SUCCESS;
|
||||
Variable = NULL;
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
return;
|
||||
}
|
||||
@@ -1092,13 +1117,13 @@ TerminalUpdateConsoleDevVariable (
|
||||
if (Variable != NULL) {
|
||||
FreePool (Variable);
|
||||
}
|
||||
|
||||
Variable = NewVariable;
|
||||
}
|
||||
}
|
||||
|
||||
FreePool (TempDevicePath);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
VariableSize = GetDevicePathSize (Variable);
|
||||
@@ -1112,7 +1137,7 @@ TerminalUpdateConsoleDevVariable (
|
||||
);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
NameSize = StrSize (VariableName);
|
||||
NameSize = StrSize (VariableName);
|
||||
SetVariableStatus = AllocatePool (sizeof (EDKII_SET_VARIABLE_STATUS) + NameSize + VariableSize);
|
||||
if (SetVariableStatus != NULL) {
|
||||
CopyGuid (&SetVariableStatus->Guid, &gEfiGlobalVariableGuid);
|
||||
@@ -1120,8 +1145,8 @@ TerminalUpdateConsoleDevVariable (
|
||||
SetVariableStatus->DataSize = VariableSize;
|
||||
SetVariableStatus->SetStatus = Status;
|
||||
SetVariableStatus->Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS;
|
||||
CopyMem (SetVariableStatus + 1, VariableName, NameSize);
|
||||
CopyMem (((UINT8 *) (SetVariableStatus + 1)) + NameSize, Variable, VariableSize);
|
||||
CopyMem (SetVariableStatus + 1, VariableName, NameSize);
|
||||
CopyMem (((UINT8 *)(SetVariableStatus + 1)) + NameSize, Variable, VariableSize);
|
||||
|
||||
REPORT_STATUS_CODE_EX (
|
||||
EFI_ERROR_CODE,
|
||||
@@ -1139,10 +1164,9 @@ TerminalUpdateConsoleDevVariable (
|
||||
|
||||
FreePool (Variable);
|
||||
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Remove terminal device path from Console Device Environment Variables.
|
||||
|
||||
@@ -1169,19 +1193,19 @@ TerminalRemoveConsoleDevVariable (
|
||||
EFI_DEVICE_PATH_PROTOCOL *SavedNewVariable;
|
||||
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
||||
|
||||
Instance = NULL;
|
||||
Instance = NULL;
|
||||
|
||||
//
|
||||
// Get global variable and its size according to the name given.
|
||||
//
|
||||
GetEfiGlobalVariable2 (VariableName, (VOID**)&Variable, NULL);
|
||||
GetEfiGlobalVariable2 (VariableName, (VOID **)&Variable, NULL);
|
||||
if (Variable == NULL) {
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
FoundOne = FALSE;
|
||||
OriginalVariable = Variable;
|
||||
NewVariable = NULL;
|
||||
FoundOne = FALSE;
|
||||
OriginalVariable = Variable;
|
||||
NewVariable = NULL;
|
||||
|
||||
//
|
||||
// Get first device path instance from Variable
|
||||
@@ -1189,8 +1213,9 @@ TerminalRemoveConsoleDevVariable (
|
||||
Instance = GetNextDevicePathInstance (&Variable, &InstanceSize);
|
||||
if (Instance == NULL) {
|
||||
FreePool (OriginalVariable);
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Loop through all the device path instances of Variable
|
||||
//
|
||||
@@ -1200,7 +1225,6 @@ TerminalRemoveConsoleDevVariable (
|
||||
//
|
||||
Match = FALSE;
|
||||
for (TerminalType = 0; TerminalType < ARRAY_SIZE (mTerminalType); TerminalType++) {
|
||||
|
||||
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
||||
|
||||
//
|
||||
@@ -1208,23 +1232,25 @@ TerminalRemoveConsoleDevVariable (
|
||||
//
|
||||
if (TempDevicePath != NULL) {
|
||||
if (CompareMem (Instance, TempDevicePath, InstanceSize) == 0) {
|
||||
Match = TRUE;
|
||||
FoundOne = TRUE;
|
||||
Match = TRUE;
|
||||
FoundOne = TRUE;
|
||||
}
|
||||
|
||||
FreePool (TempDevicePath);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// If a match was not found, then keep the current device path instance
|
||||
//
|
||||
if (!Match) {
|
||||
SavedNewVariable = NewVariable;
|
||||
NewVariable = AppendDevicePathInstance (NewVariable, Instance);
|
||||
SavedNewVariable = NewVariable;
|
||||
NewVariable = AppendDevicePathInstance (NewVariable, Instance);
|
||||
if (SavedNewVariable != NULL) {
|
||||
FreePool (SavedNewVariable);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Get next device path instance from Variable
|
||||
//
|
||||
@@ -1254,7 +1280,7 @@ TerminalRemoveConsoleDevVariable (
|
||||
FreePool (NewVariable);
|
||||
}
|
||||
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1271,9 +1297,9 @@ TerminalRemoveConsoleDevVariable (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SetTerminalDevicePath (
|
||||
IN TERMINAL_TYPE TerminalType,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||
OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath
|
||||
IN TERMINAL_TYPE TerminalType,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||
OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath
|
||||
)
|
||||
{
|
||||
VENDOR_DEVICE_PATH Node;
|
||||
@@ -1290,7 +1316,7 @@ SetTerminalDevicePath (
|
||||
//
|
||||
*TerminalDevicePath = AppendDevicePathNode (
|
||||
ParentDevicePath,
|
||||
(EFI_DEVICE_PATH_PROTOCOL *) &Node
|
||||
(EFI_DEVICE_PATH_PROTOCOL *)&Node
|
||||
);
|
||||
if (*TerminalDevicePath == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
@@ -1311,12 +1337,12 @@ SetTerminalDevicePath (
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InitializeTerminal(
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
InitializeTerminal (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Install driver model protocol(s).
|
||||
@@ -1348,10 +1374,10 @@ InitializeTerminal(
|
||||
**/
|
||||
BOOLEAN
|
||||
IsHotPlugDevice (
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
)
|
||||
{
|
||||
EFI_DEVICE_PATH_PROTOCOL *CheckDevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *CheckDevicePath;
|
||||
|
||||
CheckDevicePath = DevicePath;
|
||||
while (!IsDevicePathEnd (CheckDevicePath)) {
|
||||
@@ -1359,16 +1385,19 @@ IsHotPlugDevice (
|
||||
// Check device whether is hot plug device or not throught Device Path
|
||||
//
|
||||
if ((DevicePathType (CheckDevicePath) == MESSAGING_DEVICE_PATH) &&
|
||||
(DevicePathSubType (CheckDevicePath) == MSG_USB_DP ||
|
||||
DevicePathSubType (CheckDevicePath) == MSG_USB_CLASS_DP ||
|
||||
DevicePathSubType (CheckDevicePath) == MSG_USB_WWID_DP)) {
|
||||
((DevicePathSubType (CheckDevicePath) == MSG_USB_DP) ||
|
||||
(DevicePathSubType (CheckDevicePath) == MSG_USB_CLASS_DP) ||
|
||||
(DevicePathSubType (CheckDevicePath) == MSG_USB_WWID_DP)))
|
||||
{
|
||||
//
|
||||
// If Device is USB device
|
||||
//
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ((DevicePathType (CheckDevicePath) == HARDWARE_DEVICE_PATH) &&
|
||||
(DevicePathSubType (CheckDevicePath) == HW_PCCARD_DP)) {
|
||||
(DevicePathSubType (CheckDevicePath) == HW_PCCARD_DP))
|
||||
{
|
||||
//
|
||||
// If Device is PCCard
|
||||
//
|
||||
|
@@ -10,7 +10,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#ifndef _TERMINAL_H_
|
||||
#define _TERMINAL_H_
|
||||
|
||||
|
||||
#include <Uefi.h>
|
||||
|
||||
#include <Guid/GlobalVariable.h>
|
||||
@@ -36,44 +35,43 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/BaseLib.h>
|
||||
|
||||
|
||||
#define RAW_FIFO_MAX_NUMBER 255
|
||||
#define FIFO_MAX_NUMBER 128
|
||||
#define RAW_FIFO_MAX_NUMBER 255
|
||||
#define FIFO_MAX_NUMBER 128
|
||||
|
||||
typedef struct {
|
||||
UINT8 Head;
|
||||
UINT8 Tail;
|
||||
UINT8 Data[RAW_FIFO_MAX_NUMBER + 1];
|
||||
UINT8 Head;
|
||||
UINT8 Tail;
|
||||
UINT8 Data[RAW_FIFO_MAX_NUMBER + 1];
|
||||
} RAW_DATA_FIFO;
|
||||
|
||||
typedef struct {
|
||||
UINT8 Head;
|
||||
UINT8 Tail;
|
||||
UINT16 Data[FIFO_MAX_NUMBER + 1];
|
||||
UINT8 Head;
|
||||
UINT8 Tail;
|
||||
UINT16 Data[FIFO_MAX_NUMBER + 1];
|
||||
} UNICODE_FIFO;
|
||||
|
||||
typedef struct {
|
||||
UINT8 Head;
|
||||
UINT8 Tail;
|
||||
EFI_INPUT_KEY Data[FIFO_MAX_NUMBER + 1];
|
||||
UINT8 Head;
|
||||
UINT8 Tail;
|
||||
EFI_INPUT_KEY Data[FIFO_MAX_NUMBER + 1];
|
||||
} EFI_KEY_FIFO;
|
||||
|
||||
typedef struct {
|
||||
UINTN Columns;
|
||||
UINTN Rows;
|
||||
UINTN Columns;
|
||||
UINTN Rows;
|
||||
} TERMINAL_CONSOLE_MODE_DATA;
|
||||
|
||||
#define KEYBOARD_TIMER_INTERVAL 200000 // 0.02s
|
||||
#define KEYBOARD_TIMER_INTERVAL 200000 // 0.02s
|
||||
|
||||
#define TERMINAL_DEV_SIGNATURE SIGNATURE_32 ('t', 'm', 'n', 'l')
|
||||
|
||||
#define TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('t', 'm', 'e', 'n')
|
||||
#define TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('t', 'm', 'e', 'n')
|
||||
|
||||
typedef struct _TERMINAL_CONSOLE_IN_EX_NOTIFY {
|
||||
UINTN Signature;
|
||||
EFI_KEY_DATA KeyData;
|
||||
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;
|
||||
LIST_ENTRY NotifyEntry;
|
||||
UINTN Signature;
|
||||
EFI_KEY_DATA KeyData;
|
||||
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;
|
||||
LIST_ENTRY NotifyEntry;
|
||||
} TERMINAL_CONSOLE_IN_EX_NOTIFY;
|
||||
|
||||
typedef enum {
|
||||
@@ -89,27 +87,27 @@ typedef enum {
|
||||
} TERMINAL_TYPE;
|
||||
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
EFI_HANDLE Handle;
|
||||
TERMINAL_TYPE TerminalType;
|
||||
EFI_SERIAL_IO_PROTOCOL *SerialIo;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleInput;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOutput;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode;
|
||||
TERMINAL_CONSOLE_MODE_DATA *TerminalConsoleModeData;
|
||||
UINTN SerialInTimeOut;
|
||||
RAW_DATA_FIFO *RawFiFo;
|
||||
UNICODE_FIFO *UnicodeFiFo;
|
||||
EFI_KEY_FIFO *EfiKeyFiFo;
|
||||
EFI_KEY_FIFO *EfiKeyFiFoForNotify;
|
||||
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
||||
EFI_EVENT TimerEvent;
|
||||
EFI_EVENT TwoSecondTimeOut;
|
||||
UINT32 InputState;
|
||||
UINT32 ResetState;
|
||||
UINT16 TtyEscapeStr[3];
|
||||
INTN TtyEscapeIndex;
|
||||
UINTN Signature;
|
||||
EFI_HANDLE Handle;
|
||||
TERMINAL_TYPE TerminalType;
|
||||
EFI_SERIAL_IO_PROTOCOL *SerialIo;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleInput;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOutput;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode;
|
||||
TERMINAL_CONSOLE_MODE_DATA *TerminalConsoleModeData;
|
||||
UINTN SerialInTimeOut;
|
||||
RAW_DATA_FIFO *RawFiFo;
|
||||
UNICODE_FIFO *UnicodeFiFo;
|
||||
EFI_KEY_FIFO *EfiKeyFiFo;
|
||||
EFI_KEY_FIFO *EfiKeyFiFoForNotify;
|
||||
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
||||
EFI_EVENT TimerEvent;
|
||||
EFI_EVENT TwoSecondTimeOut;
|
||||
UINT32 InputState;
|
||||
UINT32 ResetState;
|
||||
UINT16 TtyEscapeStr[3];
|
||||
INTN TtyEscapeIndex;
|
||||
|
||||
//
|
||||
// Esc could not be output to the screen by user,
|
||||
@@ -118,57 +116,57 @@ typedef struct {
|
||||
// This boolean is used by the terminal driver only
|
||||
// to indicate whether the Esc could be sent or not.
|
||||
//
|
||||
BOOLEAN OutputEscChar;
|
||||
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleInputEx;
|
||||
LIST_ENTRY NotifyList;
|
||||
EFI_EVENT KeyNotifyProcessEvent;
|
||||
BOOLEAN OutputEscChar;
|
||||
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleInputEx;
|
||||
LIST_ENTRY NotifyList;
|
||||
EFI_EVENT KeyNotifyProcessEvent;
|
||||
} TERMINAL_DEV;
|
||||
|
||||
#define INPUT_STATE_DEFAULT 0x00
|
||||
#define INPUT_STATE_ESC 0x01
|
||||
#define INPUT_STATE_CSI 0x02
|
||||
#define INPUT_STATE_LEFTOPENBRACKET 0x04
|
||||
#define INPUT_STATE_O 0x08
|
||||
#define INPUT_STATE_2 0x10
|
||||
#define INPUT_STATE_LEFTOPENBRACKET_TTY 0x20
|
||||
#define INPUT_STATE_1 0x40
|
||||
#define INPUT_STATE_LEFTOPENBRACKET_2ND 0x80
|
||||
#define INPUT_STATE_DEFAULT 0x00
|
||||
#define INPUT_STATE_ESC 0x01
|
||||
#define INPUT_STATE_CSI 0x02
|
||||
#define INPUT_STATE_LEFTOPENBRACKET 0x04
|
||||
#define INPUT_STATE_O 0x08
|
||||
#define INPUT_STATE_2 0x10
|
||||
#define INPUT_STATE_LEFTOPENBRACKET_TTY 0x20
|
||||
#define INPUT_STATE_1 0x40
|
||||
#define INPUT_STATE_LEFTOPENBRACKET_2ND 0x80
|
||||
|
||||
#define RESET_STATE_DEFAULT 0x00
|
||||
#define RESET_STATE_ESC_R 0x01
|
||||
#define RESET_STATE_ESC_R_ESC_R 0x02
|
||||
#define RESET_STATE_DEFAULT 0x00
|
||||
#define RESET_STATE_ESC_R 0x01
|
||||
#define RESET_STATE_ESC_R_ESC_R 0x02
|
||||
|
||||
#define TERMINAL_CON_IN_DEV_FROM_THIS(a) CR (a, TERMINAL_DEV, SimpleInput, TERMINAL_DEV_SIGNATURE)
|
||||
#define TERMINAL_CON_OUT_DEV_FROM_THIS(a) CR (a, TERMINAL_DEV, SimpleTextOutput, TERMINAL_DEV_SIGNATURE)
|
||||
#define TERMINAL_CON_IN_DEV_FROM_THIS(a) CR (a, TERMINAL_DEV, SimpleInput, TERMINAL_DEV_SIGNATURE)
|
||||
#define TERMINAL_CON_OUT_DEV_FROM_THIS(a) CR (a, TERMINAL_DEV, SimpleTextOutput, TERMINAL_DEV_SIGNATURE)
|
||||
#define TERMINAL_CON_IN_EX_DEV_FROM_THIS(a) CR (a, TERMINAL_DEV, SimpleInputEx, TERMINAL_DEV_SIGNATURE)
|
||||
|
||||
typedef union {
|
||||
UINT8 Utf8_1;
|
||||
UINT8 Utf8_2[2];
|
||||
UINT8 Utf8_3[3];
|
||||
UINT8 Utf8_1;
|
||||
UINT8 Utf8_2[2];
|
||||
UINT8 Utf8_3[3];
|
||||
} UTF8_CHAR;
|
||||
|
||||
#define LEFTOPENBRACKET 0x5b // '['
|
||||
#define ACAP 0x41
|
||||
#define BCAP 0x42
|
||||
#define CCAP 0x43
|
||||
#define DCAP 0x44
|
||||
#define LEFTOPENBRACKET 0x5b // '['
|
||||
#define ACAP 0x41
|
||||
#define BCAP 0x42
|
||||
#define CCAP 0x43
|
||||
#define DCAP 0x44
|
||||
|
||||
#define BACKSPACE 8
|
||||
#define ESC 27
|
||||
#define CSI 0x9B
|
||||
#define DEL 127
|
||||
#define BRIGHT_CONTROL_OFFSET 2
|
||||
#define FOREGROUND_CONTROL_OFFSET 6
|
||||
#define BACKGROUND_CONTROL_OFFSET 11
|
||||
#define ROW_OFFSET 2
|
||||
#define COLUMN_OFFSET 5
|
||||
#define FW_BACK_OFFSET 2
|
||||
#define BACKSPACE 8
|
||||
#define ESC 27
|
||||
#define CSI 0x9B
|
||||
#define DEL 127
|
||||
#define BRIGHT_CONTROL_OFFSET 2
|
||||
#define FOREGROUND_CONTROL_OFFSET 6
|
||||
#define BACKGROUND_CONTROL_OFFSET 11
|
||||
#define ROW_OFFSET 2
|
||||
#define COLUMN_OFFSET 5
|
||||
#define FW_BACK_OFFSET 2
|
||||
|
||||
typedef struct {
|
||||
UINT16 Unicode;
|
||||
CHAR8 PcAnsi;
|
||||
CHAR8 Ascii;
|
||||
UINT16 Unicode;
|
||||
CHAR8 PcAnsi;
|
||||
CHAR8 Ascii;
|
||||
} UNICODE_TO_CHAR;
|
||||
|
||||
//
|
||||
@@ -191,8 +189,8 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gTerminalComponentName2;
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InitializeTerminal (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -210,11 +208,10 @@ InitializeTerminal (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalConInReset (
|
||||
IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Implements EFI_SIMPLE_TEXT_INPUT_PROTOCOL.ReadKeyStroke().
|
||||
|
||||
@@ -266,8 +263,8 @@ IsKeyRegistered (
|
||||
VOID
|
||||
EFIAPI
|
||||
TerminalConInWaitForKeyEx (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
//
|
||||
@@ -311,8 +308,8 @@ TerminalConInResetEx (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalConInReadKeyStrokeEx (
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
OUT EFI_KEY_DATA *KeyData
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
OUT EFI_KEY_DATA *KeyData
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -399,8 +396,8 @@ TerminalConInUnregisterKeyNotify (
|
||||
VOID
|
||||
EFIAPI
|
||||
TerminalConInWaitForKey (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -421,8 +418,8 @@ TerminalConInWaitForKey (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalConOutReset (
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -609,9 +606,9 @@ TerminalConOutEnableCursor (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -633,12 +630,11 @@ TerminalDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Stop this driver on Controller by closing Simple Text In, Simple Text
|
||||
In Ex, Simple Text Out protocol, and removing parent device path from
|
||||
@@ -657,10 +653,10 @@ TerminalDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -674,7 +670,7 @@ TerminalDriverBindingStop (
|
||||
**/
|
||||
EFI_STATUS
|
||||
TerminalFreeNotifyList (
|
||||
IN OUT LIST_ENTRY *ListHead
|
||||
IN OUT LIST_ENTRY *ListHead
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -724,7 +720,6 @@ TerminalComponentNameGetDriverName (
|
||||
OUT CHAR16 **DriverName
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
@@ -796,14 +791,13 @@ TerminalComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TerminalComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// internal functions
|
||||
//
|
||||
@@ -866,9 +860,9 @@ TerminalRemoveConsoleDevVariable (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SetTerminalDevicePath (
|
||||
IN TERMINAL_TYPE TerminalType,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||
OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath
|
||||
IN TERMINAL_TYPE TerminalType,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||
OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -963,8 +957,8 @@ IsRawFiFoFull (
|
||||
**/
|
||||
BOOLEAN
|
||||
EfiKeyFiFoForNotifyInsertOneKey (
|
||||
EFI_KEY_FIFO *EfiKeyFiFo,
|
||||
EFI_INPUT_KEY *Input
|
||||
EFI_KEY_FIFO *EfiKeyFiFo,
|
||||
EFI_INPUT_KEY *Input
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -979,8 +973,8 @@ EfiKeyFiFoForNotifyInsertOneKey (
|
||||
**/
|
||||
BOOLEAN
|
||||
EfiKeyFiFoForNotifyRemoveOneKey (
|
||||
EFI_KEY_FIFO *EfiKeyFiFo,
|
||||
EFI_INPUT_KEY *Output
|
||||
EFI_KEY_FIFO *EfiKeyFiFo,
|
||||
EFI_INPUT_KEY *Output
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -994,7 +988,7 @@ EfiKeyFiFoForNotifyRemoveOneKey (
|
||||
**/
|
||||
BOOLEAN
|
||||
IsEfiKeyFiFoForNotifyEmpty (
|
||||
IN EFI_KEY_FIFO *EfiKeyFiFo
|
||||
IN EFI_KEY_FIFO *EfiKeyFiFo
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1008,7 +1002,7 @@ IsEfiKeyFiFoForNotifyEmpty (
|
||||
**/
|
||||
BOOLEAN
|
||||
IsEfiKeyFiFoForNotifyFull (
|
||||
EFI_KEY_FIFO *EfiKeyFiFo
|
||||
EFI_KEY_FIFO *EfiKeyFiFo
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1024,8 +1018,8 @@ IsEfiKeyFiFoForNotifyFull (
|
||||
**/
|
||||
BOOLEAN
|
||||
EfiKeyFiFoInsertOneKey (
|
||||
TERMINAL_DEV *TerminalDevice,
|
||||
EFI_INPUT_KEY *Key
|
||||
TERMINAL_DEV *TerminalDevice,
|
||||
EFI_INPUT_KEY *Key
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1040,8 +1034,8 @@ EfiKeyFiFoInsertOneKey (
|
||||
**/
|
||||
BOOLEAN
|
||||
EfiKeyFiFoRemoveOneKey (
|
||||
TERMINAL_DEV *TerminalDevice,
|
||||
EFI_INPUT_KEY *Output
|
||||
TERMINAL_DEV *TerminalDevice,
|
||||
EFI_INPUT_KEY *Output
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1085,8 +1079,8 @@ IsEfiKeyFiFoFull (
|
||||
**/
|
||||
BOOLEAN
|
||||
UnicodeFiFoInsertOneKey (
|
||||
TERMINAL_DEV *TerminalDevice,
|
||||
UINT16 Input
|
||||
TERMINAL_DEV *TerminalDevice,
|
||||
UINT16 Input
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1132,7 +1126,6 @@ IsUnicodeFiFoFull (
|
||||
TERMINAL_DEV *TerminalDevice
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Translate raw data into Unicode (according to different encode), and
|
||||
translate Unicode into key information. (according to different standard).
|
||||
@@ -1142,7 +1135,7 @@ IsUnicodeFiFoFull (
|
||||
**/
|
||||
VOID
|
||||
TranslateRawDataToEfiKey (
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
);
|
||||
|
||||
//
|
||||
@@ -1158,7 +1151,7 @@ TranslateRawDataToEfiKey (
|
||||
**/
|
||||
VOID
|
||||
AnsiRawDataToUnicode (
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1248,7 +1241,7 @@ Putty function key map:
|
||||
**/
|
||||
VOID
|
||||
UnicodeToEfiKey (
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1264,8 +1257,8 @@ UnicodeToEfiKey (
|
||||
**/
|
||||
EFI_STATUS
|
||||
AnsiTestString (
|
||||
IN TERMINAL_DEV *TerminalDevice,
|
||||
IN CHAR16 *WString
|
||||
IN TERMINAL_DEV *TerminalDevice,
|
||||
IN CHAR16 *WString
|
||||
);
|
||||
|
||||
//
|
||||
@@ -1281,7 +1274,7 @@ AnsiTestString (
|
||||
**/
|
||||
VOID
|
||||
VTUTF8RawDataToUnicode (
|
||||
IN TERMINAL_DEV *VtUtf8Device
|
||||
IN TERMINAL_DEV *VtUtf8Device
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1295,8 +1288,8 @@ VTUTF8RawDataToUnicode (
|
||||
**/
|
||||
EFI_STATUS
|
||||
VTUTF8TestString (
|
||||
IN TERMINAL_DEV *TerminalDevice,
|
||||
IN CHAR16 *WString
|
||||
IN TERMINAL_DEV *TerminalDevice,
|
||||
IN CHAR16 *WString
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1317,9 +1310,9 @@ VTUTF8TestString (
|
||||
**/
|
||||
VOID
|
||||
UnicodeToUtf8 (
|
||||
IN CHAR16 Unicode,
|
||||
OUT UTF8_CHAR *Utf8Char,
|
||||
OUT UINT8 *ValidBytes
|
||||
IN CHAR16 Unicode,
|
||||
OUT UTF8_CHAR *Utf8Char,
|
||||
OUT UINT8 *ValidBytes
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1333,9 +1326,9 @@ UnicodeToUtf8 (
|
||||
**/
|
||||
VOID
|
||||
GetOneValidUtf8Char (
|
||||
IN TERMINAL_DEV *Utf8Device,
|
||||
OUT UTF8_CHAR *Utf8Char,
|
||||
OUT UINT8 *ValidBytes
|
||||
IN TERMINAL_DEV *Utf8Device,
|
||||
OUT UTF8_CHAR *Utf8Char,
|
||||
OUT UINT8 *ValidBytes
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1355,9 +1348,9 @@ GetOneValidUtf8Char (
|
||||
**/
|
||||
VOID
|
||||
Utf8ToUnicode (
|
||||
IN UTF8_CHAR Utf8Char,
|
||||
IN UINT8 ValidBytes,
|
||||
OUT CHAR16 *UnicodeChar
|
||||
IN UTF8_CHAR Utf8Char,
|
||||
IN UINT8 ValidBytes,
|
||||
OUT CHAR16 *UnicodeChar
|
||||
);
|
||||
|
||||
//
|
||||
@@ -1425,7 +1418,7 @@ TerminalIsValidEfiCntlChar (
|
||||
**/
|
||||
BOOLEAN
|
||||
IsHotPlugDevice (
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -1437,11 +1430,10 @@ IsHotPlugDevice (
|
||||
VOID
|
||||
EFIAPI
|
||||
TerminalConInTimerHandler (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Process key notify.
|
||||
|
||||
@@ -1451,8 +1443,8 @@ TerminalConInTimerHandler (
|
||||
VOID
|
||||
EFIAPI
|
||||
KeyNotifyProcessHandler (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -16,69 +16,69 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
//
|
||||
//
|
||||
UNICODE_TO_CHAR UnicodeToPcAnsiOrAscii[] = {
|
||||
{ BOXDRAW_HORIZONTAL, 0xc4, L'-' },
|
||||
{ BOXDRAW_VERTICAL, 0xb3, L'|' },
|
||||
{ BOXDRAW_DOWN_RIGHT, 0xda, L'/' },
|
||||
{ BOXDRAW_HORIZONTAL, 0xc4, L'-' },
|
||||
{ BOXDRAW_VERTICAL, 0xb3, L'|' },
|
||||
{ BOXDRAW_DOWN_RIGHT, 0xda, L'/' },
|
||||
{ BOXDRAW_DOWN_LEFT, 0xbf, L'\\' },
|
||||
{ BOXDRAW_UP_RIGHT, 0xc0, L'\\' },
|
||||
{ BOXDRAW_UP_LEFT, 0xd9, L'/' },
|
||||
{ BOXDRAW_VERTICAL_RIGHT, 0xc3, L'|' },
|
||||
{ BOXDRAW_VERTICAL_LEFT, 0xb4, L'|' },
|
||||
{ BOXDRAW_DOWN_HORIZONTAL, 0xc2, L'+' },
|
||||
{ BOXDRAW_UP_HORIZONTAL, 0xc1, L'+' },
|
||||
{ BOXDRAW_VERTICAL_HORIZONTAL, 0xc5, L'+' },
|
||||
{ BOXDRAW_DOUBLE_HORIZONTAL, 0xcd, L'-' },
|
||||
{ BOXDRAW_DOUBLE_VERTICAL, 0xba, L'|' },
|
||||
{ BOXDRAW_DOWN_RIGHT_DOUBLE, 0xd5, L'/' },
|
||||
{ BOXDRAW_DOWN_DOUBLE_RIGHT, 0xd6, L'/' },
|
||||
{ BOXDRAW_DOUBLE_DOWN_RIGHT, 0xc9, L'/' },
|
||||
{ BOXDRAW_UP_LEFT, 0xd9, L'/' },
|
||||
{ BOXDRAW_VERTICAL_RIGHT, 0xc3, L'|' },
|
||||
{ BOXDRAW_VERTICAL_LEFT, 0xb4, L'|' },
|
||||
{ BOXDRAW_DOWN_HORIZONTAL, 0xc2, L'+' },
|
||||
{ BOXDRAW_UP_HORIZONTAL, 0xc1, L'+' },
|
||||
{ BOXDRAW_VERTICAL_HORIZONTAL, 0xc5, L'+' },
|
||||
{ BOXDRAW_DOUBLE_HORIZONTAL, 0xcd, L'-' },
|
||||
{ BOXDRAW_DOUBLE_VERTICAL, 0xba, L'|' },
|
||||
{ BOXDRAW_DOWN_RIGHT_DOUBLE, 0xd5, L'/' },
|
||||
{ BOXDRAW_DOWN_DOUBLE_RIGHT, 0xd6, L'/' },
|
||||
{ BOXDRAW_DOUBLE_DOWN_RIGHT, 0xc9, L'/' },
|
||||
{ BOXDRAW_DOWN_LEFT_DOUBLE, 0xb8, L'\\' },
|
||||
{ BOXDRAW_DOWN_DOUBLE_LEFT, 0xb7, L'\\' },
|
||||
{ BOXDRAW_DOUBLE_DOWN_LEFT, 0xbb, L'\\' },
|
||||
{ BOXDRAW_UP_RIGHT_DOUBLE, 0xd4, L'\\' },
|
||||
{ BOXDRAW_UP_DOUBLE_RIGHT, 0xd3, L'\\' },
|
||||
{ BOXDRAW_DOUBLE_UP_RIGHT, 0xc8, L'\\' },
|
||||
{ BOXDRAW_UP_LEFT_DOUBLE, 0xbe, L'/' },
|
||||
{ BOXDRAW_UP_DOUBLE_LEFT, 0xbd, L'/' },
|
||||
{ BOXDRAW_DOUBLE_UP_LEFT, 0xbc, L'/' },
|
||||
{ BOXDRAW_VERTICAL_RIGHT_DOUBLE, 0xc6, L'|' },
|
||||
{ BOXDRAW_VERTICAL_DOUBLE_RIGHT, 0xc7, L'|' },
|
||||
{ BOXDRAW_DOUBLE_VERTICAL_RIGHT, 0xcc, L'|' },
|
||||
{ BOXDRAW_VERTICAL_LEFT_DOUBLE, 0xb5, L'|' },
|
||||
{ BOXDRAW_VERTICAL_DOUBLE_LEFT, 0xb6, L'|' },
|
||||
{ BOXDRAW_DOUBLE_VERTICAL_LEFT, 0xb9, L'|' },
|
||||
{ BOXDRAW_DOWN_HORIZONTAL_DOUBLE, 0xd1, L'+' },
|
||||
{ BOXDRAW_DOWN_DOUBLE_HORIZONTAL, 0xd2, L'+' },
|
||||
{ BOXDRAW_DOUBLE_DOWN_HORIZONTAL, 0xcb, L'+' },
|
||||
{ BOXDRAW_UP_HORIZONTAL_DOUBLE, 0xcf, L'+' },
|
||||
{ BOXDRAW_UP_DOUBLE_HORIZONTAL, 0xd0, L'+' },
|
||||
{ BOXDRAW_DOUBLE_UP_HORIZONTAL, 0xca, L'+' },
|
||||
{ BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE, 0xd8, L'+' },
|
||||
{ BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL, 0xd7, L'+' },
|
||||
{ BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL, 0xce, L'+' },
|
||||
{ BOXDRAW_UP_LEFT_DOUBLE, 0xbe, L'/' },
|
||||
{ BOXDRAW_UP_DOUBLE_LEFT, 0xbd, L'/' },
|
||||
{ BOXDRAW_DOUBLE_UP_LEFT, 0xbc, L'/' },
|
||||
{ BOXDRAW_VERTICAL_RIGHT_DOUBLE, 0xc6, L'|' },
|
||||
{ BOXDRAW_VERTICAL_DOUBLE_RIGHT, 0xc7, L'|' },
|
||||
{ BOXDRAW_DOUBLE_VERTICAL_RIGHT, 0xcc, L'|' },
|
||||
{ BOXDRAW_VERTICAL_LEFT_DOUBLE, 0xb5, L'|' },
|
||||
{ BOXDRAW_VERTICAL_DOUBLE_LEFT, 0xb6, L'|' },
|
||||
{ BOXDRAW_DOUBLE_VERTICAL_LEFT, 0xb9, L'|' },
|
||||
{ BOXDRAW_DOWN_HORIZONTAL_DOUBLE, 0xd1, L'+' },
|
||||
{ BOXDRAW_DOWN_DOUBLE_HORIZONTAL, 0xd2, L'+' },
|
||||
{ BOXDRAW_DOUBLE_DOWN_HORIZONTAL, 0xcb, L'+' },
|
||||
{ BOXDRAW_UP_HORIZONTAL_DOUBLE, 0xcf, L'+' },
|
||||
{ BOXDRAW_UP_DOUBLE_HORIZONTAL, 0xd0, L'+' },
|
||||
{ BOXDRAW_DOUBLE_UP_HORIZONTAL, 0xca, L'+' },
|
||||
{ BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE, 0xd8, L'+' },
|
||||
{ BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL, 0xd7, L'+' },
|
||||
{ BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL, 0xce, L'+' },
|
||||
|
||||
{ BLOCKELEMENT_FULL_BLOCK, 0xdb, L'*' },
|
||||
{ BLOCKELEMENT_LIGHT_SHADE, 0xb0, L'+' },
|
||||
{ BLOCKELEMENT_FULL_BLOCK, 0xdb, L'*' },
|
||||
{ BLOCKELEMENT_LIGHT_SHADE, 0xb0, L'+' },
|
||||
|
||||
{ GEOMETRICSHAPE_UP_TRIANGLE, '^', L'^' },
|
||||
{ GEOMETRICSHAPE_RIGHT_TRIANGLE, '>', L'>' },
|
||||
{ GEOMETRICSHAPE_DOWN_TRIANGLE, 'v', L'v' },
|
||||
{ GEOMETRICSHAPE_LEFT_TRIANGLE, '<', L'<' },
|
||||
{ GEOMETRICSHAPE_UP_TRIANGLE, '^', L'^' },
|
||||
{ GEOMETRICSHAPE_RIGHT_TRIANGLE, '>', L'>' },
|
||||
{ GEOMETRICSHAPE_DOWN_TRIANGLE, 'v', L'v' },
|
||||
{ GEOMETRICSHAPE_LEFT_TRIANGLE, '<', L'<' },
|
||||
|
||||
{ ARROW_LEFT, '<', L'<' },
|
||||
{ ARROW_UP, '^', L'^' },
|
||||
{ ARROW_RIGHT, '>', L'>' },
|
||||
{ ARROW_DOWN, 'v', L'v' },
|
||||
{ ARROW_LEFT, '<', L'<' },
|
||||
{ ARROW_UP, '^', L'^' },
|
||||
{ ARROW_RIGHT, '>', L'>' },
|
||||
{ ARROW_DOWN, 'v', L'v' },
|
||||
|
||||
{ 0x0000, 0x00, L'\0' }
|
||||
};
|
||||
|
||||
CHAR16 mSetModeString[] = { ESC, '[', '=', '3', 'h', 0 };
|
||||
CHAR16 mSetAttributeString[] = { ESC, '[', '0', 'm', ESC, '[', '4', '0', 'm', ESC, '[', '4', '0', 'm', 0 };
|
||||
CHAR16 mClearScreenString[] = { ESC, '[', '2', 'J', 0 };
|
||||
CHAR16 mSetCursorPositionString[] = { ESC, '[', '0', '0', ';', '0', '0', 'H', 0 };
|
||||
CHAR16 mCursorForwardString[] = { ESC, '[', '0', '0', 'C', 0 };
|
||||
CHAR16 mCursorBackwardString[] = { ESC, '[', '0', '0', 'D', 0 };
|
||||
CHAR16 mSetModeString[] = { ESC, '[', '=', '3', 'h', 0 };
|
||||
CHAR16 mSetAttributeString[] = { ESC, '[', '0', 'm', ESC, '[', '4', '0', 'm', ESC, '[', '4', '0', 'm', 0 };
|
||||
CHAR16 mClearScreenString[] = { ESC, '[', '2', 'J', 0 };
|
||||
CHAR16 mSetCursorPositionString[] = { ESC, '[', '0', '0', ';', '0', '0', 'H', 0 };
|
||||
CHAR16 mCursorForwardString[] = { ESC, '[', '0', '0', 'C', 0 };
|
||||
CHAR16 mCursorBackwardString[] = { ESC, '[', '0', '0', 'D', 0 };
|
||||
|
||||
//
|
||||
// Body of the ConOut functions
|
||||
@@ -147,7 +147,6 @@ TerminalConOutReset (
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.OutputString().
|
||||
|
||||
@@ -172,26 +171,26 @@ TerminalConOutOutputString (
|
||||
IN CHAR16 *WString
|
||||
)
|
||||
{
|
||||
TERMINAL_DEV *TerminalDevice;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;
|
||||
UINTN MaxColumn;
|
||||
UINTN MaxRow;
|
||||
UINTN Length;
|
||||
UTF8_CHAR Utf8Char;
|
||||
CHAR8 GraphicChar;
|
||||
CHAR8 AsciiChar;
|
||||
EFI_STATUS Status;
|
||||
UINT8 ValidBytes;
|
||||
CHAR8 CrLfStr[2];
|
||||
TERMINAL_DEV *TerminalDevice;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;
|
||||
UINTN MaxColumn;
|
||||
UINTN MaxRow;
|
||||
UINTN Length;
|
||||
UTF8_CHAR Utf8Char;
|
||||
CHAR8 GraphicChar;
|
||||
CHAR8 AsciiChar;
|
||||
EFI_STATUS Status;
|
||||
UINT8 ValidBytes;
|
||||
CHAR8 CrLfStr[2];
|
||||
//
|
||||
// flag used to indicate whether condition happens which will cause
|
||||
// return EFI_WARN_UNKNOWN_GLYPH
|
||||
//
|
||||
BOOLEAN Warning;
|
||||
BOOLEAN Warning;
|
||||
|
||||
ValidBytes = 0;
|
||||
Warning = FALSE;
|
||||
AsciiChar = 0;
|
||||
ValidBytes = 0;
|
||||
Warning = FALSE;
|
||||
AsciiChar = 0;
|
||||
|
||||
//
|
||||
// get Terminal device data structure pointer.
|
||||
@@ -214,137 +213,134 @@ TerminalConOutOutputString (
|
||||
&MaxRow
|
||||
);
|
||||
|
||||
for (; *WString != CHAR_NULL; WString++) {
|
||||
|
||||
for ( ; *WString != CHAR_NULL; WString++) {
|
||||
switch (TerminalDevice->TerminalType) {
|
||||
case TerminalTypePcAnsi:
|
||||
case TerminalTypeVt100:
|
||||
case TerminalTypeVt100Plus:
|
||||
case TerminalTypeTtyTerm:
|
||||
case TerminalTypeLinux:
|
||||
case TerminalTypeXtermR6:
|
||||
case TerminalTypeVt400:
|
||||
case TerminalTypeSCO:
|
||||
|
||||
case TerminalTypePcAnsi:
|
||||
case TerminalTypeVt100:
|
||||
case TerminalTypeVt100Plus:
|
||||
case TerminalTypeTtyTerm:
|
||||
case TerminalTypeLinux:
|
||||
case TerminalTypeXtermR6:
|
||||
case TerminalTypeVt400:
|
||||
case TerminalTypeSCO:
|
||||
|
||||
if (!TerminalIsValidTextGraphics (*WString, &GraphicChar, &AsciiChar)) {
|
||||
//
|
||||
// If it's not a graphic character convert Unicode to ASCII.
|
||||
//
|
||||
GraphicChar = (CHAR8) *WString;
|
||||
|
||||
if (!(TerminalIsValidAscii (GraphicChar) || TerminalIsValidEfiCntlChar (GraphicChar))) {
|
||||
if (!TerminalIsValidTextGraphics (*WString, &GraphicChar, &AsciiChar)) {
|
||||
//
|
||||
// when this driver use the OutputString to output control string,
|
||||
// TerminalDevice->OutputEscChar is set to let the Esc char
|
||||
// to be output to the terminal emulation software.
|
||||
// If it's not a graphic character convert Unicode to ASCII.
|
||||
//
|
||||
if ((GraphicChar == 27) && TerminalDevice->OutputEscChar) {
|
||||
GraphicChar = 27;
|
||||
} else {
|
||||
GraphicChar = '?';
|
||||
Warning = TRUE;
|
||||
GraphicChar = (CHAR8)*WString;
|
||||
|
||||
if (!(TerminalIsValidAscii (GraphicChar) || TerminalIsValidEfiCntlChar (GraphicChar))) {
|
||||
//
|
||||
// when this driver use the OutputString to output control string,
|
||||
// TerminalDevice->OutputEscChar is set to let the Esc char
|
||||
// to be output to the terminal emulation software.
|
||||
//
|
||||
if ((GraphicChar == 27) && TerminalDevice->OutputEscChar) {
|
||||
GraphicChar = 27;
|
||||
} else {
|
||||
GraphicChar = '?';
|
||||
Warning = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
AsciiChar = GraphicChar;
|
||||
}
|
||||
|
||||
AsciiChar = GraphicChar;
|
||||
if (TerminalDevice->TerminalType != TerminalTypePcAnsi) {
|
||||
GraphicChar = AsciiChar;
|
||||
}
|
||||
|
||||
}
|
||||
Length = 1;
|
||||
|
||||
if (TerminalDevice->TerminalType != TerminalTypePcAnsi) {
|
||||
GraphicChar = AsciiChar;
|
||||
}
|
||||
Status = TerminalDevice->SerialIo->Write (
|
||||
TerminalDevice->SerialIo,
|
||||
&Length,
|
||||
&GraphicChar
|
||||
);
|
||||
|
||||
Length = 1;
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto OutputError;
|
||||
}
|
||||
|
||||
Status = TerminalDevice->SerialIo->Write (
|
||||
TerminalDevice->SerialIo,
|
||||
&Length,
|
||||
&GraphicChar
|
||||
);
|
||||
break;
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto OutputError;
|
||||
}
|
||||
case TerminalTypeVtUtf8:
|
||||
UnicodeToUtf8 (*WString, &Utf8Char, &ValidBytes);
|
||||
Length = ValidBytes;
|
||||
Status = TerminalDevice->SerialIo->Write (
|
||||
TerminalDevice->SerialIo,
|
||||
&Length,
|
||||
(UINT8 *)&Utf8Char
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto OutputError;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case TerminalTypeVtUtf8:
|
||||
UnicodeToUtf8 (*WString, &Utf8Char, &ValidBytes);
|
||||
Length = ValidBytes;
|
||||
Status = TerminalDevice->SerialIo->Write (
|
||||
TerminalDevice->SerialIo,
|
||||
&Length,
|
||||
(UINT8 *) &Utf8Char
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto OutputError;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// Update cursor position.
|
||||
//
|
||||
switch (*WString) {
|
||||
case CHAR_BACKSPACE:
|
||||
if (Mode->CursorColumn > 0) {
|
||||
Mode->CursorColumn--;
|
||||
}
|
||||
|
||||
case CHAR_BACKSPACE:
|
||||
if (Mode->CursorColumn > 0) {
|
||||
Mode->CursorColumn--;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case CHAR_LINEFEED:
|
||||
if (Mode->CursorRow < (INT32) (MaxRow - 1)) {
|
||||
Mode->CursorRow++;
|
||||
}
|
||||
break;
|
||||
|
||||
case CHAR_CARRIAGE_RETURN:
|
||||
Mode->CursorColumn = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (Mode->CursorColumn < (INT32) (MaxColumn - 1)) {
|
||||
|
||||
Mode->CursorColumn++;
|
||||
|
||||
} else {
|
||||
|
||||
Mode->CursorColumn = 0;
|
||||
if (Mode->CursorRow < (INT32) (MaxRow - 1)) {
|
||||
case CHAR_LINEFEED:
|
||||
if (Mode->CursorRow < (INT32)(MaxRow - 1)) {
|
||||
Mode->CursorRow++;
|
||||
}
|
||||
|
||||
if (TerminalDevice->TerminalType == TerminalTypeTtyTerm &&
|
||||
!TerminalDevice->OutputEscChar) {
|
||||
//
|
||||
// We've written the last character on the line. The
|
||||
// terminal doesn't actually wrap its cursor until we print
|
||||
// the next character, but the driver thinks it has wrapped
|
||||
// already. Print CR LF to synchronize the terminal with
|
||||
// the driver, but only if we're not in the middle of
|
||||
// printing an escape sequence.
|
||||
//
|
||||
CrLfStr[0] = '\r';
|
||||
CrLfStr[1] = '\n';
|
||||
break;
|
||||
|
||||
Length = sizeof(CrLfStr);
|
||||
case CHAR_CARRIAGE_RETURN:
|
||||
Mode->CursorColumn = 0;
|
||||
break;
|
||||
|
||||
Status = TerminalDevice->SerialIo->Write (
|
||||
TerminalDevice->SerialIo,
|
||||
&Length,
|
||||
CrLfStr
|
||||
);
|
||||
default:
|
||||
if (Mode->CursorColumn < (INT32)(MaxColumn - 1)) {
|
||||
Mode->CursorColumn++;
|
||||
} else {
|
||||
Mode->CursorColumn = 0;
|
||||
if (Mode->CursorRow < (INT32)(MaxRow - 1)) {
|
||||
Mode->CursorRow++;
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto OutputError;
|
||||
if ((TerminalDevice->TerminalType == TerminalTypeTtyTerm) &&
|
||||
!TerminalDevice->OutputEscChar)
|
||||
{
|
||||
//
|
||||
// We've written the last character on the line. The
|
||||
// terminal doesn't actually wrap its cursor until we print
|
||||
// the next character, but the driver thinks it has wrapped
|
||||
// already. Print CR LF to synchronize the terminal with
|
||||
// the driver, but only if we're not in the middle of
|
||||
// printing an escape sequence.
|
||||
//
|
||||
CrLfStr[0] = '\r';
|
||||
CrLfStr[1] = '\n';
|
||||
|
||||
Length = sizeof (CrLfStr);
|
||||
|
||||
Status = TerminalDevice->SerialIo->Write (
|
||||
TerminalDevice->SerialIo,
|
||||
&Length,
|
||||
CrLfStr
|
||||
);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto OutputError;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
};
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (Warning) {
|
||||
@@ -363,7 +359,6 @@ OutputError:
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.TestString().
|
||||
|
||||
@@ -395,27 +390,25 @@ TerminalConOutTestString (
|
||||
TerminalDevice = TERMINAL_CON_OUT_DEV_FROM_THIS (This);
|
||||
|
||||
switch (TerminalDevice->TerminalType) {
|
||||
case TerminalTypePcAnsi:
|
||||
case TerminalTypeVt100:
|
||||
case TerminalTypeVt100Plus:
|
||||
case TerminalTypeTtyTerm:
|
||||
Status = AnsiTestString (TerminalDevice, WString);
|
||||
break;
|
||||
|
||||
case TerminalTypePcAnsi:
|
||||
case TerminalTypeVt100:
|
||||
case TerminalTypeVt100Plus:
|
||||
case TerminalTypeTtyTerm:
|
||||
Status = AnsiTestString (TerminalDevice, WString);
|
||||
break;
|
||||
case TerminalTypeVtUtf8:
|
||||
Status = VTUTF8TestString (TerminalDevice, WString);
|
||||
break;
|
||||
|
||||
case TerminalTypeVtUtf8:
|
||||
Status = VTUTF8TestString (TerminalDevice, WString);
|
||||
break;
|
||||
|
||||
default:
|
||||
Status = EFI_UNSUPPORTED;
|
||||
break;
|
||||
default:
|
||||
Status = EFI_UNSUPPORTED;
|
||||
break;
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.QueryMode().
|
||||
|
||||
@@ -442,7 +435,7 @@ TerminalConOutQueryMode (
|
||||
{
|
||||
TERMINAL_DEV *TerminalDevice;
|
||||
|
||||
if (ModeNumber >= (UINTN) This->Mode->MaxMode) {
|
||||
if (ModeNumber >= (UINTN)This->Mode->MaxMode) {
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
@@ -450,13 +443,12 @@ TerminalConOutQueryMode (
|
||||
// Get Terminal device data structure pointer.
|
||||
//
|
||||
TerminalDevice = TERMINAL_CON_OUT_DEV_FROM_THIS (This);
|
||||
*Columns = TerminalDevice->TerminalConsoleModeData[ModeNumber].Columns;
|
||||
*Rows = TerminalDevice->TerminalConsoleModeData[ModeNumber].Rows;
|
||||
*Columns = TerminalDevice->TerminalConsoleModeData[ModeNumber].Columns;
|
||||
*Rows = TerminalDevice->TerminalConsoleModeData[ModeNumber].Rows;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Implements EFI_SIMPLE_TEXT_OUT.SetMode().
|
||||
|
||||
@@ -487,14 +479,14 @@ TerminalConOutSetMode (
|
||||
//
|
||||
TerminalDevice = TERMINAL_CON_OUT_DEV_FROM_THIS (This);
|
||||
|
||||
if (ModeNumber >= (UINTN) This->Mode->MaxMode) {
|
||||
if (ModeNumber >= (UINTN)This->Mode->MaxMode) {
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
//
|
||||
// Set the current mode
|
||||
//
|
||||
This->Mode->Mode = (INT32) ModeNumber;
|
||||
This->Mode->Mode = (INT32)ModeNumber;
|
||||
|
||||
This->ClearScreen (This);
|
||||
|
||||
@@ -506,18 +498,16 @@ TerminalConOutSetMode (
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
This->Mode->Mode = (INT32) ModeNumber;
|
||||
This->Mode->Mode = (INT32)ModeNumber;
|
||||
|
||||
Status = This->ClearScreen (This);
|
||||
Status = This->ClearScreen (This);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetAttribute().
|
||||
|
||||
@@ -564,7 +554,7 @@ TerminalConOutSetAttribute (
|
||||
// Skip outputting the command string for the same attribute
|
||||
// It improves the terminal performance significantly
|
||||
//
|
||||
if (This->Mode->Attribute == (INT32) Attribute) {
|
||||
if (This->Mode->Attribute == (INT32)Attribute) {
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -573,103 +563,102 @@ TerminalConOutSetAttribute (
|
||||
// understandable foreground color
|
||||
//
|
||||
switch (Attribute & 0x07) {
|
||||
case EFI_BLACK:
|
||||
ForegroundControl = 30;
|
||||
break;
|
||||
|
||||
case EFI_BLACK:
|
||||
ForegroundControl = 30;
|
||||
break;
|
||||
case EFI_BLUE:
|
||||
ForegroundControl = 34;
|
||||
break;
|
||||
|
||||
case EFI_BLUE:
|
||||
ForegroundControl = 34;
|
||||
break;
|
||||
case EFI_GREEN:
|
||||
ForegroundControl = 32;
|
||||
break;
|
||||
|
||||
case EFI_GREEN:
|
||||
ForegroundControl = 32;
|
||||
break;
|
||||
case EFI_CYAN:
|
||||
ForegroundControl = 36;
|
||||
break;
|
||||
|
||||
case EFI_CYAN:
|
||||
ForegroundControl = 36;
|
||||
break;
|
||||
case EFI_RED:
|
||||
ForegroundControl = 31;
|
||||
break;
|
||||
|
||||
case EFI_RED:
|
||||
ForegroundControl = 31;
|
||||
break;
|
||||
case EFI_MAGENTA:
|
||||
ForegroundControl = 35;
|
||||
break;
|
||||
|
||||
case EFI_MAGENTA:
|
||||
ForegroundControl = 35;
|
||||
break;
|
||||
case EFI_BROWN:
|
||||
ForegroundControl = 33;
|
||||
break;
|
||||
|
||||
case EFI_BROWN:
|
||||
ForegroundControl = 33;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
case EFI_LIGHTGRAY:
|
||||
ForegroundControl = 37;
|
||||
break;
|
||||
default:
|
||||
|
||||
case EFI_LIGHTGRAY:
|
||||
ForegroundControl = 37;
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// bit4 of the Attribute indicates bright control
|
||||
// of terminal emulator.
|
||||
//
|
||||
BrightControl = (UINT8) ((Attribute >> 3) & 1);
|
||||
BrightControl = (UINT8)((Attribute >> 3) & 1);
|
||||
|
||||
//
|
||||
// convert Attribute value to terminal emulator
|
||||
// understandable background color.
|
||||
//
|
||||
switch ((Attribute >> 4) & 0x07) {
|
||||
case EFI_BLACK:
|
||||
BackgroundControl = 40;
|
||||
break;
|
||||
|
||||
case EFI_BLACK:
|
||||
BackgroundControl = 40;
|
||||
break;
|
||||
case EFI_BLUE:
|
||||
BackgroundControl = 44;
|
||||
break;
|
||||
|
||||
case EFI_BLUE:
|
||||
BackgroundControl = 44;
|
||||
break;
|
||||
case EFI_GREEN:
|
||||
BackgroundControl = 42;
|
||||
break;
|
||||
|
||||
case EFI_GREEN:
|
||||
BackgroundControl = 42;
|
||||
break;
|
||||
case EFI_CYAN:
|
||||
BackgroundControl = 46;
|
||||
break;
|
||||
|
||||
case EFI_CYAN:
|
||||
BackgroundControl = 46;
|
||||
break;
|
||||
case EFI_RED:
|
||||
BackgroundControl = 41;
|
||||
break;
|
||||
|
||||
case EFI_RED:
|
||||
BackgroundControl = 41;
|
||||
break;
|
||||
case EFI_MAGENTA:
|
||||
BackgroundControl = 45;
|
||||
break;
|
||||
|
||||
case EFI_MAGENTA:
|
||||
BackgroundControl = 45;
|
||||
break;
|
||||
case EFI_BROWN:
|
||||
BackgroundControl = 43;
|
||||
break;
|
||||
|
||||
case EFI_BROWN:
|
||||
BackgroundControl = 43;
|
||||
break;
|
||||
default:
|
||||
|
||||
default:
|
||||
|
||||
case EFI_LIGHTGRAY:
|
||||
BackgroundControl = 47;
|
||||
break;
|
||||
case EFI_LIGHTGRAY:
|
||||
BackgroundControl = 47;
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// terminal emulator's control sequence to set attributes
|
||||
//
|
||||
mSetAttributeString[BRIGHT_CONTROL_OFFSET] = (CHAR16) ('0' + BrightControl);
|
||||
mSetAttributeString[FOREGROUND_CONTROL_OFFSET + 0] = (CHAR16) ('0' + (ForegroundControl / 10));
|
||||
mSetAttributeString[FOREGROUND_CONTROL_OFFSET + 1] = (CHAR16) ('0' + (ForegroundControl % 10));
|
||||
mSetAttributeString[BACKGROUND_CONTROL_OFFSET + 0] = (CHAR16) ('0' + (BackgroundControl / 10));
|
||||
mSetAttributeString[BACKGROUND_CONTROL_OFFSET + 1] = (CHAR16) ('0' + (BackgroundControl % 10));
|
||||
mSetAttributeString[BRIGHT_CONTROL_OFFSET] = (CHAR16)('0' + BrightControl);
|
||||
mSetAttributeString[FOREGROUND_CONTROL_OFFSET + 0] = (CHAR16)('0' + (ForegroundControl / 10));
|
||||
mSetAttributeString[FOREGROUND_CONTROL_OFFSET + 1] = (CHAR16)('0' + (ForegroundControl % 10));
|
||||
mSetAttributeString[BACKGROUND_CONTROL_OFFSET + 0] = (CHAR16)('0' + (BackgroundControl / 10));
|
||||
mSetAttributeString[BACKGROUND_CONTROL_OFFSET + 1] = (CHAR16)('0' + (BackgroundControl % 10));
|
||||
|
||||
//
|
||||
// save current column and row
|
||||
// for future scrolling back use.
|
||||
//
|
||||
SavedColumn = This->Mode->CursorColumn;
|
||||
SavedRow = This->Mode->CursorRow;
|
||||
SavedColumn = This->Mode->CursorColumn;
|
||||
SavedRow = This->Mode->CursorRow;
|
||||
|
||||
TerminalDevice->OutputEscChar = TRUE;
|
||||
Status = This->OutputString (This, mSetAttributeString);
|
||||
@@ -678,19 +667,18 @@ TerminalConOutSetAttribute (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
//
|
||||
// scroll back to saved cursor position.
|
||||
//
|
||||
This->Mode->CursorColumn = SavedColumn;
|
||||
This->Mode->CursorRow = SavedRow;
|
||||
This->Mode->CursorColumn = SavedColumn;
|
||||
This->Mode->CursorRow = SavedRow;
|
||||
|
||||
This->Mode->Attribute = (INT32) Attribute;
|
||||
This->Mode->Attribute = (INT32)Attribute;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.ClearScreen().
|
||||
It clears the ANSI terminal's display to the
|
||||
@@ -730,7 +718,6 @@ TerminalConOutClearScreen (
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Implements EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.SetCursorPosition().
|
||||
|
||||
@@ -752,12 +739,12 @@ TerminalConOutSetCursorPosition (
|
||||
IN UINTN Row
|
||||
)
|
||||
{
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;
|
||||
UINTN MaxColumn;
|
||||
UINTN MaxRow;
|
||||
EFI_STATUS Status;
|
||||
TERMINAL_DEV *TerminalDevice;
|
||||
CHAR16 *String;
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;
|
||||
UINTN MaxColumn;
|
||||
UINTN MaxRow;
|
||||
EFI_STATUS Status;
|
||||
TERMINAL_DEV *TerminalDevice;
|
||||
CHAR16 *String;
|
||||
|
||||
TerminalDevice = TERMINAL_CON_OUT_DEV_FROM_THIS (This);
|
||||
|
||||
@@ -770,18 +757,19 @@ TerminalConOutSetCursorPosition (
|
||||
// get geometry of current mode
|
||||
//
|
||||
Status = This->QueryMode (
|
||||
This,
|
||||
Mode->Mode,
|
||||
&MaxColumn,
|
||||
&MaxRow
|
||||
);
|
||||
This,
|
||||
Mode->Mode,
|
||||
&MaxColumn,
|
||||
&MaxRow
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
if (Column >= MaxColumn || Row >= MaxRow) {
|
||||
if ((Column >= MaxColumn) || (Row >= MaxRow)) {
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
//
|
||||
// control sequence to move the cursor
|
||||
//
|
||||
@@ -789,48 +777,46 @@ TerminalConOutSetCursorPosition (
|
||||
// within the current line if possible, and don't output anyting if
|
||||
// it isn't necessary.
|
||||
//
|
||||
if (TerminalDevice->TerminalType == TerminalTypeTtyTerm &&
|
||||
(UINTN)Mode->CursorRow == Row) {
|
||||
if ((TerminalDevice->TerminalType == TerminalTypeTtyTerm) &&
|
||||
((UINTN)Mode->CursorRow == Row))
|
||||
{
|
||||
if ((UINTN)Mode->CursorColumn > Column) {
|
||||
mCursorBackwardString[FW_BACK_OFFSET + 0] = (CHAR16) ('0' + ((Mode->CursorColumn - Column) / 10));
|
||||
mCursorBackwardString[FW_BACK_OFFSET + 1] = (CHAR16) ('0' + ((Mode->CursorColumn - Column) % 10));
|
||||
String = mCursorBackwardString;
|
||||
}
|
||||
else if (Column > (UINTN)Mode->CursorColumn) {
|
||||
mCursorForwardString[FW_BACK_OFFSET + 0] = (CHAR16) ('0' + ((Column - Mode->CursorColumn) / 10));
|
||||
mCursorForwardString[FW_BACK_OFFSET + 1] = (CHAR16) ('0' + ((Column - Mode->CursorColumn) % 10));
|
||||
String = mCursorForwardString;
|
||||
}
|
||||
else {
|
||||
mCursorBackwardString[FW_BACK_OFFSET + 0] = (CHAR16)('0' + ((Mode->CursorColumn - Column) / 10));
|
||||
mCursorBackwardString[FW_BACK_OFFSET + 1] = (CHAR16)('0' + ((Mode->CursorColumn - Column) % 10));
|
||||
String = mCursorBackwardString;
|
||||
} else if (Column > (UINTN)Mode->CursorColumn) {
|
||||
mCursorForwardString[FW_BACK_OFFSET + 0] = (CHAR16)('0' + ((Column - Mode->CursorColumn) / 10));
|
||||
mCursorForwardString[FW_BACK_OFFSET + 1] = (CHAR16)('0' + ((Column - Mode->CursorColumn) % 10));
|
||||
String = mCursorForwardString;
|
||||
} else {
|
||||
String = L""; // No cursor motion necessary
|
||||
}
|
||||
}
|
||||
else {
|
||||
mSetCursorPositionString[ROW_OFFSET + 0] = (CHAR16) ('0' + ((Row + 1) / 10));
|
||||
mSetCursorPositionString[ROW_OFFSET + 1] = (CHAR16) ('0' + ((Row + 1) % 10));
|
||||
mSetCursorPositionString[COLUMN_OFFSET + 0] = (CHAR16) ('0' + ((Column + 1) / 10));
|
||||
mSetCursorPositionString[COLUMN_OFFSET + 1] = (CHAR16) ('0' + ((Column + 1) % 10));
|
||||
String = mSetCursorPositionString;
|
||||
} else {
|
||||
mSetCursorPositionString[ROW_OFFSET + 0] = (CHAR16)('0' + ((Row + 1) / 10));
|
||||
mSetCursorPositionString[ROW_OFFSET + 1] = (CHAR16)('0' + ((Row + 1) % 10));
|
||||
mSetCursorPositionString[COLUMN_OFFSET + 0] = (CHAR16)('0' + ((Column + 1) / 10));
|
||||
mSetCursorPositionString[COLUMN_OFFSET + 1] = (CHAR16)('0' + ((Column + 1) % 10));
|
||||
String = mSetCursorPositionString;
|
||||
}
|
||||
|
||||
TerminalDevice->OutputEscChar = TRUE;
|
||||
Status = This->OutputString (This, String);
|
||||
TerminalDevice->OutputEscChar = TRUE;
|
||||
Status = This->OutputString (This, String);
|
||||
TerminalDevice->OutputEscChar = FALSE;
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
//
|
||||
// update current cursor position
|
||||
// in the Mode data structure.
|
||||
//
|
||||
Mode->CursorColumn = (INT32) Column;
|
||||
Mode->CursorRow = (INT32) Row;
|
||||
Mode->CursorColumn = (INT32)Column;
|
||||
Mode->CursorRow = (INT32)Row;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Implements SIMPLE_TEXT_OUTPUT.EnableCursor().
|
||||
|
||||
@@ -858,7 +844,6 @@ TerminalConOutEnableCursor (
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Detects if a Unicode char is for Box Drawing text graphics.
|
||||
|
||||
@@ -878,7 +863,7 @@ TerminalIsValidTextGraphics (
|
||||
OUT CHAR8 *Ascii OPTIONAL
|
||||
)
|
||||
{
|
||||
UNICODE_TO_CHAR *Table;
|
||||
UNICODE_TO_CHAR *Table;
|
||||
|
||||
if ((((Graphic & 0xff00) != 0x2500) && ((Graphic & 0xff00) != 0x2100))) {
|
||||
//
|
||||
@@ -946,12 +931,13 @@ TerminalIsValidEfiCntlChar (
|
||||
//
|
||||
// only support four control characters.
|
||||
//
|
||||
if (CharC == CHAR_NULL ||
|
||||
CharC == CHAR_BACKSPACE ||
|
||||
CharC == CHAR_LINEFEED ||
|
||||
CharC == CHAR_CARRIAGE_RETURN ||
|
||||
CharC == CHAR_TAB
|
||||
) {
|
||||
if ((CharC == CHAR_NULL) ||
|
||||
(CharC == CHAR_BACKSPACE) ||
|
||||
(CharC == CHAR_LINEFEED) ||
|
||||
(CharC == CHAR_CARRIAGE_RETURN) ||
|
||||
(CharC == CHAR_TAB)
|
||||
)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@@ -17,12 +17,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
VOID
|
||||
VTUTF8RawDataToUnicode (
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
IN TERMINAL_DEV *TerminalDevice
|
||||
)
|
||||
{
|
||||
UTF8_CHAR Utf8Char;
|
||||
UINT8 ValidBytes;
|
||||
UINT16 UnicodeChar;
|
||||
UTF8_CHAR Utf8Char;
|
||||
UINT8 ValidBytes;
|
||||
UINT16 UnicodeChar;
|
||||
|
||||
ValidBytes = 0;
|
||||
//
|
||||
@@ -31,14 +31,13 @@ VTUTF8RawDataToUnicode (
|
||||
// the unicode into unicode fifo, until the raw fifo is empty.
|
||||
//
|
||||
while (!IsRawFiFoEmpty (TerminalDevice) && !IsUnicodeFiFoFull (TerminalDevice)) {
|
||||
|
||||
GetOneValidUtf8Char (TerminalDevice, &Utf8Char, &ValidBytes);
|
||||
|
||||
if (ValidBytes < 1 || ValidBytes > 3) {
|
||||
if ((ValidBytes < 1) || (ValidBytes > 3)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Utf8ToUnicode (Utf8Char, ValidBytes, (CHAR16 *) &UnicodeChar);
|
||||
Utf8ToUnicode (Utf8Char, ValidBytes, (CHAR16 *)&UnicodeChar);
|
||||
|
||||
UnicodeFiFoInsertOneKey (TerminalDevice, UnicodeChar);
|
||||
}
|
||||
@@ -55,14 +54,14 @@ VTUTF8RawDataToUnicode (
|
||||
**/
|
||||
VOID
|
||||
GetOneValidUtf8Char (
|
||||
IN TERMINAL_DEV *Utf8Device,
|
||||
OUT UTF8_CHAR *Utf8Char,
|
||||
OUT UINT8 *ValidBytes
|
||||
IN TERMINAL_DEV *Utf8Device,
|
||||
OUT UTF8_CHAR *Utf8Char,
|
||||
OUT UINT8 *ValidBytes
|
||||
)
|
||||
{
|
||||
UINT8 Temp;
|
||||
UINT8 Index;
|
||||
BOOLEAN FetchFlag;
|
||||
UINT8 Temp;
|
||||
UINT8 Index;
|
||||
BOOLEAN FetchFlag;
|
||||
|
||||
Temp = 0;
|
||||
Index = 0;
|
||||
@@ -75,88 +74,82 @@ GetOneValidUtf8Char (
|
||||
*ValidBytes = 0;
|
||||
|
||||
while (!IsRawFiFoEmpty (Utf8Device)) {
|
||||
|
||||
RawFiFoRemoveOneKey (Utf8Device, &Temp);
|
||||
|
||||
switch (*ValidBytes) {
|
||||
case 0:
|
||||
if ((Temp & 0x80) == 0) {
|
||||
//
|
||||
// one-byte utf8 char
|
||||
//
|
||||
*ValidBytes = 1;
|
||||
|
||||
case 0:
|
||||
if ((Temp & 0x80) == 0) {
|
||||
//
|
||||
// one-byte utf8 char
|
||||
//
|
||||
*ValidBytes = 1;
|
||||
Utf8Char->Utf8_1 = Temp;
|
||||
|
||||
Utf8Char->Utf8_1 = Temp;
|
||||
FetchFlag = FALSE;
|
||||
} else if ((Temp & 0xe0) == 0xc0) {
|
||||
//
|
||||
// two-byte utf8 char
|
||||
//
|
||||
*ValidBytes = 2;
|
||||
|
||||
FetchFlag = FALSE;
|
||||
Utf8Char->Utf8_2[1] = Temp;
|
||||
} else if ((Temp & 0xf0) == 0xe0) {
|
||||
//
|
||||
// three-byte utf8 char
|
||||
//
|
||||
*ValidBytes = 3;
|
||||
|
||||
} else if ((Temp & 0xe0) == 0xc0) {
|
||||
//
|
||||
// two-byte utf8 char
|
||||
//
|
||||
*ValidBytes = 2;
|
||||
Utf8Char->Utf8_3[2] = Temp;
|
||||
|
||||
Utf8Char->Utf8_2[1] = Temp;
|
||||
|
||||
} else if ((Temp & 0xf0) == 0xe0) {
|
||||
//
|
||||
// three-byte utf8 char
|
||||
//
|
||||
*ValidBytes = 3;
|
||||
|
||||
Utf8Char->Utf8_3[2] = Temp;
|
||||
|
||||
Index++;
|
||||
|
||||
} else {
|
||||
//
|
||||
// reset *ValidBytes to zero, let valid utf8 char search restart
|
||||
//
|
||||
*ValidBytes = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 2:
|
||||
//
|
||||
// two-byte utf8 char go on
|
||||
//
|
||||
if ((Temp & 0xc0) == 0x80) {
|
||||
|
||||
Utf8Char->Utf8_2[0] = Temp;
|
||||
|
||||
FetchFlag = FALSE;
|
||||
|
||||
} else {
|
||||
|
||||
*ValidBytes = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
//
|
||||
// three-byte utf8 char go on
|
||||
//
|
||||
if ((Temp & 0xc0) == 0x80) {
|
||||
if (Index == 1) {
|
||||
Utf8Char->Utf8_3[1] = Temp;
|
||||
Index++;
|
||||
} else {
|
||||
Utf8Char->Utf8_3[0] = Temp;
|
||||
FetchFlag = FALSE;
|
||||
//
|
||||
// reset *ValidBytes to zero, let valid utf8 char search restart
|
||||
//
|
||||
*ValidBytes = 0;
|
||||
}
|
||||
} else {
|
||||
//
|
||||
// reset *ValidBytes and Index to zero, let valid utf8 char search restart
|
||||
//
|
||||
*ValidBytes = 0;
|
||||
Index = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
//
|
||||
// two-byte utf8 char go on
|
||||
//
|
||||
if ((Temp & 0xc0) == 0x80) {
|
||||
Utf8Char->Utf8_2[0] = Temp;
|
||||
|
||||
FetchFlag = FALSE;
|
||||
} else {
|
||||
*ValidBytes = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 3:
|
||||
//
|
||||
// three-byte utf8 char go on
|
||||
//
|
||||
if ((Temp & 0xc0) == 0x80) {
|
||||
if (Index == 1) {
|
||||
Utf8Char->Utf8_3[1] = Temp;
|
||||
Index++;
|
||||
} else {
|
||||
Utf8Char->Utf8_3[0] = Temp;
|
||||
FetchFlag = FALSE;
|
||||
}
|
||||
} else {
|
||||
//
|
||||
// reset *ValidBytes and Index to zero, let valid utf8 char search restart
|
||||
//
|
||||
*ValidBytes = 0;
|
||||
Index = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (!FetchFlag) {
|
||||
@@ -164,7 +157,7 @@ GetOneValidUtf8Char (
|
||||
}
|
||||
}
|
||||
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -184,16 +177,16 @@ GetOneValidUtf8Char (
|
||||
**/
|
||||
VOID
|
||||
Utf8ToUnicode (
|
||||
IN UTF8_CHAR Utf8Char,
|
||||
IN UINT8 ValidBytes,
|
||||
OUT CHAR16 *UnicodeChar
|
||||
IN UTF8_CHAR Utf8Char,
|
||||
IN UINT8 ValidBytes,
|
||||
OUT CHAR16 *UnicodeChar
|
||||
)
|
||||
{
|
||||
UINT8 UnicodeByte0;
|
||||
UINT8 UnicodeByte1;
|
||||
UINT8 Byte0;
|
||||
UINT8 Byte1;
|
||||
UINT8 Byte2;
|
||||
UINT8 UnicodeByte0;
|
||||
UINT8 UnicodeByte1;
|
||||
UINT8 Byte0;
|
||||
UINT8 Byte1;
|
||||
UINT8 Byte2;
|
||||
|
||||
*UnicodeChar = 0;
|
||||
|
||||
@@ -202,42 +195,42 @@ Utf8ToUnicode (
|
||||
// up to 3 bytes utf8 code is supported.
|
||||
//
|
||||
switch (ValidBytes) {
|
||||
case 1:
|
||||
//
|
||||
// one-byte utf8 code
|
||||
//
|
||||
*UnicodeChar = (UINT16) Utf8Char.Utf8_1;
|
||||
break;
|
||||
case 1:
|
||||
//
|
||||
// one-byte utf8 code
|
||||
//
|
||||
*UnicodeChar = (UINT16)Utf8Char.Utf8_1;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
//
|
||||
// two-byte utf8 code
|
||||
//
|
||||
Byte0 = Utf8Char.Utf8_2[0];
|
||||
Byte1 = Utf8Char.Utf8_2[1];
|
||||
case 2:
|
||||
//
|
||||
// two-byte utf8 code
|
||||
//
|
||||
Byte0 = Utf8Char.Utf8_2[0];
|
||||
Byte1 = Utf8Char.Utf8_2[1];
|
||||
|
||||
UnicodeByte0 = (UINT8) ((Byte1 << 6) | (Byte0 & 0x3f));
|
||||
UnicodeByte1 = (UINT8) ((Byte1 >> 2) & 0x07);
|
||||
*UnicodeChar = (UINT16) (UnicodeByte0 | (UnicodeByte1 << 8));
|
||||
break;
|
||||
UnicodeByte0 = (UINT8)((Byte1 << 6) | (Byte0 & 0x3f));
|
||||
UnicodeByte1 = (UINT8)((Byte1 >> 2) & 0x07);
|
||||
*UnicodeChar = (UINT16)(UnicodeByte0 | (UnicodeByte1 << 8));
|
||||
break;
|
||||
|
||||
case 3:
|
||||
//
|
||||
// three-byte utf8 code
|
||||
//
|
||||
Byte0 = Utf8Char.Utf8_3[0];
|
||||
Byte1 = Utf8Char.Utf8_3[1];
|
||||
Byte2 = Utf8Char.Utf8_3[2];
|
||||
case 3:
|
||||
//
|
||||
// three-byte utf8 code
|
||||
//
|
||||
Byte0 = Utf8Char.Utf8_3[0];
|
||||
Byte1 = Utf8Char.Utf8_3[1];
|
||||
Byte2 = Utf8Char.Utf8_3[2];
|
||||
|
||||
UnicodeByte0 = (UINT8) ((Byte1 << 6) | (Byte0 & 0x3f));
|
||||
UnicodeByte1 = (UINT8) ((Byte2 << 4) | ((Byte1 >> 2) & 0x0f));
|
||||
*UnicodeChar = (UINT16) (UnicodeByte0 | (UnicodeByte1 << 8));
|
||||
UnicodeByte0 = (UINT8)((Byte1 << 6) | (Byte0 & 0x3f));
|
||||
UnicodeByte1 = (UINT8)((Byte2 << 4) | ((Byte1 >> 2) & 0x0f));
|
||||
*UnicodeChar = (UINT16)(UnicodeByte0 | (UnicodeByte1 << 8));
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -258,48 +251,45 @@ Utf8ToUnicode (
|
||||
**/
|
||||
VOID
|
||||
UnicodeToUtf8 (
|
||||
IN CHAR16 Unicode,
|
||||
OUT UTF8_CHAR *Utf8Char,
|
||||
OUT UINT8 *ValidBytes
|
||||
IN CHAR16 Unicode,
|
||||
OUT UTF8_CHAR *Utf8Char,
|
||||
OUT UINT8 *ValidBytes
|
||||
)
|
||||
{
|
||||
UINT8 UnicodeByte0;
|
||||
UINT8 UnicodeByte1;
|
||||
UINT8 UnicodeByte0;
|
||||
UINT8 UnicodeByte1;
|
||||
|
||||
//
|
||||
// translate unicode to utf8 code
|
||||
//
|
||||
UnicodeByte0 = (UINT8) Unicode;
|
||||
UnicodeByte1 = (UINT8) (Unicode >> 8);
|
||||
UnicodeByte0 = (UINT8)Unicode;
|
||||
UnicodeByte1 = (UINT8)(Unicode >> 8);
|
||||
|
||||
if (Unicode < 0x0080) {
|
||||
|
||||
Utf8Char->Utf8_1 = (UINT8) (UnicodeByte0 & 0x7f);
|
||||
*ValidBytes = 1;
|
||||
|
||||
Utf8Char->Utf8_1 = (UINT8)(UnicodeByte0 & 0x7f);
|
||||
*ValidBytes = 1;
|
||||
} else if (Unicode < 0x0800) {
|
||||
//
|
||||
// byte sequence: high -> low
|
||||
// Utf8_2[0], Utf8_2[1]
|
||||
//
|
||||
Utf8Char->Utf8_2[1] = (UINT8) ((UnicodeByte0 & 0x3f) + 0x80);
|
||||
Utf8Char->Utf8_2[0] = (UINT8) ((((UnicodeByte1 << 2) + (UnicodeByte0 >> 6)) & 0x1f) + 0xc0);
|
||||
|
||||
*ValidBytes = 2;
|
||||
Utf8Char->Utf8_2[1] = (UINT8)((UnicodeByte0 & 0x3f) + 0x80);
|
||||
Utf8Char->Utf8_2[0] = (UINT8)((((UnicodeByte1 << 2) + (UnicodeByte0 >> 6)) & 0x1f) + 0xc0);
|
||||
|
||||
*ValidBytes = 2;
|
||||
} else {
|
||||
//
|
||||
// byte sequence: high -> low
|
||||
// Utf8_3[0], Utf8_3[1], Utf8_3[2]
|
||||
//
|
||||
Utf8Char->Utf8_3[2] = (UINT8) ((UnicodeByte0 & 0x3f) + 0x80);
|
||||
Utf8Char->Utf8_3[1] = (UINT8) ((((UnicodeByte1 << 2) + (UnicodeByte0 >> 6)) & 0x3f) + 0x80);
|
||||
Utf8Char->Utf8_3[0] = (UINT8) (((UnicodeByte1 >> 4) & 0x0f) + 0xe0);
|
||||
Utf8Char->Utf8_3[2] = (UINT8)((UnicodeByte0 & 0x3f) + 0x80);
|
||||
Utf8Char->Utf8_3[1] = (UINT8)((((UnicodeByte1 << 2) + (UnicodeByte0 >> 6)) & 0x3f) + 0x80);
|
||||
Utf8Char->Utf8_3[0] = (UINT8)(((UnicodeByte1 >> 4) & 0x0f) + 0xe0);
|
||||
|
||||
*ValidBytes = 3;
|
||||
*ValidBytes = 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Check if input string is valid VT-UTF8 string.
|
||||
|
||||
@@ -311,8 +301,8 @@ UnicodeToUtf8 (
|
||||
**/
|
||||
EFI_STATUS
|
||||
VTUTF8TestString (
|
||||
IN TERMINAL_DEV *TerminalDevice,
|
||||
IN CHAR16 *WString
|
||||
IN TERMINAL_DEV *TerminalDevice,
|
||||
IN CHAR16 *WString
|
||||
)
|
||||
{
|
||||
//
|
||||
|
Reference in New Issue
Block a user