[edk2] FW: SF.net SVN: edk2:[15731] trunk/edk2/ShellPkg

Message ID 53df577d.06f92a0a.243d.ffffac37SMTPIN_ADDED_BROKEN@mx.google.com
State New
Headers show

Commit Message

Olivier Martin Aug. 4, 2014, 9:50 a.m.
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: jcarsey@users.sourceforge.net [mailto:jcarsey@users.sourceforge.net] 
Sent: 31 July 2014 19:08
To: edk2-commits@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.carsey@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
 # 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

Patch

===================================================================
--- 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