diff --git a/Source/MemTesterNX/source/main.c b/Source/MemTesterNX/source/main.c index 035adcc8..0f8ef610 100644 --- a/Source/MemTesterNX/source/main.c +++ b/Source/MemTesterNX/source/main.c @@ -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); diff --git a/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.cpp b/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.cpp index c1296ec6..277f1dea 100644 --- a/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.cpp @@ -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()); diff --git a/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.h b/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.h index 81a69c65..eaa710d9 100644 --- a/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.h +++ b/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.h @@ -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;