HID : moved hidInit and hidExit into ctrulib

This commit is contained in:
smea 2014-02-03 18:21:17 +01:00
parent 2a518a9ae3
commit a8d15ce5ae
4 changed files with 46 additions and 48 deletions

View File

@ -119,25 +119,6 @@ void renderEffect()
cnt++;
}
Handle hidHandle;
Handle hidMemHandle;
void hidInit()
{
srv_getServiceHandle(NULL, &hidHandle, "hid:USER");
HIDUSER_GetInfo(hidHandle, &hidMemHandle);
svc_mapMemoryBlock(hidMemHandle, 0x10000000, 0x1, 0x10000000);
HIDUSER_Init(hidHandle);
}
void hidExit()
{
svc_unmapMemoryBlock(hidMemHandle, 0x10000000);
svc_closeHandle(hidMemHandle);
svc_closeHandle(hidHandle);
}
int main()
{
initSrv();
@ -146,7 +127,7 @@ int main()
gspGpuInit();
hidInit();
hidInit(NULL);
aptSetupEventHandler();
@ -155,7 +136,7 @@ int main()
{
if(status==APP_RUNNING)
{
u32 PAD=((u32*)0x10000000)[7];
u32 PAD=hidSharedMem[7];
u32 regData=PAD|0x01000000;
GSPGPU_WriteHWRegs(NULL, 0x202A04, (u8*)&regData, 4);

View File

@ -1,6 +1,8 @@
#ifndef HID_H
#define HID_H
#define HID_SHAREDMEM_DEFAULT (0x10000000)
#define CPAD_X(v) ((s16)((v)&0xFFFF))
#define CPAD_Y(v) ((s16)(((v>>16))&0xFFFF))
@ -23,7 +25,13 @@ typedef enum
PAD_Y = (1<<11)
}PAD_KEY;
Result HIDUSER_GetInfo(Handle handle, Handle* outMemHandle);
Result HIDUSER_Init(Handle handle);
extern Handle hidMemHandle;
extern vu32* hidSharedMem;
void hidInit(u32* sharedMem);
void hidExit();
Result HIDUSER_GetInfo(Handle* handle, Handle* outMemHandle);
Result HIDUSER_Init(Handle* handle);
#endif

View File

@ -3,28 +3,56 @@
#include <string.h>
#include <ctr/types.h>
#include <ctr/HID.h>
#include <ctr/srv.h>
#include <ctr/svc.h>
Result HIDUSER_GetInfo(Handle handle, Handle* outMemHandle)
Handle hidHandle;
Handle hidMemHandle;
vu32* hidSharedMem;
void hidInit(u32* sharedMem)
{
if(!sharedMem)sharedMem=(u32*)HID_SHAREDMEM_DEFAULT;
srv_getServiceHandle(NULL, &hidHandle, "hid:USER");
HIDUSER_GetInfo(NULL, &hidMemHandle);
hidSharedMem=sharedMem;
svc_mapMemoryBlock(hidMemHandle, (u32)hidSharedMem, 0x1, 0x10000000);
HIDUSER_Init(NULL);
}
void hidExit()
{
svc_unmapMemoryBlock(hidMemHandle, (u32)hidSharedMem);
svc_closeHandle(hidMemHandle);
svc_closeHandle(hidHandle);
}
Result HIDUSER_GetInfo(Handle* handle, Handle* outMemHandle)
{
if(!handle)handle=&hidHandle;
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0xa0000; //request header code
Result ret=0;
if((ret=svc_sendSyncRequest(handle)))return ret;
if((ret=svc_sendSyncRequest(*handle)))return ret;
if(outMemHandle)*outMemHandle=cmdbuf[3];
return cmdbuf[1];
}
Result HIDUSER_Init(Handle handle)
Result HIDUSER_Init(Handle* handle)
{
if(!handle)handle=&hidHandle;
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x110000; //request header code
Result ret=0;
if((ret=svc_sendSyncRequest(handle)))return ret;
if((ret=svc_sendSyncRequest(*handle)))return ret;
return cmdbuf[1];
}

View File

@ -119,25 +119,6 @@ void renderEffect()
}
}
Handle hidHandle;
Handle hidMemHandle;
void hidInit()
{
srv_getServiceHandle(NULL, &hidHandle, "hid:USER");
HIDUSER_GetInfo(hidHandle, &hidMemHandle);
svc_mapMemoryBlock(hidMemHandle, 0x10000000, 0x1, 0x10000000);
HIDUSER_Init(hidHandle);
}
void hidExit()
{
svc_unmapMemoryBlock(hidMemHandle, 0x10000000);
svc_closeHandle(hidMemHandle);
svc_closeHandle(hidHandle);
}
int main()
{
initSrv();
@ -146,7 +127,7 @@ int main()
gspGpuInit();
hidInit();
hidInit(NULL);
Handle fsuHandle;
srv_getServiceHandle(NULL, &fsuHandle, "fs:USER");
@ -164,7 +145,7 @@ int main()
while(!aptGetStatus())
{
u32 PAD=((u32*)0x10000000)[7];
u32 PAD=hidSharedMem[7];
renderEffect();
swapBuffers();
copyBuffer();