TianoCore EDK2 master
|
#include <Uefi.h>
#include <Protocol/SimplePointer.h>
#include <Protocol/UsbIo.h>
#include <Protocol/DevicePath.h>
#include <Library/ReportStatusCodeLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/UefiDriverEntryPoint.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiUsbLib.h>
#include <Library/DebugLib.h>
#include <IndustryStandard/Usb.h>
Go to the source code of this file.
Data Structures | |
struct | USB_DESC_HEAD |
struct | USB_MOUSE_BUTTON_DATA |
struct | USB_MOUSE_DEV |
union | HID_DATA |
struct | HID_ITEM |
Macros | |
#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 SIGNATURE_32 ('u', 'm', 'o', 'u') |
#define | USB_MOUSE_DEV_FROM_MOUSE_PROTOCOL(a) CR(a, USB_MOUSE_DEV, SimplePointerProtocol, USB_MOUSE_DEV_SIGNATURE) |
Variables | |
EFI_DRIVER_BINDING_PROTOCOL | gUsbMouseDriverBinding |
EFI_COMPONENT_NAME_PROTOCOL | gUsbMouseComponentName |
EFI_COMPONENT_NAME2_PROTOCOL | gUsbMouseComponentName2 |
Helper routine and corresponding data struct used by USB Mouse Driver.
Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file UsbMouse.h.
#define BOOT_PROTOCOL 0 |
Definition at line 33 of file UsbMouse.h.
#define CLASS_HID 3 |
Definition at line 29 of file UsbMouse.h.
#define PROTOCOL_MOUSE 2 |
Definition at line 31 of file UsbMouse.h.
#define REPORT_PROTOCOL 1 |
Definition at line 34 of file UsbMouse.h.
#define SUBCLASS_BOOT 1 |
Definition at line 30 of file UsbMouse.h.
#define USB_MOUSE_DEV_FROM_MOUSE_PROTOCOL | ( | a | ) | CR(a, USB_MOUSE_DEV, SimplePointerProtocol, USB_MOUSE_DEV_SIGNATURE) |
Definition at line 104 of file UsbMouse.h.
#define USB_MOUSE_DEV_SIGNATURE SIGNATURE_32 ('u', 'm', 'o', 'u') |
Definition at line 36 of file UsbMouse.h.
EFI_STATUS EFIAPI GetMouseState | ( | IN EFI_SIMPLE_POINTER_PROTOCOL * | This, |
OUT EFI_SIMPLE_POINTER_STATE * | MouseState | ||
) |
Retrieves the current state of a pointer device.
This | A pointer to the EFI_SIMPLE_POINTER_PROTOCOL instance. |
MouseState | A pointer to the state information on the pointer device. |
EFI_SUCCESS | The state of the pointer device was returned in State. |
EFI_NOT_READY | The state of the pointer device has not changed since the last call to GetState(). |
EFI_DEVICE_ERROR | A device error occurred while attempting to retrieve the pointer device's current state. |
EFI_INVALID_PARAMETER | MouseState is NULL. |
Definition at line 856 of file UsbMouse.c.
EFI_STATUS InitializeUsbMouseDevice | ( | IN OUT USB_MOUSE_DEV * | UsbMouseDev | ) |
Initialize the USB mouse device.
This function retrieves and parses HID report descriptor, and initializes state of USB_MOUSE_DEV. Then it sets indefinite idle rate for the device. Finally it creates event for delayed recovery, which deals with device error.
UsbMouseDev | Device instance to be initialized. |
EFI_SUCCESS | USB mouse device successfully initialized.. |
EFI_UNSUPPORTED | HID descriptor type is not report descriptor. |
Other | USB mouse device was not initialized successfully. |
Definition at line 537 of file UsbMouse.c.
BOOLEAN IsUsbMouse | ( | IN EFI_USB_IO_PROTOCOL * | UsbIo | ) |
Uses USB I/O to check whether the device is a USB mouse device.
UsbIo | Pointer to a USB I/O protocol instance. |
TRUE | Device is a USB mouse device. |
FALSE | Device is a not USB mouse device. |
Definition at line 491 of file UsbMouseAbsolutePointer.c.
EFI_STATUS EFIAPI OnMouseInterruptComplete | ( | IN VOID * | Data, |
IN UINTN | DataLength, | ||
IN VOID * | Context, | ||
IN UINT32 | Result | ||
) |
Handler function for USB mouse's asynchronous interrupt transfer.
This function is the handler function for USB mouse's asynchronous interrupt transfer to manage the mouse. It parses data returned from asynchronous interrupt transfer, and get button and movement state.
Data | A pointer to a buffer that is filled with key data which is retrieved via asynchronous interrupt transfer. |
DataLength | Indicates the size of the data buffer. |
Context | Pointing to USB_KB_DEV instance. |
Result | Indicates the result of the asynchronous interrupt transfer. |
EFI_SUCCESS | Asynchronous interrupt transfer is handled successfully. |
EFI_DEVICE_ERROR | Hardware error occurs. |
Definition at line 744 of file UsbMouseAbsolutePointer.c.
EFI_STATUS ParseMouseReportDescriptor | ( | OUT USB_MOUSE_DEV * | UsbMouse, |
IN UINT8 * | ReportDescriptor, | ||
IN UINTN | ReportSize | ||
) |
Parse Mouse Report Descriptor.
According to USB HID Specification, report descriptors are composed of pieces of information. Each piece of information is called an Item. This function retrieves each item from the report descriptor and updates USB_MOUSE_DEV.
UsbMouse | The instance of USB_MOUSE_DEV |
ReportDescriptor | Report descriptor to parse |
ReportSize | Report descriptor size |
EFI_SUCCESS | Report descriptor successfully parsed. |
EFI_UNSUPPORTED | Report descriptor contains long item. |
Definition at line 242 of file MouseHid.c.
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 | ||
) |
Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver.
This function retrieves the user readable name of the controller specified by ControllerHandle and ChildHandle in the form of a Unicode string. If the driver specified by This has a user readable name in the language specified by Language, then a pointer to the controller name is returned in ControllerName, and EFI_SUCCESS is returned. If the driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle, then EFI_UNSUPPORTED is returned. If the driver specified by This does not support the language specified by Language, then EFI_UNSUPPORTED is returned.
This | A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or EFI_COMPONENT_NAME_PROTOCOL instance. |
ControllerHandle | The handle of a controller that the driver specified by This is managing. This handle specifies the controller whose name is to be returned. |
ChildHandle | The handle of the child controller to retrieve the name of. This is an optional parameter that may be NULL. It will be NULL for device drivers. It will also be NULL for a bus drivers that wish to retrieve the name of the bus controller. It will not be NULL for a bus driver that wishes to retrieve the name of a child controller. |
Language | A pointer to a Null-terminated ASCII string array indicating the language. This is the language of the driver name that the caller is requesting, and it must match one of the languages specified in SupportedLanguages. The number of languages supported by a driver is up to the driver writer. Language is specified in RFC 4646 or ISO 639-2 language code format. |
ControllerName | A pointer to the Unicode string to return. This Unicode string is the name of the controller specified by ControllerHandle and ChildHandle in the language specified by Language from the point of view of the driver specified by This. |
EFI_SUCCESS | The Unicode string for the user readable name in the language specified by Language for the driver specified by This was returned in DriverName. |
EFI_INVALID_PARAMETER | ControllerHandle is NULL. |
EFI_INVALID_PARAMETER | ChildHandle is not NULL and it is not a valid EFI_HANDLE. |
EFI_INVALID_PARAMETER | Language is NULL. |
EFI_INVALID_PARAMETER | ControllerName is NULL. |
EFI_UNSUPPORTED | The driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle. |
EFI_UNSUPPORTED | The driver specified by This does not support the language specified by Language. |
Definition at line 145 of file ComponentName.c.
EFI_STATUS EFIAPI UsbMouseComponentNameGetDriverName | ( | IN EFI_COMPONENT_NAME_PROTOCOL * | This, |
IN CHAR8 * | Language, | ||
OUT CHAR16 ** | DriverName | ||
) |
Retrieves a Unicode string that is the user readable name of the driver.
This function retrieves the user readable name of a driver in the form of a Unicode string. If the driver specified by This has a user readable name in the language specified by Language, then a pointer to the driver name is returned in DriverName, and EFI_SUCCESS is returned. If the driver specified by This does not support the language specified by Language, then EFI_UNSUPPORTED is returned.
This | A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or EFI_COMPONENT_NAME_PROTOCOL instance. |
Language | A pointer to a Null-terminated ASCII string array indicating the language. This is the language of the driver name that the caller is requesting, and it must match one of the languages specified in SupportedLanguages. The number of languages supported by a driver is up to the driver writer. Language is specified in RFC 4646 or ISO 639-2 language code format. |
DriverName | A pointer to the Unicode string to return. This Unicode string is the name of the driver specified by This in the language specified by Language. |
EFI_SUCCESS | The Unicode string for the Driver specified by This and the language specified by Language was returned in DriverName. |
EFI_INVALID_PARAMETER | Language is NULL. |
EFI_INVALID_PARAMETER | DriverName is NULL. |
EFI_UNSUPPORTED | The driver specified by This does not support the language specified by Language. |
Definition at line 70 of file ComponentName.c.
EFI_STATUS EFIAPI USBMouseDriverBindingStart | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN EFI_DEVICE_PATH_PROTOCOL * | RemainingDevicePath | ||
) |
Starts the mouse device with this driver.
This function consumes USB I/O Protocol, initializes USB mouse device, installs Simple Pointer Protocol, and submits Asynchronous Interrupt Transfer to manage the USB mouse device.
This | The USB mouse driver binding instance. |
Controller | Handle of device to bind driver to. |
RemainingDevicePath | Optional parameter use to pick a specific child device to start. |
EFI_SUCCESS | This driver supports this device. |
EFI_UNSUPPORTED | This driver does not support this device. |
EFI_DEVICE_ERROR | This driver cannot be started due to device Error. |
EFI_OUT_OF_RESOURCES | Can't allocate memory resources. |
EFI_ALREADY_STARTED | This driver has been started. |
Definition at line 128 of file UsbMouse.c.
EFI_STATUS EFIAPI USBMouseDriverBindingStop | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN UINTN | NumberOfChildren, | ||
IN EFI_HANDLE * | ChildHandleBuffer | ||
) |
Stop the USB mouse device handled by this driver.
This | The USB mouse driver binding protocol. |
Controller | The controller to release. |
NumberOfChildren | The number of handles in ChildHandleBuffer. |
ChildHandleBuffer | The array of child handle. |
EFI_SUCCESS | The device was stopped. |
EFI_UNSUPPORTED | Simple Pointer Protocol is not installed on Controller. |
Others | Fail to uninstall protocols attached on the device. |
Definition at line 395 of file UsbMouse.c.
EFI_STATUS EFIAPI USBMouseDriverBindingSupported | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN EFI_DEVICE_PATH_PROTOCOL * | RemainingDevicePath | ||
) |
Check whether USB mouse driver supports this device.
This | The USB mouse driver binding protocol. |
Controller | The controller handle to check. |
RemainingDevicePath | The remaining device path. |
EFI_SUCCESS | The driver supports this controller. |
other | This device isn't supported. |
Definition at line 67 of file UsbMouse.c.
Handler for Delayed Recovery event.
This function is the handler for Delayed Recovery event triggered by timer. After a device error occurs, the event would be triggered with interval of EFI_USB_INTERRUPT_DELAY. EFI_USB_INTERRUPT_DELAY is defined in USB standard for error handling.
Event | The Delayed Recovery event. |
Context | Points to the USB_MOUSE_DEV instance. |
Handler for Delayed Recovery event.
This function is the handler for Delayed Recovery event triggered by timer. After a device error occurs, the event would be triggered with interval of EFI_USB_INTERRUPT_DELAY. EFI_USB_INTERRUPT_DELAY is defined in USB standard for error handling.
Event | The Delayed Recovery event. |
Context | Points to the USB_MOUSE_ABSOLUTE_POINTER_DEV instance. |
Definition at line 998 of file UsbMouseAbsolutePointer.c.
EFI_STATUS EFIAPI UsbMouseReset | ( | IN EFI_SIMPLE_POINTER_PROTOCOL * | This, |
IN BOOLEAN | ExtendedVerification | ||
) |
Resets the pointer device hardware.
This | A pointer to the EFI_SIMPLE_POINTER_PROTOCOL instance. |
ExtendedVerification | Indicates that the driver may perform a more exhaustive verification operation of the device during reset. |
EFI_SUCCESS | The device was reset. |
EFI_DEVICE_ERROR | The device is not functioning correctly and could not be reset. |
Definition at line 907 of file UsbMouse.c.
Event notification function for SIMPLE_POINTER.WaitForInput event.
Event | Event to be signaled when there's input from mouse. |
Context | Points to USB_MOUSE_DEV instance. |
Event notification function for EFI_SIMPLE_POINTER_PROTOCOL.WaitForInput event.
Event | Event to be signaled when there's input from mouse. |
Context | Points to USB_MOUSE_DEV instance. |
Definition at line 943 of file UsbMouse.c.
|
extern |
Definition at line 14 of file ComponentName.c.
|
extern |
Definition at line 23 of file ComponentName.c.
|
extern |
Definition at line 11 of file UsbMouse.c.