mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
アカウント移行のためのStateを追加
IVSを正しく取得できるように git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@239 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
56a51449b4
commit
878819630c
@ -106,6 +106,8 @@ typedef enum RestoreState
|
|||||||
UPDATE_DONE, // アップデート完了
|
UPDATE_DONE, // アップデート完了
|
||||||
NUP_ONLY_WAIT_SD_EJECT, // NUP_ONLYモードでSDカード抜き待ち
|
NUP_ONLY_WAIT_SD_EJECT, // NUP_ONLYモードでSDカード抜き待ち
|
||||||
NUP_ONLY_WAIT_NEXT, // NUP_ONLYモードでキー入力待ち
|
NUP_ONLY_WAIT_NEXT, // NUP_ONLYモードでキー入力待ち
|
||||||
|
TRANSFER_ACCOUNT, // アカウント転送を完了させる
|
||||||
|
TRANSFER_ACCOUNT_DONE, // アカウント転送完了
|
||||||
DOWNLOAD_IVS, // インフラからIVSを取得する
|
DOWNLOAD_IVS, // インフラからIVSを取得する
|
||||||
DOWNLOAD_IVS_DONE, // インフラからIVSを取得完了
|
DOWNLOAD_IVS_DONE, // インフラからIVSを取得完了
|
||||||
CHECK_IVS, // IVSとSDカードのセーブデータディレクトリの一致を確認
|
CHECK_IVS, // IVSとSDカードのセーブデータディレクトリの一致を確認
|
||||||
@ -148,6 +150,7 @@ void CheckApSetting(common::HardwareStateManager& manager, ::std::vector<std::st
|
|||||||
void CheckNupExecuted(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
void CheckNupExecuted(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||||
void CheckDownloadIvs(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
void CheckDownloadIvs(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||||
void CheckAccountDeleted(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
void CheckAccountDeleted(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||||
|
void CheckAccountTransfered(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||||
void CheckWriteFinished(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
void CheckWriteFinished(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||||
void CheckReadIvs(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
void CheckReadIvs(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||||
void CheckConsoleInitialized(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
void CheckConsoleInitialized(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep);
|
||||||
@ -284,6 +287,7 @@ void CheckDownloadIvs(common::HardwareStateManager& manager, ::std::vector<std::
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
COMMON_LOGGER("Download IVS\n");
|
||||||
s_RestoreState = DOWNLOAD_IVS;
|
s_RestoreState = DOWNLOAD_IVS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,7 +299,7 @@ void CheckAccountDeleted(common::HardwareStateManager& manager, ::std::vector<st
|
|||||||
// アカウント削除確認ファイルがあるか?
|
// アカウント削除確認ファイルがあるか?
|
||||||
if (common::ExistsDeleteAccountChecked())
|
if (common::ExistsDeleteAccountChecked())
|
||||||
{
|
{
|
||||||
CheckDownloadIvs(manager, message, goNextStep);
|
CheckAccountTransfered(manager, message, goNextStep);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -303,15 +307,31 @@ void CheckAccountDeleted(common::HardwareStateManager& manager, ::std::vector<st
|
|||||||
if(EqualsDeviceIdFileandDeviceId(manager).IsSuccess())
|
if(EqualsDeviceIdFileandDeviceId(manager).IsSuccess())
|
||||||
{
|
{
|
||||||
CreateDeleteAccountFinishedFile();
|
CreateDeleteAccountFinishedFile();
|
||||||
CheckDownloadIvs(manager, message, goNextStep);
|
CheckAccountTransfered(manager, message, goNextStep);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
COMMON_LOGGER("Delete Account\n");
|
||||||
s_RestoreState = DELETE_ACCOUNT;
|
s_RestoreState = DELETE_ACCOUNT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// アカウント移行済みかチェック
|
||||||
|
void CheckAccountTransfered(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep)
|
||||||
|
{
|
||||||
|
// アカウント移行確認ファイルがあるか?
|
||||||
|
if (common::ExistsTransferAccountChecked())
|
||||||
|
{
|
||||||
|
CheckDownloadIvs(manager, message, goNextStep);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
COMMON_LOGGER("Transfer Account\n");
|
||||||
|
s_RestoreState = TRANSFER_ACCOUNT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 書き込み完了かどうかチェック
|
// 書き込み完了かどうかチェック
|
||||||
void CheckWriteFinished(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep)
|
void CheckWriteFinished(common::HardwareStateManager& manager, ::std::vector<std::string>& message, bool& goNextStep)
|
||||||
{
|
{
|
||||||
@ -524,6 +544,13 @@ void ShopOperationSingleTemplate(
|
|||||||
{
|
{
|
||||||
ShopOperationSuccess(op, logMessage, nextState);
|
ShopOperationSuccess(op, logMessage, nextState);
|
||||||
}
|
}
|
||||||
|
else if(op == SHOP_OPERATION_CONNECT && nextState == TRANSFER_ACCOUNT_DONE &&
|
||||||
|
GetShopOperationSingleResult() == nn::nim::ResultNeedGetIvs())
|
||||||
|
|
||||||
|
{
|
||||||
|
NN_LOG("ResultNeedGetIvs\n");
|
||||||
|
ShopOperationSuccess(op, logMessage, nextState);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (s_ShopOperationRetryCount[op]++ < RETRY_MAX)
|
if (s_ShopOperationRetryCount[op]++ < RETRY_MAX)
|
||||||
@ -942,6 +969,20 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case TRANSFER_ACCOUNT:
|
||||||
|
{
|
||||||
|
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT, "Transfer Account",
|
||||||
|
"Transfer Account Finished.\n", "Transfer Account Failed. Retrying...", TRANSFER_ACCOUNT_DONE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TRANSFER_ACCOUNT_DONE:
|
||||||
|
{
|
||||||
|
CreateTransferAccountFinishedFile();
|
||||||
|
s_RestoreState = STARTUP;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case DELETE_ACCOUNT:
|
case DELETE_ACCOUNT:
|
||||||
{
|
{
|
||||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_UNREGISTER, "Deleting Account",
|
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_UNREGISTER, "Deleting Account",
|
||||||
@ -1151,7 +1192,7 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
|||||||
|
|
||||||
case SYNC_TICKET:
|
case SYNC_TICKET:
|
||||||
{
|
{
|
||||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT_ONLY, "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...", UPLOAD_IVS);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -916,32 +916,45 @@ bool IsImportFinished()
|
|||||||
|
|
||||||
void CreateWriteFinishedFile()
|
void CreateWriteFinishedFile()
|
||||||
{
|
{
|
||||||
CreateEmptyFile(common::WRITE_FINISHED_CHECK_PATHNAME);
|
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_WRITE_FINISHED]);
|
||||||
|
common::ClearFileCheck(common::EXISTS_WRITE_FINISHED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateConsoleInitializedFile()
|
void CreateConsoleInitializedFile()
|
||||||
{
|
{
|
||||||
CreateEmptyFile(common::INITIALIZED_CHECK_PATHNAME);
|
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_CONSOLE_INTIALIZED]);
|
||||||
|
common::ClearFileCheck(common::EXISTS_CONSOLE_INTIALIZED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateUpdateFinishedFile()
|
void CreateUpdateFinishedFile()
|
||||||
{
|
{
|
||||||
CreateEmptyFile(common::UPDATE_CHECK_PATHNAME);
|
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_UPDATE_FINISHED]);
|
||||||
|
common::ClearFileCheck(common::EXISTS_UPDATE_FINISHED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateRtcSyncFinishedFile()
|
void CreateRtcSyncFinishedFile()
|
||||||
{
|
{
|
||||||
CreateEmptyFile(common::RTC_SYNC_CHECK_PATHNAME);
|
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_RTC_SYNC_FINISHED]);
|
||||||
|
common::ClearFileCheck(common::EXISTS_RTC_SYNC_FINISHED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateDownloadIvsFinishedFile()
|
void CreateDownloadIvsFinishedFile()
|
||||||
{
|
{
|
||||||
CreateEmptyFile(common::DOWNLOAD_IVS_CHECK_PATHNAME);
|
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_DOWNLOAD_IVS]);
|
||||||
|
common::ClearFileCheck(common::EXISTS_DOWNLOAD_IVS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateDeleteAccountFinishedFile()
|
void CreateDeleteAccountFinishedFile()
|
||||||
{
|
{
|
||||||
CreateEmptyFile(common::DELETE_ACCOUNT_CHECK_PATHNAME);
|
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_DELETE_ACCOUNT]);
|
||||||
|
common::ClearFileCheck(common::EXISTS_DELETE_ACCOUNT);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateTransferAccountFinishedFile()
|
||||||
|
{
|
||||||
|
CreateEmptyFile(common::FILENAME_TABLE[common::EXISTS_TRANSFER_ACCOUNT]);
|
||||||
|
common::ClearFileCheck(common::EXISTS_TRANSFER_ACCOUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 GetImportProgress()
|
u32 GetImportProgress()
|
||||||
|
|||||||
@ -42,6 +42,7 @@ void CreateConsoleInitializedFile();
|
|||||||
void CreateRtcSyncFinishedFile();
|
void CreateRtcSyncFinishedFile();
|
||||||
void CreateDownloadIvsFinishedFile();
|
void CreateDownloadIvsFinishedFile();
|
||||||
void CreateDeleteAccountFinishedFile();
|
void CreateDeleteAccountFinishedFile();
|
||||||
|
void CreateTransferAccountFinishedFile();
|
||||||
u32 GetImportProgress();
|
u32 GetImportProgress();
|
||||||
|
|
||||||
// NANDのごみを削除する
|
// NANDのごみを削除する
|
||||||
@ -54,7 +55,8 @@ const wchar_t* const CHECK_FILENAME_TABLE[] =
|
|||||||
common::WRITE_FINISHED_CHECK_PATHNAME,
|
common::WRITE_FINISHED_CHECK_PATHNAME,
|
||||||
common::RTC_SYNC_CHECK_PATHNAME,
|
common::RTC_SYNC_CHECK_PATHNAME,
|
||||||
common::DOWNLOAD_IVS_CHECK_PATHNAME,
|
common::DOWNLOAD_IVS_CHECK_PATHNAME,
|
||||||
common::DELETE_ACCOUNT_CHECK_PATHNAME
|
common::DELETE_ACCOUNT_CHECK_PATHNAME,
|
||||||
|
common::TRANSFER_ACCOUNT_CHECK_PATHNAME
|
||||||
};
|
};
|
||||||
|
|
||||||
void DeleteAllCheckFiles();
|
void DeleteAllCheckFiles();
|
||||||
|
|||||||
@ -50,8 +50,9 @@ const size_t UNREGISTER_THREAD_STACK_SIZE = 0x1000;
|
|||||||
nn::os::Thread s_UnregisterThread;
|
nn::os::Thread s_UnregisterThread;
|
||||||
nn::os::StackBuffer<UNREGISTER_THREAD_STACK_SIZE> s_UnregisterThreadStack;
|
nn::os::StackBuffer<UNREGISTER_THREAD_STACK_SIZE> s_UnregisterThreadStack;
|
||||||
|
|
||||||
static const size_t EC_BUFFER_SIZE = 128 * 1024;
|
const size_t EC_BUFFER_SIZE = 128 * 1024;
|
||||||
static u8 s_EcBufffer[EC_BUFFER_SIZE];
|
u8 s_EcBufffer[EC_BUFFER_SIZE];
|
||||||
|
bool s_IsNimShopInitialized = false;
|
||||||
|
|
||||||
struct ShopThreadParam
|
struct ShopThreadParam
|
||||||
{
|
{
|
||||||
@ -251,11 +252,11 @@ nn::Result FinalizeInternal()
|
|||||||
|
|
||||||
namespace ConsoleRestore{
|
namespace ConsoleRestore{
|
||||||
|
|
||||||
void ShopOperationConnect();
|
nn::Result ShopOperationConnect();
|
||||||
void ShopOperationFinalize();
|
nn::Result ShopOperationFinalize();
|
||||||
|
|
||||||
|
|
||||||
void ShopOperationConnect(ECAccountInfo** pAccountInfo)
|
nn::Result ShopOperationConnect(ECAccountInfo** pAccountInfo)
|
||||||
{
|
{
|
||||||
nn::Result result = nn::ResultSuccess();
|
nn::Result result = nn::ResultSuccess();
|
||||||
|
|
||||||
@ -264,22 +265,28 @@ void ShopOperationConnect(ECAccountInfo** pAccountInfo)
|
|||||||
-------------------------------------------------------------------- */
|
-------------------------------------------------------------------- */
|
||||||
NN_LOG("nim::Shop::Connect\n");
|
NN_LOG("nim::Shop::Connect\n");
|
||||||
result = nn::nim::Shop::Connect(pAccountInfo, s_EcBufffer, EC_BUFFER_SIZE);
|
result = nn::nim::Shop::Connect(pAccountInfo, s_EcBufffer, EC_BUFFER_SIZE);
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
PrintECAccountInfo(**pAccountInfo);
|
PrintECAccountInfo(**pAccountInfo);
|
||||||
NN_LOG("\n");
|
NN_LOG("\n");
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShopOperationInitialize()
|
nn::Result ShopOperationInitialize()
|
||||||
{
|
{
|
||||||
nn::Result result = nn::ResultSuccess();
|
nn::Result result = nn::ResultSuccess();
|
||||||
|
|
||||||
/* -------------------------------------------------------------------
|
/* -------------------------------------------------------------------
|
||||||
Initialize
|
Initialize
|
||||||
-------------------------------------------------------------------- */
|
-------------------------------------------------------------------- */
|
||||||
NN_LOG("nim::InitializeForShop\n");
|
if (!s_IsNimShopInitialized)
|
||||||
result = nn::nim::InitializeForShop();
|
{
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NN_LOG("nim::InitializeForShop\n");
|
||||||
|
result = nn::nim::InitializeForShop();
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
s_IsNimShopInitialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------------------------------
|
/* -------------------------------------------------------------------
|
||||||
SetParameter
|
SetParameter
|
||||||
@ -287,25 +294,32 @@ void ShopOperationInitialize()
|
|||||||
NN_LOG("nim::Shop::SetApplication Id\n");
|
NN_LOG("nim::Shop::SetApplication Id\n");
|
||||||
|
|
||||||
nn::nim::Shop::SetApplicationId();
|
nn::nim::Shop::SetApplicationId();
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
NN_LOG("nim::Shop::SetTIN\n");
|
NN_LOG("nim::Shop::SetTIN\n");
|
||||||
result = nn::nim::Shop::SetTin(CONSOLE_RESTORE_TIN);
|
result = nn::nim::Shop::SetTin(CONSOLE_RESTORE_TIN);
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShopOperationConnect()
|
nn::Result ShopOperationConnect()
|
||||||
{
|
{
|
||||||
ShopOperationInitialize();
|
nn::Result result;
|
||||||
|
result = ShopOperationInitialize();
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
/* -------------------------------------------------------------------
|
/* -------------------------------------------------------------------
|
||||||
Connect
|
Connect
|
||||||
-------------------------------------------------------------------- */
|
-------------------------------------------------------------------- */
|
||||||
ECAccountInfo* pAccountInfo;
|
ECAccountInfo* pAccountInfo;
|
||||||
ShopOperationConnect(&pAccountInfo);
|
result = ShopOperationConnect(&pAccountInfo);
|
||||||
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShopOperationFinalize()
|
nn::Result ShopOperationFinalize()
|
||||||
{
|
{
|
||||||
nn::Result result = nn::ResultSuccess();
|
nn::Result result = nn::ResultSuccess();
|
||||||
|
|
||||||
@ -314,11 +328,14 @@ void ShopOperationFinalize()
|
|||||||
-------------------------------------------------------------------- */
|
-------------------------------------------------------------------- */
|
||||||
NN_LOG("nim::FinalizeForShop\n");
|
NN_LOG("nim::FinalizeForShop\n");
|
||||||
result = nn::nim::FinalizeForShop();
|
result = nn::nim::FinalizeForShop();
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
s_IsNimShopInitialized = false;
|
||||||
|
|
||||||
NN_LOG("util::ac::Finalize\n");
|
NN_LOG("util::ac::Finalize\n");
|
||||||
result = FinalizeInternal();
|
result = FinalizeInternal();
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
@ -329,34 +346,31 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
|||||||
{
|
{
|
||||||
s_ShopResult = nn::ResultSuccess();
|
s_ShopResult = nn::ResultSuccess();
|
||||||
|
|
||||||
if(param.op == SHOP_OPERATION_CLOSE_WITHOUT_CONNECT)
|
|
||||||
{
|
|
||||||
ShopOperationFinalize();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
NN_LOG("util::ac::Initialize\n");
|
NN_LOG("util::ac::Initialize\n");
|
||||||
InitializeInternal();
|
nn::Result result = InitializeInternal();
|
||||||
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
nn::Result result = nn::ResultSuccess();
|
|
||||||
|
|
||||||
switch(param.op)
|
switch(param.op)
|
||||||
{
|
{
|
||||||
case SHOP_OPERATION_CONNECT_WITHOUT_CLOSE:
|
case SHOP_OPERATION_CONNECT:
|
||||||
{
|
{
|
||||||
ShopOperationConnect();
|
result = ShopOperationConnect();
|
||||||
return;
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
}
|
|
||||||
|
|
||||||
case SHOP_OPERATION_CONNECT_ONLY:
|
|
||||||
{
|
|
||||||
ShopOperationConnect();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHOP_OPERATION_GET_IVS:
|
case SHOP_OPERATION_GET_IVS:
|
||||||
{
|
{
|
||||||
ShopOperationConnect();
|
result = ShopOperationConnect();
|
||||||
|
if(result.IsFailure())
|
||||||
|
{
|
||||||
|
// 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);
|
||||||
@ -365,9 +379,11 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
|||||||
|
|
||||||
case SHOP_OPERATION_UNREGISTER:
|
case SHOP_OPERATION_UNREGISTER:
|
||||||
{
|
{
|
||||||
ShopOperationInitialize();
|
result = ShopOperationInitialize();
|
||||||
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
ECAccountInfo* pAccountInfo;
|
ECAccountInfo* pAccountInfo;
|
||||||
ShopOperationConnect(&pAccountInfo);
|
result = ShopOperationConnect(&pAccountInfo);
|
||||||
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
if (pAccountInfo->accountStatus && pAccountInfo->accountStatus[0] == 'R')
|
if (pAccountInfo->accountStatus && pAccountInfo->accountStatus[0] == 'R')
|
||||||
{
|
{
|
||||||
/* ---------------------------------------------------------------
|
/* ---------------------------------------------------------------
|
||||||
@ -386,6 +402,8 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
|||||||
|
|
||||||
case SHOP_OPERATION_DOWNLOAD_TITLE:
|
case SHOP_OPERATION_DOWNLOAD_TITLE:
|
||||||
{
|
{
|
||||||
|
result = ShopOperationConnect();
|
||||||
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
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);
|
||||||
|
|
||||||
@ -447,7 +465,8 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShopOperationFinalize();
|
result = ShopOperationFinalize();
|
||||||
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,11 +26,9 @@ namespace ConsoleRestore
|
|||||||
|
|
||||||
typedef enum SHOP_OPERATION
|
typedef enum SHOP_OPERATION
|
||||||
{
|
{
|
||||||
SHOP_OPERATION_CONNECT_ONLY, // 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_CLOSE_WITHOUT_CONNECT, // Shop::ConnectせずいきなりCloseする
|
|
||||||
SHOP_OPERATION_DOWNLOAD_TITLE, // Titleをダウンロードする
|
SHOP_OPERATION_DOWNLOAD_TITLE, // Titleをダウンロードする
|
||||||
SHOP_OPERATION_NUM_MAX
|
SHOP_OPERATION_NUM_MAX
|
||||||
|
|
||||||
|
|||||||
@ -180,7 +180,6 @@ 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;
|
||||||
|
|||||||
@ -65,6 +65,17 @@ bool ExistsFile(FileExistsCheck index)
|
|||||||
return s_FileExistsCheckeResult[index];
|
return s_FileExistsCheckeResult[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClearFileCheck(FileExistsCheck index)
|
||||||
|
{
|
||||||
|
if(index > EXISTS_MAX)
|
||||||
|
{
|
||||||
|
NN_LOG("Invalid File index!!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
s_FileExistsChecked[index] = false;
|
||||||
|
}
|
||||||
|
|
||||||
bool ExistsUpdateCheckedFile()
|
bool ExistsUpdateCheckedFile()
|
||||||
{
|
{
|
||||||
return ExistsFile(EXISTS_UPDATE_FINISHED);
|
return ExistsFile(EXISTS_UPDATE_FINISHED);
|
||||||
@ -120,6 +131,11 @@ bool ExistsDeleteAccountChecked()
|
|||||||
return ExistsFile(EXISTS_DELETE_ACCOUNT);
|
return ExistsFile(EXISTS_DELETE_ACCOUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ExistsTransferAccountChecked()
|
||||||
|
{
|
||||||
|
return ExistsFile(EXISTS_TRANSFER_ACCOUNT);
|
||||||
|
}
|
||||||
|
|
||||||
bool ExistsDownloadIvsCheckedFile()
|
bool ExistsDownloadIvsCheckedFile()
|
||||||
{
|
{
|
||||||
return ExistsFile(EXISTS_DOWNLOAD_IVS);
|
return ExistsFile(EXISTS_DOWNLOAD_IVS);
|
||||||
|
|||||||
@ -34,6 +34,7 @@ typedef enum FILE_EXISTS_CHECK
|
|||||||
EXISTS_VERSION_DATA,
|
EXISTS_VERSION_DATA,
|
||||||
EXISTS_REGION_DATA,
|
EXISTS_REGION_DATA,
|
||||||
EXISTS_DELETE_ACCOUNT,
|
EXISTS_DELETE_ACCOUNT,
|
||||||
|
EXISTS_TRANSFER_ACCOUNT,
|
||||||
EXISTS_DOWNLOAD_IVS,
|
EXISTS_DOWNLOAD_IVS,
|
||||||
EXISTS_MAX
|
EXISTS_MAX
|
||||||
} FileExistsCheck;
|
} FileExistsCheck;
|
||||||
@ -51,6 +52,7 @@ const wchar_t* const FILENAME_TABLE[EXISTS_MAX] =
|
|||||||
common::VERSION_DATA_PATHNAME,
|
common::VERSION_DATA_PATHNAME,
|
||||||
common::REGION_DATA_PATHNAME,
|
common::REGION_DATA_PATHNAME,
|
||||||
common::DELETE_ACCOUNT_CHECK_PATHNAME,
|
common::DELETE_ACCOUNT_CHECK_PATHNAME,
|
||||||
|
common::TRANSFER_ACCOUNT_CHECK_PATHNAME,
|
||||||
common::DOWNLOAD_IVS_CHECK_PATHNAME
|
common::DOWNLOAD_IVS_CHECK_PATHNAME
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -66,8 +68,11 @@ bool ExistsCountryLanguageFile();
|
|||||||
bool ExistsVersionData();
|
bool ExistsVersionData();
|
||||||
bool ExistsRegionData();
|
bool ExistsRegionData();
|
||||||
bool ExistsDeleteAccountChecked();
|
bool ExistsDeleteAccountChecked();
|
||||||
|
bool ExistsTransferAccountChecked();
|
||||||
bool ExistsDownloadIvsCheckedFile();
|
bool ExistsDownloadIvsCheckedFile();
|
||||||
|
|
||||||
|
void ClearFileCheck(FileExistsCheck index);
|
||||||
|
|
||||||
void InitializeFileCheck();
|
void InitializeFileCheck();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,6 +51,7 @@ const wchar_t* const SDMC_ROOT_DIRECTORY_PATH = L"sdmc:/";
|
|||||||
const wchar_t* const WRITE_FINISHED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/WriteFinished";
|
const wchar_t* const WRITE_FINISHED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/WriteFinished";
|
||||||
const wchar_t* const UPDATE_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/UpdateFinished";
|
const wchar_t* const UPDATE_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/UpdateFinished";
|
||||||
const wchar_t* const DELETE_ACCOUNT_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/AccountDeletedChecked";
|
const wchar_t* const DELETE_ACCOUNT_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/AccountDeletedChecked";
|
||||||
|
const wchar_t* const TRANSFER_ACCOUNT_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/AccountTransferedChecked";
|
||||||
const wchar_t* const DOWNLOAD_IVS_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/DownloadIvsFinished";
|
const wchar_t* const DOWNLOAD_IVS_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/DownloadIvsFinished";
|
||||||
const wchar_t* const INITIALIZED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/ConsoleInitialized";
|
const wchar_t* const INITIALIZED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/ConsoleInitialized";
|
||||||
const wchar_t* const RTC_SYNC_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/RtcSyncFinished";
|
const wchar_t* const RTC_SYNC_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/RtcSyncFinished";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user