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

Reply via email to