diff --git a/libctru/include/3ds/services/ptm.h b/libctru/include/3ds/services/ptm.h index 825d503..586b456 100644 --- a/libctru/include/3ds/services/ptm.h +++ b/libctru/include/3ds/services/ptm.h @@ -3,6 +3,8 @@ Result ptmInit(); Result ptmExit(); +Result PTMU_GetShellState(Handle* servhandle, u8 *out); Result PTMU_GetBatteryLevel(Handle* servhandle, u8 *out); Result PTMU_GetBatteryChargeState(Handle* servhandle, u8 *out); +Result PTMU_GetPedometerState(Handle* servhandle, u8 *out); Result PTMU_GetTotalStepCount(Handle* servhandle, u32 *steps); diff --git a/libctru/source/services/ptm.c b/libctru/source/services/ptm.c index ddd298c..e9abfb6 100644 --- a/libctru/source/services/ptm.c +++ b/libctru/source/services/ptm.c @@ -13,6 +13,21 @@ Result ptmExit() return svcCloseHandle(ptmHandle); } +Result PTMU_GetShellState(Handle* servhandle, u8 *out) +{ + if(!servhandle)servhandle=&ptmHandle; + Result ret=0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x00060000; + + if((ret = svcSendSyncRequest(*servhandle))!=0)return ret; + + *out = (u8)cmdbuf[2]; + + return (Result)cmdbuf[1]; +} + Result PTMU_GetBatteryLevel(Handle* servhandle, u8 *out) { if(!servhandle)servhandle=&ptmHandle; @@ -43,6 +58,21 @@ Result PTMU_GetBatteryChargeState(Handle* servhandle, u8 *out) return (Result)cmdbuf[1]; } +Result PTMU_GetPedometerState(Handle* servhandle, u8 *out) +{ + if(!servhandle)servhandle=&ptmHandle; + Result ret=0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x00090000; + + if((ret = svcSendSyncRequest(*servhandle))!=0)return ret; + + *out = (u8)cmdbuf[2]; + + return (Result)cmdbuf[1]; +} + Result PTMU_GetTotalStepCount(Handle* servhandle, u32 *steps) { if(!servhandle)servhandle=&ptmHandle;