psm: Add more battery functions

This commit is contained in:
Vicki Pfau 2020-09-26 22:37:59 -07:00 committed by fincs
parent f01fb21da5
commit 4afec4016d
2 changed files with 28 additions and 0 deletions

View File

@ -40,6 +40,9 @@ Service* psmGetServiceSession(void);
Result psmGetBatteryChargePercentage(u32 *out);
Result psmGetChargerType(ChargerType *out);
Result psmGetBatteryVoltageState(PsmBatteryVoltageState *out);
Result psmGetRawBatteryChargePercentage(double *out);
Result psmIsEnoughPowerSupplied(bool *out);
Result psmGetBatteryAgePercentage(double *out);
/**
* @brief Wrapper func which opens a PsmSession and handles event setup.

View File

@ -50,10 +50,23 @@ static Result _psmCmdInBoolNoOut(Service* srv, bool inval, u32 cmd_id) {
return _psmCmdInU8NoOut(srv, inval!=0, cmd_id);
}
static Result _psmCmdNoInOutBool(Service* srv, bool *out, u32 cmd_id) {
u8 outval = 0;
Result rc = serviceDispatchOut(srv, cmd_id, outval);
if (R_SUCCEEDED(rc)) {
if (out) *out = outval & 1;
}
return rc;
}
static Result _psmCmdNoInOutU32(Service* srv, u32 *out, u32 cmd_id) {
return serviceDispatchOut(srv, cmd_id, *out);
}
static Result _psmCmdNoInOutDouble(Service* srv, double *out, u32 cmd_id) {
return serviceDispatchOut(srv, cmd_id, *out);
}
Result psmGetBatteryChargePercentage(u32 *out) {
return _psmCmdNoInOutU32(&g_psmSrv, out, 0);
}
@ -69,6 +82,18 @@ Result psmGetBatteryVoltageState(PsmBatteryVoltageState *out) {
return rc;
}
Result psmGetRawBatteryChargePercentage(double *out) {
return _psmCmdNoInOutDouble(&g_psmSrv, out, 13);
}
Result psmIsEnoughPowerSupplied(bool *out) {
return _psmCmdNoInOutBool(&g_psmSrv, out, 14);
}
Result psmGetBatteryAgePercentage(double *out) {
return _psmCmdNoInOutDouble(&g_psmSrv, out, 15);
}
static Result _psmOpenSession(Service* srv_out) {
return serviceDispatch(&g_psmSrv, 7,
.out_num_objects = 1,