Olivier, this is something HP implemented and added for inclusion in the shell spec a long time ago. We have contributed the implementation of dynamic command handling and Jaben is in the process of integrating it. Hopefully Jaben will be able to integrate the implementation shortly so you can try it.
Eugene -----Original Message----- From: Olivier Martin [mailto:olivier.mar...@arm.com] Sent: Monday, August 04, 2014 3:50 AM To: 'Carsey, Jaben' Cc: edk2-devel@lists.sourceforge.net Subject: [edk2] FW: SF.net SVN: edk2:[15731] trunk/edk2/ShellPkg Hello Jaben, Interestingly it was a feature I was thinking to add to the Shell specification a couple of month ago because we needed it. But I have just seen it has been added to the latest Shell spec. Are you planning to implement this feature in the next few weeks? If no, ARM Ltd could do it. Regards, Olivier -----Original Message----- From: jcar...@users.sourceforge.net [mailto:jcar...@users.sourceforge.net] Sent: 31 July 2014 19:08 To: edk2-comm...@lists.sourceforge.net Subject: SF.net SVN: edk2:[15731] trunk/edk2/ShellPkg Revision: 15731 http://sourceforge.net/p/edk2/code/15731 Author: jcarsey Date: 2014-07-31 18:07:43 +0000 (Thu, 31 Jul 2014) Log Message: ----------- ShellPkg: Add new dynamic command protocol Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jaben Carsey <jaben.car...@intel.com> Modified Paths: -------------- trunk/edk2/ShellPkg/ShellPkg.dec Added Paths: ----------- trunk/edk2/ShellPkg/Include/Protocol/EfiShellDynamicCommand.h Added: trunk/edk2/ShellPkg/Include/Protocol/EfiShellDynamicCommand.h =================================================================== --- trunk/edk2/ShellPkg/Include/Protocol/EfiShellDynamicCommand.h (rev 0) +++ trunk/edk2/ShellPkg/Include/Protocol/EfiShellDynamicCommand.h 2014-07-31 18:07:43 UTC (rev 15731) @@ -0,0 +1,86 @@ +/** @file + EFI Shell Dynamic Command registration protocol + + Copyright (c) 2012 Hewlett-Packard Company. All rights reserved.<BR> + This program and the accompanying materials are licensed and made + available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license + may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL__ +#define __EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL__ + +#include <ShellBase.h> +#include <Protocol/EfiShellParameters.h> #include <Protocol/EfiShell.h> + + +// {0CD3258C-D677-4fcc-B343-934D30983888} +#define EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL_GUID \ + { \ + 0xcd3258c, 0xd677, 0x4fcc, { 0xb3, 0x43, 0x93, 0x4d, 0x30, 0x98, +0x38, 0x88 } \ + } + + +// +// Define for forward reference. +// +typedef struct _EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL; + + +/** + This is the shell command handler function pointer callback type. +This + function handles the command when it is invoked in the shell. + + @param[in] This The instance of the EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL. + @param[in] SystemTable The pointer to the system table. + @param[in] ShellParameters The parameters associated with the command. + @param[in] Shell The instance of the shell protocol used in the context + of processing this command. + + @return EFI_SUCCESS the operation was sucessful + @return other the operation failed. +**/ +typedef +SHELL_STATUS +(EFIAPI * SHELL_COMMAND_HANDLER)( + IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This, + IN EFI_SYSTEM_TABLE *SystemTable, + IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters, + IN EFI_SHELL_PROTOCOL *Shell + ); + +/** + This is the command help handler function pointer callback type. +This + function is responsible for displaying help information for the associated + command. + + @param[in] This The instance of the EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL. + @param[in] Language The pointer to the language string to use. + + @return string Pool allocated help string, must be freed by caller +**/ +typedef +CHAR16* +(EFIAPI * SHELL_COMMAND_GETHELP)( + IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This, + IN CONST CHAR8 *Language + ); + +/// EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL protocol structure. +typedef struct _EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL { + + CONST CHAR16 *CommandName; + SHELL_COMMAND_HANDLER Handler; + SHELL_COMMAND_GETHELP GetHelp; + +} EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL; + +extern EFI_GUID gEfiShellDynamicCommandProtocolGuid; + +#endif Modified: trunk/edk2/ShellPkg/ShellPkg.dec =================================================================== --- trunk/edk2/ShellPkg/ShellPkg.dec 2014-07-31 15:45:27 UTC (rev 15730) +++ trunk/edk2/ShellPkg/ShellPkg.dec 2014-07-31 18:07:43 UTC (rev 15731) @@ -3,7 +3,7 @@ # This Package provides all definitions for EFI and UEFI Shell # # Copyright (c) 2013, Hewlett-Packard Development Company, L.P. -# Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2009 - 2014, Intel Corporation. All rights +reserved.<BR> # # This program and the accompanying materials are licensed and made available under # the terms and conditions of the BSD License which accompanies this distribution. @@ -62,10 +62,11 @@ gShellNetwork1HiiGuid = {0xf3d301bb, 0xf4a5, 0x45a8, {0xb0, 0xb7, 0xfa, 0x99, 0x9c, 0x62, 0x37, 0xae}} [Protocols] - gEfiShellProtocolGuid = {0x6302d008, 0x7f9b, 0x4f30, {0x87, 0xac, 0x60, 0xc9, 0xfe, 0xf5, 0xda, 0x4e}} - gEfiShellParametersProtocolGuid = {0x752f3136, 0x4e16, 0x4fdc, {0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca}} - gEfiShellEnvironment2Guid = {0x47c7b221, 0xc42a, 0x11d2, {0x8e, 0x57, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}} - gEfiShellInterfaceGuid = {0x47c7b223, 0xc42a, 0x11d2, {0x8e, 0x57, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}} + gEfiShellProtocolGuid = {0x6302d008, 0x7f9b, 0x4f30, {0x87, 0xac, 0x60, 0xc9, 0xfe, 0xf5, 0xda, 0x4e}} + gEfiShellParametersProtocolGuid = {0x752f3136, 0x4e16, 0x4fdc, {0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca}} + gEfiShellEnvironment2Guid = {0x47c7b221, 0xc42a, 0x11d2, {0x8e, 0x57, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}} + gEfiShellInterfaceGuid = {0x47c7b223, 0xc42a, 0x11d2, {0x8e, 0x57, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}} + gEfiShellDynamicCommandProtocolGuid = {0xcd3258c, 0xd677, 0x4fcc, { + 0xb3, 0x43, 0x93, 0x4d, 0x30, 0x98, 0x38, 0x88}} [PcdsFeatureFlag] ## This flag is used to control whether the shell includes NT32 platform Guids This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ---------------------------------------------------------------------------- -- Infragistics Professional Build stunning WinForms apps today! Reboot your WinForms applications with our WinForms controls. Build a bridge from your legacy apps to the future. http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk _______________________________________________ edk2-commits mailing list edk2-comm...@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-commits ------------------------------------------------------------------------------ Infragistics Professional Build stunning WinForms apps today! Reboot your WinForms applications with our WinForms controls. Build a bridge from your legacy apps to the future. http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Infragistics Professional Build stunning WinForms apps today! Reboot your WinForms applications with our WinForms controls. Build a bridge from your legacy apps to the future. http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel