void EVENT_USB_Device_UnhandledControlRequest(void) { /* Process UFI specific control requests */ switch (USB_ControlRequest.bRequest) { case REQ_GetOSFeatureDescriptor: if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_VENDOR | REQREC_DEVICE)) { void* DescriptorPointer; uint16_t DescriptorSize; if (!(USB_GetOSFeatureDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex, &DescriptorPointer, &DescriptorSize))) { return; } Endpoint_ClearSETUP(); Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize); Endpoint_ClearOUT(); } break; } }
void EVENT_USB_Device_UnhandledControlRequest(void) { switch (USB_ControlRequest.bRequest) { case REQ_GetOSFeatureDescriptor: if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_VENDOR | REQREC_DEVICE)) { void* DescriptorPointer; uint16_t DescriptorSize = USB_GetOSFeatureDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex, &DescriptorPointer); if (DescriptorSize == NO_DESCRIPTOR) return; Endpoint_ClearSETUP(); Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize); Endpoint_ClearOUT(); } break; } }