]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/ConSplitterDxe/ComponentName.c
apply for doxgen format.
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ComponentName.c
index 20dba84ef2d767abd44efacfa5f74a46773e73ba..927f7a5a687667b0e845abeaf66b5a440b2a8071 100644 (file)
-/*++\r
-\r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+/** @file\r
+  UEFI Component Name(2) protocol implementation for ConSplitter driver.\r
 \r
-Module Name:\r
+Copyright (c) 2006, Intel Corporation. <BR>\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
 \r
-  ComponentName.c\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
-Abstract:\r
-\r
---*/\r
+**/\r
 \r
 #include "ConSplitter.h"\r
 \r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConInComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConInComponentName = {\r
   ConSplitterComponentNameGetDriverName,\r
   ConSplitterConInComponentNameGetControllerName,\r
   "eng"\r
-  };\r
+};\r
 \r
 //\r
 // EFI Component Name 2 Protocol\r
 //\r
-EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2 = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2 = {\r
   (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
   (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterConInComponentNameGetControllerName,\r
   "en"\r
-  };\r
+};\r
 \r
 \r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL  gConSplitterSimplePointerComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gConSplitterSimplePointerComponentName = {\r
   ConSplitterComponentNameGetDriverName,\r
   ConSplitterSimplePointerComponentNameGetControllerName,\r
   "eng"\r
-  };\r
+};\r
 \r
 //\r
 // EFI Component Name 2 Protocol\r
 //\r
-EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2 = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2 = {\r
   (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
   (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterSimplePointerComponentNameGetControllerName,\r
   "en"\r
-  };\r
+};\r
 \r
+//\r
+// EFI Component Name Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName = {\r
+  ConSplitterComponentNameGetDriverName,\r
+  ConSplitterAbsolutePointerComponentNameGetControllerName,\r
+  "eng"\r
+};\r
+\r
+//\r
+// EFI Component Name 2 Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2 = {\r
+  (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
+  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterAbsolutePointerComponentNameGetControllerName,\r
+  "en"\r
+};\r
 \r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConOutComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConOutComponentName = {\r
   ConSplitterComponentNameGetDriverName,\r
   ConSplitterConOutComponentNameGetControllerName,\r
   "eng"\r
-  };\r
+};\r
 \r
 //\r
 // EFI Component Name 2 Protocol\r
 //\r
-EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2 = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2 = {\r
   (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
   (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterConOutComponentNameGetControllerName,\r
   "en"\r
-  };\r
+};\r
 \r
 \r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL  gConSplitterStdErrComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gConSplitterStdErrComponentName = {\r
   ConSplitterComponentNameGetDriverName,\r
   ConSplitterStdErrComponentNameGetControllerName,\r
   "eng"\r
-  };\r
+};\r
 \r
 //\r
 // EFI Component Name 2 Protocol\r
 //\r
-EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2 = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2 = {\r
   (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
   (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterStdErrComponentNameGetControllerName,\r
   "en"\r
-  };\r
+};\r
 \r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Console Splitter Driver"\r
@@ -106,7 +118,7 @@ static EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTable[] = {
   }\r
 };\r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterConInControllerNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConInControllerNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Primary Console Input Device"\r
@@ -117,7 +129,7 @@ static EFI_UNICODE_STRING_TABLE mConSplitterConInControllerNameTable[] = {
   }\r
 };\r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterSimplePointerControllerNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterSimplePointerControllerNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Primary Simple Pointer Device"\r
@@ -128,7 +140,18 @@ static EFI_UNICODE_STRING_TABLE mConSplitterSimplePointerControllerNameTable[] =
   }\r
 };\r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterAbsolutePointerControllerNameTable[] = {\r
+  {\r
+    "eng;en",\r
+    (CHAR16 *)L"Primary Absolute Pointer Device"\r
+  },\r
+  {\r
+    NULL,\r
+    NULL\r
+  }\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Primary Console Output Device"\r
@@ -139,7 +162,7 @@ static EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {
   }\r
 };\r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterStdErrControllerNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterStdErrControllerNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Primary Standard Error Device"\r
@@ -206,6 +229,65 @@ ConSplitterComponentNameGetDriverName (
            );\r
 }\r
 \r
