mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-30 00:54:06 +02:00
MdeModulePkg/TerminalDxe: Add TerminalTypeFromGuid internal function
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Star Zeng <star.zeng@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
This commit is contained in:
parent
8ce87fffbf
commit
f916327545
@ -29,7 +29,7 @@ EFI_DRIVER_BINDING_PROTOCOL gTerminalDriverBinding = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
EFI_GUID *gTerminalType[] = {
|
EFI_GUID *mTerminalType[] = {
|
||||||
&gEfiPcAnsiGuid,
|
&gEfiPcAnsiGuid,
|
||||||
&gEfiVT100Guid,
|
&gEfiVT100Guid,
|
||||||
&gEfiVT100PlusGuid,
|
&gEfiVT100PlusGuid,
|
||||||
@ -111,6 +111,28 @@ TERMINAL_CONSOLE_MODE_DATA mTerminalConsoleModeData[] = {
|
|||||||
//
|
//
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the GUID representation of terminal type to enum type.
|
||||||
|
|
||||||
|
@param Guid The GUID representation of terminal type.
|
||||||
|
|
||||||
|
@return The terminal type in enum type.
|
||||||
|
**/
|
||||||
|
TERMINAL_TYPE
|
||||||
|
TerminalTypeFromGuid (
|
||||||
|
IN EFI_GUID *Guid
|
||||||
|
)
|
||||||
|
{
|
||||||
|
TERMINAL_TYPE Type;
|
||||||
|
|
||||||
|
for (Type = 0; Type < ARRAY_SIZE (mTerminalType); Type++) {
|
||||||
|
if (CompareGuid (Guid, mTerminalType[Type])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Type;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Test to see if this driver supports Controller.
|
Test to see if this driver supports Controller.
|
||||||
|
|
||||||
@ -163,12 +185,7 @@ TerminalDriverBindingSupported (
|
|||||||
//
|
//
|
||||||
// only supports PC ANSI, VT100, VT100+, VT-UTF8, and TtyTerm terminal types
|
// only supports PC ANSI, VT100, VT100+, VT-UTF8, and TtyTerm terminal types
|
||||||
//
|
//
|
||||||
if (!CompareGuid (&Node->Guid, &gEfiPcAnsiGuid) &&
|
if (TerminalTypeFromGuid (&Node->Guid) == ARRAY_SIZE (mTerminalType)) {
|
||||||
!CompareGuid (&Node->Guid, &gEfiVT100Guid) &&
|
|
||||||
!CompareGuid (&Node->Guid, &gEfiVT100PlusGuid) &&
|
|
||||||
!CompareGuid (&Node->Guid, &gEfiVTUTF8Guid) &&
|
|
||||||
!CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
|
||||||
|
|
||||||
return EFI_UNSUPPORTED;
|
return EFI_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -712,29 +729,13 @@ TerminalDriverBindingStart (
|
|||||||
//
|
//
|
||||||
if (RemainingDevicePath == NULL) {
|
if (RemainingDevicePath == NULL) {
|
||||||
TerminalType = PcdGet8 (PcdDefaultTerminalType);
|
TerminalType = PcdGet8 (PcdDefaultTerminalType);
|
||||||
//
|
|
||||||
// Must be between TerminalTypePcAnsi (0) and TerminalTypeTtyTerm (4)
|
|
||||||
//
|
|
||||||
ASSERT (TerminalType <= TerminalTypeTtyTerm);
|
|
||||||
} else if (!IsDevicePathEnd (RemainingDevicePath)) {
|
} else if (!IsDevicePathEnd (RemainingDevicePath)) {
|
||||||
//
|
//
|
||||||
// If RemainingDevicePath isn't the End of Device Path Node,
|
// If RemainingDevicePath isn't the End of Device Path Node,
|
||||||
// Use the RemainingDevicePath to determine the terminal type
|
// Use the RemainingDevicePath to determine the terminal type
|
||||||
//
|
//
|
||||||
Node = (VENDOR_DEVICE_PATH *)RemainingDevicePath;
|
Node = (VENDOR_DEVICE_PATH *)RemainingDevicePath;
|
||||||
if (CompareGuid (&Node->Guid, &gEfiPcAnsiGuid)) {
|
TerminalType = TerminalTypeFromGuid (&Node->Guid);
|
||||||
TerminalType = TerminalTypePcAnsi;
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVT100Guid)) {
|
|
||||||
TerminalType = TerminalTypeVt100;
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVT100PlusGuid)) {
|
|
||||||
TerminalType = TerminalTypeVt100Plus;
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
|
|
||||||
TerminalType = TerminalTypeVtUtf8;
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
|
||||||
TerminalType = TerminalTypeTtyTerm;
|
|
||||||
} else {
|
|
||||||
goto Error;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
//
|
//
|
||||||
// If RemainingDevicePath is the End of Device Path Node,
|
// If RemainingDevicePath is the End of Device Path Node,
|
||||||
@ -743,6 +744,8 @@ TerminalDriverBindingStart (
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ASSERT (TerminalType < ARRAY_SIZE (mTerminalType));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize the Terminal Dev
|
// Initialize the Terminal Dev
|
||||||
//
|
//
|
||||||
@ -1473,7 +1476,7 @@ TerminalUpdateConsoleDevVariable (
|
|||||||
//
|
//
|
||||||
// Append terminal device path onto the variable.
|
// Append terminal device path onto the variable.
|
||||||
//
|
//
|
||||||
for (TerminalType = TerminalTypePcAnsi; TerminalType <= TerminalTypeTtyTerm; TerminalType++) {
|
for (TerminalType = 0; TerminalType < ARRAY_SIZE (mTerminalType); TerminalType++) {
|
||||||
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
||||||
NewVariable = AppendDevicePathInstance (Variable, TempDevicePath);
|
NewVariable = AppendDevicePathInstance (Variable, TempDevicePath);
|
||||||
ASSERT (NewVariable != NULL);
|
ASSERT (NewVariable != NULL);
|
||||||
@ -1586,7 +1589,7 @@ TerminalRemoveConsoleDevVariable (
|
|||||||
// Loop through all the terminal types that this driver supports
|
// Loop through all the terminal types that this driver supports
|
||||||
//
|
//
|
||||||
Match = FALSE;
|
Match = FALSE;
|
||||||
for (TerminalType = TerminalTypePcAnsi; TerminalType <= TerminalTypeTtyTerm; TerminalType++) {
|
for (TerminalType = 0; TerminalType < ARRAY_SIZE (mTerminalType); TerminalType++) {
|
||||||
|
|
||||||
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user