Jump to main content

##

# 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;
        }
    }