Few minor issues. > -----Original Message----- > From: Wang, Nickle (Server BIOS) <nickle.w...@hpe.com> > Sent: Tuesday, May 17, 2022 10:40 AM > To: devel@edk2.groups.io > Cc: Wang, Nickle (Server BIOS) <nickle.w...@hpe.com>; Chang, Abner (HPS > SW/FW Technologist) <abner.ch...@hpe.com> > Subject: [edk2-staging][PATCH] edk2-staging/RedfishClientPkg: Introduce > Redfish event library > > Add RedfishEventLib to Redfish client package. This library provides > interface for Redfish feature drivers to listen to Redfish event > such as the event before provisioning and the event after > provisioning. Feature driver can perform additional operation before > and after Redfish provisioning. > > Signed-off-by: Nickle Wang <nickle.w...@hpe.com> > Cc: Abner Chang <abner.ch...@hpe.com> > --- > .../Include/Guid/RedfishClientEventGroup.h | 27 ++++ > .../Include/Library/RedfishEventLib.h | 77 ++++++++++ > .../Library/RedfishEventLib/RedfishEventLib.c | 139 ++++++++++++++++++ > .../RedfishEventLib/RedfishEventLib.inf | 38 +++++ > RedfishClientPkg/RedfishClientLibs.dsc.inc | 2 +- > RedfishClientPkg/RedfishClientPkg.dec | 7 +- > 6 files changed, 288 insertions(+), 2 deletions(-) > create mode 100644 > RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h > create mode 100644 RedfishClientPkg/Include/Library/RedfishEventLib.h > create mode 100644 > RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c > create mode 100644 > RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf > > diff --git a/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h > b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h > new file mode 100644 > index 0000000000..0d88dd4726 > --- /dev/null > +++ b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h > @@ -0,0 +1,27 @@ > +/** @file > > + GUID for Redfish Client Event Group GUID > > + > > + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR> > > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#ifndef REDFISH_CLIENT_EVENT_GROUP_GUID_H_ > > +#define REDFISH_CLIENT_EVENT_GROUP_GUID_H_ > > + > > +#define REDFISH_CLIENT_FEATURE_READY_TO_PROVISIONING_GUID \ > > + { \ > > + 0x77E4FC1C, 0x2428, 0x47EE, { 0x9E, 0xEC, 0x8B, 0x77, 0xEF, 0x9D, 0x4E, > 0xF0 } \ > > + } > > + > > +extern EFI_GUID gEfiRedfishClientFeatureReadyToProvisioningGuid; > > + > > +#define REDFISH_CLIENT_FEATURE_AFTER_PROVISIONING_GUID \ > > + { \ > > + 0xE547CB6F, 0x306F, 0x4226, { 0xAB, 0x70, 0xA0, 0x6E, 0x26, 0xF1, 0x2E, > 0xD0 } \ > > + } > > + > > +extern EFI_GUID gEfiRedfishClientFeatureAfterProvisioningGuid; > > + > > +#endif > > diff --git a/RedfishClientPkg/Include/Library/RedfishEventLib.h > b/RedfishClientPkg/Include/Library/RedfishEventLib.h > new file mode 100644 > index 0000000000..1f3d0acf19 > --- /dev/null > +++ b/RedfishClientPkg/Include/Library/RedfishEventLib.h > @@ -0,0 +1,77 @@ > +/** @file > > + This file defines the Redfish event library interface. > > + > > + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR> > > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#ifndef REDFISH_EVENT_LIB_H_ > > +#define REDFISH_EVENT_LIB_H_ > > + > > +#include <Uefi.h> > > + > > +/** > > + Create an EFI event before Redfish provisioning start. > > + > > + @param NotifyFunction The notification function to call when > the > event is signaled. > > + @param NotifyContext The content to pass to NotifyFunction > when > the event is signaled. > > + @param ReadyToProvisioningEvent Returns the EFI event returned from > gBS->CreateEvent(Ex). > > + > > + @retval EFI_SUCCESS Event was created. > > + @retval Other Event was not created. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +CreateReadyToProvisioningEvent ( > > + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL > > + IN VOID *NotifyContext, OPTIONAL > > + OUT EFI_EVENT *ReadyToProvisioningEvent > > + ); > > + > > +/** > > + Create an EFI event after Redfish provisioning finished. > > + > > + @param NotifyFunction The notification function to call when > the > event is signaled. > > + @param NotifyContext The content to pass to NotifyFunction > when > the event is signaled. > > + @param ReadyToProvisioningEvent Returns the EFI event returned from > gBS->CreateEvent(Ex). > > + > > + @retval EFI_SUCCESS Event was created. > > + @retval Other Event was not created. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +CreateAfterProvisioningEvent ( > > + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL > > + IN VOID *NotifyContext, OPTIONAL > > + OUT EFI_EVENT *ReadyToProvisioningEvent > > + ); > > + > > +/** > > + Signal ready to provisioning event. > > + > > + @retval EFI_SUCCESS Event was created. > > + @retval Other Event was not created. > > + > > +**/ > > +EFI_STATUS > > +SignalReadyToProvisioningEvent ( > > + IN VOID Please remove IN. > > + ); > > + > > +/** > > + Signal after provisioning event. > > + > > + @retval EFI_SUCCESS Event was created. > > + @retval Other Event was not created. > > + > > +**/ > > +EFI_STATUS > > +SignalAfterProvisioningEvent ( > > + IN VOID Please remove IN. > > + ); > > + > > +#endif > > diff --git a/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c > b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c > new file mode 100644 > index 0000000000..1c8cfe53c7 > --- /dev/null > +++ b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c > @@ -0,0 +1,139 @@ > +/** @file > > + Redfish event library implementation. > > + > > + (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR> > > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#include <Uefi.h> > > + > > +#include <Guid/RedfishClientEventGroup.h> > > + > > +#include <Library/UefiLib.h> > > +#include <Library/BaseLib.h> > > +#include <Library/DebugLib.h> > > +#include <Library/UefiBootServicesTableLib.h> > > +#include <Library/RedfishEventLib.h> > > + > > +/** > > + Create an EFI event before Redfish provisioning start. > > + > > + @param NotifyFunction The notification function to call when > the > event is signaled. > > + @param NotifyContext The content to pass to NotifyFunction > when > the event is signaled. > > + @param ReadyToProvisioningEvent Returns the EFI event returned from > gBS->CreateEvent(Ex). > > + > > + @retval EFI_SUCCESS Event was created. > > + @retval Other Event was not created. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +CreateReadyToProvisioningEvent ( > > + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL > > + IN VOID *NotifyContext, OPTIONAL > > + OUT EFI_EVENT *ReadyToProvisioningEvent > > + ) > > +{ > > + EFI_STATUS Status; > > + > > + Status = gBS->CreateEventEx ( > > + EVT_NOTIFY_SIGNAL, > > + TPL_CALLBACK, > > + (NotifyFunction == NULL ? EfiEventEmptyFunction : > NotifyFunction), > > + NotifyContext, > > + &gEfiRedfishClientFeatureReadyToProvisioningGuid, > > + ReadyToProvisioningEvent > > + ); > > + > > + return Status; > > +} > > + > > +/** > > + Create an EFI event after Redfish provisioning finished. > > + > > + @param NotifyFunction The notification function to call when > the > event is signaled. > > + @param NotifyContext The content to pass to NotifyFunction > when > the event is signaled. > > + @param ReadyToProvisioningEvent Returns the EFI event returned from > gBS->CreateEvent(Ex). > > + > > + @retval EFI_SUCCESS Event was created. > > + @retval Other Event was not created. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +CreateAfterProvisioningEvent ( > > + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL > > + IN VOID *NotifyContext, OPTIONAL > > + OUT EFI_EVENT *ReadyToProvisioningEvent > > + ) > > +{ > > + EFI_STATUS Status; > > + > > + Status = gBS->CreateEventEx ( > > + EVT_NOTIFY_SIGNAL, > > + TPL_CALLBACK, > > + (NotifyFunction == NULL ? EfiEventEmptyFunction : > NotifyFunction), > > + NotifyContext, > > + &gEfiRedfishClientFeatureAfterProvisioningGuid, > > + ReadyToProvisioningEvent > > + ); > > + > > + return Status; > > +} > > + > > +/** > > + Signal ready to provisioning event. > > + > > + @retval EFI_SUCCESS Event was created. > > + @retval Other Event was not created. > > + > > +**/ > > +EFI_STATUS > > +SignalReadyToProvisioningEvent ( > > + IN VOID Please remove IN. > + ) > > +{ > > + EFI_STATUS Status; > > + EFI_EVENT Event; > > + > > + Status = CreateReadyToProvisioningEvent (NULL, NULL, &Event); > > + if (EFI_ERROR (Status)) { > > + DEBUG ((DEBUG_ERROR, "%a, failed to create after provisioning event\n", > __FUNCTION__)); > > + return Status; > > + } > > + > > + gBS->SignalEvent (Event); > > + gBS->CloseEvent (Event); > > + > > + return EFI_SUCCESS; > > +} > > + > > +/** > > + Signal after provisioning event. > > + > > + @retval EFI_SUCCESS Event was created. > > + @retval Other Event was not created. > > + > > +**/ > > +EFI_STATUS > > +SignalAfterProvisioningEvent ( > > + IN VOID Please remove IN.
Abner > > + ) > > +{ > > + EFI_STATUS Status; > > + EFI_EVENT Event; > > + > > + Status = CreateAfterProvisioningEvent (NULL, NULL, &Event); > > + if (EFI_ERROR (Status)) { > > + DEBUG ((DEBUG_ERROR, "%a, failed to create after provisioning event\n", > __FUNCTION__)); > > + return Status; > > + } > > + > > + gBS->SignalEvent (Event); > > + gBS->CloseEvent (Event); > > + > > + return EFI_SUCCESS; > > +} > > + > > diff --git a/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf > b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf > new file mode 100644 > index 0000000000..edafca0c65 > --- /dev/null > +++ b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf > @@ -0,0 +1,38 @@ > +## @file > > +# > > +# (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +## > > + > > +[Defines] > > + INF_VERSION = 0x00010006 > > + BASE_NAME = RedfishEventLib > > + FILE_GUID = C4F7E27D-2338-43EA-9D1F-D10960E36521 > > + MODULE_TYPE = DXE_DRIVER > > + VERSION_STRING = 1.0 > > + LIBRARY_CLASS = RedfishEventLib| DXE_DRIVER UEFI_DRIVER > > + > > +# > > +# VALID_ARCHITECTURES = IA32 X64 EBC > > +# > > + > > +[Sources] > > + RedfishEventLib.c > > + > > +[Packages] > > + MdePkg/MdePkg.dec > > + MdeModulePkg/MdeModulePkg.dec > > + RedfishPkg/RedfishPkg.dec > > + RedfishClientPkg/RedfishClientPkg.dec > > + > > +[LibraryClasses] > > + BaseLib > > + DebugLib > > + UefiBootServicesTableLib > > + UefiLib > > + > > +[Guids] > > + gEfiRedfishClientFeatureReadyToProvisioningGuid > > + gEfiRedfishClientFeatureAfterProvisioningGuid > > diff --git a/RedfishClientPkg/RedfishClientLibs.dsc.inc > b/RedfishClientPkg/RedfishClientLibs.dsc.inc > index 5467acedd0..91e5de4296 100644 > --- a/RedfishClientPkg/RedfishClientLibs.dsc.inc > +++ b/RedfishClientPkg/RedfishClientLibs.dsc.inc > @@ -27,4 +27,4 @@ > > RedfishPlatformConfigLib|RedfishPkg/Library/RedfishPlatformConfigLib/Red > fishPlatformConfigLib.inf > > > RedfishContentCodingLib|RedfishPkg/Library/RedfishContentCodingLibNull/ > RedfishContentCodingLibNull.inf > > > ConverterCommonLib|RedfishClientPkg/ConverterLib/edk2library/Converte > rCommonLib/ConverterCommonLib.inf > > - > > + > RedfishEventLib|RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.i > nf > > diff --git a/RedfishClientPkg/RedfishClientPkg.dec > b/RedfishClientPkg/RedfishClientPkg.dec > index 09df062dd3..56e542f03c 100644 > --- a/RedfishClientPkg/RedfishClientPkg.dec > +++ b/RedfishClientPkg/RedfishClientPkg.dec > @@ -1,7 +1,7 @@ > ## @file > > # Redfish Client Package > > # > > -# (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR> > > +# (C) Copyright 2021-2022 Hewlett Packard Enterprise Development LP<BR> > > # > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > ## > > @@ -21,6 +21,7 @@ > > > [LibraryClasses] > > RedfishFeatureUtilityLib|Include/Library/RedfishFeatureUtilityLib.h > > + RedfishEventLib|Include/Library/RedfishEventLib.h > > > > [LibraryClasses.Common.Private] > > ## @libraryclass Redfish Helper Library > > @@ -39,6 +40,10 @@ > ## Include/Guid/RedfishClientPkgTokenSpace.h > > gEfiRedfishClientPkgTokenSpaceGuid = { 0x8c444dae, 0x728b, 0x48ee, > { 0x9e, 0x19, 0x8f, 0x0a, 0x3d, 0x4e, 0x9c, 0xc8 } } > > > > + ## Include/Guid/RedfishClientEventGroup.h > > + gEfiRedfishClientFeatureReadyToProvisioningGuid = { 0x77E4FC1C, 0x2428, > 0x47EE, { 0x9E, 0xEC, 0x8B, 0x77, 0xEF, 0x9D, 0x4E, 0xF0 } } > > + gEfiRedfishClientFeatureAfterProvisioningGuid = { 0xE547CB6F, 0x306F, > 0x4226, { 0xAB, 0x70, 0xA0, 0x6E, 0x26, 0xF1, 0x2E, 0xD0 } } > > + > > [PcdsFixedAtBuild] > > > gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32| > UINT32|0x10000001 > > > gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8| > UINT32|0x10000002 > > -- > 2.32.0.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#89877): https://edk2.groups.io/g/devel/message/89877 Mute This Topic: https://groups.io/mt/91156124/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-