Use IPC helpers for mic

This commit is contained in:
Lectem 2015-09-09 15:46:38 -04:00
parent a65ae90b36
commit 1863bc2e35

View File

@ -4,6 +4,7 @@
#include <3ds/svc.h> #include <3ds/svc.h>
#include <3ds/srv.h> #include <3ds/srv.h>
#include <3ds/services/mic.h> #include <3ds/services/mic.h>
#include <3ds/ipc.h>
//See also: http://3dbrew.org/wiki/MIC_Services //See also: http://3dbrew.org/wiki/MIC_Services
@ -127,9 +128,9 @@ Result MIC_MapSharedMem(Handle handle, u32 size)
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00010042; cmdbuf[0] = IPC_MakeHeader(0x1,1,2); // 0x10042
cmdbuf[1] = size; cmdbuf[1] = size;
cmdbuf[2] = 0; cmdbuf[2] = IPC_Desc_SharedHandles(1);
cmdbuf[3] = handle; cmdbuf[3] = handle;
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
@ -142,7 +143,7 @@ Result MIC_UnmapSharedMem(void)
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00020000; cmdbuf[0] = IPC_MakeHeader(0x2,0,0); // 0x20000
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
@ -154,7 +155,7 @@ Result MIC_cmd3_Initialize(u8 unk0, u8 unk1, u32 sharedmem_baseoffset, u32 share
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00030140; cmdbuf[0] = IPC_MakeHeader(0x3,5,0); // 0x30140
cmdbuf[1] = unk0; cmdbuf[1] = unk0;
cmdbuf[2] = unk1; cmdbuf[2] = unk1;
cmdbuf[3] = sharedmem_baseoffset; cmdbuf[3] = sharedmem_baseoffset;
@ -171,7 +172,7 @@ Result MIC_cmd5(void)
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00050000; cmdbuf[0] = IPC_MakeHeader(0x5,0,0); // 0x50000
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
@ -183,7 +184,7 @@ Result MIC_GetCNTBit15(u8 *out)
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00060000; cmdbuf[0] = IPC_MakeHeader(0x6,0,0); // 0x60000
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
@ -203,7 +204,7 @@ Result MIC_GetEventHandle(Handle *handle)
return 0; return 0;
} }
cmdbuf[0] = 0x00070000; cmdbuf[0] = IPC_MakeHeader(0x7,0,0); // 0x70000
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
@ -217,7 +218,7 @@ Result MIC_SetControl(u8 value)
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00080040; cmdbuf[0] = IPC_MakeHeader(0x8,1,0); // 0x80040
cmdbuf[1] = value; cmdbuf[1] = value;
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
@ -230,7 +231,7 @@ Result MIC_GetControl(u8 *value)
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00090000; cmdbuf[0] = IPC_MakeHeader(0x9,0,0); // 0x90000
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
@ -244,7 +245,7 @@ Result MIC_SetRecording(u8 value)
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x000A0040; cmdbuf[0] = IPC_MakeHeader(0xA,1,0); // 0xA0040
cmdbuf[1] = value; cmdbuf[1] = value;
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
@ -259,7 +260,7 @@ Result MIC_IsRecoding(u8 *value)
Result ret=0; Result ret=0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x000B0000; cmdbuf[0] = IPC_MakeHeader(0xB,0,0); // 0xB0000
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret; if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;