Difference between revisions of "SceUsbSerial"
Jump to navigation
Jump to search
Devnoname120 (talk | contribs) (Swapped Module <-> Library, see revision 1.1 under "Revision History" of "Vita SDK specifications" (https://wiki.henkaku.xyz/vita/File:Vita_SDK_specifications.pdf)) |
CelesteBlue (talk | contribs) |
||
Line 3: | Line 3: | ||
=== Known NIDs === | === Known NIDs === | ||
{| class="wikitable" | {| class="wikitable" | ||
− | |||
! Version !! Name !! World !! Privilege !! NID | ! Version !! Name !! World !! Privilege !! NID | ||
|- | |- | ||
| 1.69 || SceUsbSerial || Non-secure || Kernel || 0xF8D9930F | | 1.69 || SceUsbSerial || Non-secure || Kernel || 0xF8D9930F | ||
+ | |- | ||
+ | | 3.60 || SceUsbSerial || Non-secure || Kernel || 0xB3C543D4 | ||
|} | |} | ||
Line 12: | Line 13: | ||
=== Known NIDs === | === Known NIDs === | ||
− | |||
{| class="wikitable" | {| class="wikitable" | ||
− | |||
! Version !! Name !! World !! Visibility !! NID | ! Version !! Name !! World !! Visibility !! NID | ||
|- | |- | ||
| 1.69 || [[SceUsbSerial#SceUsbSerialForDriver|SceUsbSerialForDriver]] || Non-secure || Kernel || 0x8829C2F3 | | 1.69 || [[SceUsbSerial#SceUsbSerialForDriver|SceUsbSerialForDriver]] || Non-secure || Kernel || 0x8829C2F3 | ||
+ | |- | ||
+ | | 3.60 || [[SceUsbSerial#SceUsbSerialForDriver|SceUsbSerialForDriver]] || Non-secure || Kernel || removed | ||
|- | |- | ||
| 1.69 || [[SceUsbSerial#SceUsbSerial|SceUsbSerial]] || Non-secure || User || 0x2820117D | | 1.69 || [[SceUsbSerial#SceUsbSerial|SceUsbSerial]] || Non-secure || User || 0x2820117D | ||
+ | |- | ||
+ | | 3.60 || [[SceUsbSerial#SceUsbSerial|SceUsbSerial]] || Non-secure || User || 0x2820117D | ||
|} | |} | ||
== SceUsbSerialForDriver == | == SceUsbSerialForDriver == | ||
− | === | + | This library does not exist anymore as of FW 3.60. |
+ | |||
+ | === sceUsbSerialStartForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0xFEE7F4BA | |
− | |||
− | |||
− | | 1.69 | ||
− | | 0xFEE7F4BA | ||
|} | |} | ||
− | |||
− | <source lang="c">int | + | <source lang="c"> |
+ | /** | ||
+ | * 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); | ||
+ | </source> | ||
− | === | + | === sceUsbSerialSetupForDriver === |
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0x590B8F97 | |
− | |||
− | |||
− | | 1.69 | ||
− | | 0x590B8F97 | ||
|} | |} | ||
− | <source lang="c">int | + | <source lang="c"> |
+ | /** | ||
+ | * Setup USB serial device | ||
+ | * | ||
+ | * @return 0 on success, < 0 on error | ||
+ | * | ||
+ | * @param unk Unknown | ||
+ | */ | ||
+ | int sceUsbSerialSetupForDriver(int unk); | ||
+ | </source> | ||
− | === | + | === sceUsbSerialStatusForDriver === |
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0x8C426906 | |
− | |||
− | |||
− | | 1.69 | ||
− | | 0x8C426906 | ||
|} | |} | ||
− | |||
− | <source lang="c">int | + | <source lang="c"> |
+ | /** | ||
+ | * Get USB device status | ||
+ | * | ||
+ | * @return Returns 1 when serial port is open | ||
+ | */ | ||
+ | int sceUsbSerialStatusForDriver(void);</source> | ||
− | === | + | === sceUsbSerialCloseForDriver === |
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0xE6B1E64F | |
− | |||
− | |||
− | | 1.69 | ||
− | | 0xE6B1E64F | ||
|} | |} | ||
− | <source lang="c">int | + | <source lang="c"> |
+ | /** | ||
+ | * Close USB serial device | ||
+ | */ | ||
+ | int sceUsbSerialCloseForDriver(void); | ||
+ | </source> | ||
− | === | + | === sceUsbSerialGetRecvBufferSizeForDriver === |
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0xF531B5AE | |
− | |||
− | |||
− | | 1.69 | ||
− | | 0xF531B5AE | ||
|} | |} | ||
− | <source lang="c">unsigned int | + | <source lang="c"> |
+ | /** | ||
+ | * Get receive buffer length | ||
+ | * | ||
+ | * @return Returns length of USB rx buffer | ||
+ | */ | ||
+ | unsigned int sceUsbSerialGetRecvBufferSizeForDriver(void); | ||
+ | </source> | ||
− | === | + | === sceUsbSerialSendForDriver === |
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0x0C2E73C0 | |
− | |||
− | |||
− | | 1.69 | ||
− | | 0x0C2E73C0 | ||
|} | |} | ||
− | <source lang="c">unsigned int | + | <source lang="c"> |
+ | /** | ||
+ | * 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); | ||
+ | </source> | ||
− | === | + | === sceUsbSerialRecvForDriver === |
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0x6B5E296F | |
− | |||
− | |||
− | | 1.69 | ||
− | | 0x6B5E296F | ||
|} | |} | ||
− | <source lang="c">unsigned int | + | <source lang="c"> |
+ | /** | ||
+ | * 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); | ||
+ | </source> | ||
== SceUsbSerial == | == SceUsbSerial == | ||
− | === | + | === sceUsbSerialStart === |
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0xE3BEC18C | |
− | |||
|- | |- | ||
− | | | + | | 3.60 || 0xE3BEC18C |
− | | 0xE3BEC18C | ||
|} | |} | ||
− | |||
− | = | + | User wrapper for <code>sceUsbSerialStartForDriver</code>. Must have correct permissions to call. |
+ | |||
+ | <source lang="c"> | ||
+ | /** | ||
+ | * 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); | ||
+ | </source> | ||
+ | |||
+ | === sceUsbSerialSetup === | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0x290E08B4 | |
− | |||
|- | |- | ||
− | | | + | | 3.60 || 0x290E08B4 |
− | | 0x290E08B4 | ||
|} | |} | ||
− | |||
− | === | + | User wrapper for <code>sceUsbSerialSetupForDriver</code>. Must have correct permissions to call. |
+ | |||
+ | <source lang="c"> | ||
+ | /** | ||
+ | * Setup USB serial device | ||
+ | * | ||
+ | * @return 0 on success, < 0 on error | ||
+ | * | ||
+ | * @param unk Unknown | ||
+ | * | ||
+ | * @note Wrapper for kernel function sceUsbSerialSetupForDriver() | ||
+ | */ | ||
+ | int sceUsbSerialSetup(int unk); | ||
+ | </source> | ||
+ | |||
+ | === sceUsbSerialStatus === | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0xA6A2F5DE | |
− | |||
|- | |- | ||
− | | | + | | 3.60 || 0xA6A2F5DE |
− | | 0xA6A2F5DE | ||
|} | |} | ||
− | |||
− | = | + | User wrapper for <code>sceUsbSerialStatusForDriver</code>. Must have correct permissions to call. |
+ | |||
+ | <source lang="c"> | ||
+ | /** | ||
+ | * Close USB serial device | ||
+ | * | ||
+ | * @return Returns 1 when serial port is open | ||
+ | * | ||
+ | * @note Wrapper for kernel function sceUsbSerialStatusForDriver() | ||
+ | */ | ||
+ | int sceUsbSerialStatus(void); | ||
+ | </source> | ||
+ | |||
+ | === sceUsbSerialClose === | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0xF2415853 | |
− | |||
|- | |- | ||
− | | | + | | 3.60 || 0xF2415853 |
− | | 0xF2415853 | ||
|} | |} | ||
− | |||
− | === | + | User wrapper for <code>sceUsbSerialCloseForDriver</code>. Must have correct permissions to call. |
+ | |||
+ | <source lang="c"> | ||
+ | /** | ||
+ | * Close USB serial device | ||
+ | * | ||
+ | * @note Wrapper for kernel function sceUsbSerialCloseForDriver() | ||
+ | */ | ||
+ | int sceUsbSerialClose(void); | ||
+ | </source> | ||
+ | |||
+ | === sceUsbSerialGetRecvBufferSize === | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0xE8567A87 | |
− | |||
|- | |- | ||
− | | | + | | 3.60 || 0xE8567A87 |
− | | 0xE8567A87 | ||
|} | |} | ||
− | |||
− | === | + | User wrapper for <code>sceUsbSerialGetRecvBufferSizeForDriver</code>. Must have correct permissions to call. |
+ | |||
+ | <source lang="c"> | ||
+ | /** | ||
+ | * Get receive buffer length | ||
+ | * | ||
+ | * @return Returns length of USB rx buffer | ||
+ | * | ||
+ | * @note Wrapper for kernel function sceUsbSerialGetLenForDriver() | ||
+ | */ | ||
+ | unsigned int sceUsbSerialGetRecvBufferSize(void); | ||
+ | </source> | ||
+ | |||
+ | === sceUsbSerialSend === | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0x89E71202 | |
− | |||
|- | |- | ||
− | | | + | | 3.60 || 0x89E71202 |
− | | 0x89E71202 | ||
|} | |} | ||
− | |||
− | === | + | User wrapper for <code>sceUsbSerialSendForDriver</code>. Must have correct permissions to call. Max length is <code>0x10000</code>. |
+ | |||
+ | <source lang="c"> | ||
+ | /** | ||
+ | * 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); | ||
+ | </source> | ||
+ | |||
+ | === sceUsbSerialRecv === | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | ! Version !! NID | ||
|- | |- | ||
− | + | | 1.69 || 0xF26DC8D8 | |
− | |||
|- | |- | ||
− | | | + | | 3.60 || 0xF26DC8D8 |
− | | 0xF26DC8D8 | ||
|} | |} | ||
− | |||
− | + | User wrapper for <code>sceUsbSerialRecvForDriver</code>. Must have correct permissions to call. Max length is <code>0x10000</code>. | |
<source lang="c"> | <source lang="c"> | ||
− | int usb_serial_connect(void) | + | /** |
− | { | + | * 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); | ||
+ | </source> | ||
+ | |||
+ | == Sample Kernel Usage == | ||
+ | |||
+ | <source lang="c"> | ||
+ | int usb_serial_connect(void) { | ||
int ret; | int ret; | ||
− | ret = | + | ret = sceUsbSerialStatusForDriver(); |
− | printf(" | + | printf("sceUsbSerialStatusForDriver: 0x%08X\n", ret); |
− | if (ret != 0x80244401) | + | if (ret != 0x80244401) { |
− | |||
printf("already connected\n"); | printf("already connected\n"); | ||
return 0; | return 0; | ||
} | } | ||
− | ret = | + | ret = sceUsbSerialStartForDriver(); |
− | printf(" | + | printf("sceUsbSerialStartForDriver: 0x%08X\n", ret); |
− | ret = | + | ret = sceUsbSerialSetupForDriver(1); |
− | printf(" | + | printf("sceUsbSerialSetupForDriver: 0x%08X\n", ret); |
− | if (ret == 0x80244403) | + | if (ret == 0x80244403) { |
− | |||
ret = SceUsbSerialForDriver_0x6AA4EFA4(); | ret = SceUsbSerialForDriver_0x6AA4EFA4(); | ||
printf("SceUsbSerialForDriver_0x6AA4EFA4: 0x%08X\n", ret); | printf("SceUsbSerialForDriver_0x6AA4EFA4: 0x%08X\n", ret); | ||
− | ret = | + | ret = sceUsbSerialSetupForDriver(1); |
− | printf(" | + | printf("sceUsbSerialSetupForDriver: 0x%08X\n", ret); |
} | } | ||
− | while ( | + | while (sceUsbSerialStatusForDriver() != 1); // wait for ready |
return 0; | return 0; | ||
} | } | ||
− | int usb_serial_close(void) | + | int usb_serial_close(void) { |
− | { | ||
int ret; | int ret; | ||
ret = SceUsbSerialForDriver_0x6AA4EFA4(); | ret = SceUsbSerialForDriver_0x6AA4EFA4(); | ||
printf("SceUsbSerialForDriver_0x6AA4EFA4: 0x%08X\n", ret); | printf("SceUsbSerialForDriver_0x6AA4EFA4: 0x%08X\n", ret); | ||
− | ret = | + | ret = sceUsbSerialCloseForDriver(); |
− | printf(" | + | printf("sceUsbSerialCloseForDriver: 0x%08X\n", ret); |
return 0; | return 0; | ||
} | } | ||
− | int usb_serial_send(const void *data, unsigned int len) | + | int usb_serial_send(const void *data, unsigned int len) { |
− | { | ||
int ret; | int ret; | ||
− | ret = | + | ret = sceUsbSerialSendForDriver(data, len, 0, -1); |
− | printf(" | + | printf("sceUsbSerialSendForDriver: 0x%08X\n"); |
return ret; | return ret; | ||
} | } | ||
− | int usb_serial_recv(void *data, unsigned int len) | + | int usb_serial_recv(void *data, unsigned int len) { |
− | { | ||
int ret; | int ret; | ||
− | while ( | + | while (sceUsbSerialGetRecvBufferSizeForDriver() < len) { |
− | + | if (sceUsbSerialStatusForDriver() != 1) | |
− | if ( | ||
− | |||
return 0; | return 0; | ||
− | |||
} | } | ||
− | ret = | + | ret = sceUsbSerialRecvForDriver(data, len, 0, -1); |
− | printf(" | + | printf("sceUsbSerialRecvForDriver: 0x%08X\n"); |
return ret; | return ret; | ||
} | } | ||
− | |||
</source> | </source> | ||
[[Category:Modules]] | [[Category:Modules]] | ||
[[Category:Kernel]] | [[Category:Kernel]] |
Revision as of 13:16, 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
. Must have correct permissions to call.
/**
* 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);
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);
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;
}