3.5.2.3.3 Mouse Data Event Handling
No extra event handler is required to be registered to receive mouse data. A call to function USB_HOST_HID_MOUSE_EventHandlerSet once is adequate to receive mouse data as well.
The mouse button state along with the X, Y, and Z relative coordinate positions are provided by the USB Host HID Mouse Driver. The data type is USB_HOST_HID_MOUSE_DATA and is defined in usb_host_hid_mouse.h. The following code shows an event handler example.
Example:
/* This code shows an example of HID Mouse Event Handler */
void APP_USBHostHIDMouseEventHandler
(
USB_HOST_HID_MOUSE_HANDLE handle,
USB_HOST_HID_MOUSE_EVENT event,
void * pData
)
{
/* This function gets called in the following scenarios:
1. USB Mouse is Attached
2. USB Mouse is detached
3. USB Mouse data has been obtained.
*/
switch ( event)
{
case USB_HOST_HID_MOUSE_EVENT_ATTACH:
/* Mouse Attached */
appData.state = APP_STATE_DEVICE_ATTACHED;
break;
case USB_HOST_HID_MOUSE_EVENT_DETACH:
/* Mouse Detached */
appData.state = APP_STATE_DEVICE_DETACHED;
break;
case USB_HOST_HID_MOUSE_EVENT_REPORT_RECEIVED:
/* Mouse data event */
appData.state = APP_STATE_READ_HID;
/* Mouse Data from device */
memcpy(&appData.data, pData, sizeof(appData.data));
/* Now the Mouse data has been obtained. This is a parsed data
in a simple format defined by USB_HOST_HID_MOUSE_DATA type.
*/
break;
}
}
void APP_Tasks(void)
{
switch (appData.state)
{
case APP_STATE_BUS_ENABLE:
/* In this state the application enables the USB Host Bus. Note
* how the USB Mouse event handler is registered before the bus
* is enabled. */
USB_HOST_HID_MOUSE_EventHandlerSet(APP_USBHostHIDMouseEventHandler);
USB_HOST_BusEnable(0);
appData.state = APP_STATE_WAIT_FOR_BUS_ENABLE_COMPLETE;
break;
case APP_STATE_WAIT_FOR_BUS_ENABLE_COMPLETE:
/* Here we wait for the bus enable operation to complete. */
break;
}
}
