PTM & AC stuff
This commit is contained in:
parent
14312cf851
commit
8f3997e3a7
@ -1,7 +1,10 @@
|
|||||||
#ifndef AC_H
|
#ifndef AC_H
|
||||||
#define 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();
|
Result ACU_WaitInternetConnection();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
10
libctru/include/3ds/PTM.h
Normal file
10
libctru/include/3ds/PTM.h
Normal file
@ -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
|
@ -4,9 +4,22 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
|
|
||||||
// ptr=0x200-byte outbuf
|
static Handle acHandle;
|
||||||
Result ACU_CreateDefaultConfig(Handle servhandle, u32 *ptr)
|
|
||||||
|
Result acInit()
|
||||||
{
|
{
|
||||||
|
return srvGetServiceHandle(&acHandle, "ac:u");
|
||||||
|
}
|
||||||
|
|
||||||
|
Result acExit()
|
||||||
|
{
|
||||||
|
return svcCloseHandle(acHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ptr=0x200-byte outbuf
|
||||||
|
Result ACU_CreateDefaultConfig(Handle* servhandle, u32 *ptr)
|
||||||
|
{
|
||||||
|
if(!servhandle)servhandle=&acHandle;
|
||||||
u32 tmp0, tmp1;
|
u32 tmp0, tmp1;
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
@ -18,7 +31,7 @@ Result ACU_CreateDefaultConfig(Handle servhandle, u32 *ptr)
|
|||||||
cmdbuf[0x100>>2] = 0x00800002;
|
cmdbuf[0x100>>2] = 0x00800002;
|
||||||
cmdbuf[0x104>>2] = (u32)ptr;
|
cmdbuf[0x104>>2] = (u32)ptr;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = tmp0;
|
cmdbuf[0x100>>2] = tmp0;
|
||||||
cmdbuf[0x104>>2] = tmp1;
|
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)
|
// 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;
|
u32 tmp0, tmp1;
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
@ -43,7 +57,7 @@ Result ACU_cmd26(Handle servhandle, u32 *ptr, u8 val)
|
|||||||
cmdbuf[2] = 0x00800002;
|
cmdbuf[2] = 0x00800002;
|
||||||
cmdbuf[3] = (u32)ptr;
|
cmdbuf[3] = (u32)ptr;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = tmp0;
|
cmdbuf[0x100>>2] = tmp0;
|
||||||
cmdbuf[0x104>>2] = tmp1;
|
cmdbuf[0x104>>2] = tmp1;
|
||||||
@ -51,14 +65,15 @@ Result ACU_cmd26(Handle servhandle, u32 *ptr, u8 val)
|
|||||||
return (Result)cmdbuf[1];
|
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;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000D0000;
|
cmdbuf[0] = 0x000D0000;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
*out = cmdbuf[2];
|
*out = cmdbuf[2];
|
||||||
|
|
||||||
@ -75,7 +90,7 @@ Result ACU_WaitInternetConnection()
|
|||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
ret = ACU_GetWifiStatus(servhandle, &outval);
|
ret = ACU_GetWifiStatus(&servhandle, &outval);
|
||||||
if(ret==0 && outval==1)break;
|
if(ret==0 && outval==1)break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
45
libctru/source/services/ptm.c
Normal file
45
libctru/source/services/ptm.c
Normal file
@ -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];
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user