USB_HIDv5: Implement CancelEndpoint
This commit is contained in:
parent
22310dfc3e
commit
5d82635449
|
@ -107,12 +107,24 @@ s32 USB_HIDv5::SubmitTransfer(USBV5Device& device, USB::Device& host_device,
|
||||||
|
|
||||||
IPCCommandResult USB_HIDv5::CancelEndpoint(USBV5Device& device, const IOCtlRequest& request)
|
IPCCommandResult USB_HIDv5::CancelEndpoint(USBV5Device& device, const IOCtlRequest& request)
|
||||||
{
|
{
|
||||||
// FIXME: Unlike VEN, there are 3 valid values for the endpoint,
|
const u8 value = Memory::Read_U8(request.buffer_in + 8);
|
||||||
// which determine the endpoint address that gets passed to the backend.
|
u8 endpoint = 0;
|
||||||
// Valid values: 0 (control, endpoint 0), 1 (interrupt IN) and 2 (interrupt OUT)
|
switch (value)
|
||||||
// This ioctl also cancels all queued transfers with return code -7022.
|
{
|
||||||
request.DumpUnknown(GetDeviceName(), LogTypes::IOS_USB);
|
case 0:
|
||||||
const u8 endpoint = static_cast<u8>(Memory::Read_U32(request.buffer_in + 8));
|
// TODO: cancel all queued control transfers with return code -7022.
|
||||||
|
endpoint = 0;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
// TODO: cancel all queued interrupt transfers with return code -7022.
|
||||||
|
endpoint = m_additional_device_data[&device - m_usbv5_devices.data()].interrupt_in_endpoint;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
// TODO: cancel all queued interrupt transfers with return code -7022.
|
||||||
|
endpoint = m_additional_device_data[&device - m_usbv5_devices.data()].interrupt_out_endpoint;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
GetDeviceById(device.host_id)->CancelTransfer(endpoint);
|
GetDeviceById(device.host_id)->CancelTransfer(endpoint);
|
||||||
return GetDefaultReply(IPC_SUCCESS);
|
return GetDefaultReply(IPC_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue