]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/TerminalDxe: Add TerminalTypeFromGuid internal function
authorRuiyu Ni <ruiyu.ni@intel.com>
Tue, 10 Jan 2017 03:33:51 +0000 (11:33 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Wed, 11 Jan 2017 09:25:24 +0000 (17:25 +0800)
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>
MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c

index cf7f4e6ebc13a363dcfa2eea1875f138ffae05cc..fe09f01d59d24deaa282cf4c50fde3d2d3c5f613 100644 (file)
@@ -29,7 +29,7 @@ EFI_DRIVER_BINDING_PROTOCOL gTerminalDriverBinding = {
 };\r
 \r
 \r
-EFI_GUID  *gTerminalType[] = {\r
+EFI_GUID  *mTerminalType[] = {\r
   &gEfiPcAnsiGuid,\r
   &gEfiVT100Guid,\r
   &gEfiVT100PlusGuid,\r
@@ -111,6 +111,28 @@ TERMINAL_CONSOLE_MODE_DATA mTerminalConsoleModeData[] = {
   //\r
 };\r
 \r
+/**\r
+  Convert the GUID representation of terminal type to enum type.\r
+\r
+  @param Guid  The GUID representation of terminal type.\r
+\r
+  @return  The terminal type in enum type.\r
+**/\r
+TERMINAL_TYPE\r
+TerminalTypeFromGuid (\r
+  IN EFI_GUID                     *Guid\r
+)\r
+{\r
+  TERMINAL_TYPE                   Type;\r
+\r
+  for (Type = 0; Type < ARRAY_SIZE (mTerminalType); Type++) {\r
+    if (CompareGuid (Guid, mTerminalType[Type])) {\r
+      break;\r
+    }\r
+  }\r
+  return Type;\r
+}\r
+\r
 /**\r
   Test to see if this driver supports Controller.\r
 \r
@@ -163,12 +185,7 @@ TerminalDriverBindingSupported (
       //\r
       // only supports PC ANSI, VT100, VT100+, VT-UTF8, and TtyTerm terminal types\r
       //\r
-      if (!CompareGuid (&Node->Guid, &gEfiPcAnsiGuid) &&\r
-          !CompareGuid (&Node->Guid, &gEfiVT100Guid) &&\r
-          !CompareGuid (&Node->Guid, &gEfiVT100PlusGuid) &&\r
-          !CompareGuid (&Node->Guid, &gEfiVTUTF8Guid) &&\r
-          !CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {\r
-\r
+      if (TerminalTypeFromGuid (&Node->Guid) == ARRAY_SIZE (mTerminalType)) {\r
         return EFI_UNSUPPORTED;\r
       }\r
     }\r
@@ -712,29 +729,13 @@ TerminalDriverBindingStart (
     //\r
     if (RemainingDevicePath == NULL) {\r
       TerminalType = PcdGet8 (PcdDefaultTerminalType);\r
-      //\r
-      // Must be between TerminalTypePcAnsi (0) and TerminalTypeTtyTerm (4)\r
-      //\r
-      ASSERT (TerminalType <= TerminalTypeTtyTerm);\r
     } else if (!IsDevicePathEnd (RemainingDevicePath)) {\r
       //\r
       // If RemainingDevicePath isn't the End of Device Path Node,\r
       // Use the RemainingDevicePath to determine the terminal type\r
       //\r
       Node = (VENDOR_DEVICE_PATH *)RemainingDevicePath;\r
-      if (CompareGuid (&Node->Guid, &gEfiPcAnsiGuid)) {\r
-        TerminalType = TerminalTypePcAnsi;\r
-      } else if (CompareGuid (&Node->Guid, &gEfiVT100Guid)) {\r
-        TerminalType = TerminalTypeVt100;\r
-      } else if (CompareGuid (&Node->Guid, &gEfiVT100PlusGuid)) {\r
-        TerminalType = TerminalTypeVt100Plus;\r
-      } else if (CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {\r
-        TerminalType = TerminalTypeVtUtf8;\r
-      } else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {\r
-        TerminalType = TerminalTypeTtyTerm;\r
-      } else {\r
-        goto Error;\r
-      }\r
+      TerminalType = TerminalTypeFromGuid (&Node->Guid);\r
     } else {\r
       //\r
       // If RemainingDevicePath is the End of Device Path Node,\r
@@ -743,6 +744,8 @@ TerminalDriverBindingStart (
       return EFI_SUCCESS;\r
     }\r
 \r
+    ASSERT (TerminalType < ARRAY_SIZE (mTerminalType));\r
+\r
     //\r
     // Initialize the Terminal Dev\r
     //\r
@@ -1473,7 +1476,7 @@ TerminalUpdateConsoleDevVariable (
   //\r
   // Append terminal device path onto the variable.\r
   //\r
-  for (TerminalType = TerminalTypePcAnsi; TerminalType <= TerminalTypeTtyTerm; TerminalType++) {\r
+  for (TerminalType = 0; TerminalType < ARRAY_SIZE (mTerminalType); TerminalType++) {\r
     SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);\r
     NewVariable = AppendDevicePathInstance (Variable, TempDevicePath);\r
     ASSERT (NewVariable != NULL);\r
@@ -1586,7 +1589,7 @@ TerminalRemoveConsoleDevVariable (
     // Loop through all the terminal types that this driver supports\r
     //\r
     Match = FALSE;\r
-    for (TerminalType = TerminalTypePcAnsi; TerminalType <= TerminalTypeTtyTerm; TerminalType++) {\r
+    for (TerminalType = 0; TerminalType < ARRAY_SIZE (mTerminalType); TerminalType++) {\r
 \r
       SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);\r
 \r