## @file
#  Status Code Handler Driver which produces datahub handler and hook it
#  onto the DXE status code router.
#
#  Copyright (c) 2011, 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. 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.
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = DatahubStatusCodeHandlerDxe
  FILE_GUID                      = 863D214F-0920-437B-8CAD-88EA83A24E97
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0  
  ENTRY_POINT                    = DatahubStatusCodeHandlerDxeEntry

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  DatahubStatusCodeHandlerDxe.h
  DatahubStatusCodeHandlerDxe.c
  DataHubStatusCodeWorker.c
  
[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
  
[LibraryClasses]
  BaseLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  PcdLib
  PrintLib
  ReportStatusCodeLib
  DebugLib
  SynchronizationLib
  BaseMemoryLib
  
[Guids]
  gEfiEventExitBootServicesGuid                 ## CONSUMES ## Event
  gEfiStatusCodeDataTypeStringGuid              ## CONSUMES
  gEfiDataHubStatusCodeRecordGuid               ## CONSUMES
  gEfiStatusCodeDataTypeDebugGuid               ## CONSUMES
  
[Protocols]
  gEfiRscHandlerProtocolGuid                    ## CONSUMES
  gEfiDataHubProtocolGuid                       ## CONSUMES
  gEfiStatusCodeRuntimeProtocolGuid             ## CONSUMES

[FeaturePcd]
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdStatusCodeUseDataHub

[Depex]
  gEfiRscHandlerProtocolGuid AND
  gEfiDataHubProtocolGuid
  