mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
set: Updated for [10.1.0+], added more cmds, use struct for nickname.
This commit is contained in:
parent
797cdffb14
commit
ac8ac4919e
@ -16,7 +16,6 @@
|
||||
#include "../sf/service.h"
|
||||
|
||||
#define SET_MAX_NAME_SIZE 0x48
|
||||
#define SET_MAX_NICKNAME_SIZE 0x80
|
||||
|
||||
typedef enum {
|
||||
ColorSetId_Light = 0,
|
||||
@ -43,6 +42,7 @@ typedef enum
|
||||
SetLanguage_ES419 = 14, ///< "LatinAmericanSpanish"
|
||||
SetLanguage_ZHHANS = 15, ///< [4.0.0+] ChineseSimplified
|
||||
SetLanguage_ZHHANT = 16, ///< [4.0.0+] ChineseTraditional
|
||||
SetLanguage_PTBR = 17, ///< [10.1.0+] "BrazilianPortuguese"
|
||||
SetLanguage_Total, ///< Total languages supported by this enum.
|
||||
} SetLanguage;
|
||||
|
||||
@ -346,6 +346,11 @@ typedef struct {
|
||||
char number[0x18];
|
||||
} SetSysSerialNumber;
|
||||
|
||||
/// DeviceNickName
|
||||
typedef struct {
|
||||
char nickname[0x80];
|
||||
} SetSysDeviceNickName;
|
||||
|
||||
/// UserSelectorSettings
|
||||
typedef struct {
|
||||
u32 flags; ///< Bitmask with \ref SetSysUserSelectorFlag.
|
||||
@ -891,6 +896,20 @@ Result setGetAvailableLanguageCodeCount(s32 *total);
|
||||
/// Gets the RegionCode.
|
||||
Result setGetRegionCode(SetRegion *out);
|
||||
|
||||
/**
|
||||
* @brief GetQuestFlag
|
||||
* @note Only available on [5.0.0+].
|
||||
* @param[out] out Output flag.
|
||||
*/
|
||||
Result setGetQuestFlag(bool *out);
|
||||
|
||||
/**
|
||||
* @brief Gets the system's nickname.
|
||||
* @note Only available on [10.1.0+].
|
||||
* @param[out] nickname \ref SetSysDeviceNickName
|
||||
*/
|
||||
Result setGetDeviceNickname(SetSysDeviceNickName *nickname);
|
||||
|
||||
/// Initialize setsys.
|
||||
Result setsysInitialize(void);
|
||||
|
||||
@ -1358,15 +1377,16 @@ Result setsysSetInitialLaunchSettings(const SetSysInitialLaunchSettings *setting
|
||||
|
||||
/**
|
||||
* @brief Gets the system's nickname.
|
||||
* @param nickname Pointer to output the nickname to. (The buffer size needs to be at least 0x80 bytes)
|
||||
* @note Same as \ref setGetDeviceNickname, which official sw uses instead on [10.1.0+].
|
||||
* @param[out] nickname \ref SetSysDeviceNickName
|
||||
*/
|
||||
Result setsysGetDeviceNickname(char* nickname);
|
||||
Result setsysGetDeviceNickname(SetSysDeviceNickName *nickname);
|
||||
|
||||
/**
|
||||
* @brief Sets the system's nickname.
|
||||
* @param nickname Pointer to read the nickname from.
|
||||
* @param[in] nickname \ref SetSysDeviceNickName
|
||||
*/
|
||||
Result setsysSetDeviceNickname(const char* nickname);
|
||||
Result setsysSetDeviceNickname(const SetSysDeviceNickName *nickname);
|
||||
|
||||
/**
|
||||
* @brief GetProductModel
|
||||
@ -2238,6 +2258,20 @@ Result setsysGetButtonConfigRegisteredSettings(s32 *total_out, SetSysButtonConfi
|
||||
*/
|
||||
Result setsysSetButtonConfigRegisteredSettings(const SetSysButtonConfigRegisteredSettings *settings, s32 count);
|
||||
|
||||
/**
|
||||
* @brief GetFieldTestingFlag
|
||||
* @note Only available on [10.1.0+].
|
||||
* @param[out] out Output flag.
|
||||
*/
|
||||
Result setsysGetFieldTestingFlag(bool *out);
|
||||
|
||||
/**
|
||||
* @brief SetFieldTestingFlag
|
||||
* @note Only available on [10.1.0+].
|
||||
* @param[in] flag Input flag.
|
||||
*/
|
||||
Result setsysSetFieldTestingFlag(bool flag);
|
||||
|
||||
/// Initialize setcal.
|
||||
Result setcalInitialize(void);
|
||||
|
||||
|
@ -118,6 +118,13 @@ static Result _setCmdInUuidNoOut(Service* srv, const Uuid *inval, u32 cmd_id) {
|
||||
return serviceDispatchIn(srv, cmd_id, *inval);
|
||||
}
|
||||
|
||||
static Result _setCmdOutBufAliasFixed(Service* srv, void* buffer, size_t size, u32 cmd_id) {
|
||||
return serviceDispatch(srv, cmd_id,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out | SfBufferAttr_FixedSize },
|
||||
.buffers = { { buffer, size } },
|
||||
);
|
||||
}
|
||||
|
||||
static Result setInitializeLanguageCodesCache(void) {
|
||||
if (g_setLanguageCodesInitialized) return 0;
|
||||
Result rc = 0;
|
||||
@ -213,6 +220,20 @@ Result setGetRegionCode(SetRegion *out) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
Result setGetQuestFlag(bool *out) {
|
||||
if (hosversionBefore(5,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
return _setCmdNoInOutBool(&g_setSrv, out, 8);
|
||||
}
|
||||
|
||||
Result setGetDeviceNickname(SetSysDeviceNickName *nickname) {
|
||||
if (hosversionBefore(10,1,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
return _setCmdOutBufAliasFixed(&g_setSrv, nickname, sizeof(*nickname), 11);
|
||||
}
|
||||
|
||||
Result setsysSetLanguageCode(u64 LanguageCode) {
|
||||
return _setCmdInU64NoOut(&g_setsysSrv, LanguageCode, 0);
|
||||
}
|
||||
@ -605,20 +626,14 @@ Result setsysSetInitialLaunchSettings(const SetSysInitialLaunchSettings *setting
|
||||
return serviceDispatchIn(&g_setsysSrv, 76, *settings);
|
||||
}
|
||||
|
||||
Result setsysGetDeviceNickname(char* nickname) {
|
||||
return serviceDispatch(&g_setsysSrv, 77,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { nickname, SET_MAX_NICKNAME_SIZE } },
|
||||
);
|
||||
Result setsysGetDeviceNickname(SetSysDeviceNickName *nickname) {
|
||||
return _setCmdOutBufAliasFixed(&g_setsysSrv, nickname, sizeof(*nickname), 77);
|
||||
}
|
||||
|
||||
Result setsysSetDeviceNickname(const char* nickname) {
|
||||
char send_nickname[SET_MAX_NICKNAME_SIZE] = {0};
|
||||
strncpy(send_nickname, nickname, SET_MAX_NICKNAME_SIZE-1);
|
||||
|
||||
Result setsysSetDeviceNickname(const SetSysDeviceNickName *nickname) {
|
||||
return serviceDispatch(&g_setsysSrv, 78,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_In },
|
||||
.buffers = { { send_nickname, SET_MAX_NICKNAME_SIZE } },
|
||||
.buffers = { { nickname, sizeof(*nickname) } },
|
||||
);
|
||||
}
|
||||
|
||||
@ -1049,10 +1064,7 @@ Result setsysGetHostFsMountPoint(SetSysHostFsMountPoint *out) {
|
||||
if (hosversionBefore(4,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
return serviceDispatch(&g_setsysSrv, 140,
|
||||
.buffer_attrs = { SfBufferAttr_FixedSize | SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetSysHostFsMountPoint) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setsysSrv, out, sizeof(*out), 140);
|
||||
}
|
||||
|
||||
Result setsysGetRequiresRunRepairTimeReviser(bool *out) {
|
||||
@ -1504,10 +1516,7 @@ Result setsysGetButtonConfigRegisteredSettingsEmbedded(SetSysButtonConfigRegiste
|
||||
if (hosversionBefore(10,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
return serviceDispatch(&g_setsysSrv, 197,
|
||||
.buffer_attrs = { SfBufferAttr_FixedSize | SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { settings, sizeof(SetSysButtonConfigRegisteredSettings) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setsysSrv, settings, sizeof(*settings), 197);
|
||||
}
|
||||
|
||||
Result setsysSetButtonConfigRegisteredSettingsEmbedded(const SetSysButtonConfigRegisteredSettings *settings) {
|
||||
@ -1540,6 +1549,20 @@ Result setsysSetButtonConfigRegisteredSettings(const SetSysButtonConfigRegistere
|
||||
);
|
||||
}
|
||||
|
||||
Result setsysGetFieldTestingFlag(bool *out) {
|
||||
if (hosversionBefore(10,1,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
return _setCmdNoInOutBool(&g_setsysSrv, out, 201);
|
||||
}
|
||||
|
||||
Result setsysSetFieldTestingFlag(bool flag) {
|
||||
if (hosversionBefore(10,1,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
return _setCmdInBoolNoOut(&g_setsysSrv, flag, 202);
|
||||
}
|
||||
|
||||
Result setcalGetBdAddress(SetCalBdAddress *out) {
|
||||
return serviceDispatchOut(&g_setcalSrv, 0, *out);
|
||||
}
|
||||
@ -1596,45 +1619,27 @@ Result setcalGetBatteryLot(SetBatteryLot *out) {
|
||||
}
|
||||
|
||||
Result setcalGetEciDeviceCertificate(SetCalEccB233DeviceCertificate *out) {
|
||||
return serviceDispatch(&g_setcalSrv, 14,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalEccB233DeviceCertificate) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 14);
|
||||
}
|
||||
|
||||
Result setcalGetEticketDeviceCertificate(SetCalRsa2048DeviceCertificate *out) {
|
||||
return serviceDispatch(&g_setcalSrv, 15,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalRsa2048DeviceCertificate) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 15);
|
||||
}
|
||||
|
||||
Result setcalGetSslKey(SetCalSslKey *out) {
|
||||
return serviceDispatch(&g_setcalSrv, 16,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalSslKey) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 16);
|
||||
}
|
||||
|
||||
Result setcalGetSslCertificate(SetCalSslCertificate *out) {
|
||||
return serviceDispatch(&g_setcalSrv, 17,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalSslCertificate) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 17);
|
||||
}
|
||||
|
||||
Result setcalGetGameCardKey(SetCalGameCardKey *out) {
|
||||
return serviceDispatch(&g_setcalSrv, 18,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalGameCardKey) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 18);
|
||||
}
|
||||
|
||||
Result setcalGetGameCardCertificate(SetCalGameCardCertificate *out) {
|
||||
return serviceDispatch(&g_setcalSrv, 19,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalGameCardCertificate) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 19);
|
||||
}
|
||||
|
||||
Result setcalGetEciDeviceKey(SetCalEccB233DeviceKey *out) {
|
||||
@ -1642,10 +1647,7 @@ Result setcalGetEciDeviceKey(SetCalEccB233DeviceKey *out) {
|
||||
}
|
||||
|
||||
Result setcalGetEticketDeviceKey(SetCalRsa2048DeviceKey *out) {
|
||||
return serviceDispatch(&g_setcalSrv, 21,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalRsa2048DeviceKey) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 21);
|
||||
}
|
||||
|
||||
Result setcalGetSpeakerParameter(SetCalSpeakerParameter *out) {
|
||||
@ -1663,20 +1665,14 @@ Result setcalGetEciDeviceCertificate2(SetCalRsa2048DeviceCertificate *out) {
|
||||
if (hosversionBefore(5,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
return serviceDispatch(&g_setcalSrv, 24,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalRsa2048DeviceCertificate) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 24);
|
||||
}
|
||||
|
||||
Result setcalGetEciDeviceKey2(SetCalRsa2048DeviceKey *out) {
|
||||
if (hosversionBefore(5,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
return serviceDispatch(&g_setcalSrv, 25,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
.buffers = { { out, sizeof(SetCalRsa2048DeviceKey) } },
|
||||
);
|
||||
return _setCmdOutBufAliasFixed(&g_setcalSrv, out, sizeof(*out), 25);
|
||||
}
|
||||
|
||||
Result setcalGetAmiiboKey(SetCalAmiiboKey *out) {
|
||||
|
Loading…
Reference in New Issue
Block a user