Add "TtyTerm" terminal type to TerminalDxe
This patch a adds new terminal type, TtyTerm, to TerminalDxe. This terminal type provides a place to add support for various *nix terminals that don't behave like standard VT terminals. The goal is to 'just work' with as many terminals as possible, rather than properly emulating any one specific terminal. Signed-off-by: Roy Franz <roy.franz@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17895 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -33,7 +33,8 @@ EFI_GUID *gTerminalType[] = {
|
||||
&gEfiPcAnsiGuid,
|
||||
&gEfiVT100Guid,
|
||||
&gEfiVT100PlusGuid,
|
||||
&gEfiVTUTF8Guid
|
||||
&gEfiVTUTF8Guid,
|
||||
&gEfiTtyTermGuid
|
||||
};
|
||||
|
||||
|
||||
@@ -152,12 +153,13 @@ TerminalDriverBindingSupported (
|
||||
|
||||
}
|
||||
//
|
||||
// only supports PC ANSI, VT100, VT100+ and VT-UTF8 terminal types
|
||||
// only supports PC ANSI, VT100, VT100+, VT-UTF8, and TtyTerm terminal types
|
||||
//
|
||||
if (!CompareGuid (&Node->Guid, &gEfiPcAnsiGuid) &&
|
||||
!CompareGuid (&Node->Guid, &gEfiVT100Guid) &&
|
||||
!CompareGuid (&Node->Guid, &gEfiVT100PlusGuid) &&
|
||||
!CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
|
||||
!CompareGuid (&Node->Guid, &gEfiVTUTF8Guid) &&
|
||||
!CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
||||
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
@@ -275,6 +277,10 @@ BuildTerminalDevpath (
|
||||
|
||||
TerminalType = VTUTF8TYPE;
|
||||
|
||||
} else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
||||
|
||||
TerminalType = TTYTERMTYPE;
|
||||
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
@@ -708,9 +714,9 @@ TerminalDriverBindingStart (
|
||||
|
||||
TerminalType = PcdGet8 (PcdDefaultTerminalType);
|
||||
//
|
||||
// Must be between PCANSITYPE (0) and VTUTF8TYPE (3)
|
||||
// Must be between PCANSITYPE (0) and TTYTERMTYPE (4)
|
||||
//
|
||||
ASSERT (TerminalType <= VTUTF8TYPE);
|
||||
ASSERT (TerminalType <= TTYTERMTYPE);
|
||||
|
||||
CopyMem (&DefaultNode->Guid, gTerminalType[TerminalType], sizeof (EFI_GUID));
|
||||
RemainingDevicePath = (EFI_DEVICE_PATH_PROTOCOL *) DefaultNode;
|
||||
@@ -728,6 +734,8 @@ TerminalDriverBindingStart (
|
||||
TerminalType = VT100PLUSTYPE;
|
||||
} else if (CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
|
||||
TerminalType = VTUTF8TYPE;
|
||||
} else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
||||
TerminalType = TTYTERMTYPE;
|
||||
} else {
|
||||
goto Error;
|
||||
}
|
||||
@@ -926,6 +934,24 @@ TerminalDriverBindingStart (
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
case TTYTERMTYPE:
|
||||
AddUnicodeString2 (
|
||||
"eng",
|
||||
gTerminalComponentName.SupportedLanguages,
|
||||
&TerminalDevice->ControllerNameTable,
|
||||
(CHAR16 *)L"Tty Terminal Serial Console",
|
||||
TRUE
|
||||
);
|
||||
AddUnicodeString2 (
|
||||
"en",
|
||||
gTerminalComponentName2.SupportedLanguages,
|
||||
&TerminalDevice->ControllerNameTable,
|
||||
(CHAR16 *)L"Tty Terminal Serial Console",
|
||||
FALSE
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
@@ -1441,7 +1467,7 @@ TerminalUpdateConsoleDevVariable (
|
||||
//
|
||||
// Append terminal device path onto the variable.
|
||||
//
|
||||
for (TerminalType = PCANSITYPE; TerminalType <= VTUTF8TYPE; TerminalType++) {
|
||||
for (TerminalType = PCANSITYPE; TerminalType <= TTYTERMTYPE; TerminalType++) {
|
||||
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
||||
NewVariable = AppendDevicePathInstance (Variable, TempDevicePath);
|
||||
ASSERT (NewVariable != NULL);
|
||||
@@ -1554,7 +1580,7 @@ TerminalRemoveConsoleDevVariable (
|
||||
// Loop through all the terminal types that this driver supports
|
||||
//
|
||||
Match = FALSE;
|
||||
for (TerminalType = PCANSITYPE; TerminalType <= VTUTF8TYPE; TerminalType++) {
|
||||
for (TerminalType = PCANSITYPE; TerminalType <= TTYTERMTYPE; TerminalType++) {
|
||||
|
||||
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
||||
|
||||
@@ -1658,6 +1684,10 @@ SetTerminalDevicePath (
|
||||
CopyGuid (&Node.Guid, &gEfiVTUTF8Guid);
|
||||
break;
|
||||
|
||||
case TTYTERMTYPE:
|
||||
CopyGuid (&Node.Guid, &gEfiTtyTermGuid);
|
||||
break;
|
||||
|
||||
default:
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
Reference in New Issue
Block a user