[sys-clk-OC] Disable unsafe frequencies by default; Remove emulator-mode; Move fast-charging handler to sysmodule

This commit is contained in:
KazushiM
2022-05-15 17:48:24 +08:00
parent fd77dfa6eb
commit 6f5de53382
14 changed files with 222 additions and 100 deletions

View File

@@ -49,46 +49,46 @@ void MiscGui::updateConfigToggle(tsl::elm::ToggleListItem *toggle, SysClkConfigV
void MiscGui::listUI()
{
sysclkIpcGetConfigValues(this->configList);
this->listElement->addItem(new tsl::elm::CategoryHeader("Config"));
this->unsafeFreqToggle = addConfigToggle(SysClkConfigValue_AllowUnsafeFrequencies, "Allow Unsafe Frequencies");
this->cpuBoostToggle = addConfigToggle(SysClkConfigValue_AutoCPUBoost, "Auto CPU Boost");
this->syncModeToggle = addConfigToggle(SysClkConfigValue_SyncReverseNXMode, "Sync ReverseNX Mode");
this->fastChargingToggle = addConfigToggle(SysClkConfigValue_DisableFastCharging, "Disable Fast Charging");
// this->chargingLimitHeader = new tsl::elm::CategoryHeader("");
// this->listElement->addItem(this->chargingLimitHeader);
// this->chargingLimitBar = new MultiStepTrackBar("", 100 - 20 + 1);
// this->chargingLimitBar->setProgress((this->configList->values[SysClkConfigValue_ChargingLimitPercentage] - 20.0F) * 100 / (100 - 20));
// this->chargingLimitBar->setValueChangedListener([this](u8 val) {
// this->configList->values[SysClkConfigValue_ChargingLimitPercentage] = val + 20;
// snprintf(chargingLimitBarDesc, 50, "Battery Charging Limit: %lu%%", this->configList->values[SysClkConfigValue_ChargingLimitPercentage]);
// this->chargingLimitHeader->setText(chargingLimitBarDesc);
// Result rc = sysclkIpcSetConfigValues(this->configList);
// if (R_FAILED(rc))
// FatalGui::openWithResultCode("sysclkIpcSetConfigValues", rc);
// this->lastContextUpdate = armGetSystemTick();
// });
// this->listElement->addItem(this->chargingLimitBar);
this->listElement->addItem(new tsl::elm::CategoryHeader("Temporary toggles"));
// Charging
this->chargingToggle = new tsl::elm::ToggleListItem("Charging", false);
chargingToggle->setStateChangedListener([this](bool state) {
if (PsmChargingToggler(state))
{
this->chargingToggle->setState(state);
this->fastChargingToggle->setState(this->PsmIsFastCharging());
}
else
{
this->chargingToggle->setState(!state);
}
PsmChargingToggler(&state);
this->chargingToggle->setState(state);
});
this->listElement->addItem(this->chargingToggle);
// FastCharging
this->fastChargingToggle = new tsl::elm::ToggleListItem("Fast Charging", false);
fastChargingToggle->setStateChangedListener([this](bool state) {
if (PsmFastChargingToggler(state))
{
this->fastChargingToggle->setState(state);
}
else
{
this->fastChargingToggle->setState(!state);
}
});
this->listElement->addItem(this->fastChargingToggle);
// Backlight
this->backlightToggle = new tsl::elm::ToggleListItem("Screen Backlight", false);
backlightToggle->setStateChangedListener([this](bool state) {
LblUpdate(true);
});
this->listElement->addItem(this->backlightToggle);
this->listElement->addItem(new tsl::elm::CategoryHeader("Battery & Charging Info"));
this->listElement->addItem(new tsl::elm::CustomDrawer([this](tsl::gfx::Renderer *renderer, s32 x, s32 y, s32 w, s32 h) {
renderer->drawString(this->infoOutput, false, x, y, SMALL_TEXT_SIZE, DESC_COLOR);
}), SMALL_TEXT_SIZE * 13);
@@ -97,21 +97,24 @@ void MiscGui::listUI()
void MiscGui::refresh() {
BaseMenuGui::refresh();
if (this->context) {
sysclkIpcGetConfigValues(this->configList);
updateConfigToggle(this->cpuBoostToggle, SysClkConfigValue_AutoCPUBoost);
updateConfigToggle(this->syncModeToggle, SysClkConfigValue_SyncReverseNXMode);
}
if (++frameCounter >= 60)
if (this->context && ++frameCounter >= 60)
{
frameCounter = 0;
sysclkIpcGetConfigValues(this->configList);
updateConfigToggle(this->unsafeFreqToggle, SysClkConfigValue_AllowUnsafeFrequencies);
updateConfigToggle(this->cpuBoostToggle, SysClkConfigValue_AutoCPUBoost);
updateConfigToggle(this->syncModeToggle, SysClkConfigValue_SyncReverseNXMode);
updateConfigToggle(this->fastChargingToggle, SysClkConfigValue_DisableFastCharging);
// this->chargingLimitBar->setProgress(this->configList->values[SysClkConfigValue_ChargingLimitPercentage] - 20);
// snprintf(chargingLimitBarDesc, 50, "Battery Charging Limit: %u%%", u8(this->configList->values[SysClkConfigValue_ChargingLimitPercentage]));
// this->chargingLimitHeader->setText(chargingLimitBarDesc);
PsmUpdate();
LblUpdate();
this->backlightToggle->setState(lblstatus);
I2cGetInfo(this->i2cInfo);
PrintInfo(this->infoOutput, sizeof(this->infoOutput));
this->chargingToggle->setState(this->PsmIsCharging());
this->fastChargingToggle->setState(this->PsmIsFastCharging());
}
}

View File

@@ -13,6 +13,23 @@
#include "base_menu_gui.h"
#include <inttypes.h>
class MultiStepTrackBar : public tsl::elm::StepTrackBar {
public:
MultiStepTrackBar(const char icon[3], size_t numSteps)
: tsl::elm::StepTrackBar(icon, numSteps) { }
virtual ~MultiStepTrackBar() {}
virtual inline u8 getProgress() override {
return this->m_value / (100.0F / (this->m_numSteps - 1));
}
virtual void setProgress(u8 value) override {
value = std::min(value, u8(this->m_numSteps - 1));
this->m_value = value * (100.0F / (this->m_numSteps - 1));
}
};
class MiscGui : public BaseMenuGui
{
public:
@@ -149,11 +166,6 @@ class MiscGui : public BaseMenuGui
return PsmIsChargerConnected() && ((this->chargeInfo->unk_x14 >> 8) & 1);
}
bool PsmIsFastCharging()
{
return this->chargeInfo->ChargeCurrentLimit > 768;
}
bool PsmIsEnoughPowerSupplied()
{
return this->isEnoughPowerSupplied;
@@ -289,21 +301,17 @@ class MiscGui : public BaseMenuGui
);
}
bool PsmChargingToggler(bool enable)
void PsmChargingToggler(bool* enable)
{
if (!PsmIsChargerConnected())
return false;
{
*enable = false;
return;
}
PsmUpdate(enable ? 2 : 3);
PsmUpdate(*enable ? 2 : 3);
return PsmIsCharging() == enable;
}
bool PsmFastChargingToggler(bool enable)
{
PsmUpdate(enable ? 10 : 11);
return PsmIsFastCharging() == enable;
*enable = (PsmIsCharging() == *enable);
}
void LblUpdate(bool shouldSwitch = false)
@@ -325,8 +333,12 @@ class MiscGui : public BaseMenuGui
tsl::elm::ToggleListItem* addConfigToggle(SysClkConfigValue, std::string);
void updateConfigToggle(tsl::elm::ToggleListItem*, SysClkConfigValue);
void updateLiftChargingLimitToggle();
tsl::elm::ToggleListItem *cpuBoostToggle, *syncModeToggle, *chargingToggle, *fastChargingToggle, *backlightToggle;
tsl::elm::ToggleListItem *unsafeFreqToggle, *cpuBoostToggle, *syncModeToggle, *chargingToggle, *fastChargingToggle, *backlightToggle;
// tsl::elm::CategoryHeader *chargingLimitHeader;
// MultiStepTrackBar *chargingLimitBar;
// char chargingLimitBarDesc[50] = "";
SysClkConfigValueList* configList;
ChargeInfo* chargeInfo;