MCPcopy Create free account
hub / github.com/devkitPro/libctru / DSP_ReadPipeIfPossible

Function DSP_ReadPipeIfPossible

libctru/source/services/dsp.c:238–265  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

236}
237
238Result DSP_ReadPipeIfPossible(u32 channel, u32 peer, void* buffer, u16 length, u16* length_read)
239{
240 Result ret = 0;
241 u32* cmdbuf = getThreadCommandBuffer();
242 cmdbuf[0] = IPC_MakeHeader(0x10,3,0);
243 cmdbuf[1] = channel;
244 cmdbuf[2] = peer;
245 cmdbuf[3] = length;
246
247 u32 * staticbufs = getThreadStaticBuffers();
248
249 u32 saved1 = staticbufs[0];
250 u32 saved2 = staticbufs[1];
251
252 staticbufs[0] = IPC_Desc_StaticBuffer(length,0);
253 staticbufs[1] = (u32)buffer;
254
255 ret = svcSendSyncRequest(dspHandle);
256
257 staticbufs[0] = saved1;
258 staticbufs[1] = saved2;
259
260 if (R_FAILED(ret)) return ret;
261
262 if (length_read)
263 *length_read = cmdbuf[2] & 0xFFFF;
264 return cmdbuf[1];
265}
266
267Result DSP_WriteProcessPipe(u32 channel, const void* buffer, u32 length)
268{

Callers 1

ndspInitializeFunction · 0.85

Calls 4

getThreadCommandBufferFunction · 0.85
IPC_MakeHeaderFunction · 0.85
getThreadStaticBuffersFunction · 0.85
IPC_Desc_StaticBufferFunction · 0.85

Tested by

no test coverage detected