]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/TerminalDxe: Separate controller name init logic
authorRuiyu Ni <ruiyu.ni@intel.com>
Tue, 10 Jan 2017 05:05:46 +0000 (13:05 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Wed, 11 Jan 2017 09:25:25 +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 fe09f01d59d24deaa282cf4c50fde3d2d3c5f613..1ffb6ff39588638b2ac4bc9dd1eb08398061424f 100644 (file)
@@ -38,6 +38,14 @@ EFI_GUID  *mTerminalType[] = {
 };\r
 \r
 \r
+CHAR16 *mSerialConsoleNames[] = {\r
+  L"PC-ANSI Serial Console",\r
+  L"VT-100 Serial Console",\r
+  L"VT-100+ Serial Console",\r
+  L"VT-UTF8 Serial Console",\r
+  L"Tty Terminal Serial Console"\r
+};\r
+\r
 TERMINAL_DEV  mTerminalDevTemplate = {\r
   TERMINAL_DEV_SIGNATURE,\r
   NULL,\r
@@ -535,6 +543,51 @@ InitializeTerminalConsoleTextMode (
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Initialize the controller name table.\r
+\r
+  @param TerminalType        The terminal type.\r
+  @param ControllerNameTable The controller name table.\r
+\r
+  @retval EFI_SUCCESS  The controller name table is initialized successfully.\r
+  @retval others       Return status of AddUnicodeString2 ().\r
+**/\r
+EFI_STATUS\r
+InitializeControllerNameTable (\r
+  TERMINAL_TYPE             TerminalType,\r
+  EFI_UNICODE_STRING_TABLE  **ControllerNameTable\r
+)\r
+{\r
+  EFI_STATUS                Status;\r
+  EFI_UNICODE_STRING_TABLE  *Table;\r
+\r
+  ASSERT (TerminalType < ARRAY_SIZE (mTerminalType));\r
+  Table = NULL;\r
+  Status = AddUnicodeString2 (\r
+             "eng",\r
+             gTerminalComponentName.SupportedLanguages,\r
+             &Table,\r
+             mSerialConsoleNames[TerminalType],\r
+             TRUE\r
+             );\r
+  if (!EFI_ERROR (Status)) {\r
+    Status = AddUnicodeString2 (\r
+               "en",\r
+               gTerminalComponentName2.SupportedLanguages,\r
+               &Table,\r
+               mSerialConsoleNames[TerminalType],\r
+               FALSE\r
+               );\r
+    if (EFI_ERROR (Status)) {\r
+      FreeUnicodeStringTable (Table);\r
+    }\r
+  }\r
+  if (!EFI_ERROR (Status)) {\r
+    *ControllerNameTable = Table;\r
+  }\r
+  return Status;\r
+}\r
+\r
 /**\r
   Start this driver on Controller by opening a Serial IO protocol,\r
   reading Device Path, and creating a child handle with a Simple Text In,\r
@@ -864,97 +917,9 @@ TerminalDriverBindingStart (
     //\r
     // Build the component name for the child device\r
     //\r
-    TerminalDevice->ControllerNameTable = NULL;\r
-    switch (TerminalDevice->TerminalType) {\r
-    case TerminalTypePcAnsi:\r
-      AddUnicodeString2 (\r
-        "eng",\r
-        gTerminalComponentName.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"PC-ANSI Serial Console",\r
-        TRUE\r
-        );\r
-      AddUnicodeString2 (\r
-        "en",\r
-        gTerminalComponentName2.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"PC-ANSI Serial Console",\r
-        FALSE\r
-        );\r
-\r
-      break;\r
-\r
-    case TerminalTypeVt100:\r
-      AddUnicodeString2 (\r
-        "eng",\r
-        gTerminalComponentName.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"VT-100 Serial Console",\r
-        TRUE\r
-        );\r
-      AddUnicodeString2 (\r
-        "en",\r
-        gTerminalComponentName2.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"VT-100 Serial Console",\r
-        FALSE\r
-        );\r
-\r
-      break;\r
-\r
-    case TerminalTypeVt100Plus:\r
-      AddUnicodeString2 (\r
-        "eng",\r
-        gTerminalComponentName.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"VT-100+ Serial Console",\r
-        TRUE\r
-        );\r
-      AddUnicodeString2 (\r
-        "en",\r
-        gTerminalComponentName2.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"VT-100+ Serial Console",\r
-        FALSE\r
-        );\r
-\r
-      break;\r
-\r
-    case TerminalTypeVtUtf8:\r
-      AddUnicodeString2 (\r
-        "eng",\r
-        gTerminalComponentName.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"VT-UTF8 Serial Console",\r
-        TRUE\r
-        );\r
-      AddUnicodeString2 (\r
-        "en",\r
-        gTerminalComponentName2.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"VT-UTF8 Serial Console",\r
-        FALSE\r
-        );\r
-\r
-      break;\r
-\r
-    case TerminalTypeTtyTerm:\r
-      AddUnicodeString2 (\r
-        "eng",\r
-        gTerminalComponentName.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"Tty Terminal Serial Console",\r
-        TRUE\r
-        );\r
-      AddUnicodeString2 (\r
-        "en",\r
-        gTerminalComponentName2.SupportedLanguages,\r
-        &TerminalDevice->ControllerNameTable,\r
-        (CHAR16 *)L"Tty Terminal Serial Console",\r
-        FALSE\r
-        );\r
-\r
-      break;\r
+    Status = InitializeControllerNameTable (TerminalDevice->TerminalType, &TerminalDevice->ControllerNameTable);\r
+    if (EFI_ERROR (Status)) {\r
+      goto Error;\r
     }\r
 \r
     //\r