/*
LUFA Library
- Copyright (C) Dean Camera, 2010.
+ Copyright (C) Dean Camera, 2011.
dean [at] fourwalledcubicle [dot] com
- www.fourwalledcubicle.com
+ www.lufa-lib.org
*/
/*
- Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
}
-/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
- * control requests that are not handled internally by the USB library (including the HID commands, which are
- * all issued via the control endpoint), so that they can be handled appropriately for the application.
+/** Event handler for the USB_ControlRequest event. This is used to catch and process control requests sent to
+ * the device from the USB host before passing along unhandled control requests to the library for processing
+ * internally.
*/
-void EVENT_USB_Device_UnhandledControlRequest(void)
+void EVENT_USB_Device_ControlRequest(void)
{
/* Handle HID Class specific requests */
switch (USB_ControlRequest.bRequest)
{
- case REQ_GetReport:
+ case HID_REQ_GetReport:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
{
uint8_t GenericData[GENERIC_REPORT_SIZE];
}
break;
- case REQ_SetReport:
+ case HID_REQ_SetReport:
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
uint8_t GenericData[GENERIC_REPORT_SIZE];
/* Read the report data from the control endpoint */
Endpoint_Read_Control_Stream_LE(&GenericData, sizeof(GenericData));
- Endpoint_ClearOUT();
+ Endpoint_ClearIN();
ProcessGenericHIDReport(GenericData);
}
}
}
-/** Function to process the lest received report from the host.
+/** Function to process the last received report from the host.
*
- * \param[in] DataArray Pointer to a buffer where the last report data is stored
+ * \param[in] DataArray Pointer to a buffer where the last received report has been stored
*/
void ProcessGenericHIDReport(uint8_t* DataArray)
{
uint8_t GenericData[GENERIC_REPORT_SIZE];
/* Read Generic Report Data */
- Endpoint_Read_Stream_LE(&GenericData, sizeof(GenericData));
+ Endpoint_Read_Stream_LE(&GenericData, sizeof(GenericData), NULL);
/* Process Generic Report Data */
ProcessGenericHIDReport(GenericData);
CreateGenericHIDReport(GenericData);
/* Write Generic Report Data */
- Endpoint_Write_Stream_LE(&GenericData, sizeof(GenericData));
+ Endpoint_Write_Stream_LE(&GenericData, sizeof(GenericData), NULL);
/* Finalize the stream transfer to send the last packet */
Endpoint_ClearIN();