mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
プリインストールダウンロード後の処理を追加
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@600 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
93ce99d51d
commit
8055ccf482
@ -101,7 +101,7 @@ bool NeedsAcAdater(common::HardwareStateManager& manager)
|
|||||||
|
|
||||||
bool HasValidRtcData()
|
bool HasValidRtcData()
|
||||||
{
|
{
|
||||||
return !s_CheckSdOnlyMode && !s_NupOnlyMode && !s_GetIvsOnlyMode && s_DownloadPreinstallMode;
|
return !s_CheckSdOnlyMode && !s_NupOnlyMode && !s_GetIvsOnlyMode && !s_DownloadPreinstallMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef enum RestoreState
|
typedef enum RestoreState
|
||||||
@ -149,12 +149,15 @@ typedef enum RestoreState
|
|||||||
INITIALIZE_AND_SHUTDOWN, // 本体初期化後にシャットダウン中
|
INITIALIZE_AND_SHUTDOWN, // 本体初期化後にシャットダウン中
|
||||||
FAIL, // 失敗
|
FAIL, // 失敗
|
||||||
|
|
||||||
PREINSTALL_WAIT_SYNC_TICKET, //プリインストールダウンロードモード・Aボタン待ち
|
// プリインストールダウンロードモード
|
||||||
PREINSTALL_WAIT_USER_SD_INSERT, // プリインストールダウンロードモード・ユーザSD挿入待ち
|
PREINSTALL_WAIT_SYNC_TICKET, // 開始ボタン待ち
|
||||||
PREINSTALL_CHECK_SD, // プリインストールダウンロードモード・ユーザSDのチェック
|
PREINSTALL_WAIT_USER_SD_INSERT, // ユーザSD挿入待ち
|
||||||
PREINSTALL_CHECK_SD_FAIL, // プリインストールダウンロードモード・ユーザSDのチェック失敗
|
PREINSTALL_CHECK_USER_SD, // ユーザSDのチェック
|
||||||
PREINSTALL_DOWNLOAD_APP, // プリインストールダウンロードモード・アプリダウンロード
|
PREINSTALL_CHECK_SD_FAIL, // ユーザSDのチェック失敗
|
||||||
PREINSTALL_WAIT_USER_SD_EJECT // プリインストールダウンロードモード・ユーザSD抜き出し待ち
|
PREINSTALL_FAIL_CHECK_REPAIR_SD, // ユーザSDのチェック失敗後の修理用SDのチェック
|
||||||
|
PREINSTALL_DOWNLOAD_APP, // アプリダウンロード
|
||||||
|
PREINSTALL_WAIT_USER_SD_EJECT, // ユーザSD抜き出し待ち
|
||||||
|
PREINSTALL_CHECK_REPAIR_SD // 修理用SDのチェック
|
||||||
} RestoreState;
|
} RestoreState;
|
||||||
|
|
||||||
#define BREAK_IF_STATE_CHANGED(saved, current) \
|
#define BREAK_IF_STATE_CHANGED(saved, current) \
|
||||||
@ -1636,9 +1639,9 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PREINSTALL_CHECK_SD:
|
case PREINSTALL_CHECK_USER_SD:
|
||||||
{
|
{
|
||||||
RestoreState saved = PREINSTALL_CHECK_SD;
|
RestoreState saved = PREINSTALL_CHECK_USER_SD;
|
||||||
if (nn::fs::IsSdmcInserted())
|
if (nn::fs::IsSdmcInserted())
|
||||||
{
|
{
|
||||||
NN_LOG("Check User's SD Card\n");
|
NN_LOG("Check User's SD Card\n");
|
||||||
@ -1669,13 +1672,68 @@ void ControlState(common::HardwareStateManager& manager, ::std::vector<std::stri
|
|||||||
case PREINSTALL_CHECK_SD_FAIL:
|
case PREINSTALL_CHECK_SD_FAIL:
|
||||||
{
|
{
|
||||||
operationMessage.push_back(::std::string("Check User's SD Card Failed."));
|
operationMessage.push_back(::std::string("Check User's SD Card Failed."));
|
||||||
operationMessage.push_back(::std::string("Pull Out SD Card"));
|
operationMessage.push_back(::std::string("Pull Out User's SD Card"));
|
||||||
|
operationMessage.push_back(::std::string("and Insert Repairing SD Card"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PREINSTALL_FAIL_CHECK_REPAIR_SD:
|
||||||
|
{
|
||||||
|
RestoreState saved = PREINSTALL_FAIL_CHECK_REPAIR_SD;
|
||||||
|
if (nn::fs::IsSdmcInserted())
|
||||||
|
{
|
||||||
|
NN_LOG("Check SD Card\n");
|
||||||
|
// 修理用SDカードにはAP設定ファイルがあるはず
|
||||||
|
if (ExistsAPSetting())
|
||||||
|
{
|
||||||
|
NN_LOG("AP Setting Exists. OK\n");
|
||||||
|
COMMON_LOGGER("Download Preinstall failed\n");
|
||||||
|
ChangeState(saved, s_RestoreState, FAIL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// SD挿抜が起こったら抜ける
|
||||||
|
BREAK_IF_STATE_CHANGED(saved, s_RestoreState);
|
||||||
|
ChangeState(saved, s_RestoreState, PREINSTALL_CHECK_SD_FAIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PREINSTALL_DOWNLOAD_APP:
|
case PREINSTALL_DOWNLOAD_APP:
|
||||||
{
|
{
|
||||||
|
COMMON_LOGGER("Download App Stub\n");
|
||||||
|
s_RestoreState = PREINSTALL_WAIT_USER_SD_EJECT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PREINSTALL_WAIT_USER_SD_EJECT:
|
||||||
|
{
|
||||||
|
operationMessage.push_back(::std::string("Pull out User's SD Card"));
|
||||||
|
operationMessage.push_back(::std::string("and Insert Repairing SD Card"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PREINSTALL_CHECK_REPAIR_SD:
|
||||||
|
{
|
||||||
|
RestoreState saved = PREINSTALL_CHECK_REPAIR_SD;
|
||||||
|
if (nn::fs::IsSdmcInserted())
|
||||||
|
{
|
||||||
|
NN_LOG("Check SD Card\n");
|
||||||
|
// 修理用SDカードにはAP設定ファイルがあるはず
|
||||||
|
if (ExistsAPSetting())
|
||||||
|
{
|
||||||
|
NN_LOG("AP Setting Exists. OK\n");
|
||||||
|
COMMON_LOGGER("Download Preinstall done\n");
|
||||||
|
ChangeState(saved, s_RestoreState, WAIT_SD_EJECT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// SD挿抜が起こったら抜ける
|
||||||
|
BREAK_IF_STATE_CHANGED(saved, s_RestoreState);
|
||||||
|
ChangeState(saved, s_RestoreState, PREINSTALL_WAIT_USER_SD_EJECT);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1715,19 +1773,19 @@ void OnSdEjected()
|
|||||||
// FAILのときは一旦電源を切らないと動かないようにしておく
|
// FAILのときは一旦電源を切らないと動かないようにしておく
|
||||||
// IVSチェック時はユーザのSDカードを挿入してもらうため
|
// IVSチェック時はユーザのSDカードを挿入してもらうため
|
||||||
// プリインストール時はユーザのSDカードを挿入してもらうため
|
// プリインストール時はユーザのSDカードを挿入してもらうため
|
||||||
else if (s_RestoreState != FAIL && s_RestoreState != CHECK_IVS && s_RestoreState != PREINSTALL_WAIT_USER_SD_INSERT)
|
else if (s_RestoreState != FAIL && s_RestoreState != CHECK_IVS && s_RestoreState != PREINSTALL_WAIT_USER_SD_INSERT
|
||||||
|
&& s_RestoreState != PREINSTALL_WAIT_USER_SD_EJECT && s_RestoreState != PREINSTALL_CHECK_SD_FAIL)
|
||||||
{
|
{
|
||||||
InitializeState();
|
InitializeState();
|
||||||
ClearFileReadResult();
|
ClearFileReadResult();
|
||||||
}
|
}
|
||||||
else if(s_RestoreState == PREINSTALL_CHECK_SD)
|
else if(s_RestoreState == PREINSTALL_CHECK_USER_SD)
|
||||||
{
|
{
|
||||||
s_RestoreState = PREINSTALL_WAIT_USER_SD_INSERT;
|
s_RestoreState = PREINSTALL_WAIT_USER_SD_INSERT;
|
||||||
}
|
}
|
||||||
// ユーザのSDが抜かれてからFAILにする
|
else if(s_RestoreState == PREINSTALL_CHECK_REPAIR_SD)
|
||||||
else if(s_RestoreState == PREINSTALL_CHECK_SD_FAIL)
|
|
||||||
{
|
{
|
||||||
s_RestoreState = FAIL;
|
s_RestoreState = PREINSTALL_WAIT_USER_SD_EJECT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1743,7 +1801,19 @@ void OnSdInserted()
|
|||||||
{
|
{
|
||||||
// SDカードが変わるのでファイルチェックは初期化する
|
// SDカードが変わるのでファイルチェックは初期化する
|
||||||
common::InitializeFileCheck();
|
common::InitializeFileCheck();
|
||||||
s_RestoreState = PREINSTALL_CHECK_SD;
|
s_RestoreState = PREINSTALL_CHECK_USER_SD;
|
||||||
|
}
|
||||||
|
else if(s_RestoreState == PREINSTALL_WAIT_USER_SD_EJECT)
|
||||||
|
{
|
||||||
|
// SDカードが変わるのでファイルチェックは初期化する
|
||||||
|
common::InitializeFileCheck();
|
||||||
|
s_RestoreState = PREINSTALL_CHECK_REPAIR_SD;
|
||||||
|
}
|
||||||
|
else if(s_RestoreState == PREINSTALL_CHECK_SD_FAIL)
|
||||||
|
{
|
||||||
|
// SDカードが変わるのでファイルチェックは初期化する
|
||||||
|
common::InitializeFileCheck();
|
||||||
|
s_RestoreState = PREINSTALL_FAIL_CHECK_REPAIR_SD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1448,7 +1448,7 @@ bool ReadSetting(bool* nupOnly, bool* getIvs, bool* checkSd, bool* skipNup, bool
|
|||||||
ReadSettingFlag(&configfileLoader, L"GET_SDCI", getIvs, "GET SDCI Mode.\n");
|
ReadSettingFlag(&configfileLoader, L"GET_SDCI", getIvs, "GET SDCI Mode.\n");
|
||||||
ReadSettingFlag(&configfileLoader, L"CHECK_SD", checkSd, "CHECK SD Mode.\n");
|
ReadSettingFlag(&configfileLoader, L"CHECK_SD", checkSd, "CHECK SD Mode.\n");
|
||||||
ReadSettingFlag(&configfileLoader, L"SKIP_NUP", skipNup, "Skip NUP Mode.\n");
|
ReadSettingFlag(&configfileLoader, L"SKIP_NUP", skipNup, "Skip NUP Mode.\n");
|
||||||
ReadSettingFlag(&configfileLoader, L"DL_PREINSTALL", dlPreinstall, "Download Preinstall App.\n");
|
ReadSettingFlag(&configfileLoader, L"DL_PREINSTALL", dlPreinstall, "Download PreInstall Application Mode.\n");
|
||||||
|
|
||||||
configfileLoader.Finalize();
|
configfileLoader.Finalize();
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user