2.6.4.1 USB_DEVICE_HID_EventHandlerSet Function

C

USB_DEVICE_HID_RESULT USB_DEVICE_HID_EventHandlerSet(
    USB_DEVICE_HID_INDEX instanceIndex, 
    USB_DEVICE_HID_EVENT_HANDLER eventHandler, 
    uintptr_t context
);

Summary

This function registers a event handler for the specified HID function driver instance. This function should be called by the client when it receives a SET CONFIGURATION event from the device layer. A event handler must be registered for function driver to respond to function driver specific commands. If the event handler is not registered, the device layer will stall function driver specific commands and the USB device may not function.

Precondition

This function should be called when the function driver has been initialized as a result of a set configuration.

Parameters

Parameters Description
instanceIndex Instance of the HID Function Driver.
eventHandler A pointer to event handler function.
context Application specific context that is returned in the event handler.

Returns

USB_DEVICE_HID_RESULT_OK - The operation was successful.

USB_DEVICE_HID_RESULT_ERROR_INSTANCE_INVALID - The specified instance does not exist.

USB_DEVICE_HID_RESULT_ERROR_PARAMETER_INVALID - The eventHandler parameter is NULL.

Example

// This code snippet shows an example registering an event handler. Here
// the application specifies the context parameter as a pointer to an
// application object (appObject) that should be associated with this 
// instance of the HID function driver.

USB_DEVICE_HID_RESULT result;

USB_DEVICE_HID_EVENT_RESPONSE APP_USBDeviceHIDEventHandler 
(
    USB_DEVICE_HID_INDEX instanceIndex,
    USB_DEVICE_HID_EVENT event,
    void * pData,
    uintptr_t context 
)
{
    // Event Handling comes here

    switch(event) 
    {
        ...
    }

    return(USB_DEVICE_HID_EVENT_RESPONSE_NONE);
}

result = USB_DEVICE_HID_EventHandlerSet (0, &APP_EventHandler, (uintptr_t) &appObject);

if(USB_DEVICE_HID_RESULT_OK != result)
{
    SYS_ASSERT ( false , "Error while registering event handler" );
}

Remarks

None.