## @file
# USB Mouse Driver that manages USB mouse and produces Absolute Pointer Protocol.
#
# USB Mouse Driver consumes USB I/O Protocol and Device Path Protocol, and produces
# Absolute Pointer Protocol on USB mouse devices.
# It manages the USB mouse device via Asynchronous Interrupt Transfer of USB I/O Protocol,
# and parses the data according to USB HID Specification.
# This module refers to following specifications:
# 1. Universal Serial Bus HID Firmware Specification, ver 1.11
# 2. UEFI Specification, v2.1
#
# Copyright (c) 2006 - 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                      = UsbMouseAbsolutePointerDxe
  MODULE_UNI_FILE                = UsbMouseAbsolutePointerDxe.uni
  FILE_GUID                      = 4EA43463-747C-46eb-97FB-B0E5C5F05306
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = USBMouseAbsolutePointerDriverBindingEntryPoint

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  DRIVER_BINDING                =  gUsbMouseAbsolutePointerDriverBinding
#  COMPONENT_NAME                =  gUsbMouseAbsolutePointerComponentName
#  COMPONENT_NAME2               =  gUsbMouseAbsolutePointerComponentName2
#

[Sources]
  ComponentName.c
  MouseHid.c
  UsbMouseAbsolutePointer.c
  UsbMouseAbsolutePointer.h

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  UefiLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  BaseMemoryLib
  ReportStatusCodeLib
  UefiUsbLib

[Protocols]
  gEfiUsbIoProtocolGuid                         ## TO_START
  gEfiDevicePathProtocolGuid                    ## TO_START
  gEfiAbsolutePointerProtocolGuid               ## BY_START

# [Event]
# EVENT_TYPE_RELATIVE_TIMER        ## CONSUMES
#

[UserExtensions.TianoCore."ExtraFiles"]
  UsbMouseAbsolutePointerDxeExtra.uni
