diff options
-rw-r--r-- | include/kernel/kernel/modulemgr.h | 11 | ||||
-rw-r--r-- | include/user/kernel/clib.h | 11 | ||||
-rw-r--r-- | include/user/usbserial.h | 83 | ||||
-rw-r--r-- | nids/360/SceKernelModulemgr.yml | 6 | ||||
-rw-r--r-- | nids/360/SceUsbSerial.yml | 24 |
5 files changed, 130 insertions, 5 deletions
diff --git a/include/kernel/kernel/modulemgr.h b/include/kernel/kernel/modulemgr.h index 67f5ab5..5d7a956 100644 --- a/include/kernel/kernel/modulemgr.h +++ b/include/kernel/kernel/modulemgr.h @@ -78,16 +78,19 @@ int sceKernelGetModuleInternal(SceUID modid, void **module); int sceKernelGetSystemSwVersion(SceKernelFwInfo *data); +int sceKernelLoadStartModule(const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status); SceUID sceKernelLoadModule(const char *path, int flags, SceKernelLMOption *option); int sceKernelStartModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status); +int sceKernelUnloadModule(SceUID modid, int flags, SceKernelULMOption *option); +int sceKernelStopModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status); +int sceKernelStopUnloadModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status); SceUID sceKernelLoadStartSharedModuleForPid(SceUID pid, const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status); SceUID sceKernelLoadStartModuleForPid(SceUID pid, const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status); SceUID sceKernelLoadModuleForPid(SceUID pid, const char *path, int flags, SceKernelLMOption *option); - -int sceKernelUnloadModule(SceUID modid, int flags); - -int sceKernelStopUnloadModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status); +SceUID sceKernelUnloadModuleForPid(SceUID pid, SceUID modid, int flags, SceKernelULMOption *option); +int sceKernelStopModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status); +int sceKernelStopUnloadModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status); #ifdef __cplusplus } diff --git a/include/user/kernel/clib.h b/include/user/kernel/clib.h index bb8ba0d..1188707 100644 --- a/include/user/kernel/clib.h +++ b/include/user/kernel/clib.h @@ -9,10 +9,21 @@ extern "C" { #endif int sceClibStrcmp(const char *, const char *); +void *sceClibStrncmp(const char *, const char *, SceSize); +int sceClibStrncasecmp(const char *, const char *, SceSize); +char *sceClibStrncpy(char *, const char *, SceSize); +char *sceClibStrncat(char *, const char *, SceSize); +SceSize sceClibStrnlen(const char *, SceSize); +char *sceClibStrrchr(const char *, int); +int sceClibPrintf(const char *, ...); int sceClibSnprintf(char *, SceSize, const char *, ...); int sceClibVsnprintf(char *, SceSize, const char *, va_list); +void *sceClibMemset(void *, int, SceSize); +void *sceClibMemcpy(void *, const void *, SceSize); +void *sceClibMemmove(void *, const void *, SceSize); + #ifdef __cplusplus } #endif diff --git a/include/user/usbserial.h b/include/user/usbserial.h new file mode 100644 index 0000000..00c9ba6 --- /dev/null +++ b/include/user/usbserial.h @@ -0,0 +1,83 @@ +#ifndef _PSP2_USBSERIAL_H_ +#define _PSP2_USBSERIAL_H_ + +#include <psp2/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * 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 sceUsbSerialStart() + */ +int sceUsbSerialStart(void); + +/** + * Setup USB serial device + * + * @return 0 on success, < 0 on error + * + * @param unk Unknown + * + * @note Wrapper for kernel function sceUsbSerialSetup() + */ +int sceUsbSerialSetup(int unk); + +/** + * Close USB serial device + * + * @note Wrapper for kernel function sceUsbSerialClose() + */ +int sceUsbSerialClose(void); + +/** + * Close USB serial device + * + * @return Returns 1 when serial port is open + * + * @note Wrapper for kernel function sceUsbSerialStatus() + */ +int sceUsbSerialStatus(void); + +/** + * Get receive buffer length + * + * @return Returns length of USB rx buffer + * + * @note Wrapper for kernel function sceUsbSerialGetLen() + */ +unsigned int sceUsbSerialGetRecvBufferSize(void); + +/** + * 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 sceUsbSerialSend() + */ +unsigned int sceUsbSerialSend(const void *buffer, unsigned int len, int unk1, int unk2); + +/** + * 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 sceUsbSerialRecv() + */ +unsigned int sceUsbSerialRecv(void *buffer, unsigned int max_len, int unk1, int unk2); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/nids/360/SceKernelModulemgr.yml b/nids/360/SceKernelModulemgr.yml index d889f7b..9f95892 100644 --- a/nids/360/SceKernelModulemgr.yml +++ b/nids/360/SceKernelModulemgr.yml @@ -18,7 +18,9 @@ modules: sceKernelLoadStartModuleForPid: 0x9D953C22 sceKernelLoadStartSharedModuleForPid: 0xE2ADEF8D sceKernelStartModule: 0x0675B682 - sceKernelStopUnloadModule: 0x100DAEB9 + sceKernelStopModule: 0x100DAEB9 + sceKernelStopUnloadModule: 0x03B30B7E + sceKernelStopUnloadModuleForPid: 0x49A3EDC7 sceKernelUnloadModule: 0x728E72A6 SceModulemgrForKernel: nid: 0xC445FA63 @@ -27,3 +29,5 @@ modules: sceKernelGetModuleInternal: 0xFE303863 sceKernelGetModuleList: 0x97CF7B4E sceKernelLoadModuleForPid: 0xFA21D8CB + sceKernelStopModuleForPid: 0x7BB4CE54 + sceKernelUnloadModuleForPid: 0x5972E2CC diff --git a/nids/360/SceUsbSerial.yml b/nids/360/SceUsbSerial.yml new file mode 100644 index 0000000..485a685 --- /dev/null +++ b/nids/360/SceUsbSerial.yml @@ -0,0 +1,24 @@ +modules: + SceUsbSerial: + nid: 0xF8D9930F + libraries: + SceUsbSerial: + nid: 0x2820117D + functions: + sceUsbSerialClose: 0xF2415853 + sceUsbSerialGetRecvBufferSize: 0xE8567A87 + sceUsbSerialRecv: 0xF26DC8D8 + sceUsbSerialSend: 0x89E71202 + sceUsbSerialSetup: 0x290E08B4 + sceUsbSerialStart: 0xE3BEC18C + sceUsbSerialStatus: 0xA6A2F5DE + SceUsbSerialForDriver: + nid: 0x8829C2F3 + functions: + sceUsbSerialClose: 0xE6B1E64F + sceUsbSerialGetRecvBufferSize: 0xF531B5AE + sceUsbSerialRecv: 0x6B5E296F + sceUsbSerialSend: 0x0C2E73C0 + sceUsbSerialSetup: 0x590B8F97 + sceUsbSerialStart: 0xFEE7F4BA + sceUsbSerialStatus: 0x8C426906 |