mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
プリインストールアプリダウンロード前にユーザのSDカードを確認するように
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@595 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
8bfa6718bd
commit
ef040ca312
@ -101,7 +101,7 @@ bool NeedsAcAdater(common::HardwareStateManager& manager)
|
||||
|
||||
bool HasValidRtcData()
|
||||
{
|
||||
return !s_CheckSdOnlyMode && !s_NupOnlyMode && !s_GetIvsOnlyMode;
|
||||
return !s_CheckSdOnlyMode && !s_NupOnlyMode && !s_GetIvsOnlyMode && s_DownloadPreinstallMode;
|
||||
}
|
||||
|
||||
typedef enum RestoreState
|
||||
@ -147,7 +147,13 @@ typedef enum RestoreState
|
||||
WAIT_SD_EJECT, // SDカードぬき待ち
|
||||
ALL_DONE, // すべて完了
|
||||
INITIALIZE_AND_SHUTDOWN, // 本体初期化後にシャットダウン中
|
||||
FAIL // 失敗
|
||||
FAIL, // 失敗
|
||||
|
||||
PREINSTALL_WAIT_USER_SD_INSERT, // プリインストールダウンロードモード・ユーザSD挿入待ち
|
||||
PREINSTALL_CHECK_SD, // プリインストールダウンロードモード・ユーザSDのチェック
|
||||
PREINSTALL_CHECK_SD_FAIL, // プリインストールダウンロードモード・ユーザSDのチェック失敗
|
||||
PREINSTALL_DOWNLOAD_APP, // プリインストールダウンロードモード・アプリダウンロード
|
||||
PREINSTALL_WAIT_USER_SD_EJECT // プリインストールダウンロードモード・ユーザSD抜き出し待ち
|
||||
} RestoreState;
|
||||
|
||||
|
||||
@ -247,6 +253,10 @@ void CheckNupExecuted(common::HardwareStateManager& manager, ::std::vector<std::
|
||||
{
|
||||
s_RestoreState = WAIT_START_DELETE_ACCOUNT;
|
||||
}
|
||||
else if(s_DownloadPreinstallMode)
|
||||
{
|
||||
s_RestoreState = SYNC_TICKET;
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckAccountDeleted(manager, message, goNextStep);
|
||||
@ -882,6 +892,7 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
||||
}
|
||||
break;
|
||||
|
||||
// ここから各設定で処理が分岐する
|
||||
case IMPORT_RTC:
|
||||
{
|
||||
result = nn::ResultSuccess();
|
||||
@ -995,6 +1006,7 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
||||
break;
|
||||
|
||||
case CHECK_IVS:
|
||||
case PREINSTALL_WAIT_USER_SD_INSERT:
|
||||
{
|
||||
operationMessage.push_back(::std::string("Insert User's SD Card"));
|
||||
}
|
||||
@ -1365,6 +1377,11 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT, "Shop Connect",
|
||||
"Shop Connect Finished.\n", "Shop Connect Failed. Retrying...", WAIT_SD_EJECT);
|
||||
}
|
||||
else if(s_DownloadPreinstallMode)
|
||||
{
|
||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT, "Shop Connect",
|
||||
"Shop Connect Finished.\n", "Shop Connect Failed. Retrying...", REPAIR_SIMPLE_ADDRESS_ID);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShopOperationSingleTemplate(manager, operationMessage, SHOP_OPERATION_CONNECT, "Shop Connect",
|
||||
@ -1472,7 +1489,14 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
||||
{
|
||||
if (IsTimeAdjustSuccessed())
|
||||
{
|
||||
s_RestoreState = WAIT_SD_EJECT;
|
||||
if(s_DownloadPreinstallMode)
|
||||
{
|
||||
s_RestoreState = PREINSTALL_WAIT_USER_SD_INSERT;
|
||||
}
|
||||
else
|
||||
{
|
||||
s_RestoreState = WAIT_SD_EJECT;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1581,6 +1605,46 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
||||
}
|
||||
break;
|
||||
|
||||
case PREINSTALL_CHECK_SD:
|
||||
{
|
||||
if (nn::fs::IsSdmcInserted())
|
||||
{
|
||||
NN_LOG("Check User's SD Card\n");
|
||||
// ユーザのSDカードにはAP設定ファイルは無いはず
|
||||
if (ExistsAPSetting())
|
||||
{
|
||||
NN_LOG("AP Setting Exists. Retry\n");
|
||||
s_RestoreState = PREINSTALL_WAIT_USER_SD_INSERT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(PreparePreinstallTitleDownload())
|
||||
{
|
||||
s_RestoreState = PREINSTALL_DOWNLOAD_APP;
|
||||
}
|
||||
else
|
||||
{
|
||||
COMMON_LOGGER("Error: Valid User Savedata Exists.\n");
|
||||
s_RestoreState = PREINSTALL_CHECK_SD_FAIL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case PREINSTALL_CHECK_SD_FAIL:
|
||||
{
|
||||
operationMessage.push_back(::std::string("Check User's SD Card Failed."));
|
||||
operationMessage.push_back(::std::string("Pull Out SD Card"));
|
||||
}
|
||||
break;
|
||||
|
||||
case PREINSTALL_DOWNLOAD_APP:
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1621,6 +1685,15 @@ void OnSdEjected()
|
||||
InitializeState();
|
||||
ClearFileReadResult();
|
||||
}
|
||||
else if(s_RestoreState == PREINSTALL_WAIT_USER_SD_INSERT)
|
||||
{
|
||||
s_RestoreState = PREINSTALL_CHECK_SD;
|
||||
}
|
||||
// ユーザのSDが抜かれてからFAILにする
|
||||
else if(s_RestoreState == PREINSTALL_CHECK_SD_FAIL)
|
||||
{
|
||||
s_RestoreState = FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
void OnSdInserted()
|
||||
|
||||
@ -25,7 +25,7 @@ namespace ConsoleRestore
|
||||
void StartTwlTitleDownload();
|
||||
|
||||
//! @brief SDカードをインポート可能状態にします
|
||||
//! @return すでに初期化済みかどうか
|
||||
//! @return 正常に初期化できたかどうか
|
||||
bool PreparePreinstallTitleDownload();
|
||||
|
||||
//! @brief 新たにスレッドを立て、プリインストールタイトルのダウンロードを開始します <BR/>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user