| 64 | } |
| 65 | |
| 66 | Result SwitchUSBInterface::ControlTransfer(u8 bmRequestType, u8 bmRequest, u16 wValue, u16 wIndex, u16 wLength, void *buffer) |
| 67 | { |
| 68 | void *temp_buffer = memalign(0x1000, wLength); |
| 69 | if (temp_buffer == nullptr) |
| 70 | return -1; |
| 71 | |
| 72 | u32 transferredSize; |
| 73 | |
| 74 | memcpy(temp_buffer, buffer, wLength); |
| 75 | |
| 76 | Result rc = usbHsIfCtrlXfer(&m_session, bmRequestType, bmRequest, wValue, wIndex, wLength, temp_buffer, &transferredSize); |
| 77 | |
| 78 | if (R_SUCCEEDED(rc)) |
| 79 | { |
| 80 | memcpy(buffer, temp_buffer, transferredSize); |
| 81 | } |
| 82 | free(temp_buffer); |
| 83 | return rc; |
| 84 | } |
| 85 | |
| 86 | Result SwitchUSBInterface::ControlTransfer(u8 bmRequestType, u8 bmRequest, u16 wValue, u16 wIndex, u16 wLength, const void *buffer) |
| 87 | { |