diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp index 35023e7..709b561 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp @@ -86,6 +86,8 @@ bit8 s_IvsDecryptIv[AES_BLOCK_SIZE] = } +CheckedNetworkSetting s_CurrentNetowrkSetting1; + void ConvertTimeZoneString(const char* str) { s_TimeZone.hour = 0; @@ -624,6 +626,17 @@ bool UpdateNetworkSetting(nn::ac::NetworkSetting& networkSetting) networkSetting.proxy.enable = false; networkSetting.other.enableUPnP = false; + // 現在のインターネット設定1を一時的に保持 + result = nn::ac::LoadNetworkSetting(0, s_CurrentNetowrkSetting1.setting); + if(result.IsSuccess()) + { + s_CurrentNetowrkSetting1.isValid = true; + } + else + { + s_CurrentNetowrkSetting1.isValid = false; + } + result = nn::ac::UpdateNetworkSetting( 0, networkSetting ); if(!result.IsSuccess()) { @@ -988,6 +1001,11 @@ TimeZone GetTimeZone() return s_TimeZone; } +CheckedNetworkSetting* GetTempNetworkSetting() +{ + return &s_CurrentNetowrkSetting1; +} + void ImportData() { static bool init = true; diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h index 245e7dd..f978ec8 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h @@ -18,6 +18,7 @@ #include #include "FileName.h" +#include namespace ConsoleRestore { @@ -77,6 +78,15 @@ bool ReadSetting(); char* GetNtpServerName(); TimeZone GetTimeZone(); +struct CheckedNetworkSetting +{ + nn::ac::CTR::NetworkSetting setting; + bool isValid; + NN_PADDING3; +}; + +CheckedNetworkSetting* GetTempNetworkSetting(); + } #endif /* IMPORTER_H_ */ diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/NtpClient.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/NtpClient.cpp index 03cd1fe..ada8377 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/NtpClient.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/NtpClient.cpp @@ -48,9 +48,6 @@ struct NTP_Packet{ // NTPパケット u32 transmitTimestampFractions; }; -const size_t NETWORK_SETTING_SLOT_NUM = 3; -nn::ac::CTR::NetworkSetting s_CurrentNetoworkSetting[NETWORK_SETTING_SLOT_NUM]; - const size_t TIMEOUT_MILLISECOND = 5000; // タイムアウト ミリ秒数 NTP_Packet s_NTPSendPacket; // 送信するNTPパケット NTP_Packet s_NTPRecvPacket; // 受信するNTPパケット @@ -287,29 +284,21 @@ u32 GetNtpTime() return ntp_time; } -void SaveCurrentInternetSetting() -{ - NN_LOG("Save Current Internet Setting\n"); - nn::Result result; - result = nn::ac::CTR::InitializeInternal(); - COMMON_LOGGER_RESULT_IF_FAILED(result); - - for(u8 i = 0; i < NETWORK_SETTING_SLOT_NUM; i++) - { - result = nn::ac::CTR::LoadNetworkSetting(i, s_CurrentNetoworkSetting[i]); - COMMON_LOGGER_RESULT_IF_FAILED(result); - } -} - void RestoreCurrentInternetSetting() { - NN_LOG("Restore Current Internet Setting\n"); + COMMON_LOGGER("Restore Current Internet Setting\n"); nn::Result result; - for(u8 i = 0; i < NETWORK_SETTING_SLOT_NUM; i++) + if (GetTempNetworkSetting()->isValid) { - result = nn::ac::CTR::UpdateNetworkSetting(i, s_CurrentNetoworkSetting[i]); + result = nn::ac::CTR::UpdateNetworkSetting(0, GetTempNetworkSetting()->setting); COMMON_LOGGER_RESULT_IF_FAILED(result); } + + result = nn::ac::FlushNetworkSetting(); + COMMON_LOGGER_RESULT_IF_FAILED(result); + + result = nn::ac::FinalizeInternal(); + COMMON_LOGGER_RESULT_IF_FAILED(result); } void NtpThreadFunc() @@ -352,11 +341,10 @@ bool IsTimeAdjustFinished() void AdjustTime() { - // インターネット設定を一時的に保存する - SaveCurrentInternetSetting(); + nn::Result result; - // SDカードのインターネット設定を反映する - ReadSetting(); + result = nn::ac::CTR::InitializeInternal(); + COMMON_LOGGER_RESULT_IF_FAILED(result); s_NtpThread.Start( NtpThreadFunc, s_NtpThreadStack); }