]> Chaos Git - corbenik/ctrulib.git/commitdiff
PTM & AC stuff
authorsmea <smealum@gmail.com>
Mon, 25 Aug 2014 16:14:48 +0000 (09:14 -0700)
committersmea <smealum@gmail.com>
Mon, 25 Aug 2014 16:14:48 +0000 (09:14 -0700)
libctru/include/3ds/AC.h
libctru/include/3ds/PTM.h [new file with mode: 0644]
libctru/source/services/ac.c
libctru/source/services/ptm.c [new file with mode: 0644]

index dd3e78aba89884e76ffe26a81a2c76c916eca719..0205d76409213432b16234a64a9e5f52438bed4b 100644 (file)
@@ -1,7 +1,10 @@
 #ifndef AC_H
 #define AC_H
 
-Result ACU_GetWifiStatus(Handle servhandle, u32 *out);
+Result acInit();
+Result acExit();
+
+Result ACU_GetWifiStatus(Handle* servhandle, u32 *out);
 Result ACU_WaitInternetConnection();
 
 #endif
diff --git a/libctru/include/3ds/PTM.h b/libctru/include/3ds/PTM.h
new file mode 100644 (file)
index 0000000..aa761f4
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef PTM_H
+#define PTM_H
+
+Result ptmInit();
+Result ptmExit();
+
+Result PTMU_GetBatteryLevel(Handle* servhandle, u8 *out);
+Result PTMU_GetBatteryChargeState(Handle* servhandle, u8 *out);
+
+#endif
index c7bf8ecbbb58df2db1770a53d1859ae641d1f83e..1b382d8f967d14b61e360307c31a1b79cc5434cd 100644 (file)
@@ -4,9 +4,22 @@
 #include <3ds/svc.h>
 #include <3ds/srv.h>
 
+static Handle acHandle;
+
+Result acInit()
+{
+       return srvGetServiceHandle(&acHandle, "ac:u");  
+}
+
+Result acExit()
+{
+       return svcCloseHandle(acHandle);
+}
+
 // ptr=0x200-byte outbuf
-Result ACU_CreateDefaultConfig(Handle servhandle, u32 *ptr)
+Result ACU_CreateDefaultConfig(Handle* servhandle, u32 *ptr)
 {
+       if(!servhandle)servhandle=&acHandle;
        u32 tmp0, tmp1;
        Result ret=0;
        u32 *cmdbuf = getThreadCommandBuffer();
@@ -18,7 +31,7 @@ Result ACU_CreateDefaultConfig(Handle servhandle, u32 *ptr)
        cmdbuf[0x100>>2] = 0x00800002;
        cmdbuf[0x104>>2] = (u32)ptr;
 
-       if((ret = svcSendSyncRequest(servhandle))!=0)return ret;
+       if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
 
        cmdbuf[0x100>>2] = tmp0;
        cmdbuf[0x104>>2] = tmp1;
@@ -27,8 +40,9 @@ Result ACU_CreateDefaultConfig(Handle servhandle, u32 *ptr)
 }
 
 // Unknown what this cmd does at the time of writing. (ptr=0x200-byte inbuf/outbuf)
-Result ACU_cmd26(Handle servhandle, u32 *ptr, u8 val)
+Result ACU_cmd26(Handle* servhandle, u32 *ptr, u8 val)
 {
+       if(!servhandle)servhandle=&acHandle;
        u32 tmp0, tmp1;
        Result ret=0;
        u32 *cmdbuf = getThreadCommandBuffer();
@@ -43,7 +57,7 @@ Result ACU_cmd26(Handle servhandle, u32 *ptr, u8 val)
        cmdbuf[2] = 0x00800002;
        cmdbuf[3] = (u32)ptr;
 
-       if((ret = svcSendSyncRequest(servhandle))!=0)return ret;
+       if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
 
        cmdbuf[0x100>>2] = tmp0;
        cmdbuf[0x104>>2] = tmp1;
@@ -51,14 +65,15 @@ Result ACU_cmd26(Handle servhandle, u32 *ptr, u8 val)
        return (Result)cmdbuf[1];
 }
 
-Result ACU_GetWifiStatus(Handle servhandle, u32 *out)
+Result ACU_GetWifiStatus(Handle* servhandle, u32 *out)
 {
+       if(!servhandle)servhandle=&acHandle;
        Result ret=0;
        u32 *cmdbuf = getThreadCommandBuffer();
 
        cmdbuf[0] = 0x000D0000;
 
-       if((ret = svcSendSyncRequest(servhandle))!=0)return ret;
+       if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
 
        *out = cmdbuf[2];
 
@@ -75,7 +90,7 @@ Result ACU_WaitInternetConnection()
 
        while(1)
        {
-               ret = ACU_GetWifiStatus(servhandle, &outval);
+               ret = ACU_GetWifiStatus(&servhandle, &outval);
                if(ret==0 && outval==1)break;
        }
 
diff --git a/libctru/source/services/ptm.c b/libctru/source/services/ptm.c
new file mode 100644 (file)
index 0000000..54f5596
--- /dev/null
@@ -0,0 +1,45 @@
+#include <stdlib.h>
+#include <3ds/types.h>
+#include <3ds/svc.h>
+#include <3ds/srv.h>
+#include <3ds/PTM.h>
+
+static Handle ptmHandle;
+
+Result ptmInit()
+{
+       return srvGetServiceHandle(&ptmHandle, "ptm:u");        
+}
+
+Result ptmExit()
+{
+       return svcCloseHandle(ptmHandle);
+}
+
+Result PTMU_GetBatteryLevel(Handle* servhandle, u8 *out)
+{
+       Result ret=0;
+       u32 *cmdbuf = getThreadCommandBuffer();
+
+       cmdbuf[0] = 0x00070000;
+
+       if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
+
+       *out = (u8)cmdbuf[2];
+
+       return (Result)cmdbuf[1];
+}
+
+Result PTMU_GetBatteryChargeState(Handle* servhandle, u8 *out)
+{
+       Result ret=0;
+       u32 *cmdbuf = getThreadCommandBuffer();
+
+       cmdbuf[0] = 0x00080000;
+
+       if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
+
+       *out = (u8)cmdbuf[2];
+
+       return (Result)cmdbuf[1];
+}