| /*++ | |
| Copyright (c) 2006, Intel Corporation | |
| All rights reserved. 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. | |
| Module Name: | |
| UsbMouse.h | |
| Abstract: | |
| --*/ | |
| #ifndef _USB_MOUSE_H | |
| #define _USB_MOUSE_H | |
| #include <IndustryStandard/Usb.h> | |
| #define CLASS_HID 3 | |
| #define SUBCLASS_BOOT 1 | |
| #define PROTOCOL_MOUSE 2 | |
| #define BOOT_PROTOCOL 0 | |
| #define REPORT_PROTOCOL 1 | |
| #define USB_MOUSE_DEV_SIGNATURE EFI_SIGNATURE_32 ('u', 'm', 'o', 'u') | |
| typedef struct { | |
| BOOLEAN ButtonDetected; | |
| UINT8 ButtonMinIndex; | |
| UINT8 ButtonMaxIndex; | |
| UINT8 Reserved; | |
| } PRIVATE_DATA; | |
| typedef struct { | |
| UINTN Signature; | |
| EFI_DEVICE_PATH_PROTOCOL *DevicePath; | |
| EFI_EVENT DelayedRecoveryEvent; | |
| EFI_USB_IO_PROTOCOL *UsbIo; | |
| EFI_USB_INTERFACE_DESCRIPTOR *InterfaceDescriptor; | |
| EFI_USB_ENDPOINT_DESCRIPTOR *IntEndpointDescriptor; | |
| UINT8 NumberOfButtons; | |
| INT32 XLogicMax; | |
| INT32 XLogicMin; | |
| INT32 YLogicMax; | |
| INT32 YLogicMin; | |
| EFI_SIMPLE_POINTER_PROTOCOL SimplePointerProtocol; | |
| EFI_SIMPLE_POINTER_STATE State; | |
| EFI_SIMPLE_POINTER_MODE Mode; | |
| BOOLEAN StateChanged; | |
| PRIVATE_DATA PrivateData; | |
| EFI_UNICODE_STRING_TABLE *ControllerNameTable; | |
| } USB_MOUSE_DEV; | |
| #define USB_MOUSE_DEV_FROM_MOUSE_PROTOCOL(a) \ | |
| CR(a, USB_MOUSE_DEV, SimplePointerProtocol, USB_MOUSE_DEV_SIGNATURE) | |
| VOID | |
| EFIAPI | |
| USBMouseRecoveryHandler ( | |
| IN EFI_EVENT Event, | |
| IN VOID *Context | |
| ); | |
| // | |
| // Global Variables | |
| // | |
| extern EFI_DRIVER_BINDING_PROTOCOL gUsbMouseDriverBinding; | |
| extern EFI_COMPONENT_NAME_PROTOCOL gUsbMouseComponentName; | |
| VOID | |
| MouseReportStatusCode ( | |
| IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, | |
| IN EFI_STATUS_CODE_TYPE CodeType, | |
| IN EFI_STATUS_CODE_VALUE Value | |
| ); | |
| // | |
| // Prototypes | |
| // Driver model protocol interface | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| USBMouseDriverBindingSupported ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Controller, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| USBMouseDriverBindingStart ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Controller, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| USBMouseDriverBindingStop ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Controller, | |
| IN UINTN NumberOfChildren, | |
| IN EFI_HANDLE *ChildHandleBuffer | |
| ); | |
| // | |
| // EFI Component Name Functions | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| UsbMouseComponentNameGetDriverName ( | |
| IN EFI_COMPONENT_NAME_PROTOCOL *This, | |
| IN CHAR8 *Language, | |
| OUT CHAR16 **DriverName | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UsbMouseComponentNameGetControllerName ( | |
| IN EFI_COMPONENT_NAME_PROTOCOL *This, | |
| IN EFI_HANDLE ControllerHandle, | |
| IN EFI_HANDLE ChildHandle OPTIONAL, | |
| IN CHAR8 *Language, | |
| OUT CHAR16 **ControllerName | |
| ); | |
| #endif |