diff --git a/nx/include/switch/services/set.h b/nx/include/switch/services/set.h index 004dfc6a..7040e72d 100644 --- a/nx/include/switch/services/set.h +++ b/nx/include/switch/services/set.h @@ -51,9 +51,8 @@ typedef enum { SetRegion_USA = 1, ///< The Americas SetRegion_EUR = 2, ///< Europe SetRegion_AUS = 3, ///< Australia/New Zealand - SetRegion_CHN = 4, ///< China - SetRegion_KOR = 5, ///< Korea - SetRegion_TWN = 6, ///< Taiwan + SetRegion_HTK = 4, ///< Hong Kong/Taiwan/Korea + SetRegion_CHN = 5, ///< China } SetRegion; /// ConnectionFlag @@ -341,6 +340,11 @@ typedef struct { char digest[0x40]; } SetSysFirmwareVersionDigest; +/// Structure returned by \ref setsysGetSerialNumber. +typedef struct { + char number[0x18]; +} SetSysSerialNumber; + /// UserSelectorSettings typedef struct { u32 flags; ///< Bitmask with \ref SetSysUserSelectorFlag. @@ -1291,9 +1295,9 @@ Result setsysGetBatteryLot(SetBatteryLot *out); /** * @brief Gets the system's serial number. - * @param serial Pointer to output the serial to. (The buffer size needs to be at least 0x19 bytes) + * @param[out] out \ref SetSysSerialNumber */ -Result setsysGetSerialNumber(char *serial); +Result setsysGetSerialNumber(SetSysSerialNumber *out); /** * @brief GetNfcEnableFlag diff --git a/nx/source/services/set.c b/nx/source/services/set.c index 8e7dbb07..9070749d 100644 --- a/nx/source/services/set.c +++ b/nx/source/services/set.c @@ -392,7 +392,7 @@ Result setsysSetVibrationMasterVolume(float volume) { Result setsysGetSettingsItemValueSize(const char *name, const char *item_key, u64 *size_out) { char send_name[SET_MAX_NAME_SIZE]; char send_item_key[SET_MAX_NAME_SIZE]; - + memset(send_name, 0, SET_MAX_NAME_SIZE); memset(send_item_key, 0, SET_MAX_NAME_SIZE); strncpy(send_name, name, SET_MAX_NAME_SIZE-1); @@ -413,7 +413,7 @@ Result setsysGetSettingsItemValueSize(const char *name, const char *item_key, u6 Result setsysGetSettingsItemValue(const char *name, const char *item_key, void *value_out, size_t value_out_size, u64 *size_out) { char send_name[SET_MAX_NAME_SIZE]; char send_item_key[SET_MAX_NAME_SIZE]; - + memset(send_name, 0, SET_MAX_NAME_SIZE); memset(send_item_key, 0, SET_MAX_NAME_SIZE); strncpy(send_name, name, SET_MAX_NAME_SIZE-1); @@ -569,15 +569,8 @@ Result setsysGetBatteryLot(SetBatteryLot *out) { return serviceDispatchOut(&g_setsysSrv, 67, *out); } -Result setsysGetSerialNumber(char *serial) { - char out[0x18]={0}; - - Result rc = serviceDispatchOut(&g_setsysSrv, 68, out); - if (R_SUCCEEDED(rc) && serial) { - memcpy(serial, out, 0x18); - serial[0x18]=0; - } - return rc; +Result setsysGetSerialNumber(SetSysSerialNumber *out) { + return serviceDispatchOut(&g_setsysSrv, 68, *out); } Result setsysGetNfcEnableFlag(bool *out) {