mirror of
https://github.com/HamletDuFromage/aio-switch-updater.git
synced 2024-11-28 12:22:02 +00:00
sub AMS0.19 support + taking care stratosphere.romfs through the payload
This commit is contained in:
parent
48aa9f5a47
commit
5d436c5b8e
6 changed files with 34 additions and 21 deletions
2
Makefile
2
Makefile
|
@ -22,7 +22,7 @@ DATA := data
|
||||||
INCLUDES := include lib/zipper/include /lib/borealis/library/include/borealis/extern/nlohmann
|
INCLUDES := include lib/zipper/include /lib/borealis/library/include/borealis/extern/nlohmann
|
||||||
APP_TITLE := All-in-One Switch Updater
|
APP_TITLE := All-in-One Switch Updater
|
||||||
APP_AUTHOR := HamletDuFromage
|
APP_AUTHOR := HamletDuFromage
|
||||||
APP_VERSION := 2.4.6
|
APP_VERSION := 2.4.7
|
||||||
TARGET := $(notdir $(CURDIR))
|
TARGET := $(notdir $(CURDIR))
|
||||||
|
|
||||||
ROMFS := resources
|
ROMFS := resources
|
||||||
|
|
|
@ -7,6 +7,6 @@ namespace CurrentCfw {
|
||||||
|
|
||||||
CFW getCFW();
|
CFW getCFW();
|
||||||
std::string getAmsInfo();
|
std::string getAmsInfo();
|
||||||
const extern CFW running_cfw;
|
extern CFW running_cfw;
|
||||||
|
|
||||||
}
|
}
|
|
@ -136,6 +136,9 @@ ChangelogPage::ChangelogPage() : AppletFrame(true, true)
|
||||||
verTitles.push_back("v2.4.6");
|
verTitles.push_back("v2.4.6");
|
||||||
changes.push_back("\uE016 Added back support for SXOS. \uE016 Removed dialogue asking to update Hekate if downloading DeepSea.\uE016 Fixed incorrect description in inject payload menu.");
|
changes.push_back("\uE016 Added back support for SXOS. \uE016 Removed dialogue asking to update Hekate if downloading DeepSea.\uE016 Fixed incorrect description in inject payload menu.");
|
||||||
|
|
||||||
|
verTitles.push_back("v2.4.7");
|
||||||
|
changes.push_back("\uE016 Fixed app only working on 0.19 AMS.\uE016 Proper replacement of stratosphere.romfs when updating.");
|
||||||
|
|
||||||
for(int i = verTitles.size() -1 ; i >= 0; i--){
|
for(int i = verTitles.size() -1 ; i >= 0; i--){
|
||||||
listItem = new brls::ListItem(verTitles[i]);
|
listItem = new brls::ListItem(verTitles[i]);
|
||||||
change = changes[i];
|
change = changes[i];
|
||||||
|
|
|
@ -16,22 +16,32 @@ namespace CurrentCfw {
|
||||||
return running;
|
return running;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result smAtmosphereHasService(bool *out, SmServiceName name) {
|
Result smAtmosphereHasService(bool *out, SmServiceName name, bool v019) {
|
||||||
u8 tmp = 0;
|
u8 tmp = 0;
|
||||||
Result rc = tipcDispatchInOut(smGetServiceSessionTipc(), 65100, name, tmp);
|
Result rc = v019 ? tipcDispatchInOut(smGetServiceSessionTipc(), 65100, name, tmp) : serviceDispatchInOut(smGetServiceSession(), 65100, name, tmp);
|
||||||
if (R_SUCCEEDED(rc) && out)
|
if (R_SUCCEEDED(rc) && out)
|
||||||
*out = tmp;
|
*out = tmp;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isPost019() {
|
||||||
|
u64 version;
|
||||||
|
if(R_SUCCEEDED(splGetConfig((SplConfigItem) 65000, &version))) {
|
||||||
|
if(((version >> 56) & ((1 << 8) - 1)) > 0 || ((version >> 48) & ((1 << 8) - 1)) >= 19) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CFW getCFW(){
|
CFW getCFW(){
|
||||||
bool res = false;
|
bool res = false;
|
||||||
if(R_SUCCEEDED(smAtmosphereHasService(&res, smEncodeName("rnx")))) {
|
bool v019 = isPost019(); //AMS v0.19 introduced sm changes, and as such old AMS versions have to be treated differently
|
||||||
|
if(R_SUCCEEDED(smAtmosphereHasService(&res, smEncodeName("rnx"), v019))) {
|
||||||
if(res)
|
if(res)
|
||||||
return CFW::rnx;
|
return CFW::rnx;
|
||||||
smAtmosphereHasService(&res, smEncodeName("tx"));
|
smAtmosphereHasService(&res, smEncodeName("tx"), v019);
|
||||||
if(res)
|
if(res)
|
||||||
return CFW::sxos;
|
return CFW::sxos;
|
||||||
}
|
}
|
||||||
|
@ -43,18 +53,18 @@ namespace CurrentCfw {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getAmsInfo() {
|
std::string getAmsInfo() {
|
||||||
u64 version;
|
u64 version;
|
||||||
std::string res;
|
std::string res;
|
||||||
if(R_SUCCEEDED(splGetConfig((SplConfigItem) 65000, &version))){
|
if(R_SUCCEEDED(splGetConfig((SplConfigItem) 65000, &version))) {
|
||||||
res += std::to_string((version >> 56) & ((1 << 8) - 1)) + "." +
|
res += std::to_string((version >> 56) & ((1 << 8) - 1)) + "." +
|
||||||
std::to_string((version >> 48) & ((1 << 8) - 1)) + "." +
|
std::to_string((version >> 48) & ((1 << 8) - 1)) + "." +
|
||||||
std::to_string((version >> 40) & ((1 << 8) - 1));
|
std::to_string((version >> 40) & ((1 << 8) - 1));
|
||||||
if(R_SUCCEEDED(splGetConfig((SplConfigItem) 65007, &version)))
|
if(R_SUCCEEDED(splGetConfig((SplConfigItem) 65007, &version)))
|
||||||
res += version ? "|E" : "|S";
|
res += version ? "|E" : "|S";
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return "Couldn't retrieve AMS version";
|
return "Couldn't retrieve AMS version";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@ using namespace i18n::literals;
|
||||||
|
|
||||||
//TimeServiceType __nx_time_service_type = TimeServiceType_System;
|
//TimeServiceType __nx_time_service_type = TimeServiceType_System;
|
||||||
|
|
||||||
const CFW CurrentCfw::running_cfw = CurrentCfw::getCFW();
|
CFW CurrentCfw::running_cfw;
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
@ -45,6 +45,8 @@ int main(int argc, char* argv[])
|
||||||
splInitialize();
|
splInitialize();
|
||||||
romfsInit();
|
romfsInit();
|
||||||
|
|
||||||
|
CurrentCfw::running_cfw = CurrentCfw::getCFW();
|
||||||
|
|
||||||
fs::createTree(CONFIG_PATH);
|
fs::createTree(CONFIG_PATH);
|
||||||
|
|
||||||
brls::Logger::setLogLevel(brls::LogLevel::DEBUG);
|
brls::Logger::setLogLevel(brls::LogLevel::DEBUG);
|
||||||
|
|
|
@ -241,10 +241,8 @@ std::string readVersion(const char* path){
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isErista() {
|
bool isErista() {
|
||||||
splInitialize();
|
|
||||||
u64 hwType;
|
u64 hwType;
|
||||||
Result rc = splGetConfig(SplConfigItem_HardwareType, &hwType);
|
Result rc = splGetConfig(SplConfigItem_HardwareType, &hwType);
|
||||||
splExit();
|
|
||||||
|
|
||||||
if(R_FAILED(rc))
|
if(R_FAILED(rc))
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in a new issue