From ad0301f4b09bd960d8389115326eb28e1d021d95 Mon Sep 17 00:00:00 2001 From: N2614 Date: Mon, 14 Mar 2011 12:14:49 +0000 Subject: [PATCH] =?UTF-8?q?CMAC=E6=A4=9C=E8=A8=BC=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E6=99=82=E3=81=ABFAIL=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=20Thread::IsAlive=E3=81=AE=E5=89=8D=E3=81=AB?= =?UTF-8?q?Thread::IsValid=E3=82=92=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@138 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../ConsoleBackup/Exporter.cpp | 2 +- .../ConsoleRestore/Controller.cpp | 86 +++++-- .../ConsoleRestore/Importer.cpp | 236 +++++++++++------- .../ConsoleRestore/Importer.h | 16 +- .../ConsoleRestore/Updater.cpp | 2 +- .../common/PlayHistoryManager.cpp | 16 +- .../common/PlayHistoryManager.h | 4 +- 7 files changed, 228 insertions(+), 134 deletions(-) diff --git a/trunk/ConsoleDataMigration/ConsoleBackup/Exporter.cpp b/trunk/ConsoleDataMigration/ConsoleBackup/Exporter.cpp index dd05021..ab63490 100644 --- a/trunk/ConsoleDataMigration/ConsoleBackup/Exporter.cpp +++ b/trunk/ConsoleDataMigration/ConsoleBackup/Exporter.cpp @@ -558,7 +558,7 @@ u32 GetProgress() bool IsExportFinished() { - return !s_ExportThread.IsAlive(); + return s_ExportThread.IsValid() && !s_ExportThread.IsAlive(); } } diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp index cbe5ae5..b456d5c 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "Controller.h" #include "FileChecker.h" @@ -90,6 +91,8 @@ bool s_PlayedSdPullOutCursor = false; bool s_ExistsVersionDataAnnotation = false; // バージョンデータを読んだかどうか bool s_ReadVersionDone = false; +// バージョンデータを読んだ結果 +nn::Result s_ReadVersionResult = nn::ResultSuccess(); // SDに書き込みできない警告サウンドを鳴らしたかどうか bool s_SdWriteProetctAnnotation = false; @@ -147,7 +150,7 @@ bool CheckAndReadAPSetting(::std::vector& operationMessage) return s_ReadSettingSuccess; } -bool CheckAndReadVersionData(::std::vector& operationMessage) +nn::Result CheckAndReadVersionData(::std::vector& operationMessage) { using namespace common; @@ -159,17 +162,18 @@ bool CheckAndReadVersionData(::std::vector& operationMessage) common::PlaySound(common::SOUND_ANNOTATION); } operationMessage.push_back(::std::string("Version Data does not exist!")); - return false; + return nn::Result(nn::Result::LEVEL_PERMANENT, nn::Result::SUMMARY_NOT_FOUND, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_NOT_FOUND); } // バージョン情報ファイルを読み込む if (!s_ReadVersionDone) { s_ReadVersionDone = true; - ReadVersionData(); + s_ReadVersionResult = ReadVersionData(); } - return s_ReadSettingSuccess; + return s_ReadVersionResult; } void PutAliveMessage(::std::vector& operationMessage, const char* str) @@ -195,14 +199,20 @@ void PutAliveMessage(::std::vector& operationMessage, const char* s i += 4; } -void ExecSyncMcuRtc() +nn::Result ExecSyncMcuRtc() { + nn::Result result = nn::ResultSuccess(); if(!common::ExistsRtcSyncFinishedFile()) { - ImportMcuRtc(); - // 時計を無効化する - CreateRtcSyncFinishedFile(); + result = ImportMcuRtc(); + if(result.IsSuccess()) + { + // RTCを同期完了ファイルを作る + CreateRtcSyncFinishedFile(); + } } + + return result; } // Zero NUP限定コード @@ -221,6 +231,7 @@ bool NeedsNup() void ControlState(::std::vector& operationMessage, bool& nextStep, bool& continueRestore) { using namespace common; + nn::Result result; // 状態遷移Controller switch (s_RestoreState) @@ -248,7 +259,14 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, break; } - CheckAndReadVersionData(operationMessage); + result = CheckAndReadVersionData(operationMessage); + if(result.IsFailure()) + { + // バージョン情報の取得に失敗 + error = true; + s_RestoreState = FAIL; + } + validApSetting = CheckAndReadAPSetting(operationMessage); if (!validApSetting) { @@ -287,8 +305,18 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, } else { - ::std::string serial(reinterpret_cast (ReadSerialNumber())); - operationMessage.push_back(::std::string("Serial Number in SD : ") + serial); + u8 serial[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN]; + result = ReadSerialNumber(serial); + if(result.IsSuccess()) + { + ::std::string serialStr(reinterpret_cast (serial)); + operationMessage.push_back(::std::string("Serial Number in SD : ") + serialStr); + } + else + { + error = true; + s_RestoreState = FAIL; + } } @@ -296,7 +324,7 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, if (ExistsRegionData()) { // リージョンデータは一致しているか? - if (!EqualsRegionDataandRegion()) + if (EqualsRegionDataandRegion().IsFailure()) { COMMON_LOGGER("Current Region and Region in SD differ!!\n"); error = true; @@ -416,11 +444,16 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, // Zero NUP限定 // RTC同期を行う // NUPされない場合があるのでここで同期 - ExecSyncMcuRtc(); - - s_RestoreState = RESTORE_TWL_SOUND; + result = ExecSyncMcuRtc(); + if(result <= nn::fs::ResultVerificationFailed()) + { + s_RestoreState = FAIL; + } + else + { + s_RestoreState = RESTORE_TWL_SOUND; + } } - } } break; @@ -460,9 +493,15 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, // アップデートを行う if(!s_ExecuteFgNup) { - ImportCountryLanguageData(); - StartFGNetworkUpdate(); - s_ExecuteFgNup = true; + if(ImportCountryLanguageData().IsSuccess()) + { + StartFGNetworkUpdate(); + s_ExecuteFgNup = true; + } + else + { + s_RestoreState = FAIL; + } } // 動いていることを表示 @@ -588,7 +627,10 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, } // データを読み込む - ImportData(); + if(ImportData().IsFailure()) + { + s_RestoreState = FAIL; + } // 処理が完了した if (continueRestore && IsImportFinished()) @@ -616,8 +658,7 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, if (init) { // ErrDispから引用 - // 権限をもらえば成功するはず - nn::Result result = nn::ns::CTR::InitializeForShell(); + result = nn::ns::CTR::InitializeForShell(); if (result.IsSuccess()) { COMMON_LOGGER("System Reboot.\n"); @@ -866,6 +907,7 @@ void InitializeState() s_NupOnlyMode = false; s_ReadVersionDone = false; s_SdWriteProetctAnnotation = false; + s_ReadVersionResult = nn::ResultSuccess(); } u32 GetProgress() diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp index d1f7a55..fb0df47 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp @@ -79,7 +79,7 @@ bool CreateEmptyFile(const wchar_t* path); // SDからNANDにセーブデータをコピーする void ImportSaveData(); // SDからNORにNORデータをコピーする -void ImportNorData(); +nn::Result ImportNorData(); // SDカードに保存してあるバージョン情報 common::VerDef s_SDVersionData; @@ -198,13 +198,14 @@ bool CreateEmptyFile(const wchar_t* path) } -u8* ReadSerialNumber() +nn::Result ReadSerialNumber(u8* serial) { - nn::Result result; + static nn::Result result = nn::ResultSuccess(); if(s_ReadSerialNumber) { - return s_SerialNo; + std::memcpy(serial, s_SerialNo, sizeof(s_SerialNo)); + return result; } COMMON_LOGGER("Read Serial Number in SD.\n"); @@ -219,21 +220,26 @@ u8* ReadSerialNumber() if(result.IsSuccess()) { std::memcpy(s_SerialNo, buf, sizeof(s_SerialNo)); - s_ReadSerialNumber = true; + std::memcpy(serial, s_SerialNo, sizeof(s_SerialNo)); + s_ReadSerialNumber = true; } common::HeapManager::GetHeap()->Free(buf); } - return s_SerialNo; + else + { + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + return result; } -bool EqualsDeviceIdFileandDeviceId() +nn::Result EqualsDeviceIdFileandDeviceId() { - nn::Result result; - static bool retval = false; + static nn::Result result = nn::ResultSuccess(); if(s_CheckedEqualsDeviceIdFileandDeviceId) { - return retval; + return result; } COMMON_LOGGER("Check Device Id\n"); @@ -245,24 +251,29 @@ bool EqualsDeviceIdFileandDeviceId() s_CheckedEqualsDeviceIdFileandDeviceId = true; if(result.IsSuccess()) { - retval = (GetDeviceId() == sdDeviceId); - return retval; + if(GetDeviceId() == sdDeviceId) + { + result = nn::ResultSuccess(); + return result; + } + + result = nn::Result(nn::Result::LEVEL_STATUS, nn::Result::SUMMARY_INVALID_RESULT_VALUE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_INVALID_RESULT_VALUE); + return result; } else { - retval = false; - return retval; + return result; } } -bool EqualsRegionDataandRegion() +nn::Result EqualsRegionDataandRegion() { - nn::Result result; - static bool retval = false; + static nn::Result result = nn::ResultSuccess(); if(s_CheckedEqualsRegionDataandRegion) { - return retval; + return result; } COMMON_LOGGER("Check Region\n"); @@ -281,24 +292,26 @@ bool EqualsRegionDataandRegion() if (result.IsSuccess()) { std::memcpy(&sdRegion, buf, sizeof(sdRegion)); - s_CheckedEqualsRegionDataandRegion = true; - if(result.IsSuccess()) - { - retval = (region == sdRegion); - } - else - { - retval = false; - } - } - else - { - retval = false; + s_CheckedEqualsRegionDataandRegion = true; + if(region == sdRegion) + { + result = nn::ResultSuccess(); + } + else + { + result = nn::Result(nn::Result::LEVEL_STATUS, nn::Result::SUMMARY_INVALID_RESULT_VALUE, + nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_INVALID_RESULT_VALUE); + } } common::HeapManager::GetHeap()->Free(buf); } + else + { + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } - return retval; + return result; } void SetCountry(nn::cfg::CTR::CfgCountryCode countryCode) @@ -339,9 +352,9 @@ void SetLanguage(nn::cfg::CTR::CfgLanguageCode languageCode) nn::cfg::nor::CTR::Finalize(); } -void ImportCountryLanguageData() +nn::Result ImportCountryLanguageData() { - nn::Result result; + nn::Result result = nn::ResultSuccess(); if (common::ExistsCountryLanguageFile()) { @@ -360,11 +373,9 @@ void ImportCountryLanguageData() SetLanguage(reinterpret_cast (buf)->language); } - else - { - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - } common::HeapManager::GetHeap()->Free(buf); + + NN_UTIL_RETURN_IF_FAILED(result); } } else @@ -419,6 +430,8 @@ void ImportCountryLanguageData() } } + + return result; } inline u8 DecimalToBcd(u8 param) @@ -429,10 +442,10 @@ inline u8 DecimalToBcd(u8 param) return (theTen << 4 | theOne); } -void ImportMcuRtc() +nn::Result ImportMcuRtc() { COMMON_LOGGER("Import RTC Data.\n"); - nn::Result result; + nn::Result result = nn::ResultSuccess(); nn::Handle handle = GetMcuHandle(); if(handle.IsValid()) @@ -469,16 +482,25 @@ void ImportMcuRtc() COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); } - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); common::HeapManager::GetHeap()->Free(buf); + NN_UTIL_RETURN_IF_FAILED(result); } else { COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); } } } + else + { + result = nn::Result(nn::Result::LEVEL_PERMANENT, nn::Result::SUMMARY_INVALID_STATE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_INVALID_HANDLE); + } + + return result; } void InitializeFileSystem() @@ -558,9 +580,9 @@ void InitializeFileSystem() nn::fs::InitializeCtrFileSystem(); } -void ImportIvs() +nn::Result ImportIvs() { - nn::Result result; + nn::Result result = nn::ResultSuccess(); nn::fs::FileOutputStream fos; size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize() / 2; @@ -606,17 +628,27 @@ void ImportIvs() else { COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); } } nn::fs::Unmount(common::NAND_ARCHIVE_NAME); } + else + { + return result; + } common::HeapManager::GetHeap()->Free(enc); } else { COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); } + + return result; } void ImportThreadFunc() @@ -678,11 +710,11 @@ void ImportSaveData() } -void ImportNorData() +nn::Result ImportNorData() { COMMON_LOGGER("Import NOR Data.\n"); - nn::Result result; + nn::Result result = nn::ResultSuccess(); nn::cfg::nor::CTR::Initialize(); @@ -714,24 +746,28 @@ void ImportNorData() COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); } - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); common::HeapManager::GetHeap()->Free(buf); + + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + NN_UTIL_RETURN_IF_FAILED(result); } else { COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); } + return result; } } -void ReadVersionData() +nn::Result ReadVersionData() { - nn::Result result; - + nn::Result result = nn::ResultSuccess(); std::memset(&s_SDVersionData, 0, sizeof(common::VerDef)); size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); @@ -755,14 +791,19 @@ void ReadVersionData() COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); } - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); common::HeapManager::GetHeap()->Free(buf); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + NN_UTIL_RETURN_IF_FAILED(result); } else { COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); } + + return result; } bool AlreadyExecutedNup() @@ -811,7 +852,7 @@ void FinalizeImportThread() bool IsImportFinished() { - return !s_ImportThread.IsAlive(); + return s_ImportThread.IsValid() && !s_ImportThread.IsAlive(); } void CreateWriteFinishedFile() @@ -1386,12 +1427,11 @@ void ExportCalData() common::SdMountManager::Unmount(); } -bool ImportCalData(common::CfgCalData *data) +nn::Result ImportCalData(common::CfgCalData *data) { using namespace nn::cfg::CTR::detail; - nn::Result result; - bool retval = false; + nn::Result result = nn::ResultSuccess(); COMMON_LOGGER("Import CalData\n"); @@ -1409,61 +1449,63 @@ bool ImportCalData(common::CfgCalData *data) { // SDから読み出し成功 std::memcpy(data, buf, readSize); - retval = true; - } - else - { - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); } common::HeapManager::GetHeap()->Free(buf); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + NN_UTIL_RETURN_IF_FAILED(result); + } + else + { + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); } common::SdMountManager::Unmount(); - return retval; + return result; } -void InitializeHardwareDependentSetting() +nn::Result InitializeHardwareDependentSetting() { using namespace nn::cfg::CTR::detail; nn::Result result = nn::ResultSuccess(); common::CfgCalData cfgCalData; - if (ImportCalData(&cfgCalData)) - { - result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL), - &cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData)); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = ImportCalData(&cfgCalData); + NN_UTIL_RETURN_IF_FAILED(result); - result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_LCD, NN_CFG_LCD_CAL_FLICKER), - &cfgCalData.lcdFlickerCfgData, sizeof(LcdFlickerCfgData)); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL), + &cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_FCRAM, NN_CFG_FCRAM_CAL_DELAY), - &cfgCalData.fcramCfgData, sizeof(FcramCfgData)); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_LCD, NN_CFG_LCD_CAL_FLICKER), + &cfgCalData.lcdFlickerCfgData, sizeof(LcdFlickerCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_RTC, NN_CFG_RTC_CAL_COMPENSATION), - &cfgCalData.rtcCfgData, sizeof(RtcCfgData)); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_FCRAM, NN_CFG_FCRAM_CAL_DELAY), &cfgCalData.fcramCfgData, + sizeof(FcramCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_GYROSCOPE), - &cfgCalData.gyroscopeCfgData, sizeof(GyroscopeCfgData)); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_RTC, NN_CFG_RTC_CAL_COMPENSATION), + &cfgCalData.rtcCfgData, sizeof(RtcCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_ACCELEROMETER), - &cfgCalData.accelCfgData, sizeof(AccelCfgData)); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_GYROSCOPE), + &cfgCalData.gyroscopeCfgData, sizeof(GyroscopeCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_CODEC, NN_CFG_CODEC_CAL), &cfgCalData.codecCfgData, - sizeof(CodecCfgData)); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_ACCELEROMETER), + &cfgCalData.accelCfgData, sizeof(AccelCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_MCU, NN_CFG_MCU_SLIDE_VOLUME), &cfgCalData.mcuSlideVolumeRangeCfgData, - sizeof(McuSlideVolumeRangeCfgData)); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_CODEC, NN_CFG_CODEC_CAL), &cfgCalData.codecCfgData, + sizeof(CodecCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - NN_LOG("Set cfgCalData\n"); - } + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_MCU, NN_CFG_MCU_SLIDE_VOLUME), + &cfgCalData.mcuSlideVolumeRangeCfgData, sizeof(McuSlideVolumeRangeCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + NN_LOG("Set cfgCalData\n"); COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); @@ -1472,21 +1514,28 @@ void InitializeHardwareDependentSetting() nn::cfg::CTR::init::ResetAnalogStickCalibration(); COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + return result; } -void ImportData() +nn::Result ImportData() { + static nn::Result result = nn::ResultSuccess(); static bool init = true; if(init) { + init = false; + // NANDのごみを削除する Cleanup(); // SDカードのIVSファイルを書き込む - ImportIvs(); + result = ImportIvs(); + NN_UTIL_RETURN_IF_FAILED(result); // NORデータを書き込む - ImportNorData(); + result = ImportNorData(); + NN_UTIL_RETURN_IF_FAILED(result); // 固体固有calLデータをSDカードに出力する // 本体初期化後はcal値が設定されている @@ -1494,10 +1543,9 @@ void ImportData() // SDカードのセーブデータをNANDに書き込む ImportSaveData(); - - init = false; } + return result; } } diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h index bdd4a93..8c31c75 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h @@ -23,15 +23,15 @@ namespace ConsoleRestore { -bool EqualsDeviceIdFileandDeviceId(); -bool EqualsRegionDataandRegion(); -u8* ReadSerialNumber(); +nn::Result EqualsDeviceIdFileandDeviceId(); +nn::Result EqualsRegionDataandRegion(); +nn::Result ReadSerialNumber(u8* serial); void FinalizeImportThread(); bool IsImportFinished(); void ImportTwlSoundData(); void ImportTwlPhotoData(); -void ImportData(); +nn::Result ImportData(); void CreateWriteFinishedFile(); void CreateUpdateFinishedFile(); void CreateConsoleInitializedFile(); @@ -71,8 +71,8 @@ struct CheckedNetworkSetting }; CheckedNetworkSetting* GetTempNetworkSetting(); -void ImportCountryLanguageData(); -void ImportMcuRtc(); +nn::Result ImportCountryLanguageData(); +nn::Result ImportMcuRtc(); // TWL写真領域を初期化してから本体初期化を行う void InitializeFileSystem(); @@ -83,10 +83,10 @@ void ClearFileReadResult(); void ImportPlayHistory(); // cfgのハードウェア固有領域をcal値で初期化します -void InitializeHardwareDependentSetting(); +nn::Result InitializeHardwareDependentSetting(); // SDカード上のバージョン情報を読みます -void ReadVersionData(); +nn::Result ReadVersionData(); // 移行元本体がNUP済みかどうか bool AlreadyExecutedNup(); diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Updater.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Updater.cpp index 5985375..5f0c4d8 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Updater.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Updater.cpp @@ -232,7 +232,7 @@ void FinishFGNetworkUpdate() bool IsNetworkUpdateFinished() { - return !s_UpdaterThread.IsAlive(); + return s_UpdaterThread.IsValid() && !s_UpdaterThread.IsAlive(); } u32 GetUpdateProgress() diff --git a/trunk/ConsoleDataMigration/common/PlayHistoryManager.cpp b/trunk/ConsoleDataMigration/common/PlayHistoryManager.cpp index bb8607e..64bde1a 100644 --- a/trunk/ConsoleDataMigration/common/PlayHistoryManager.cpp +++ b/trunk/ConsoleDataMigration/common/PlayHistoryManager.cpp @@ -78,9 +78,9 @@ void PlayHistoryManager::Export() SdMountManager::Unmount(); } -void PlayHistoryManager::GetPlayHistoryNums(size_t* nums) +nn::Result PlayHistoryManager::GetPlayHistoryNums(size_t* nums) { - nn::Result result; + nn::Result result = nn::ResultSuccess(); size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); @@ -95,13 +95,15 @@ void PlayHistoryManager::GetPlayHistoryNums(size_t* nums) *nums = *reinterpret_cast (buf); } COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + HeapManager::GetHeap()->Free(buf); } - HeapManager::GetHeap()->Free(buf); + return result; } -void PlayHistoryManager::Import() +nn::Result PlayHistoryManager::Import() { - nn::Result result; + nn::Result result = nn::ResultSuccess(); SdMountManager::Mount(); SdReaderWriter sd; @@ -161,10 +163,12 @@ void PlayHistoryManager::Import() else { NN_LOG("Failed Allocate Heap!! %s, %d", __FILE__, __LINE__); - return; + return result; } SdMountManager::Unmount(); + + return result; } void PlayHistoryManager::Dump() diff --git a/trunk/ConsoleDataMigration/common/PlayHistoryManager.h b/trunk/ConsoleDataMigration/common/PlayHistoryManager.h index 916741b..73afb52 100644 --- a/trunk/ConsoleDataMigration/common/PlayHistoryManager.h +++ b/trunk/ConsoleDataMigration/common/PlayHistoryManager.h @@ -30,13 +30,13 @@ public: void Export(); //! @brief SDカードからプレイ履歴に書き込みます - void Import(); + nn::Result Import(); //! @brief デバッグ用。プレイ履歴をデバッグ出力します。 void Dump(); private: - void GetPlayHistoryNums(size_t* nums); + nn::Result GetPlayHistoryNums(size_t* nums); };