## @file
#  INF file for the UEFI driver model Redfish Configuration Handler
#  Driver.
#
#  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
#  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
#  Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION               = 0x0001000b
  BASE_NAME                 = RedfishConfigHandlerDriver
  FILE_GUID                 = 6e881000-5749-11e8-9bf0-8cdcd426c973
  MODULE_TYPE               = UEFI_DRIVER
  VERSION_STRING            = 1.0
  ENTRY_POINT               = RedfishConfigHandlerDriverEntryPoint
  UNLOAD_IMAGE              = RedfishConfigHandlerDriverUnload

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  NetworkPkg/NetworkPkg.dec
  RedfishPkg/RedfishPkg.dec

[Sources]
  ComponentName.c
  RedfishConfigHandlerDriver.h
  RedfishConfigHandlerDriver.c
  RedfishConfigHandlerCommon.h
  RedfishConfigHandlerCommon.c

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  DebugLib
  UefiLib
  MemoryAllocationLib
  NetLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint

[Protocols]
  gEfiRedfishDiscoverProtocolGuid              ## CONSUMES
  gEfiRestExServiceBindingProtocolGuid
  gEfiRestExProtocolGuid                       ## CONSUMES
  gEdkIIRedfishCredentialProtocolGuid          ## CONSUMES
  gEdkIIRedfishConfigHandlerProtocolGuid       ## CONSUMES
  gEdkIIRedfishHostInterfaceReadyProtocolGuid  ## CONSUMES

[Guids]
  gEfiEventExitBootServicesGuid           ## CONSUMES ## Event
  gEfiEndOfDxeEventGroupGuid              ## CONSUMES ## Event

[Depex]
  gEdkIIRedfishCredentialProtocolGuid
