From a559fcbd1bf25fcf53ccc0a8fae466abdee7a8c3 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Thu, 16 Feb 2017 19:14:46 +0100 Subject: Add ksceUsbdGetDescriptor --- include/kernel/usbd.h | 23 +++++++++++++++++------ nids/360/SceUsbd.yml | 1 + 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/include/kernel/usbd.h b/include/kernel/usbd.h index fad90be..8e19375 100644 --- a/include/kernel/usbd.h +++ b/include/kernel/usbd.h @@ -21,11 +21,22 @@ extern "C" { #define SCE_USBD_ERROR_PIPE 0x80240009 #define SCE_USBD_ERROR_TIMEOUT 0x80240007 -typedef struct SceUsbdDeviceInfo { - unsigned int unk0; - unsigned int unk1; - unsigned int unk2; -} SceUsbdDeviceInfo; /* size = 0xC */ +typedef struct SceUsbdDeviceDescriptor { + unsigned char bLength; + unsigned char bDescriptorType; + unsigned short bcdUSB; + unsigned char bDeviceClass; + unsigned char bDeviceSubClass; + unsigned char bDeviceProtocol; + unsigned char bMaxPacketSize0; + unsigned short idVendor; + unsigned short idProduct; + unsigned short bcdDevice; + unsigned char iManufacturer; + unsigned char iProduct; + unsigned char iSerialNumber; + unsigned char bNumConfigurations; +} SceUsbdDeviceDescriptor; /* size = 20 */ typedef struct SceUsbdDeviceAddress { unsigned int unk0; @@ -43,7 +54,7 @@ typedef struct SceUsbdDriver { int sceUsbdRegisterDriver(const SceUsbdDriver *driver); int sceUsbdRegisterCompositeLdd(const SceUsbdDriver *driver); int sceUsbdUnregisterDriver(const SceUsbdDriver *driver); - +void *sceUsbdGetDescriptor(int device_id, int index, unsigned char bDescriptorType); #ifdef __cplusplus } diff --git a/nids/360/SceUsbd.yml b/nids/360/SceUsbd.yml index ec1d856..50f6a4a 100644 --- a/nids/360/SceUsbd.yml +++ b/nids/360/SceUsbd.yml @@ -5,6 +5,7 @@ modules: SceUsbdForDriver: nid: 0xA0EBCA41 functions: + sceUsbdGetDescriptor: 0xBC3EF82B sceUsbdRegisterCompositeLdd: 0x6E53D7F4 sceUsbdRegisterDriver: 0x1EC94F18 sceUsbdSuspendPhase2: 0xD7AA730D -- cgit v1.2.3