Use IPC helpers for ir

This commit is contained in:
Lectem 2015-09-09 15:38:38 -04:00
parent 8975e848d7
commit 8f00d34099

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/ir.h> #include <3ds/services/ir.h>
#include <3ds/ipc.h>
static Handle iru_handle=0; static Handle iru_handle=0;
static Handle iru_sharedmem_handle=0; static Handle iru_sharedmem_handle=0;
@ -15,7 +16,7 @@ Result irucmd_Initialize(void)
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00010000; cmdbuf[0] = IPC_MakeHeader(0x1,0,0); // 0x10000
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
ret = (Result)cmdbuf[1]; ret = (Result)cmdbuf[1];
@ -28,7 +29,7 @@ Result irucmd_Shutdown(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(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
ret = (Result)cmdbuf[1]; ret = (Result)cmdbuf[1];
@ -41,9 +42,9 @@ Result irucmd_StartSendTransfer(u8 *buf, u32 size)
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00030042; cmdbuf[0] = IPC_MakeHeader(0x3,1,2); // 0x30042
cmdbuf[1] = size; cmdbuf[1] = size;
cmdbuf[2] = (size<<4) | 10; cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
cmdbuf[3] = (u32)buf; cmdbuf[3] = (u32)buf;
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
@ -57,7 +58,7 @@ Result irucmd_WaitSendTransfer(void)
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00040000; cmdbuf[0] = IPC_MakeHeader(0x4,0,0); // 0x40000
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
ret = (Result)cmdbuf[1]; ret = (Result)cmdbuf[1];
@ -70,11 +71,11 @@ Result irucmd_StartRecvTransfer(u32 size, u8 flag)
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x000500C2; cmdbuf[0] = IPC_MakeHeader(0x5,3,2); // 0x500C2
cmdbuf[1] = iru_sharedmem_size; cmdbuf[1] = iru_sharedmem_size;
cmdbuf[2] = size; cmdbuf[2] = size;
cmdbuf[3] = (u8)flag; cmdbuf[3] = (u8)flag;
cmdbuf[4] = 0; cmdbuf[4] = IPC_Desc_SharedHandles(1);
cmdbuf[5] = iru_sharedmem_handle; cmdbuf[5] = iru_sharedmem_handle;
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
@ -88,7 +89,7 @@ Result irucmd_WaitRecvTransfer(u32 *transfercount)
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(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
ret = (Result)cmdbuf[1]; ret = (Result)cmdbuf[1];
@ -103,7 +104,7 @@ Result IRU_SetBitRate(u8 value)
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x00090040; cmdbuf[0] = IPC_MakeHeader(0x9,1,0); // 0x90040
cmdbuf[1] = (u32)value; cmdbuf[1] = (u32)value;
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
@ -117,7 +118,7 @@ Result IRU_GetBitRate(u8 *out)
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x000A0000; cmdbuf[0] = IPC_MakeHeader(0xA,0,0); // 0xA0000
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
ret = (Result)cmdbuf[1]; ret = (Result)cmdbuf[1];
@ -132,7 +133,7 @@ Result IRU_SetIRLEDState(u32 value)
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x000B0040; cmdbuf[0] = IPC_MakeHeader(0xB,1,0); // 0xB0040
cmdbuf[1] = value; cmdbuf[1] = value;
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
@ -146,7 +147,7 @@ Result IRU_GetIRLEDRecvState(u32 *out)
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x000C0000; cmdbuf[0] = IPC_MakeHeader(0xC,0,0); // 0xC0000
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret; if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
ret = (Result)cmdbuf[1]; ret = (Result)cmdbuf[1];