]> Chaos Git - corbenik/ctrulib.git/commitdiff
HID : moved hidInit and hidExit into ctrulib
authorsmea <smealum@gmail.com>
Mon, 3 Feb 2014 17:21:17 +0000 (18:21 +0100)
committersmea <smealum@gmail.com>
Mon, 3 Feb 2014 17:21:17 +0000 (18:21 +0100)
arm11u/source/main.c
libctru/include/ctr/HID.h
libctru/source/HID.c
sdmc/source/main.c

index 74fe52064d6ffd138c9e6fc130bb22e24724d5bd..355651dbc5977f9cd4ef995e02a44be44cbf5c51 100644 (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);
index b22ac97b6d5657d10cca70d177edec1ab46382c7..7487651023ca4a390e7fd82983ae299313df0910 100644 (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
index fa8fd0e6844aa4146ee2c58971ab1bdc3b6b98a9..58eaf5fdc5936e3e5caae74dc225312d29954706 100644 (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];
 }
index 4d8d95fcfa4ae6f2d41abd029fd3b405bade2373..c845177f454731c9bd344950444956f6825a9047 100644 (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();