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

Reply via email to