+/**\r
+  Tests whether a controller handle is being managed by a specific driver and\r
+  the child handle is a child device of the controller.\r
+\r
+  @param  ControllerHandle     A handle for a controller to test.\r
+  @param  DriverBindingHandle  Specifies the driver binding handle for the\r
+                               driver.\r
+  @param  ProtocolGuid         Specifies the protocol that the driver specified\r
+                               by DriverBindingHandle opens in its Start()\r
+                               function.\r
+  @param  ChildHandle          A child handle to test.\r
+  @param  ConsumsedGuid        Supplies the protocol that the child controller\r
+                               opens on its parent controller.\r
+\r
+  @retval EFI_SUCCESS          ControllerHandle is managed by the driver\r
+                               specifed by DriverBindingHandle and ChildHandle\r
+                               is a child of the ControllerHandle.\r
+  @retval EFI_UNSUPPORTED      ControllerHandle is not managed by the driver\r
+                               specifed by DriverBindingHandle.\r
+  @retval EFI_UNSUPPORTED      ChildHandle is not a child of the\r
+                               ControllerHandle.\r
+\r
+**/\r
+EFI_STATUS\r
+ConSplitterTestControllerHandles (\r
+  IN  CONST EFI_HANDLE       ControllerHandle,\r
+  IN  CONST EFI_HANDLE       DriverBindingHandle,\r
+  IN  CONST EFI_GUID         *ProtocolGuid,\r
+  IN  EFI_HANDLE             ChildHandle,\r
+  IN  CONST EFI_GUID         *ConsumsedGuid\r
+  )\r
+{\r
+  EFI_STATUS                 Status;\r
+\r
+  //\r
+  // here ChildHandle is not an Optional parameter.\r
+  //\r
+  if (ChildHandle == NULL) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  Status = EfiTestManagedDevice (\r
+             ControllerHandle,\r
+             DriverBindingHandle,\r
+             ProtocolGuid\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
+  Status = EfiTestChildHandle (\r
+             ControllerHandle,\r
+             ChildHandle,\r
+             ConsumsedGuid\r
+             );\r
+\r
+  return Status;\r
+}\r
+\r
 /**\r
   Retrieves a Unicode string that is the user readable name of the controller\r
   that is being managed by a driver.\r
@@ -285,24 +367,16 @@ ConSplitterConInComponentNameGetControllerName (
   )\r
 {\r
   EFI_STATUS                     Status;\r
-  EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn;\r
-  //\r
-  // here ChildHandle is not an Optional parameter.\r
-  //\r
-  if (ChildHandle == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
 \r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiSimpleTextInProtocolGuid,\r
-                  (VOID **) &TextIn,\r
-                  NULL,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterConInDriverBinding.DriverBindingHandle,\r
+             &gEfiSimpleTextInProtocolGuid,\r
+             ChildHandle,\r
+             &gEfiConsoleInDeviceGuid\r
+             );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    return Status;\r
   }\r
 \r
   return LookupUnicodeString2 (\r
@@ -393,24 +467,16 @@ ConSplitterSimplePointerComponentNameGetControllerName (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-  EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer;\r
-  //\r
-  // here ChildHandle is not an Optional parameter.\r
-  //\r
-  if (ChildHandle == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
 \r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiSimplePointerProtocolGuid,\r
-                  (VOID **) &SimplePointer,\r
-                  NULL,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterSimplePointerDriverBinding.DriverBindingHandle,\r
+             &gEfiSimplePointerProtocolGuid,\r
+             ChildHandle,\r
+             &gEfiSimplePointerProtocolGuid\r
+             );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    return Status;\r
   }\r
 \r
   return LookupUnicodeString2 (\r
@@ -422,6 +488,83 @@ ConSplitterSimplePointerComponentNameGetControllerName (
            );\r
 }\r
 \r
+EFI_STATUS\r
+EFIAPI\r
+ConSplitterAbsolutePointerComponentNameGetControllerName (\r
+  IN  EFI_COMPONENT_NAME_PROTOCOL                    *This,\r
+  IN  EFI_HANDLE                                      ControllerHandle,\r
+  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
+  IN  CHAR8                                           *Language,\r
+  OUT CHAR16                                          **ControllerName\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Retrieves a Unicode string that is the user readable name of the controller\r
+    that is being managed by an EFI Driver.\r
+\r
+  Arguments:\r
+    This             - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.\r
+    ControllerHandle - The handle of a controller that the driver specified by\r
+                       This is managing.  This handle specifies the controller\r
+                       whose name is to be returned.\r
+    ChildHandle      - The handle of the child controller to retrieve the name\r
+                       of.  This is an optional parameter that may be NULL.  It\r
+                       will be NULL for device drivers.  It will also be NULL\r
+                       for a bus drivers that wish to retrieve the name of the\r
+                       bus controller.  It will not be NULL for a bus driver\r
+                       that wishes to retrieve the name of a child controller.\r
+    Language         - A pointer to RFC3066 language identifier.\r
+                       This is the language of the controller name\r
+                       that that the caller is requesting, and it must match one\r
+                       of the languages specified in SupportedLanguages.  The\r
+                       number of languages supported by a driver is up to the\r
+                       driver writer.\r
+    ControllerName   - A pointer to the Unicode string to return.  This Unicode\r
+                       string is the name of the controller specified by\r
+                       ControllerHandle and ChildHandle in the language\r
+                       specified by Language from the point of view of the\r
+                       driver specified by This.\r
+\r
+  Returns:\r
+    EFI_SUCCESS           - The Unicode string for the user readable name in the\r
+                            language specified by Language for the driver\r
+                            specified by This was returned in DriverName.\r
+    EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE.\r
+    EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid\r
+                            EFI_HANDLE.\r
+    EFI_INVALID_PARAMETER - Language is NULL.\r
+    EFI_INVALID_PARAMETER - ControllerName is NULL.\r
+    EFI_UNSUPPORTED       - The driver specified by This is not currently\r
+                            managing the controller specified by\r
+                            ControllerHandle and ChildHandle.\r
+    EFI_UNSUPPORTED       - The driver specified by This does not support the\r
+                            language specified by Language.\r
+\r
+--*/\r
+{\r
+  EFI_STATUS                    Status;\r
+\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterAbsolutePointerDriverBinding.DriverBindingHandle,\r
+             &gEfiAbsolutePointerProtocolGuid,\r
+             ChildHandle,\r
+             &gEfiAbsolutePointerProtocolGuid\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
+  return LookupUnicodeString2 (\r
+           Language,\r
+           This->SupportedLanguages,\r
+           mConSplitterAbsolutePointerControllerNameTable,\r
+           ControllerName,\r
+           (BOOLEAN)(This == &gConSplitterAbsolutePointerComponentName)\r
+           );\r
+}\r
+\r
 /**\r
   Retrieves a Unicode string that is the user readable name of the controller\r
   that is being managed by a driver.\r
@@ -501,24 +644,16 @@ ConSplitterConOutComponentNameGetControllerName (
   )\r
 {\r
   EFI_STATUS                       Status;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *TextOut;\r
-  //\r
-  // here ChildHandle is not an Optional parameter.\r
-  //\r
-  if (ChildHandle == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
 \r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiSimpleTextOutProtocolGuid,\r
-                  (VOID **) &TextOut,\r
-                  NULL,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterConOutDriverBinding.DriverBindingHandle,\r
+             &gEfiSimpleTextOutProtocolGuid,\r
+             ChildHandle,\r
+             &gEfiConsoleOutDeviceGuid\r
+             );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    return Status;\r
   }\r
 \r
   return LookupUnicodeString2 (\r
@@ -609,24 +744,16 @@ ConSplitterStdErrComponentNameGetControllerName (
   )\r
 {\r
   EFI_STATUS                       Status;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *ErrOut;\r
-  //\r
-  // here ChildHandle is not an Optional parameter.\r
-  //\r
-  if (ChildHandle == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
 \r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiSimpleTextOutProtocolGuid,\r
-                  (VOID **) &ErrOut,\r
-                  NULL,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterStdErrDriverBinding.DriverBindingHandle,\r
+             &gEfiSimpleTextOutProtocolGuid,\r
+             ChildHandle,\r
+             &gEfiStandardErrorDeviceGuid\r
+             );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    return Status;\r
   }\r
 \r
   return LookupUnicodeString2 (\r