RTCの読み書き時にリトライできるように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@317 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2011-06-06 10:51:52 +00:00
parent 728ea2da9f
commit 587b6272b2
2 changed files with 28 additions and 5 deletions

View File

@ -690,10 +690,21 @@ void WriteMcuRtcData(common::HardwareStateManager& manager)
nn::mcu::CTR::RtcData rtc;
result = mcu.GetRtcAll(&rtc);
NN_LOG("RTC = 20%02d/%02d/%02d %02d:%02d:%02d\n", rtc.m_Year, rtc.m_Month, rtc.m_Day, rtc.m_Hour, rtc.m_Minute, rtc.m_Second);
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
const u8 RETRY = 10;
for (u8 i = 0; i < RETRY; i++)
{
if (result.IsSuccess())
{
NN_LOG("RTC = 20%02d/%02d/%02d %02d:%02d:%02d\n", rtc.m_Year, rtc.m_Month, rtc.m_Day, rtc.m_Hour, rtc.m_Minute, rtc.m_Second);
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
s_SdWriter.WriteBufWithCmac(common::MCU_RTC_PATHNAME, &rtc, sizeof(rtc));
s_SdWriter.WriteBufWithCmac(common::MCU_RTC_PATHNAME, &rtc, sizeof(rtc));
break;
}
nn::os::Thread::Sleep(
nn::fnd::TimeSpan::FromMilliSeconds(
nn::os::Tick::GetSystemCurrent().ToTimeSpan().GetMilliSeconds() % 100));
}
}
else
{

View File

@ -505,9 +505,21 @@ nn::Result ImportMcuRtc(common::HardwareStateManager& manager)
bcd[i] = DecimalToBcd(reinterpret_cast<u8*> (rtc)[i]);
}
result = mcu.WriteBySend(nn::drivers::mcu::CTR::MCU_RTC_SEC_ADDR, bcd, RTC_PARAM_SIZE);
const u8 RETRY = 10;
for (u8 i = 0; i < RETRY; i++)
{
result = mcu.WriteBySend(nn::drivers::mcu::CTR::MCU_RTC_SEC_ADDR, bcd, RTC_PARAM_SIZE);
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
if(result.IsSuccess())
{
break;
}
nn::os::Thread::Sleep(
nn::fnd::TimeSpan::FromMilliSeconds(
nn::os::Tick::GetSystemCurrent().ToTimeSpan().GetMilliSeconds() % 100));
}
}
common::HeapManager::GetHeap()->Free(buf);