Add psm:GetChargerType

This commit is contained in:
Vicki Pfau 2018-09-15 11:38:41 -07:00 committed by fincs
parent a06bfb74a7
commit d9e3be27a2
2 changed files with 44 additions and 0 deletions

View File

@ -7,7 +7,14 @@
#pragma once
#include "../types.h"
typedef enum {
ChargerType_None = 0, ///< No charger
ChargerType_Charger = 1, ///< Official charger or dock
ChargerType_Usb = 2 ///< Other USB-C chargers
} ChargerType;
Result psmInitialize(void);
void psmExit(void);
Result psmGetBatteryChargePercentage(u32 *out);
Result psmGetChargerType(ChargerType *out);

View File

@ -65,3 +65,40 @@ Result psmGetBatteryChargePercentage(u32 *out)
return rc;
}
Result psmGetChargerType(ChargerType *out)
{
IpcCommand c;
ipcInitialize(&c);
struct {
u64 magic;
u64 cmd_id;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 1;
Result rc = serviceIpcDispatch(&g_psmSrv);
if(R_SUCCEEDED(rc)) {
IpcParsedCommand r;
ipcParse(&r);
struct {
u64 magic;
u64 result;
u32 charger;
} *resp = r.Raw;
rc = resp->result;
if (R_SUCCEEDED(rc)) {
*out = resp->charger;
}
}
return rc;
}