Description
Source
Call Graph
Start Line: 282
void HIDDMouseDriver_RequestHandler(const USBGenericRequest *request)
{
TRACE_INFO("NewReq ");
// Check if this is a standard request
if (USBGenericRequest_GetType(request) == USBGenericRequest_STANDARD) {
// This is a standard request
switch (USBGenericRequest_GetRequest(request)) {
case USBGenericRequest_GETDESCRIPTOR:
// Check if this is a HID descriptor, otherwise forward it to
// the standard driver
if (!HIDDMouseDriver_GetDescriptor(
USBGetDescriptorRequest_GetDescriptorType(request),
USBGenericRequest_GetLength(request))) {
USBDDriver_RequestHandler(&(hiddMouseDriver.usbdDriver),
request);
}
break;
default:
USBDDriver_RequestHandler(&(hiddMouseDriver.usbdDriver),
request);
}
}
// Check if this is a class request
else if (USBGenericRequest_GetType(request) == USBGenericRequest_CLASS) {
// This is a class-specific request
switch (USBGenericRequest_GetRequest(request)) {
case HIDGenericRequest_GETIDLE:
HIDDMouseDriver_GetIdle();
break;
case HIDGenericRequest_SETIDLE:
HIDDMouseDriver_SetIdle(HIDIdleRequest_GetIdleRate(request));
break;
case HIDGenericRequest_GETREPORT:
HIDDMouseDriver_GetReport(
HIDReportRequest_GetReportType(request),
USBGenericRequest_GetLength(request));
break;
case HIDGenericRequest_SETREPORT:
HIDDMouseDriver_SetReport(
HIDReportRequest_GetReportType(request),
USBGenericRequest_GetLength(request));
break;
case HIDGenericRequest_GETPROTOCOL:
USBD_Write(0, &hiddMouseDriver.inputProtocol, 1, 0, 0);
break;
case HIDGenericRequest_SETPROTOCOL:
hiddMouseDriver.inputProtocol = request->wValue;
USBD_Write(0, 0, 0, 0, 0);
break;
default:
TRACE_WARNING(
"HIDDMouseDriver_RequestHandler: Unknown request 0x%02X\n\r",
USBGenericRequest_GetRequest(request));
USBD_Stall(0);
}
}
else {
// Vendor request ?
USBD_Stall(0);
}
}