From 7e7425836397d2b74ee2b24a87e766743289ad89 Mon Sep 17 00:00:00 2001 From: LiquidFenrir Date: Fri, 11 Aug 2017 04:29:38 +0200 Subject: [PATCH] check if nwm is running to fix https://github.com/AuroraWright/Luma3DS/issues/774 --- sysmodules/rosalina/source/menus/sysconfig.c | 43 ++++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/sysmodules/rosalina/source/menus/sysconfig.c b/sysmodules/rosalina/source/menus/sysconfig.c index 56f8717..bd72724 100644 --- a/sysmodules/rosalina/source/menus/sysconfig.c +++ b/sysmodules/rosalina/source/menus/sysconfig.c @@ -85,21 +85,58 @@ void SysConfigMenu_ToggleWireless(void) Draw_FlushFramebuffer(); Draw_Unlock(); + bool nwmRunning = false; + + u32 pidList[0x40]; + s32 processAmount; + + svcGetProcessList(&processAmount, pidList, 0x40); + + for(s32 i = 0; i < processAmount; i++) + { + Handle processHandle; + Result res = svcOpenProcess(&processHandle, pidList[i]); + if(R_FAILED(res)) + continue; + + char processName[8] = {0}; + svcGetProcessInfo((s64 *)&processName, processHandle, 0x10000); + svcCloseHandle(processHandle); + + if(!strncmp(processName, "nwm", 4)) + { + nwmRunning = true; + break; + } + } + do { Draw_Lock(); Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); Draw_DrawString(10, 30, COLOR_WHITE, "Press A to toggle, press B to go back."); - Draw_DrawString(10, 50, COLOR_WHITE, "Current status:"); u8 wireless = (*(vu8 *)((0x10140000 | (1u << 31)) + 0x180)); - Draw_DrawString(100, 50, (wireless ? COLOR_GREEN : COLOR_RED), (wireless ? " ON " : " OFF")); + + if(nwmRunning) + { + Draw_DrawString(10, 50, COLOR_WHITE, "Current status:"); + Draw_DrawString(100, 50, (wireless ? COLOR_GREEN : COLOR_RED), (wireless ? " ON " : " OFF")); + } + else + { + Draw_DrawString(10, 50, COLOR_RED, "NWM isn't running."); + Draw_DrawString(10, 60, COLOR_RED, "If you're currently on Test Menu,"); + Draw_DrawString(10, 70, COLOR_RED, "exit then press R+RIGHT to toggle the WiFi."); + Draw_DrawString(10, 80, COLOR_RED, "Otherwise, simply exit and wait a few seconds."); + } + Draw_FlushFramebuffer(); Draw_Unlock(); u32 pressed = waitInputWithTimeout(1000); - if(pressed & BUTTON_A) + if(pressed & BUTTON_A && nwmRunning) { nwmExtInit(); NWMEXT_ControlWirelessEnabled(!wireless);