PSPSDK 2025-09-30
Loading...
Searching...
No Matches
pspkermit.h
Go to the documentation of this file.
1#ifndef __KERMIT_H__
2#define __KERMIT_H__
3
4#include <pspsdk.h>
5
6#define KERMIT_MAX_ARGC (14)
7
8/* kermit KERMIT_MODE_PERIPHERAL commands */
9#define KERMIT_CMD_RTC_GET_CURRENT_TICK (0x0)
10#define KERMIT_CMD_ID_STORAGE_LOOKUP (0x1)
11#define KERMIT_CMD_POWER_FREQUENCY (0x2)
12#define KERMIT_CMD_AUDIO_ROUTING (0x3)
13#define KERMIT_CMD_GET_CAMERA_DIRECTION (0x5)
14#define KERMIT_CMD_GET_IDPSC_ENABLE (0x6)
15#define KERMIT_CMD_DISABLE_MULTITASKING (0x7)
16#define KERMIT_CMD_ERROR_EXIT (0x8)
17#define KERMIT_CMD_ERROR_EXIT_2 (0x422)
18#define KERMIT_CMD_ENABLE_MULTITASKING (0x9)
19#define KERMIT_CMD_RESUME_DEVICE (0xA)
20#define KERMIT_CMD_REQUEST_SUSPEND (0xB)
21#define KERMIT_CMD_IS_FIRST_BOOT (0xC)
22#define KERMIT_CMD_GET_PREFIX_SSID (0xD)
23#define KERMIT_CMD_SET_PS_BUTTON_STATE (0x10)
24
25/* kermit KERMIT_MODE_MSFS commands */
26#define KERMIT_CMD_INIT_MS (0x0)
27#define KERMIT_CMD_EXIT_MS (0x1)
28#define KERMIT_CMD_OPEN_MS (0x2)
29#define KERMIT_CMD_CLOSE_MS (0x3)
30#define KERMIT_CMD_READ_MS (0x4)
31#define KERMIT_CMD_WRITE_MS (0x5)
32#define KERMIT_CMD_SEEK_MS (0x6)
33#define KERMIT_CMD_IOCTL_MS (0x7)
34#define KERMIT_CMD_REMOVE_MS (0x8)
35#define KERMIT_CMD_MKDIR_MS (0x9)
36#define KERMIT_CMD_RMDIR_MS (0xA)
37#define KERMIT_CMD_DOPEN_MS (0xB)
38#define KERMIT_CMD_DCLOSE_MS (0xC)
39#define KERMIT_CMD_DREAD_MS (0xD)
40#define KERMIT_CMD_GETSTAT_MS (0xE)
41#define KERMIT_CMD_CHSTAT_MS (0xF)
42#define KERMIT_CMD_RENAME_MS (0x10)
43#define KERMIT_CMD_CHDIR_MS (0x11)
44#define KERMIT_CMD_DEVCTL (0x14)
45
46/* kermit KERMIT_MODE_AUDIO commands */
47#define KERMIT_CMD_INIT_AUDIO_IN 0x0
48#define KERMIT_CMD_OUTPUT_1 0x1
49#define KERMIT_CMD_OUTPUT_2 0x2
50#define KERMIT_CMD_SUSPEND_AUDIO 0x3
51#define KERMIT_CMD_RESUME 0x4
52
53/* kermit KERMIT_MODE_ME commands */
54#define KERMIT_CMD_UNK0 0x0
55#define KERMIT_CMD_SETAVC_TIMESTAMPINTERNAL 0x1
56#define KERMIT_CMD_BOOT_START 0x2
57
58/* kermit KERMIT_MODE_LOWIO commands */
59#define KERMIT_CMD_UNK9 0x9
60#define KERMIT_CMD_UNKA 0xA
61#define KERMIT_CMD_UNKB 0xB
62#define KERMIT_CMD_UNKC 0xC
63
64/* kermit KERMIT_MODE_WLAN commands */
65#define KERMIT_CMD_INIT 0x0
66#define KERMIT_CMD_GET_SWITCH_INTERNAL_STATE 0x2
67#define KERMIT_CMD_GET_ETHER_ADDR 0x3
68#define KERMIT_CMD_ADHOC_CTL_INIT 0x6
69#define KERMIT_CMD_ADHOC_CTL_TERM 0x7
70#define KERMIT_CMD_ADHOC_SCAN 0x8
71#define KERMIT_CMD_ADHOC_JOIN 0x9
72#define KERMIT_CMD_ADHOC_CREATE 0xA
73#define KERMIT_CMD_ADHOC_LEAVE 0xB
74#define KERMIT_CMD_ADHOC_TX_DATA 0xC
75#define KERMIT_CMD_ADHOC_RX_DATA 0xD
76#define KERMIT_CMD_INET_INIT 0xE
77#define KERMIT_CMD_INET_START 0xF
78#define KERMIT_CMD_INET_TERM 0x10
79#define KERMIT_CMD_INET_SOCKET 0x11
80#define KERMIT_CMD_INET_CLOSE 0x12
81#define KERMIT_CMD_INET_BIND 0x13
82#define KERMIT_CMD_INET_LISTEN 0x14
83#define KERMIT_CMD_INET_CONNECT 0x15
84#define KERMIT_CMD_INET_SHUTDOWN 0x16
85#define KERMIT_CMD_INET_POLL 0x17
86#define KERMIT_CMD_INET_ACCEPT 0x18
87#define KERMIT_CMD_INET_GET_PEER_NAME 0x19
88#define KERMIT_CMD_INET_GET_SOCK_NAME 0x1A
89#define KERMIT_CMD_INET_GET_OPT 0x1B
90#define KERMIT_CMD_INET_SET_OPT 0x1C
91#define KERMIT_CMD_INET_RECV_FROM 0x1D
92#define KERMIT_CMD_INET_SENDTO_INTERNAL 0x1E
93#define KERMIT_CMD_INET_SOIOCTL 0x1F
94#define KERMIT_CMD_SUSPEND_WLAN 0x20
95#define KERMIT_CMD_SET_WOL_PARAM 0x22
96#define KERMIT_CMD_GET_WOL_INFO 0x23
97#define KERMIT_CMD_SET_HOST_DISCOVER 0x24
98
99/* kermit KERMIT_MODE_UTILITY commands */
100#define KERMIT_CMD_OSK_START (0x0)
101#define KERMIT_CMD_OSK_SHUTDOWN (0x1)
102#define KERMIT_CMD_OSK_UPDATE (0x3)
103
104/* kermit KERMIT_MODE_USB commands */
105#define KERMIT_CMD_INIT 0x0
106#define KERMIT_CMD_ACTIVATE 0x15
107#define KERMIT_CMD_DEACTIVATE 0x16
108#define KERMIT_CMD_SET_OP 0x19
109#define KERMIT_CMD_SET_OP_BIS 0x1A
110#define KERMIT_CMD_UNK1B 0x1B
111
112
113/* KERMIT_PACKET address macros */
114#define KERNEL(x) ((x & 0x80000000)? 1:0)
115#define KERMIT_PACKET(x) (x | (2-KERNEL(x))*0x20000000)
116#define ALIGN_64(x) ((x) & -64)
117#define KERMIT_CALLBACK_DISABLE 0
118
137
154
159
160typedef struct {
161 uint32_t cmd; //0x0
163 uint64_t *response; //0x8
164 uint32_t padding; //0xC
165 uint64_t args[14]; // 0x10
166} SceKermitRequest; //0x80
167
168// 0xBFC00800
169typedef struct {
170 uint32_t cmd; //0x00
172} SceKermitCommand; //0x8
173
174// 0xBFC00840
175typedef struct {
176 uint64_t result; //0x0
178 int32_t unk_C; //0xC
179 uint64_t *response; //0x10
180 uint64_t unk_1C; //0x1C
181} SceKermitResponse; //0x24 or 0x30????
182
183// 0xBFC008C0
184typedef struct {
185 int32_t unk_0; //0x0
186 int32_t unk_4; //0x4
187} SceKermitInterrupt; //0x8
188
189typedef struct KermitPacket_
190{
191 u32 cmd; //0x0
193 struct KermitPacket_ *self; //0x8
194 u32 unk_C; //0xC
196
197
198/*
199 Issue a command to kermit.
200
201 packet: a kermit packet. Header followed by 64 bit words (LE) as arguements.
202 cmd_mode: a valid command mode type.
203 cmd: a valid command subtype of cmd_mode.
204 argc: the number of 64 bit arguements following the header. Max 13 arguements.
205 allow_callback: set non-zero to use callback permitting semaphore wait.
206 resp: 64 bit word returned by the kermit call.
207
208 returns 0 on success, else < 0 on error.
209*/
210int sceKermit_driver_4F75AA05(KermitPacket *packet, u32 cmd_mode, u32 cmd, u32 argc, u32 allow_callback, u64 *resp);
211
212/*
213 Apply IO to kermit packet.
214
215 packet: a kermit packet. Header followed by 64 bit words (LE) as arguements.
216 argc: the number of arguements in the packet. Max 13 arguements.
217 buffer: the input buffer containing the data to be sent or the output buffer to store data.
218 buffer_size: the size of the input data, else the size of the output buffer.
219 io_mode: KERMIT_INPUT_MODE for data input. KERMIT_OUTPUT_MODE for expecting output data.
220*/
221void sceKermitMemorySetArgument(KermitPacket *packet, u32 argc, u8 *buffer, u32 buffer_size, u32 io_mode);
222
223/*
224 Send data to vita host.
225
226 data: pointer to the data to be sent to host.
227 len: the size of the data to be sent.
228*/
230
231/*
232 Recieve data from vita host.
233
234 data: pointer to buffer to store output data.
235 len: the size of the expected output data.
236*/
238
239
240/*
241 Register handler for a kermit virtual interrupt.
242
243 interrupt: ID of the virtual interrupt.
244 handler: function pointer.
245
246 returns 0 on success, else < 0 on error.
247*/
248int sceKermitRegisterVirtualIntrHandler(u32 interrupt, void* handler);
249
250/*
251 Send a request to kermit.
252
253 request: pointer to SceKermitRequest data structure.
254 mode: ID of the request mode (see enum KermitModes).
255 cmd: request command ID.
256 argc: unknown, pass 0.
257 callback: callback mode, pass KERMIT_CALLBACK_DISABLE (0).
258 response: pointer to return value.
259
260 returns 0 on success, else < 0 on error.
261*/
262int sceKermitSendRequest(SceKermitRequest* request, u32 mode, u32 cmd, int argc, u32 callback, u64* response);
263
264#endif /* __KERMIT_H__ */
void sceKermitMemory_driver_80E1240A(u8 *data, u32 len)
int sceKermitRegisterVirtualIntrHandler(u32 interrupt, void *handler)
int sceKermit_driver_4F75AA05(KermitPacket *packet, u32 cmd_mode, u32 cmd, u32 argc, u32 allow_callback, u64 *resp)
KermitArgumentModes
Definition pspkermit.h:155
@ KERMIT_INPUT_MODE
Definition pspkermit.h:156
@ KERMIT_OUTPUT_MODE
Definition pspkermit.h:157
struct KermitPacket_ KermitPacket
int sceKermitSendRequest(SceKermitRequest *request, u32 mode, u32 cmd, int argc, u32 callback, u64 *response)
void sceKermitMemorySetArgument(KermitPacket *packet, u32 argc, u8 *buffer, u32 buffer_size, u32 io_mode)
KermitVirtualInterrupts
Definition pspkermit.h:138
@ KERMIT_VIRTUAL_INTR_WLAN_CH2
Definition pspkermit.h:147
@ KERMIT_VIRTUAL_INTR_AUDIO_CH1
Definition pspkermit.h:140
@ KERMIT_VIRTUAL_INTR_NONE
Definition pspkermit.h:139
@ KERMIT_VIRTUAL_INTR_IMPOSE_CH1
Definition pspkermit.h:148
@ KERMIT_VIRTUAL_INTR_UNKNOWN_CH1
Definition pspkermit.h:150
@ KERMIT_VIRTUAL_INTR_USBGPS_CH1
Definition pspkermit.h:151
@ KERMIT_VIRTUAL_INTR_USBPSPCM_CH1
Definition pspkermit.h:152
@ KERMIT_VIRTUAL_INTR_ME_DMA_CH3
Definition pspkermit.h:145
@ KERMIT_VIRTUAL_INTR_ME_DMA_CH2
Definition pspkermit.h:144
@ KERMIT_VIRTUAL_INTR_WLAN_CH1
Definition pspkermit.h:146
@ KERMIT_VIRTUAL_INTR_AUDIO_CH3
Definition pspkermit.h:142
@ KERMIT_VIRTUAL_INTR_AUDIO_CH2
Definition pspkermit.h:141
@ KERMIT_VIRTUAL_INTR_ME_DMA_CH1
Definition pspkermit.h:143
@ KERMIT_VIRTUAL_INTR_POWER_CH1
Definition pspkermit.h:149
KermitModes
Definition pspkermit.h:119
@ KERMIT_MODE_ME
Definition pspkermit.h:126
@ KERMIT_MODE_EXTRA_1
Definition pspkermit.h:134
@ KERMIT_MODE_WLAN
Definition pspkermit.h:130
@ KERMIT_MODE_LOWIO
Definition pspkermit.h:127
@ KERMIT_MODE_AUDIOOUT
Definition pspkermit.h:125
@ KERMIT_MODE_FLASHFS
Definition pspkermit.h:124
@ KERMIT_MODE_EXTRA_2
Definition pspkermit.h:135
@ KERMIT_MODE_PERIPHERAL
Definition pspkermit.h:129
@ KERMIT_MODE_MSFS
Definition pspkermit.h:123
@ KERMIT_MODE_USB
Definition pspkermit.h:132
@ KERMIT_MODE_UNK_2
Definition pspkermit.h:122
@ KERMIT_MODE_NONE
Definition pspkermit.h:120
@ KERMIT_MODE_UNK_1
Definition pspkermit.h:121
@ KERMIT_MODE_AUDIOIN
Definition pspkermit.h:131
@ KERMIT_MODE_POCS_USBPSPCM
Definition pspkermit.h:128
@ KERMIT_MODE_UTILITY
Definition pspkermit.h:133
void sceKermitMemory_driver_90B662D0(u8 *data, u32 data_size)
int SceUID
UIDs are used to describe many different kernel objects.
Definition pspkerneltypes.h:24
uint64_t u64
Definition psptypes.h:42
uint8_t u8
Definition psptypes.h:38
uint32_t u32
Definition psptypes.h:41
Definition pspkermit.h:190
SceUID sema
Definition pspkermit.h:192
u32 cmd
Definition pspkermit.h:191
struct KermitPacket_ * self
Definition pspkermit.h:193
u32 unk_C
Definition pspkermit.h:194
Definition pspkermit.h:169
SceKermitRequest * request
Definition pspkermit.h:171
uint32_t cmd
Definition pspkermit.h:170
Definition pspkermit.h:184
int32_t unk_4
Definition pspkermit.h:186
int32_t unk_0
Definition pspkermit.h:185
Definition pspkermit.h:160
uint32_t padding
Definition pspkermit.h:164
uint32_t cmd
Definition pspkermit.h:161
SceUID sema_id
Definition pspkermit.h:162
uint64_t * response
Definition pspkermit.h:163
Definition pspkermit.h:175
uint64_t result
Definition pspkermit.h:176
uint64_t unk_1C
Definition pspkermit.h:180
uint64_t * response
Definition pspkermit.h:179
int32_t unk_C
Definition pspkermit.h:178
SceUID sema_id
Definition pspkermit.h:177