1 /** @file
2   Main file for NULL named library for 'tftp' Shell command functions.
3 
4   Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved. <BR>
5   Copyright (c) 2015, ARM Ltd. All rights reserved.<BR>
6 
7   This program and the accompanying materials
8   are licensed and made available under the terms and conditions of the BSD License
9   which accompanies this distribution.  The full text of the license may be found at
10   http://opensource.org/licenses/bsd-license.php
11 
12   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 
15 **/
16 #include "UefiShellTftpCommandLib.h"
17 
18 CONST CHAR16 gShellTftpFileName[] = L"ShellCommand";
19 EFI_HANDLE gShellTftpHiiHandle = NULL;
20 
21 /**
22   Return the file name of the help text file if not using HII.
23 
24   @return The string pointer to the file name.
25 **/
26 CONST CHAR16*
27 EFIAPI
ShellCommandGetManFileNameTftp(VOID)28 ShellCommandGetManFileNameTftp (
29   VOID
30   )
31 {
32   return gShellTftpFileName;
33 }
34 
35 /**
36   Constructor for the Shell Tftp Command library.
37 
38   Install the handlers for Tftp UEFI Shell command.
39 
40   @param ImageHandle            The image handle of the process.
41   @param SystemTable            The EFI System Table pointer.
42 
43   @retval EFI_SUCCESS           The Shell command handlers were installed sucessfully.
44   @retval EFI_UNSUPPORTED       The Shell level required was not found.
45 **/
46 EFI_STATUS
47 EFIAPI
ShellTftpCommandLibConstructor(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE * SystemTable)48 ShellTftpCommandLibConstructor (
49   IN EFI_HANDLE        ImageHandle,
50   IN EFI_SYSTEM_TABLE  *SystemTable
51   )
52 {
53   gShellTftpHiiHandle = NULL;
54 
55   //
56   // check our bit of the profiles mask
57   //
58   if ((PcdGet8 (PcdShellProfileMask) & BIT3) == 0) {
59     return EFI_SUCCESS;
60   }
61 
62   gShellTftpHiiHandle = HiiAddPackages (
63                           &gShellTftpHiiGuid, gImageHandle,
64                           UefiShellTftpCommandLibStrings, NULL
65                           );
66   if (gShellTftpHiiHandle == NULL) {
67     return EFI_DEVICE_ERROR;
68   }
69   //
70   // Install our Shell command handler
71   //
72   ShellCommandRegisterCommandName (
73      L"tftp", ShellCommandRunTftp, ShellCommandGetManFileNameTftp, 0,
74      L"tftp", TRUE , gShellTftpHiiHandle, STRING_TOKEN (STR_GET_HELP_TFTP)
75      );
76 
77   return EFI_SUCCESS;
78 }
79 
80 /**
81   Destructor for the library.  free any resources.
82 
83   @param ImageHandle            The image handle of the process.
84   @param SystemTable            The EFI System Table pointer.
85 **/
86 EFI_STATUS
87 EFIAPI
ShellTftpCommandLibDestructor(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE * SystemTable)88 ShellTftpCommandLibDestructor (
89   IN EFI_HANDLE        ImageHandle,
90   IN EFI_SYSTEM_TABLE  *SystemTable
91   )
92 {
93   if (gShellTftpHiiHandle != NULL) {
94     HiiRemovePackages (gShellTftpHiiHandle);
95   }
96   return EFI_SUCCESS;
97 }
98