## @file
# This module produces the Metronome Architectural Protocol on top of Timer Library.
#
# This is a generic implementation of the Metronome Architectural Protocol that
# layers on top of an instance of the Timer Library.  The Timer Library provides
# functions for nanosecond and microsecond delays.  This generic implementation
# produces a fixed TickPeriod of 100ns unit, and when the WaitForTick() service
# is called, the number of ticks passed in is converted to either nanosecond or
# microsecond units.  If the number of ticks is small, then nanoseconds are used.
# If the number of ticks is large, then microseconds are used.  This prevents
# overflows that could occur for long delays if only nanoseconds were used and also
# provides the greatest accuracy for small delays.
#
# Copyright (c) 2008 - 2018, 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                      = Metronome
  MODULE_UNI_FILE                = Metronome.uni
  FILE_GUID                      = C8339973-A563-4561-B858-D8476F9DEFC4
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InstallMetronome

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  UefiBootServicesTableLib
  TimerLib
  DebugLib

[Sources]
  Metronome.c
  Metronome.h

[Protocols]
  gEfiMetronomeArchProtocolGuid      ## PRODUCES

[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  MetronomeExtra.uni
