Add lbl screen backlight control toggle for overlay (in misc submenu) and memtester (press minus button)

This commit is contained in:
KazushiM
2022-05-08 19:54:23 +08:00
parent 9509455291
commit fd77dfa6eb
3 changed files with 76 additions and 11 deletions

View File

@@ -124,7 +124,7 @@ int testJobId[4] = {0};
int testWorkerReport[4] = {0};
size_t bufsize[4], wantbytes[4];
void volatile *aligned[4];
Thread threads[4];
Thread threads[5];
struct test* test_select = tests;
void testWorker(int div)
@@ -158,7 +158,8 @@ void testWorker(int div)
while (testJobId[div] != currentJobId)
svcSleepThread(10000000ULL);
if (!test_select[currentJobId].fp(aligned[div], ((size_t)aligned[div] + bufsize[div]/2), bufsize[div]/sizeof(ul)/2))
int test_rc = test_select[currentJobId].fp(aligned[div], ((size_t)aligned[div] + bufsize[div]/2), bufsize[div]/sizeof(ul)/2);
if (!test_rc)
{
testWorkerReport[div] = 1;
currentJobId++;
@@ -184,6 +185,35 @@ void* workers[] = {
testWorker3,
};
void LblUpdate()
{
smInitialize();
lblInitialize();
LblBacklightSwitchStatus lblstatus = LblBacklightSwitchStatus_Disabled;
lblGetBacklightSwitchStatus(&lblstatus);
if (lblstatus) {
lblSwitchBacklightOff(0);
} else {
lblSwitchBacklightOn(0);
}
lblExit();
smExit();
}
void keyListener()
{
while (true)
{
padUpdate(&pad);
u64 kDown = padGetButtonsDown(&pad);
if (kDown & HidNpadButton_Minus)
{
LblUpdate();
}
svcSleepThread(10000000ULL);
}
}
// Main program entrypoint
int main(int argc, char* argv[])
{
@@ -314,6 +344,18 @@ int main(int argc, char* argv[])
}
}
// keyListener
{
const int kl = testThreads;
Result rc = threadCreate(&threads[kl], keyListener, NULL, NULL, 0x1000, 0x20, -2);
if (R_FAILED(rc))
{
printf("Fatal: threadCreate[%d] failed: 0x%X\n", div, rc);
consoleUpdate(NULL);
}
threadStart(&threads[kl]);
}
printf("\nTotal RAM available: %lldMB\n\n", totalmem >> memshift);
consoleUpdate(NULL);

View File

@@ -26,13 +26,6 @@ MiscGui::~MiscGui()
delete this->i2cInfo;
}
void MiscGui::preDraw(tsl::gfx::Renderer* render)
{
BaseMenuGui::preDraw(render);
render->drawString(this->infoOutput, false, 40, 440, SMALL_TEXT_SIZE, DESC_COLOR);
}
tsl::elm::ToggleListItem* MiscGui::addConfigToggle(SysClkConfigValue configVal, std::string labelName) {
tsl::elm::ToggleListItem* toggle = new tsl::elm::ToggleListItem(labelName, this->configList->values[configVal]);
toggle->setStateChangedListener([this, configVal](bool state) {
@@ -88,6 +81,17 @@ void MiscGui::listUI()
}
});
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::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);
}
void MiscGui::refresh() {
@@ -103,6 +107,8 @@ void MiscGui::refresh() {
{
frameCounter = 0;
PsmUpdate();
LblUpdate();
this->backlightToggle->setState(lblstatus);
I2cGetInfo(this->i2cInfo);
PrintInfo(this->infoOutput, sizeof(this->infoOutput));
this->chargingToggle->setState(this->PsmIsCharging());

View File

@@ -18,7 +18,6 @@ class MiscGui : public BaseMenuGui
public:
MiscGui();
~MiscGui();
void preDraw(tsl::gfx::Renderer* render) override;
void listUI() override;
void refresh() override;
@@ -307,14 +306,32 @@ class MiscGui : public BaseMenuGui
return PsmIsFastCharging() == enable;
}
void LblUpdate(bool shouldSwitch = false)
{
smInitialize();
lblInitialize();
lblGetBacklightSwitchStatus(&lblstatus);
if (shouldSwitch)
{
if (lblstatus) {
lblSwitchBacklightOff(0);
} else {
lblSwitchBacklightOn(0);
}
}
lblExit();
smExit();
}
tsl::elm::ToggleListItem* addConfigToggle(SysClkConfigValue, std::string);
void updateConfigToggle(tsl::elm::ToggleListItem*, SysClkConfigValue);
tsl::elm::ToggleListItem *cpuBoostToggle, *syncModeToggle, *chargingToggle, *fastChargingToggle;
tsl::elm::ToggleListItem *cpuBoostToggle, *syncModeToggle, *chargingToggle, *fastChargingToggle, *backlightToggle;
SysClkConfigValueList* configList;
ChargeInfo* chargeInfo;
I2cInfo* i2cInfo;
LblBacklightSwitchStatus lblstatus = LblBacklightSwitchStatus_Disabled;
bool isEnoughPowerSupplied = false;
char infoOutput[800] = "";
int frameCounter = 60;