usbd: Implement usb backend system (#3737)

* initial impl

* reviews

* upstreamed deReaperJosh changes

* fixed config.cpp

---------

Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
This commit is contained in:
ElBread3
2025-10-31 09:11:14 +00:00
committed by GitHub
parent ed9ffbfb64
commit eda6be746f
7 changed files with 597 additions and 62 deletions

View File

@@ -4,6 +4,7 @@
#pragma once
#include "common/types.h"
#include "usb_backend.h"
extern "C" {
struct libusb_device;
@@ -21,6 +22,8 @@ class SymbolsResolver;
namespace Libraries::Usbd {
extern std::shared_ptr<UsbBackend> usb_backend;
using SceUsbdDevice = libusb_device;
using SceUsbdDeviceHandle = libusb_device_handle;
using SceUsbdDeviceDescriptor = libusb_device_descriptor;
@@ -29,6 +32,11 @@ using SceUsbdTransfer = libusb_transfer;
using SceUsbdControlSetup = libusb_control_setup;
using SceUsbdTransferCallback = void PS4_SYSV_ABI (*)(SceUsbdTransfer* transfer);
// TODO: implement emulated devices
using SkylandersPortalBackend = UsbRealBackend;
using InfinityBaseBackend = UsbRealBackend;
using DimensionsToypadBackend = UsbRealBackend;
enum class SceUsbdSpeed : u32 {
UNKNOWN = 0,
LOW = 1,