Update for compatibility with libnx v4.2.0 (#15)

This commit is contained in:
shchmue 2021-11-04 14:31:07 -06:00 committed by GitHub
parent 26f850f334
commit c574b8987e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 160 additions and 389 deletions

View File

@ -48,33 +48,25 @@ char *SwitchIdent_GetFirmwareVersion(void) {
char *SwitchIdent_GetHardwareType(void) {
Result ret = 0;
u64 hardware_type = 4;
u64 hardware_type;
char *hardware_300[] = {
char *hardware_string[] = {
"Icosa",
"Copper",
"Hoag",
"Unknown"
};
char *hardware_400[] = {
"Icosa",
"Copper",
"Hoag",
"Mariko",
"Iowa",
"Calcio",
"Aula",
"Unknown"
};
if (R_FAILED(ret = splGetConfig(SplConfigItem_HardwareType, &hardware_type)))
printf("splGetConfig(SplConfigItem_HardwareType) failed: 0x%x.\n\n", ret);
else {
if (kernelAbove400())
return hardware_400[hardware_type];
else
return hardware_300[hardware_type];
}
return hardware_400[4];
if (hardware_type >= 6)
return hardware_string[6];
return hardware_string[hardware_type];
}
// [4.0.0+] Kiosk mode (0 = retail; 1 = kiosk)
@ -134,10 +126,10 @@ u64 SwitchIdent_GetDeviceID(void) {
char *SwitchIdent_GetSerialNumber(void) {
Result ret = 0;
static char serial[0x19];
static SetSysSerialNumber serial;
if (R_FAILED(ret = setsysGetSerialNumber(serial)))
if (R_FAILED(ret = setsysGetSerialNumber(&serial)))
printf("setsysGetSerialNumber() failed: 0x%x.\n\n", ret);
return serial;
return serial.number;
}

View File

@ -8,12 +8,52 @@ char *SwitchIdent_GetOperationMode(void) {
return "Docked";
}
bool SwitchIdent_GetFlag(SetSysFlag flag) {
bool SwitchIdent_GetWirelessLanEnableFlag() {
Result ret = 0;
bool out = false;
if (R_FAILED(ret = setsysGetFlag(flag, &out)))
printf("setsysGetFlag() failed: 0x%x.\n\n", ret);
if (R_FAILED(ret = setsysGetWirelessLanEnableFlag(&out)))
printf("setsysGetWirelessLanEnableFlag() failed: 0x%x.\n\n", ret);
return out;
}
bool SwitchIdent_GetBluetoothEnableFlag() {
Result ret = 0;
bool out = false;
if (R_FAILED(ret = setsysGetBluetoothEnableFlag(&out)))
printf("setsysGetBluetoothEnableFlag() failed: 0x%x.\n\n", ret);
return out;
}
bool SwitchIdent_GetNfcEnableFlag() {
Result ret = 0;
bool out = false;
if (R_FAILED(ret = setsysGetNfcEnableFlag(&out)))
printf("setsysGetNfcEnableFlag() failed: 0x%x.\n\n", ret);
return out;
}
bool SwitchIdent_GetAutoUpdateEnableFlag() {
Result ret = 0;
bool out = false;
if (R_FAILED(ret = setsysGetAutoUpdateEnableFlag(&out)))
printf("setsysGetAutoUpdateEnableFlag() failed: 0x%x.\n\n", ret);
return out;
}
bool SwitchIdent_GetConsoleInformationUploadFlag() {
Result ret = 0;
bool out = false;
if (R_FAILED(ret = setsysGetConsoleInformationUploadFlag(&out)))
printf("setsysGetConsoleInformationUploadFlag() failed: 0x%x.\n\n", ret);
return out;
}

View File

@ -2,7 +2,11 @@
#define _SWITCHIDENT_MISC_H_
char *SwitchIdent_GetOperationMode(void);
bool SwitchIdent_GetFlag(SetSysFlag flag);
bool SwitchIdent_GetWirelessLanEnableFlag();
bool SwitchIdent_GetBluetoothEnableFlag();
bool SwitchIdent_GetNfcEnableFlag();
bool SwitchIdent_GetAutoUpdateEnableFlag();
bool SwitchIdent_GetConsoleInformationUploadFlag();
bool SwitchIdent_IsSDCardInserted(FsDeviceOperator *fsDeviceOperator);
bool SwitchIdent_IsGameCardInserted(FsDeviceOperator *fsDeviceOperator);

View File

@ -1,150 +1,17 @@
#include <stdio.h>
#include <switch.h>
#include "setcal.h"
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 psmIsBatteryChargingEnabled(bool *out) {
IpcCommand c;
ipcInitialize(&c);
struct {
u64 magic;
u64 cmd_id;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 4;
Result rc = serviceIpcDispatch(psmGetServiceSession());
if(R_SUCCEEDED(rc)) {
IpcParsedCommand r;
ipcParse(&r);
struct {
u64 magic;
u64 result;
u8 enable;
} *resp = r.Raw;
rc = resp->result;
if (R_SUCCEEDED(rc)) {
*out = resp->enable;
}
}
return rc;
}
static Result psmGetRawBatteryChargePercentage(u64 *out) {
IpcCommand c;
ipcInitialize(&c);
struct {
u64 magic;
u64 cmd_id;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 13;
Result rc = serviceIpcDispatch(psmGetServiceSession());
if(R_SUCCEEDED(rc)) {
IpcParsedCommand r;
ipcParse(&r);
struct {
u64 magic;
u64 result;
u64 age_percentage;
} *resp = r.Raw;
rc = resp->result;
if (R_SUCCEEDED(rc)) {
*out = resp->age_percentage;
}
}
return rc;
}
static Result psmIsEnoughPowerSupplied(bool *out) {
IpcCommand c;
ipcInitialize(&c);
struct {
u64 magic;
u64 cmd_id;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 14;
Result rc = serviceIpcDispatch(psmGetServiceSession());
if(R_SUCCEEDED(rc)) {
IpcParsedCommand r;
ipcParse(&r);
struct {
u64 magic;
u64 result;
u8 power_supplied;
} *resp = r.Raw;
rc = resp->result;
if (R_SUCCEEDED(rc)) {
*out = resp->power_supplied;
}
}
return rc;
}
static Result psmGetBatteryAgePercentage(u64 *out) {
IpcCommand c;
ipcInitialize(&c);
struct {
u64 magic;
u64 cmd_id;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 15;
Result rc = serviceIpcDispatch(psmGetServiceSession());
if(R_SUCCEEDED(rc)) {
IpcParsedCommand r;
ipcParse(&r);
struct {
u64 magic;
u64 result;
u64 age_percentage;
} *resp = r.Raw;
rc = resp->result;
if (R_SUCCEEDED(rc)) {
*out = resp->age_percentage;
}
}
return rc;
return _psmCmdNoInOutBool(psmGetServiceSession(), out, 4);
}
u32 SwitchIdent_GetBatteryPercent(void) {
@ -159,14 +26,14 @@ u32 SwitchIdent_GetBatteryPercent(void) {
char *SwitchIdent_GetChargerType(void) {
Result ret = 0;
ChargerType charger_type;
PsmChargerType charger_type;
if (R_FAILED(ret = psmGetChargerType(&charger_type)))
return NULL;
if (charger_type == ChargerType_Charger)
if (charger_type == PsmChargerType_EnoughPower)
return "Official charger or dock";
else if (charger_type == ChargerType_Usb)
else if (charger_type == PsmChargerType_LowPower)
return "USB-C charger";
else
return "No charger connected";
@ -176,15 +43,12 @@ char *SwitchIdent_GetChargerType(void) {
bool SwitchIdent_IsCharging(void) {
Result ret = 0;
ChargerType charger_type;
PsmChargerType charger_type;
if (R_FAILED(ret = psmGetChargerType(&charger_type)))
return false;
if ((charger_type == ChargerType_Charger) || (charger_type == ChargerType_Usb))
return true;
return false;
return charger_type != PsmChargerType_Unconnected;
}
bool SwitchIdent_IsChargingEnabled(void) {
@ -219,9 +83,9 @@ char *SwitchIdent_GetVoltageState(void) {
return states[4];
}
u64 SwitchIdent_GetRawBatteryChargePercentage(void) {
double SwitchIdent_GetRawBatteryChargePercentage(void) {
Result ret = 0;
u64 out = 0;
double out = 0;
if (R_FAILED(ret = psmGetRawBatteryChargePercentage(&out)))
return -1;
@ -239,9 +103,9 @@ bool SwitchIdent_IsEnoughPowerSupplied(void) {
return out;
}
u64 SwitchIdent_GetBatteryAgePercent(void) {
double SwitchIdent_GetBatteryAgePercent(void) {
Result ret = 0;
u64 out = 0;
double out = 0;
if (R_FAILED(ret = psmGetBatteryAgePercentage(&out)))
return -1;
@ -251,12 +115,12 @@ u64 SwitchIdent_GetBatteryAgePercent(void) {
char *SwitchIdent_GetBatteryLot(void) {
Result ret = 0;
static char battery_lot[0x13];
static SetBatteryLot battery_lot;
if (R_FAILED(ret = setcalGetBatteryLot(battery_lot))) {
if (R_FAILED(ret = setcalGetBatteryLot(&battery_lot))) {
printf("setcalGetBatteryLot() failed: 0x%x.\n\n", ret);
return NULL;
}
return battery_lot;
return battery_lot.lot;
}

View File

@ -6,9 +6,9 @@ char *SwitchIdent_GetChargerType(void);
bool SwitchIdent_IsCharging(void);
bool SwitchIdent_IsChargingEnabled(void);
char *SwitchIdent_GetVoltageState(void);
u64 SwitchIdent_GetRawBatteryChargePercentage(void);
double SwitchIdent_GetRawBatteryChargePercentage(void);
bool SwitchIdent_IsEnoughPowerSupplied(void);
u64 SwitchIdent_GetBatteryAgePercent(void);
double SwitchIdent_GetBatteryAgePercent(void);
char *SwitchIdent_GetBatteryLot(void);
#endif

View File

@ -1,128 +0,0 @@
#include <stdio.h>
#include <string.h>
#include <switch.h>
static Service setcal_service;
Result setcalInitialize(void) {
return smGetService(&setcal_service, "set:cal");
}
void setcalExit(void) {
serviceClose(&setcal_service);
}
Result setcalGetBluetoothBdAddress(char *address) {
IpcCommand c;
ipcInitialize(&c);
if (address) memset(address, 0, 0x13);
struct {
u64 magic;
u64 cmd_id;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 0;
Result rc = serviceIpcDispatch(&setcal_service);
if (R_SUCCEEDED(rc)) {
IpcParsedCommand r;
ipcParse(&r);
struct {
u64 magic;
u64 result;
char address[0x6];
} *resp = r.Raw;
rc = resp->result;
if (R_SUCCEEDED(rc) && address) {
snprintf(address, 0x12, "%02X:%02X:%02X:%02X:%02X:%02X", *resp->address, *(resp->address + 0x1), *(resp->address + 0x2), *(resp->address + 0x3),
*(resp->address + 0x4), *(resp->address + 0x5));
}
}
return rc;
}
Result setcalGetWirelessLanMacAddress(char *address) {
IpcCommand c;
ipcInitialize(&c);
if (address) memset(address, 0, 0x13);
struct {
u64 magic;
u64 cmd_id;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 6;
Result rc = serviceIpcDispatch(&setcal_service);
if (R_SUCCEEDED(rc)) {
IpcParsedCommand r;
ipcParse(&r);
struct {
u64 magic;
u64 result;
char address[0x6];
} *resp = r.Raw;
rc = resp->result;
if (R_SUCCEEDED(rc) && address) {
snprintf(address, 0x12, "%02X:%02X:%02X:%02X:%02X:%02X", *resp->address, *(resp->address + 0x1), *(resp->address + 0x2), *(resp->address + 0x3),
*(resp->address + 0x4), *(resp->address + 0x5));
}
}
return rc;
}
Result setcalGetBatteryLot(char *out) {
IpcCommand c;
ipcInitialize(&c);
if (out) memset(out, 0, 0x19);
struct {
u64 magic;
u64 cmd_id;
} *raw;
raw = ipcPrepareHeader(&c, sizeof(*raw));
raw->magic = SFCI_MAGIC;
raw->cmd_id = 12;
Result rc = serviceIpcDispatch(&setcal_service);
if (R_SUCCEEDED(rc)) {
IpcParsedCommand r;
ipcParse(&r);
struct {
u64 magic;
u64 result;
char battery_lot[0x18];
} *resp = r.Raw;
rc = resp->result;
if (R_SUCCEEDED(rc) && out)
memcpy(out, resp->battery_lot, 0x18);
}
return rc;
}

View File

@ -1,10 +0,0 @@
#ifndef _SWITCHIDENT_SETCAL_H_
#define _SWITCHIDENT_SETCAL_H_
Result setcalInitialize(void);
void setcalExit(void);
Result setcalGetBluetoothBdAddress(char *address);
Result setcalGetWirelessLanMacAddress(char *address);
Result setcalGetBatteryLot(char *out);
#endif

View File

@ -2,9 +2,9 @@
#include "storage.h"
u64 SwitchIdent_GetTotalStorage(FsStorageId storage_id) {
s64 SwitchIdent_GetTotalStorage(NcmStorageId storage_id) {
Result ret = 0;
u64 total = 0;
s64 total = 0;
if (R_FAILED(ret = nsGetTotalSpaceSize(storage_id, &total)))
printf("nsGetFreeSpaceSize() failed: 0x%x.\n\n", ret);
@ -12,9 +12,9 @@ u64 SwitchIdent_GetTotalStorage(FsStorageId storage_id) {
return total;
}
u64 SwitchIdent_GetFreeStorage(FsStorageId storage_id) {
s64 SwitchIdent_GetFreeStorage(NcmStorageId storage_id) {
Result ret = 0;
u64 free = 0;
s64 free = 0;
if (R_FAILED(ret = nsGetFreeSpaceSize(storage_id, &free)))
printf("nsGetFreeSpaceSize() failed: 0x%x.\n\n", ret);
@ -22,6 +22,6 @@ u64 SwitchIdent_GetFreeStorage(FsStorageId storage_id) {
return free;
}
u64 SwitchIdent_GetUsedStorage(FsStorageId storage_id) {
s64 SwitchIdent_GetUsedStorage(NcmStorageId storage_id) {
return (SwitchIdent_GetTotalStorage(storage_id) - SwitchIdent_GetFreeStorage(storage_id));
}

View File

@ -3,8 +3,8 @@
#include <switch.h>
u64 SwitchIdent_GetTotalStorage(FsStorageId storage_id);
u64 SwitchIdent_GetFreeStorage(FsStorageId storage_id);
u64 SwitchIdent_GetUsedStorage(FsStorageId storage_id);
s64 SwitchIdent_GetTotalStorage(NcmStorageId storage_id);
s64 SwitchIdent_GetFreeStorage(NcmStorageId storage_id);
s64 SwitchIdent_GetUsedStorage(NcmStorageId storage_id);
#endif

View File

@ -4,7 +4,6 @@
#include <switch.h>
#include "misc.h"
#include "setcal.h"
char *SwitchIdent_GetLanguage(void) {
Result ret = 0;
@ -40,56 +39,56 @@ char *SwitchIdent_GetRegion(void) {
return regions[regionCode];
}
u32 SwitchIdent_GetCPUClock(void) {
u32 SwitchIdent_GetClock(PcvModule module) {
Result ret = 0;
u32 out = 0;
if (R_FAILED(ret = pcvGetClockRate(PcvModule_CpuBus, &out)))
printf("pcvGetClockRate(PcvModule_CpuBus) failed: 0x%x.\n\n", ret);
if (hosversionAtLeast(8, 0, 0)) {
ClkrstSession session = {0};
PcvModuleId module_id;
return out/1000000;
}
if (R_FAILED(ret = pcvGetModuleId(&module_id, module)))
printf("pcvGetModuleId() failed: 0x%x.\n\n", ret);
else if (R_FAILED(ret = clkrstOpenSession(&session, module_id, 3)))
printf("clkrstOpenSession() failed: 0x%x.\n\n", ret);
else if (R_FAILED(ret = clkrstGetClockRate(&session, &out)))
printf("clkrstGetClockRate() failed: 0x%x.\n\n", ret);
else
clkrstCloseSession(&session);
} else {
if (R_FAILED(ret = pcvGetClockRate(module, &out)))
printf("pcvGetClockRate() failed: 0x%x.\n\n", ret);
}
u32 SwitchIdent_GetGPUClock(void) {
Result ret = 0;
u32 out = 0;
if (R_FAILED(ret = pcvGetClockRate(PcvModule_GPU, &out)))
printf("pcvGetClockRate(PcvModule_GPU) failed: 0x%x.\n\n", ret);
return out/1000000;
}
u32 SwitchIdent_GetEMCClock(void) {
Result ret = 0;
u32 out = 0;
if (R_FAILED(ret = pcvGetClockRate(PcvModule_EMC , &out)))
printf("pcvGetClockRate(PcvModule_EMC ) failed: 0x%x.\n\n", ret);
return out/1000000;
}
char *SwitchIdent_GetBluetoothBdAddress(void) {
Result ret = 0;
static char bd_addr[0x13];
static char bd_addr_string[0x13];
SetCalBdAddress bd_addr;
if (R_FAILED(ret = setcalGetBluetoothBdAddress(bd_addr))) {
printf("setcalGetBluetoothBdAddress() failed: 0x%x.\n\n", ret);
if (R_FAILED(ret = setcalGetBdAddress(&bd_addr))) {
printf("setcalGetBdAddress() failed: 0x%x.\n\n", ret);
return NULL;
}
return bd_addr;
snprintf(bd_addr_string, 0x12, "%02X:%02X:%02X:%02X:%02X:%02X", bd_addr.bd_addr[0], bd_addr.bd_addr[1], bd_addr.bd_addr[2], bd_addr.bd_addr[3], bd_addr.bd_addr[4], bd_addr.bd_addr[5]);
return bd_addr_string;
}
char *SwitchIdent_GetWirelessLanMacAddress(void) {
Result ret = 0;
static char mac_addr[0x13];
static char mac_addr_string[0x13];
SetCalMacAddress mac_addr;
if (R_FAILED(ret = setcalGetWirelessLanMacAddress(mac_addr))) {
if (R_FAILED(ret = setcalGetWirelessLanMacAddress(&mac_addr))) {
printf("setcalGetWirelessLanMacAddress() failed: 0x%x.\n\n", ret);
return NULL;
}
return mac_addr;
snprintf(mac_addr_string, 0x12, "%02X:%02X:%02X:%02X:%02X:%02X", mac_addr.addr[0], mac_addr.addr[1], mac_addr.addr[2], mac_addr.addr[3], mac_addr.addr[4], mac_addr.addr[5]);
return mac_addr_string;
}

View File

@ -3,9 +3,7 @@
char *SwitchIdent_GetLanguage(void);
char *SwitchIdent_GetRegion(void);
u32 SwitchIdent_GetCPUClock(void);
u32 SwitchIdent_GetGPUClock(void);
u32 SwitchIdent_GetEMCClock(void);
u32 SwitchIdent_GetClock(PcvModule module);
char *SwitchIdent_GetBluetoothBdAddress(void);
char *SwitchIdent_GetWirelessLanMacAddress(void);

View File

@ -2,13 +2,15 @@
#include "menus.h"
#include "power.h"
#include "setcal.h"
#include "SDL_helper.h"
#include "wlan.h"
static void Term_Services(void) {
wlaninfExit();
pcvExit();
if (hosversionAtLeast(8, 0, 0))
clkrstExit();
else
pcvExit();
psmExit();
nsExit();
apmExit();
@ -41,7 +43,7 @@ static void Init_Services(void) {
if (R_FAILED(ret = splInitialize()))
printf("splInitialize() failed: 0x%x.\n\n", ret);
if (R_FAILED(ret = nifmInitialize()))
if (R_FAILED(ret = nifmInitialize(NifmServiceType_User)))
printf("nifmInitialize() failed: 0x%x.\n\n", ret);
if (R_FAILED(ret = socketInitializeDefault()))
@ -59,8 +61,13 @@ static void Init_Services(void) {
if (R_FAILED(ret = psmInitialize()))
printf("psmInitialize() failed: 0x%x.\n\n", ret);
if (R_FAILED(ret = pcvInitialize()))
printf("pcvInitialize() failed: 0x%x.\n\n", ret);
if (hosversionAtLeast(8, 0, 0)) {
if (R_FAILED(ret = clkrstInitialize()))
printf("clkrstInitialize() failed: 0x%x.\n\n", ret);
} else {
if (R_FAILED(ret = pcvInitialize()))
printf("pcvInitialize() failed: 0x%x.\n\n", ret);
}
if (R_FAILED(ret = wlaninfInitialize()))
printf("wlaninfInitialize() failed: 0x%x.\n\n", ret);

View File

@ -41,12 +41,12 @@ static void Menu_Kernel(void) {
static void Menu_System(void) {
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 50, "Region:", SwitchIdent_GetRegion());
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 100, "CPU clock:", "%lu MHz", SwitchIdent_GetCPUClock());
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 150, "GPU clock:", "%lu MHz", SwitchIdent_GetGPUClock());
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 200, "EMC clock:", "%lu MHz", SwitchIdent_GetEMCClock());
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 250, "Wireless LAN:", "%s (RSSI: %d) (Quality: %lu)", SwitchIdent_GetFlag(SetSysFlag_WirelessLanEnable)? "Enabled" : "Disabled", SwitchIdent_GetWlanRSSI(), SwitchIdent_GetWlanQuality(SwitchIdent_GetWlanRSSI()));
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 300, "Bluetooth:", "%s", SwitchIdent_GetFlag(SetSysFlag_BluetoothEnable)? "Enabled" : "Disabled");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 350, "NFC:", SwitchIdent_GetFlag(SetSysFlag_NfcEnable)? "Enabled" : "Disabled");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 100, "CPU clock:", "%lu MHz", SwitchIdent_GetClock(PcvModule_CpuBus));
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 150, "GPU clock:", "%lu MHz", SwitchIdent_GetClock(PcvModule_GPU));
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 200, "EMC clock:", "%lu MHz", SwitchIdent_GetClock(PcvModule_EMC));
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 250, "Wireless LAN:", "%s (RSSI: %d) (Quality: %lu)", SwitchIdent_GetWirelessLanEnableFlag()? "Enabled" : "Disabled", SwitchIdent_GetWlanRSSI(), SwitchIdent_GetWlanQuality(SwitchIdent_GetWlanRSSI()));
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 300, "Bluetooth:", "%s", SwitchIdent_GetBluetoothEnableFlag()? "Enabled" : "Disabled");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 350, "NFC:", SwitchIdent_GetNfcEnableFlag()? "Enabled" : "Disabled");
}
static void Menu_Power(void) {
@ -59,28 +59,28 @@ static void Menu_Power(void) {
}
static void Menu_Storage(void) {
u64 sd_used = SwitchIdent_GetUsedStorage(FsStorageId_SdCard);
u64 sd_total = SwitchIdent_GetTotalStorage(FsStorageId_SdCard);
u64 sd_used = SwitchIdent_GetUsedStorage(NcmStorageId_SdCard);
u64 sd_total = SwitchIdent_GetTotalStorage(NcmStorageId_SdCard);
u64 nand_u_used = SwitchIdent_GetUsedStorage(FsStorageId_NandUser);
u64 nand_u_total = SwitchIdent_GetTotalStorage(FsStorageId_NandUser);
u64 nand_u_used = SwitchIdent_GetUsedStorage(NcmStorageId_BuiltInUser);
u64 nand_u_total = SwitchIdent_GetTotalStorage(NcmStorageId_BuiltInUser);
u64 nand_s_used = SwitchIdent_GetUsedStorage(FsStorageId_NandSystem);
u64 nand_s_total = SwitchIdent_GetTotalStorage(FsStorageId_NandSystem);
u64 nand_s_used = SwitchIdent_GetUsedStorage(NcmStorageId_BuiltInSystem);
u64 nand_s_total = SwitchIdent_GetTotalStorage(NcmStorageId_BuiltInSystem);
char sd_total_str[16], sd_free_str[16], sd_used_str[16];
Utils_GetSizeString(sd_total_str, sd_total);
Utils_GetSizeString(sd_free_str, SwitchIdent_GetFreeStorage(FsStorageId_SdCard));
Utils_GetSizeString(sd_free_str, SwitchIdent_GetFreeStorage(NcmStorageId_SdCard));
Utils_GetSizeString(sd_used_str, sd_used);
char nand_u_total_str[16], nand_u_free_str[16], nand_u_used_str[16];
Utils_GetSizeString(nand_u_total_str, nand_u_total);
Utils_GetSizeString(nand_u_free_str, SwitchIdent_GetFreeStorage(FsStorageId_NandUser));
Utils_GetSizeString(nand_u_free_str, SwitchIdent_GetFreeStorage(NcmStorageId_BuiltInUser));
Utils_GetSizeString(nand_u_used_str, nand_u_used);
char nand_s_total_str[16], nand_s_free_str[16], nand_s_used_str[16];
Utils_GetSizeString(nand_s_total_str, nand_s_total);
Utils_GetSizeString(nand_s_free_str, SwitchIdent_GetFreeStorage(FsStorageId_NandSystem));
Utils_GetSizeString(nand_s_free_str, SwitchIdent_GetFreeStorage(NcmStorageId_BuiltInSystem));
Utils_GetSizeString(nand_s_used_str, nand_s_used);
SDL_DrawRect(400, 50, 880, 670, BACKGROUND_COLOUR);
@ -121,8 +121,8 @@ static void Menu_Misc(void) {
Result ret = gethostname(hostname, sizeof(hostname));
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 50, "IP:", R_SUCCEEDED(ret)? hostname : NULL);
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 100, "State:", SwitchIdent_GetOperationMode());
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 150, "Automatic update:", SwitchIdent_GetFlag(SetSysFlag_AutoUpdateEnable)? "Enabled" : "Disabled");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 200, "Console information upload:", SwitchIdent_GetFlag(SetSysFlag_ConsoleInformationUpload)? "Enabled" : "Disabled");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 150, "Automatic update:", SwitchIdent_GetAutoUpdateEnableFlag()? "Enabled" : "Disabled");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 200, "Console information upload:", SwitchIdent_GetConsoleInformationUploadFlag()? "Enabled" : "Disabled");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 250, "SD card status:", isSDInserted? "Inserted" : "Not inserted");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 300, "Game card status:", isGameCardInserted? "Inserted" : "Not inserted");
Menu_DrawItem(450, 250 + ((MENU_Y_DIST - item_height) / 2) + 350, "BT address:", SwitchIdent_GetBluetoothBdAddress());
@ -147,6 +147,11 @@ void Menu_Main(void) {
fsDeviceOperatorClose(&fsDeviceOperator);
padConfigureInput(1, HidNpadStyleSet_NpadStandard);
PadState pad;
padInitializeDefault(&pad);
while(appletMainLoop()) {
SDL_ClearScreen(BACKGROUND_COLOUR);
SDL_DrawRect(0, 0, 1280, 50, STATUS_BAR_COLOUR);
@ -165,12 +170,12 @@ void Menu_Main(void) {
SDL_DrawText(30, 50 + ((MENU_Y_DIST - item_height) / 2) + (MENU_Y_DIST * 4), 25, selection == 4? ITEM_SELECTED_COLOUR : ITEM_COLOUR, "Misc");
SDL_DrawText(30, 50 + ((MENU_Y_DIST - item_height) / 2) + (MENU_Y_DIST * 5), 25, selection == 5? ITEM_SELECTED_COLOUR : ITEM_COLOUR, "Exit");
hidScanInput();
u32 kDown = hidKeysDown(CONTROLLER_P1_AUTO);
padUpdate(&pad);
u32 kDown = padGetButtonsDown(&pad);
if (kDown & KEY_DDOWN)
if (kDown & HidNpadButton_AnyDown)
selection++;
else if (kDown & KEY_DUP)
else if (kDown & HidNpadButton_AnyUp)
selection--;
if (selection > MAX_MENU_ITEMS)
@ -198,7 +203,7 @@ void Menu_Main(void) {
SDL_Renderdisplay();
if ((kDown & KEY_PLUS) || ((kDown & KEY_A) && (selection == MAX_MENU_ITEMS)))
if ((kDown & HidNpadButton_Plus) || ((kDown & HidNpadButton_A) && (selection == MAX_MENU_ITEMS)))
break;
}
}