1 /** @file
2   Main file for NULL named library for install1 shell command functions.
3 
4   Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.
5   This program and the accompanying materials
6   are licensed and made available under the terms and conditions of the BSD License
7   which accompanies this distribution.  The full text of the license may be found at
8   http://opensource.org/licenses/bsd-license.php
9 
10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 
13 **/
14 
15 #include "UefiDpLib.h"
16 
17 STATIC CONST CHAR16 mFileName[] = L"ShellCommands";
18 EFI_HANDLE gDpHiiHandle = NULL;
19 
20 #define DP_HII_GUID \
21   { \
22   0xeb832fd9, 0x9089, 0x4898, { 0x83, 0xc9, 0x41, 0x61, 0x8f, 0x5c, 0x48, 0xb9 } \
23   }
24 
25 EFI_GUID gDpHiiGuid = DP_HII_GUID;
26 
27 /**
28   Function to get the filename with help context if HII will not be used.
29 
30   @return   The filename with help text in it.
31 **/
32 CONST CHAR16*
33 EFIAPI
UefiDpLibGetManFileName(VOID)34 UefiDpLibGetManFileName (
35   VOID
36   )
37 {
38   return (mFileName);
39 }
40 
41 /**
42   Constructor for the Shell Level 1 Commands library.
43 
44   Install the handlers for level 1 UEFI Shell 2.0 commands.
45 
46   @param ImageHandle    the image handle of the process
47   @param SystemTable    the EFI System Table pointer
48 
49   @retval EFI_SUCCESS        the shell command handlers were installed sucessfully
50   @retval EFI_UNSUPPORTED    the shell level required was not found.
51 **/
52 EFI_STATUS
53 EFIAPI
UefiDpLibConstructor(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE * SystemTable)54 UefiDpLibConstructor (
55   IN EFI_HANDLE        ImageHandle,
56   IN EFI_SYSTEM_TABLE  *SystemTable
57   )
58 {
59   //
60   // check our bit of the profiles mask
61   //
62   if ((PcdGet8(PcdShellProfileMask) & BIT2) == 0) {
63     return (EFI_SUCCESS);
64   }
65 
66   //
67   // 3rd parameter 'HII strings array' must be name of .uni strings file followed by 'Strings', e.g. mycommands.uni must be
68   // specified as 'mycommandsStrings' because the build Autogen process defines this as a string array for the strings in your
69   // .uni file.  Examine your Build folder under your package's DEBUG folder and you will find it defined in a xxxStrDefs.h file.
70   //
71   gDpHiiHandle = HiiAddPackages (&gDpHiiGuid, gImageHandle, UefiDpLibStrings, NULL);
72   if (gDpHiiHandle == NULL) {
73     return (EFI_DEVICE_ERROR);
74   }
75 
76   //
77   // install our shell command handlers that are always installed
78   //
79   ShellCommandRegisterCommandName(L"dp", ShellCommandRunDp , UefiDpLibGetManFileName, 0, L"", FALSE, gDpHiiHandle, STRING_TOKEN(STR_GET_HELP_DP));
80 
81   return (EFI_SUCCESS);
82 }
83 
84 /**
85   Destructor for the library.  free any resources.
86 
87   @param ImageHandle            The image handle of the process.
88   @param SystemTable            The EFI System Table pointer.
89 **/
90 EFI_STATUS
91 EFIAPI
UefiDpLibDestructor(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE * SystemTable)92 UefiDpLibDestructor (
93   IN EFI_HANDLE        ImageHandle,
94   IN EFI_SYSTEM_TABLE  *SystemTable
95   )
96 {
97   if (gDpHiiHandle != NULL) {
98     HiiRemovePackages(gDpHiiHandle);
99   }
100   return (EFI_SUCCESS);
101 }
102