SceUsbSerial: Difference between revisions
Jump to navigation
Jump to search
CelesteBlue (talk | contribs) |
CelesteBlue (talk | contribs) |
||
Line 176: | Line 176: | ||
*/ | */ | ||
int sceUsbSerialStart(void); | int sceUsbSerialStart(void); | ||
</source> | |||
<source lang="c"> | |||
SceUdcdForDriver_8AE87657(a1, a2, a3, (*(uint32_t *)(/*data_81003000*/)) << 0x17); | |||
SceUdcdForDriver_1494293B("USB_MTP_Driver", 0, 0); | |||
SceUdcdForDriver_1494293B("USBDeviceControllerDriver", 0, 0); | |||
SceUdcdForDriver_9FD733EA("USBDeviceControllerDriver", 0, 0); | |||
SceUdcdForDriver_9FD733EA("USBSerDriver", 0, 0); | |||
SceUdcdForDriver_4FDEA423(0x69B); | |||
SceUdcdForDriver_1494293B("USBSerDriver", 0, 0); | |||
SceUdcdForDriver_1494293B("USBDeviceControllerDriver", 0, 0); | |||
</source> | </source> | ||
Line 242: | Line 253: | ||
*/ | */ | ||
int sceUsbSerialClose(void); | int sceUsbSerialClose(void); | ||
</source> | |||
<source lang="c"> | |||
SceUdcdForDriver_8AE87657(a1, a2, a3, (*(uint32_t *)(/*data_81003000*/)) << 0x1F); | |||
SceUdcdForDriver_1494293B("USBSerDriver", 0, 0); | |||
SceUdcdForDriver_1494293B("USBDeviceControllerDriver", 0, 0); | |||
SceUdcdForDriver_9FD733EA("USBDeviceControllerDriver", 0, 0); | |||
SceUdcdForDriver_9FD733EA("USB_MTP_Driver", 0, 0); | |||
SceUdcdForDriver_4FDEA423(0x4E4); | |||
</source> | </source> | ||
Revision as of 14:40, 12 August 2018
Module
Known NIDs
Version | Name | World | Privilege | NID |
---|---|---|---|---|
1.69 | SceUsbSerial | Non-secure | Kernel | 0xF8D9930F |
3.60 | SceUsbSerial | Non-secure | Kernel | 0xB3C543D4 |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69 | SceUsbSerialForDriver | Non-secure | Kernel | 0x8829C2F3 |
3.60 | SceUsbSerialForDriver | Non-secure | Kernel | removed |
1.69 | SceUsbSerial | Non-secure | User | 0x2820117D |
3.60 | SceUsbSerial | Non-secure | User | 0x2820117D |
SceUsbSerialForDriver
This library does not exist anymore as of FW 3.60.
sceUsbSerialStartForDriver
Version | NID |
---|---|
1.69 | 0xFEE7F4BA |
/** * Activate USB serial device * * @return 0 on success, < 0 on error * * @note The user is responsible for making sure no other UDC driver is active. This activates UDC as a "PS Vita" Type D device. */ int sceUsbSerialStartForDriver(void);
sceUsbSerialSetupForDriver
Version | NID |
---|---|
1.69 | 0x590B8F97 |
/** * Setup USB serial device * * @return 0 on success, < 0 on error * * @param unk Unknown */ int sceUsbSerialSetupForDriver(int unk);
sceUsbSerialStatusForDriver
Version | NID |
---|---|
1.69 | 0x8C426906 |
/** * Get USB device status * * @return Returns 1 when serial port is open */ int sceUsbSerialStatusForDriver(void);
sceUsbSerialCloseForDriver
Version | NID |
---|---|
1.69 | 0xE6B1E64F |
/** * Close USB serial device */ int sceUsbSerialCloseForDriver(void);
sceUsbSerialGetRecvBufferSizeForDriver
Version | NID |
---|---|
1.69 | 0xF531B5AE |
/** * Get receive buffer length * * @return Returns length of USB rx buffer */ unsigned int sceUsbSerialGetRecvBufferSizeForDriver(void);
sceUsbSerialSendForDriver
Version | NID |
---|---|
1.69 | 0x0C2E73C0 |
/** * Send data * * @param[in] *buffer data to send over usb * @param[in] len int len of serial buffer data * @param unk1 Unknown * @param unk2 Unknown * @note max send length is 0x10000 */ unsigned int sceUsbSerialSendForDriver(const void *buffer, unsigned int len, int unk1, int unk2);
sceUsbSerialRecvForDriver
Version | NID |
---|---|
1.69 | 0x6B5E296F |
/** * Receive Data * * @param[out] *buffer buffer for incoming data * @param[in] max_len max data length to receive * @param unk1 Unknown * @param unk2 Unknown * @note max recv length is 0x10000 */ unsigned int sceUsbSerialRecvForDriver(void *buffer, unsigned int max_len, int unk1, int unk2);
SceUsbSerial
sceUsbSerialStart
Version | NID |
---|---|
1.69 | 0xE3BEC18C |
3.60 | 0xE3BEC18C |
User wrapper for sceUsbSerialStartForDriver
.
Checks sceSblACMgrIsAllowedUsbSerialForDriver.
/** * Activate USB serial device * * @return 0 on success, < 0 on error * * @note The user is responsible for making sure no other UDC driver is active. This activates UDC as a "PS Vita" Type D device. * * @note Wrapper for kernel function sceUsbSerialStartForDriver() */ int sceUsbSerialStart(void);
SceUdcdForDriver_8AE87657(a1, a2, a3, (*(uint32_t *)(/*data_81003000*/)) << 0x17); SceUdcdForDriver_1494293B("USB_MTP_Driver", 0, 0); SceUdcdForDriver_1494293B("USBDeviceControllerDriver", 0, 0); SceUdcdForDriver_9FD733EA("USBDeviceControllerDriver", 0, 0); SceUdcdForDriver_9FD733EA("USBSerDriver", 0, 0); SceUdcdForDriver_4FDEA423(0x69B); SceUdcdForDriver_1494293B("USBSerDriver", 0, 0); SceUdcdForDriver_1494293B("USBDeviceControllerDriver", 0, 0);
sceUsbSerialSetup
Version | NID |
---|---|
1.69 | 0x290E08B4 |
3.60 | 0x290E08B4 |
User wrapper for sceUsbSerialSetupForDriver
. Must have correct permissions to call.
/** * Setup USB serial device * * @return 0 on success, < 0 on error * * @param unk Unknown * * @note Wrapper for kernel function sceUsbSerialSetupForDriver() */ int sceUsbSerialSetup(int unk);
sceUsbSerialStatus
Version | NID |
---|---|
1.69 | 0xA6A2F5DE |
3.60 | 0xA6A2F5DE |
User wrapper for sceUsbSerialStatusForDriver
. Must have correct permissions to call.
/** * Close USB serial device * * @return Returns 1 when serial port is open * * @note Wrapper for kernel function sceUsbSerialStatusForDriver() */ int sceUsbSerialStatus(void);
sceUsbSerialClose
Version | NID |
---|---|
1.69 | 0xF2415853 |
3.60 | 0xF2415853 |
User wrapper for sceUsbSerialCloseForDriver
. Must have correct permissions to call.
/** * Close USB serial device * * @note Wrapper for kernel function sceUsbSerialCloseForDriver() */ int sceUsbSerialClose(void);
SceUdcdForDriver_8AE87657(a1, a2, a3, (*(uint32_t *)(/*data_81003000*/)) << 0x1F); SceUdcdForDriver_1494293B("USBSerDriver", 0, 0); SceUdcdForDriver_1494293B("USBDeviceControllerDriver", 0, 0); SceUdcdForDriver_9FD733EA("USBDeviceControllerDriver", 0, 0); SceUdcdForDriver_9FD733EA("USB_MTP_Driver", 0, 0); SceUdcdForDriver_4FDEA423(0x4E4);
sceUsbSerialGetRecvBufferSize
Version | NID |
---|---|
1.69 | 0xE8567A87 |
3.60 | 0xE8567A87 |
User wrapper for sceUsbSerialGetRecvBufferSizeForDriver
. Must have correct permissions to call.
/** * Get receive buffer length * * @return Returns length of USB rx buffer * * @note Wrapper for kernel function sceUsbSerialGetLenForDriver() */ unsigned int sceUsbSerialGetRecvBufferSize(void);
sceUsbSerialSend
Version | NID |
---|---|
1.69 | 0x89E71202 |
3.60 | 0x89E71202 |
User wrapper for sceUsbSerialSendForDriver
. Must have correct permissions to call. Max length is 0x10000
.
/** * Send data * @param[in] *buffer data to send over usb * @param len int len of serial buffer data * @param unk1 Unknown * @param unk2 Unknown * @note max send length is 0x10000 * @note Wrapper for kernel function sceUsbSerialSendForDriver() */ unsigned int sceUsbSerialSend(const void *buffer, unsigned int len, int unk1, int unk2);
sceUsbSerialRecv
Version | NID |
---|---|
1.69 | 0xF26DC8D8 |
3.60 | 0xF26DC8D8 |
User wrapper for sceUsbSerialRecvForDriver
. Must have correct permissions to call. Max length is 0x10000
.
/** * Receive Data * * @param[out] *buffer buffer for incoming data * @param max_len max data length to receive * @param unk1 Unknown * @param unk2 Unknown * @note max recv length is 0x10000 * @note Wrapper for kernel function sceUsbSerialRecvForDriver() */ unsigned int sceUsbSerialRecv(void *buffer, unsigned int max_len, int unk1, int unk2);
Sample Kernel Usage
int usb_serial_connect(void) { int ret; ret = sceUsbSerialStatusForDriver(); printf("sceUsbSerialStatusForDriver: 0x%08X\n", ret); if (ret != 0x80244401) { printf("already connected\n"); return 0; } ret = sceUsbSerialStartForDriver(); printf("sceUsbSerialStartForDriver: 0x%08X\n", ret); ret = sceUsbSerialSetupForDriver(1); printf("sceUsbSerialSetupForDriver: 0x%08X\n", ret); if (ret == 0x80244403) { ret = SceUsbSerialForDriver_0x6AA4EFA4(); printf("SceUsbSerialForDriver_0x6AA4EFA4: 0x%08X\n", ret); ret = sceUsbSerialSetupForDriver(1); printf("sceUsbSerialSetupForDriver: 0x%08X\n", ret); } while (sceUsbSerialStatusForDriver() != 1); // wait for ready return 0; } int usb_serial_close(void) { int ret; ret = SceUsbSerialForDriver_0x6AA4EFA4(); printf("SceUsbSerialForDriver_0x6AA4EFA4: 0x%08X\n", ret); ret = sceUsbSerialCloseForDriver(); printf("sceUsbSerialCloseForDriver: 0x%08X\n", ret); return 0; } int usb_serial_send(const void *data, unsigned int len) { int ret; ret = sceUsbSerialSendForDriver(data, len, 0, -1); printf("sceUsbSerialSendForDriver: 0x%08X\n"); return ret; } int usb_serial_recv(void *data, unsigned int len) { int ret; while (sceUsbSerialGetRecvBufferSizeForDriver() < len) { if (sceUsbSerialStatusForDriver() != 1) return 0; } ret = sceUsbSerialRecvForDriver(data, len, 0, -1); printf("sceUsbSerialRecvForDriver: 0x%08X\n"); return ret; }