Revision: 17895
http://sourceforge.net/p/edk2/code/17895
Author: lersek
Date: 2015-07-09 06:24:11 +0000 (Thu, 09 Jul 2015)
Log Message:
-----------
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 <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Feng Tian <[email protected]>
Modified Paths:
--------------
trunk/edk2/MdeModulePkg/MdeModulePkg.dec
trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h
trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
Added Paths:
-----------
trunk/edk2/MdeModulePkg/Include/Guid/TtyTerm.h
Added: trunk/edk2/MdeModulePkg/Include/Guid/TtyTerm.h
===================================================================
--- trunk/edk2/MdeModulePkg/Include/Guid/TtyTerm.h
(rev 0)
+++ trunk/edk2/MdeModulePkg/Include/Guid/TtyTerm.h 2015-07-09 06:24:11 UTC
(rev 17895)
@@ -0,0 +1,25 @@
+/** @file
+GUID definition for TtyTerm terminal type. The TtyTerm terminal aims to
+provide support for modern *nix terminals.
+
+
+Copyright (c) 2015 Linaro Ltd.
+This program and the accompanying materials are licensed and made
+available under the terms and conditions of the BSD License that
+accompanies this distribution. The full text of the license may be found
+at http://opensource.org/licenses/bsd-license.php.
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef __TTYTERM_H__
+#define __TTYTERM_H__
+
+#define EFI_TTY_TERM_GUID \
+ {0x7d916d80, 0x5bb1, 0x458c, {0xa4, 0x8f, 0xe2, 0x5f, 0xdd, 0x51, 0xef,
0x94 } }
+
+extern EFI_GUID gEfiTtyTermGuid;
+
+#endif
Modified: trunk/edk2/MdeModulePkg/MdeModulePkg.dec
===================================================================
--- trunk/edk2/MdeModulePkg/MdeModulePkg.dec 2015-07-09 03:19:06 UTC (rev
17894)
+++ trunk/edk2/MdeModulePkg/MdeModulePkg.dec 2015-07-09 06:24:11 UTC (rev
17895)
@@ -308,6 +308,9 @@
gLzmaCustomDecompressGuid = { 0xEE4E5898, 0x3914, 0x4259, { 0x9D, 0x6E,
0xDC, 0x7B, 0xD7, 0x94, 0x03, 0xCF }}
gLzmaF86CustomDecompressGuid = { 0xD42AE6BD, 0x1352, 0x4bfb, { 0x90,
0x9A, 0xCA, 0x72, 0xA6, 0xEA, 0xE8, 0x89 }}
+ ## Include/Guid/TtyTerm.h
+ gEfiTtyTermGuid = { 0x7d916d80, 0x5bb1, 0x458c, {0xa4, 0x8f,
0xe2, 0x5f, 0xdd, 0x51, 0xef, 0x94 }}
+
[Ppis]
## Include/Ppi/AtaController.h
gPeiAtaControllerPpiGuid = { 0xa45e60d1, 0xc719, 0x44aa, { 0xb0, 0x7a,
0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d }}
Modified: trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
2015-07-09 03:19:06 UTC (rev 17894)
+++ trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
2015-07-09 06:24:11 UTC (rev 17895)
@@ -33,7 +33,8 @@
&gEfiPcAnsiGuid,
&gEfiVT100Guid,
&gEfiVT100PlusGuid,
- &gEfiVTUTF8Guid
+ &gEfiVTUTF8Guid,
+ &gEfiTtyTermGuid
};
@@ -152,12 +153,13 @@
}
//
- // 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 @@
TerminalType = VTUTF8TYPE;
+ } else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
+
+ TerminalType = TTYTERMTYPE;
+
} else {
return NULL;
}
@@ -708,9 +714,9 @@
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 @@
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 @@
);
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 @@
//
// 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 @@
// 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 @@
CopyGuid (&Node.Guid, &gEfiVTUTF8Guid);
break;
+ case TTYTERMTYPE:
+ CopyGuid (&Node.Guid, &gEfiTtyTermGuid);
+ break;
+
default:
return EFI_UNSUPPORTED;
}
Modified: trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h
2015-07-09 03:19:06 UTC (rev 17894)
+++ trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h
2015-07-09 06:24:11 UTC (rev 17895)
@@ -20,6 +20,7 @@
#include <Guid/GlobalVariable.h>
#include <Guid/PcAnsi.h>
+#include <Guid/TtyTerm.h>
#include <Guid/StatusCodeDataTypeVariable.h>
#include <Protocol/SimpleTextOut.h>
@@ -136,6 +137,7 @@
#define VT100TYPE 1
#define VT100PLUSTYPE 2
#define VTUTF8TYPE 3
+#define TTYTERMTYPE 4
#define LEFTOPENBRACKET 0x5b // '['
#define ACAP 0x41
Modified: trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
2015-07-09 03:19:06 UTC (rev 17894)
+++ trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
2015-07-09 06:24:11 UTC (rev 17895)
@@ -454,6 +454,7 @@
case PCANSITYPE:
case VT100TYPE:
case VT100PLUSTYPE:
+ case TTYTERMTYPE:
AnsiRawDataToUnicode (TerminalDevice);
UnicodeToEfiKey (TerminalDevice);
break;
@@ -1393,7 +1394,8 @@
if (TerminalDevice->TerminalType == PCANSITYPE ||
TerminalDevice->TerminalType == VT100TYPE ||
TerminalDevice->TerminalType == VT100PLUSTYPE ||
- TerminalDevice->TerminalType == VTUTF8TYPE) {
+ TerminalDevice->TerminalType == VTUTF8TYPE ||
+ TerminalDevice->TerminalType == TTYTERMTYPE) {
switch (UnicodeChar) {
case 'A':
Key.ScanCode = SCAN_UP;
Modified: trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
2015-07-09 03:19:06 UTC (rev 17894)
+++ trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
2015-07-09 06:24:11 UTC (rev 17895)
@@ -223,6 +223,7 @@
case PCANSITYPE:
case VT100TYPE:
case VT100PLUSTYPE:
+ case TTYTERMTYPE:
if (!TerminalIsValidTextGraphics (*WString, &GraphicChar, &AsciiChar)) {
//
@@ -371,6 +372,7 @@
case PCANSITYPE:
case VT100TYPE:
case VT100PLUSTYPE:
+ case TTYTERMTYPE:
Status = AnsiTestString (TerminalDevice, WString);
break;
Modified: trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
2015-07-09 03:19:06 UTC (rev 17894)
+++ trunk/edk2/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
2015-07-09 06:24:11 UTC (rev 17895)
@@ -73,6 +73,7 @@
gEfiVT100Guid ## SOMETIMES_CONSUMES ## GUID
# used with a Vendor-Defined Messaging Device Path
gEfiVT100PlusGuid ## SOMETIMES_CONSUMES ## GUID
# used with a Vendor-Defined Messaging Device Path
gEfiPcAnsiGuid ## SOMETIMES_CONSUMES ## GUID
# used with a Vendor-Defined Messaging Device Path
+ gEfiTtyTermGuid ## SOMETIMES_CONSUMES ## GUID
# used with a Vendor-Defined Messaging Device Path
gEdkiiStatusCodeDataTypeVariableGuid ## SOMETIMES_CONSUMES ## GUID
[Protocols]
------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits