mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
チケット同期とIVS送信は1度に行う
ショップ接続してCloseしないモードの復活 acのResultチェックのためログ出力コードを挟む git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@242 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
6ff730a779
commit
fd358bb8ba
@ -117,7 +117,6 @@ typedef enum RestoreState
|
|||||||
DELETE_ACCOUNT, // ショップアカウントを削除する
|
DELETE_ACCOUNT, // ショップアカウントを削除する
|
||||||
DELETE_ACCOUNT_DONE, // ショップアカウント削除完了
|
DELETE_ACCOUNT_DONE, // ショップアカウント削除完了
|
||||||
SYNC_TICKET, // eTicketを同期する
|
SYNC_TICKET, // eTicketを同期する
|
||||||
UPLOAD_IVS, // IVSを送信する
|
|
||||||
READ_FILELIST, // ファイル一覧の読み込み
|
READ_FILELIST, // ファイル一覧の読み込み
|
||||||
RESTORE_TWL_NAND, // TWL NANDの書き込み中
|
RESTORE_TWL_NAND, // TWL NANDの書き込み中
|
||||||
RESTORE_TWL_SOUND, // TWLサウンドの書き込み中
|
RESTORE_TWL_SOUND, // TWLサウンドの書き込み中
|
||||||
@ -538,6 +537,12 @@ void ShopOperationSingleTemplate(
|
|||||||
{
|
{
|
||||||
ShopOperationSuccess(op, logMessage, nextState);
|
ShopOperationSuccess(op, logMessage, nextState);
|
||||||
}
|
}
|
||||||
|
else if(GetShopOperationSingleResult() == nn::ac::ResultFailedConnectAp())
|
||||||
|
{
|
||||||
|
COMMON_LOGGER("Failed Connect AccesPoint.");
|
||||||
|
nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromSeconds(5));
|
||||||
|
|
||||||
|
}
|
||||||
// IVSがアップロードされていない場合もあるため
|
// IVSがアップロードされていない場合もあるため
|
||||||
// IVSを取得できない状況も成功として扱う
|
// IVSを取得できない状況も成功として扱う
|
||||||
else if(op == SHOP_OPERATION_GET_IVS && GetShopOperationSingleResult() == nn::nim::ResultCannotGetIvs())
|
else if(op == SHOP_OPERATION_GET_IVS && GetShopOperationSingleResult() == nn::nim::ResultCannotGetIvs())
|
||||||
@ -1186,6 +1191,7 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
|||||||
s_RestoreState = FAIL;
|
s_RestoreState = FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
COMMON_LOGGER("Sync eTicket\n");
|
||||||
s_RestoreState = SYNC_TICKET;
|
s_RestoreState = SYNC_TICKET;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1193,15 +1199,7 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
|||||||
case SYNC_TICKET:
|
case SYNC_TICKET:
|
||||||
{
|
{
|
||||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT, "Shop Connect",
|
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT, "Shop Connect",
|
||||||
"Shop Connect Finished.\n", "Shop Connect Failed. Retrying...", UPLOAD_IVS);
|
"Shop Connect Finished.\n", "Shop Connect Failed. Retrying...", DOWNLOAD_TWL);
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
// 本体更新が発生しない状況でNUPすることでIVSが送信される
|
|
||||||
// UPLOAD_IN_PROGRESSでのNUP実行後、サーバが更新されないという前提なので注意
|
|
||||||
case UPLOAD_IVS:
|
|
||||||
{
|
|
||||||
UpdateOperation(manager, operationMessage, DOWNLOAD_TWL);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@ -47,7 +47,7 @@ namespace
|
|||||||
nn::Result s_ShopResult = nn::ResultSuccess();
|
nn::Result s_ShopResult = nn::ResultSuccess();
|
||||||
|
|
||||||
const size_t UNREGISTER_THREAD_STACK_SIZE = 0x1000;
|
const size_t UNREGISTER_THREAD_STACK_SIZE = 0x1000;
|
||||||
nn::os::Thread s_UnregisterThread;
|
nn::os::Thread s_ShopOperationThread;
|
||||||
nn::os::StackBuffer<UNREGISTER_THREAD_STACK_SIZE> s_UnregisterThreadStack;
|
nn::os::StackBuffer<UNREGISTER_THREAD_STACK_SIZE> s_UnregisterThreadStack;
|
||||||
|
|
||||||
const size_t EC_BUFFER_SIZE = 128 * 1024;
|
const size_t EC_BUFFER_SIZE = 128 * 1024;
|
||||||
@ -194,45 +194,52 @@ void PrintECAccountInfo(const ECAccountInfo& accountInfo)
|
|||||||
|
|
||||||
nn::Result PrintNetworkSetting()
|
nn::Result PrintNetworkSetting()
|
||||||
{
|
{
|
||||||
|
nn::Result result;
|
||||||
nn::ac::NetworkSetting networkSetting;
|
nn::ac::NetworkSetting networkSetting;
|
||||||
NN_UTIL_RETURN_IF_FAILED(nn::ac::LoadNetworkSetting(0, networkSetting));
|
result = nn::ac::LoadNetworkSetting(0, networkSetting);
|
||||||
COMMON_LOGGER("SSID: %s\n", networkSetting.wireless.essidSecurity.ssid);
|
COMMON_LOGGER("SSID: %s\n", networkSetting.wireless.essidSecurity.ssid);
|
||||||
COMMON_LOGGER("DNS : %d.%d.%d.%d\n",
|
COMMON_LOGGER("DNS : %d.%d.%d.%d\n",
|
||||||
networkSetting.ip.dns[0][0], networkSetting.ip.dns[0][1],
|
networkSetting.ip.dns[0][0], networkSetting.ip.dns[0][1],
|
||||||
networkSetting.ip.dns[0][2], networkSetting.ip.dns[0][3]);
|
networkSetting.ip.dns[0][2], networkSetting.ip.dns[0][3]);
|
||||||
return nn::ResultSuccess();
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
nn::Result ConnectNetwork()
|
nn::Result ConnectNetwork()
|
||||||
{
|
{
|
||||||
nn::Result result = nn::ResultSuccess();
|
nn::Result result;
|
||||||
nn::ac::Config config;
|
nn::ac::Config config;
|
||||||
|
|
||||||
result = nn::ac::CreateDefaultConfig(&config);
|
result = nn::ac::CreateDefaultConfig(&config);
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::ac::ConnectWithoutEula(config);
|
result = nn::ac::ConnectWithoutEula(config);
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
NN_LOG("Success nn::ac::ConnectWithoutEula\n");
|
NN_LOG("Success nn::ac::ConnectWithoutEula\n");
|
||||||
|
|
||||||
NN_UTIL_RETURN_IF_FAILED(PrintNetworkSetting());
|
result = PrintNetworkSetting();
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
nn::Result InitializeInternal()
|
nn::Result InitializeInternal()
|
||||||
{
|
{
|
||||||
nn::Result result = nn::ResultSuccess();
|
nn::Result result;
|
||||||
|
|
||||||
result = nn::ac::InitializeInternal();
|
result = nn::ac::InitializeInternal();
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
result = ConnectNetwork();
|
result = ConnectNetwork();
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
nn::Result FinalizeInternal()
|
nn::Result FinalizeInternal()
|
||||||
@ -244,7 +251,7 @@ nn::Result FinalizeInternal()
|
|||||||
result = nn::ac::FinalizeInternal();
|
result = nn::ac::FinalizeInternal();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -344,10 +351,13 @@ namespace
|
|||||||
// メイン関数
|
// メイン関数
|
||||||
void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
||||||
{
|
{
|
||||||
|
nn::Result result;
|
||||||
|
|
||||||
s_ShopResult = nn::ResultSuccess();
|
s_ShopResult = nn::ResultSuccess();
|
||||||
|
|
||||||
NN_LOG("util::ac::Initialize\n");
|
NN_LOG("util::ac::Initialize\n");
|
||||||
nn::Result result = InitializeInternal();
|
result = InitializeInternal();
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
|
|
||||||
switch(param.op)
|
switch(param.op)
|
||||||
@ -361,16 +371,8 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
|||||||
|
|
||||||
case SHOP_OPERATION_GET_IVS:
|
case SHOP_OPERATION_GET_IVS:
|
||||||
{
|
{
|
||||||
result = ShopOperationConnect();
|
result = ShopOperationInitialize();
|
||||||
if(result.IsFailure())
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
{
|
|
||||||
// ResultNeedGetIvsは発生するのでエラーとしない
|
|
||||||
if(result != nn::nim::ResultNeedGetIvs())
|
|
||||||
{
|
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// IVSを取得する
|
// IVSを取得する
|
||||||
result = nn::nim::Shop::ImportIvsFromInfrastructure();
|
result = nn::nim::Shop::ImportIvsFromInfrastructure();
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
@ -400,10 +402,16 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHOP_OPERATION_DOWNLOAD_TITLE:
|
case SHOP_OPERATION_CONNECT_WITHOUT_CLOSE:
|
||||||
{
|
{
|
||||||
result = ShopOperationConnect();
|
result = ShopOperationConnect();
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
case SHOP_OPERATION_DOWNLOAD_TITLE:
|
||||||
NN_LOG("Try Download %016llx\n", param.config.titleId);
|
NN_LOG("Try Download %016llx\n", param.config.titleId);
|
||||||
result = nn::nim::Shop::StartDownload(param.config);
|
result = nn::nim::Shop::StartDownload(param.config);
|
||||||
|
|
||||||
@ -473,12 +481,12 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
|||||||
|
|
||||||
void StartShopOperationSingle(ShopOperation op, nn::nim::TitleConfig config)
|
void StartShopOperationSingle(ShopOperation op, nn::nim::TitleConfig config)
|
||||||
{
|
{
|
||||||
NN_LOG("Start ShopOperationSingle\n");
|
NN_LOG("Start ShopOperationSingle, %s\n", SHOP_OPERATION_STR[op]);
|
||||||
|
|
||||||
ShopThreadParam param;
|
ShopThreadParam param;
|
||||||
param.op = op;
|
param.op = op;
|
||||||
param.config = config;
|
param.config = config;
|
||||||
s_UnregisterThread.Start(ShopOperationSingleThreadFunc, param, s_UnregisterThreadStack);
|
s_ShopOperationThread.Start(ShopOperationSingleThreadFunc, param, s_UnregisterThreadStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartShopOperationSingle(ShopOperation op)
|
void StartShopOperationSingle(ShopOperation op)
|
||||||
@ -486,20 +494,20 @@ void StartShopOperationSingle(ShopOperation op)
|
|||||||
ShopThreadParam param;
|
ShopThreadParam param;
|
||||||
param.op = op;
|
param.op = op;
|
||||||
|
|
||||||
NN_LOG("Start ShopOperationSingle\n");
|
NN_LOG("Start ShopOperationSingle, %s\n", SHOP_OPERATION_STR[op]);
|
||||||
s_UnregisterThread.Start(ShopOperationSingleThreadFunc, param, s_UnregisterThreadStack);
|
s_ShopOperationThread.Start(ShopOperationSingleThreadFunc, param, s_UnregisterThreadStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FinalizeShopOperationSingle()
|
void FinalizeShopOperationSingle()
|
||||||
{
|
{
|
||||||
NN_LOG("Finalize ShopOperationSingle\n");
|
NN_LOG("Finalize ShopOperationSingle\n");
|
||||||
s_UnregisterThread.Join();
|
s_ShopOperationThread.Join();
|
||||||
s_UnregisterThread.Finalize();
|
s_ShopOperationThread.Finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsShopOperationSingleFinished()
|
bool IsShopOperationSingleFinished()
|
||||||
{
|
{
|
||||||
return s_UnregisterThread.IsValid() && !s_UnregisterThread.IsAlive();
|
return s_ShopOperationThread.IsValid() && !s_ShopOperationThread.IsAlive();
|
||||||
}
|
}
|
||||||
|
|
||||||
nn::Result GetShopOperationSingleResult()
|
nn::Result GetShopOperationSingleResult()
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
#include <nn.h>
|
#include <nn.h>
|
||||||
#include <nn/nim.h>
|
#include <nn/nim.h>
|
||||||
|
|
||||||
#define CONSOLE_RESTORE_TIN "987654321"
|
const char* const CONSOLE_RESTORE_TIN = "987654321";
|
||||||
|
|
||||||
namespace ConsoleRestore
|
namespace ConsoleRestore
|
||||||
{
|
{
|
||||||
@ -29,11 +29,21 @@ typedef enum SHOP_OPERATION
|
|||||||
SHOP_OPERATION_CONNECT, // Shop::ConnectしてCloseするだけ
|
SHOP_OPERATION_CONNECT, // Shop::ConnectしてCloseするだけ
|
||||||
SHOP_OPERATION_GET_IVS, // Shop::ImportIvsFromInfrastructureを実行
|
SHOP_OPERATION_GET_IVS, // Shop::ImportIvsFromInfrastructureを実行
|
||||||
SHOP_OPERATION_UNREGISTER, // Shop::Unregisterを実行
|
SHOP_OPERATION_UNREGISTER, // Shop::Unregisterを実行
|
||||||
|
SHOP_OPERATION_CONNECT_WITHOUT_CLOSE, // Shop::ConnectしてCloseしない
|
||||||
SHOP_OPERATION_DOWNLOAD_TITLE, // Titleをダウンロードする
|
SHOP_OPERATION_DOWNLOAD_TITLE, // Titleをダウンロードする
|
||||||
SHOP_OPERATION_NUM_MAX
|
SHOP_OPERATION_NUM_MAX
|
||||||
|
|
||||||
} ShopOperation;
|
} ShopOperation;
|
||||||
|
|
||||||
|
const char* const SHOP_OPERATION_STR[] =
|
||||||
|
{
|
||||||
|
"Connect",
|
||||||
|
"Get Ivs",
|
||||||
|
"Unregister",
|
||||||
|
"Connect Without Close",
|
||||||
|
"Download Title"
|
||||||
|
};
|
||||||
|
|
||||||
void StartShopOperationSingle(ShopOperation op, nn::nim::TitleConfig config);
|
void StartShopOperationSingle(ShopOperation op, nn::nim::TitleConfig config);
|
||||||
void StartShopOperationSingle(ShopOperation op);
|
void StartShopOperationSingle(ShopOperation op);
|
||||||
void FinalizeShopOperationSingle();
|
void FinalizeShopOperationSingle();
|
||||||
|
|||||||
@ -32,8 +32,8 @@ namespace
|
|||||||
bit8 s_buffer1[400 * 1024];
|
bit8 s_buffer1[400 * 1024];
|
||||||
|
|
||||||
const size_t TITLE_DOWNLOADER_STACK_SIZE = 0x1000;
|
const size_t TITLE_DOWNLOADER_STACK_SIZE = 0x1000;
|
||||||
nn::os::Thread s_TitleDownloaderThread;
|
nn::os::Thread s_TitleDownloaderThread;
|
||||||
nn::os::StackBuffer<TITLE_DOWNLOADER_STACK_SIZE> s_TitleDownloaderThreadStack;
|
nn::os::StackBuffer<TITLE_DOWNLOADER_STACK_SIZE> s_TitleDownloaderThreadStack;
|
||||||
|
|
||||||
nn::fs::MediaType GetMediaType(const ES_NAMESPACE::ESTitleId titleId)
|
nn::fs::MediaType GetMediaType(const ES_NAMESPACE::ESTitleId titleId)
|
||||||
{
|
{
|
||||||
@ -71,8 +71,18 @@ nn::Result GetEntry(ES_NAMESPACE::ESTitleId titleId, EC_NAMESPACE::ECTitleCatalo
|
|||||||
NULL, 0,
|
NULL, 0,
|
||||||
&titleCatalog, s_buffer1, sizeof(s_buffer1));
|
&titleCatalog, s_buffer1, sizeof(s_buffer1));
|
||||||
|
|
||||||
*entry = &(titleCatalog->entries[0]);
|
if(result.IsSuccess())
|
||||||
|
{
|
||||||
|
if(titleCatalog->nEntries == 1)
|
||||||
|
{
|
||||||
|
*entry = &(titleCatalog->entries[0]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return nn::MakeStatusResult(nn::Result::SUMMARY_NOT_FOUND, nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,10 +190,12 @@ void TitleDownloader::Start()
|
|||||||
|
|
||||||
for(u8 i = 0; i < m_TwlTiteNum; i++)
|
for(u8 i = 0; i < m_TwlTiteNum; i++)
|
||||||
{
|
{
|
||||||
|
StartShopOperationSingle(SHOP_OPERATION_CONNECT_WITHOUT_CLOSE);
|
||||||
WaitShopOperationAndFinalize();
|
WaitShopOperationAndFinalize();
|
||||||
|
|
||||||
nn::nim::TitleConfig config;
|
nn::nim::TitleConfig config;
|
||||||
result = GetTitleConfig(m_ProgramIdList[i], &config);
|
result = GetTitleConfig(m_ProgramIdList[i], &config);
|
||||||
|
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
StartShopOperationSingle(SHOP_OPERATION_DOWNLOAD_TITLE, config);
|
StartShopOperationSingle(SHOP_OPERATION_DOWNLOAD_TITLE, config);
|
||||||
@ -194,9 +206,8 @@ void TitleDownloader::Start()
|
|||||||
|
|
||||||
nn::Result TitleDownloader::ListUp()
|
nn::Result TitleDownloader::ListUp()
|
||||||
{
|
{
|
||||||
COMMON_LOGGER("Export TwlTitle List.\n");
|
COMMON_LOGGER("Read TwlTitle List.\n");
|
||||||
|
|
||||||
nn::Result result;
|
|
||||||
size_t heapSize = common::HeapManager::GetHeap()->GetAllocatableSize();
|
size_t heapSize = common::HeapManager::GetHeap()->GetAllocatableSize();
|
||||||
char* titleListBuf = reinterpret_cast<char*> (common::HeapManager::GetHeap()->Allocate(heapSize));
|
char* titleListBuf = reinterpret_cast<char*> (common::HeapManager::GetHeap()->Allocate(heapSize));
|
||||||
|
|
||||||
@ -206,23 +217,24 @@ nn::Result TitleDownloader::ListUp()
|
|||||||
common::SdReaderWriter sdReader;
|
common::SdReaderWriter sdReader;
|
||||||
m_Result = sdReader.ReadBufWithCmac(common::TWL_TITLELIST_PATHNAME, titleListBuf, heapSize, &readSize);
|
m_Result = sdReader.ReadBufWithCmac(common::TWL_TITLELIST_PATHNAME, titleListBuf, heapSize, &readSize);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(m_Result);
|
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(m_Result);
|
||||||
|
if (m_Result.IsSuccess())
|
||||||
u32 listHead = 0;
|
|
||||||
for (u32 i = 0; i < readSize; i++)
|
|
||||||
{
|
{
|
||||||
if (titleListBuf[i] == '\n')
|
u32 listHead = 0;
|
||||||
|
for (u32 i = 0; i < readSize; i++)
|
||||||
{
|
{
|
||||||
char ProgramIdStr[32];
|
if (titleListBuf[i] == '\n')
|
||||||
char *error;
|
{
|
||||||
std::memcpy(ProgramIdStr, &titleListBuf[listHead], i - listHead);
|
char ProgramIdStr[32];
|
||||||
m_ProgramIdList[m_TwlTiteNum] = std::strtoull(ProgramIdStr, &error, 16);
|
char *error;
|
||||||
m_TwlTiteNum++;
|
std::memcpy(ProgramIdStr, &titleListBuf[listHead], i - listHead);
|
||||||
NN_LOG("%016llx\n", m_ProgramIdList[m_TwlTiteNum - 1]);
|
m_ProgramIdList[m_TwlTiteNum] = std::strtoull(ProgramIdStr, &error, 16);
|
||||||
|
m_TwlTiteNum++;
|
||||||
|
NN_LOG("%016llx\n", m_ProgramIdList[m_TwlTiteNum - 1]);
|
||||||
|
|
||||||
listHead = i + 1;
|
listHead = i + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
common::HeapManager::GetHeap()->Free(titleListBuf);
|
common::HeapManager::GetHeap()->Free(titleListBuf);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -58,8 +58,6 @@ nn::os::StackBuffer<UPDATER_THREAD_STACK_SIZE> s_UpdaterThreadStack;
|
|||||||
|
|
||||||
u64 s_Progress = 0;
|
u64 s_Progress = 0;
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
nn::Result PrintNetworkSetting()
|
nn::Result PrintNetworkSetting()
|
||||||
{
|
{
|
||||||
nn::ac::NetworkSetting networkSetting;
|
nn::ac::NetworkSetting networkSetting;
|
||||||
@ -87,7 +85,7 @@ nn::Result ConnectNetwork()
|
|||||||
|
|
||||||
NN_UTIL_RETURN_IF_FAILED(PrintNetworkSetting());
|
NN_UTIL_RETURN_IF_FAILED(PrintNetworkSetting());
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
nn::Result InitializeInternal()
|
nn::Result InitializeInternal()
|
||||||
@ -100,7 +98,7 @@ nn::Result InitializeInternal()
|
|||||||
result = ConnectNetwork();
|
result = ConnectNetwork();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
nn::Result FinalizeInternal()
|
nn::Result FinalizeInternal()
|
||||||
@ -112,7 +110,9 @@ nn::Result FinalizeInternal()
|
|||||||
result = nn::ac::FinalizeInternal();
|
result = nn::ac::FinalizeInternal();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateThreadFunc()
|
void UpdateThreadFunc()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user