Index: denali.pro =================================================================== diff -u -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 -rff9c1810af33c01951d0639a48e9f6eb7152fa15 --- denali.pro (.../denali.pro) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) +++ denali.pro (.../denali.pro) (revision ff9c1810af33c01951d0639a48e9f6eb7152fa15) @@ -225,6 +225,7 @@ sources/model/hd/data/treatment/MTreatmentRecirculateData.h \ sources/model/hd/data/treatment/MTreatmentBloodPrimeData.h \ sources/model/hd/data/treatment/MTreatmentStopData.h \ + sources/model/hd/data/post/MHDRTCEpochData.h \ \ # ---------- Models - HD - Data - Treatment Log sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.h \ sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.h \ @@ -485,6 +486,7 @@ sources/model/hd/data/treatment/MTreatmentRecirculateData.cpp \ sources/model/hd/data/treatment/MTreatmentBloodPrimeData.cpp \ sources/model/hd/data/treatment/MTreatmentStopData.cpp \ + sources/model/hd/data/post/MHDRTCEpochData.cpp \ \ # ---------- Models - HD - Data - Pre-Treatment sources/model/hd/data/pretreatment/MPreTreatmentDisposablesPrimeData.cpp \ sources/model/hd/data/pretreatment/MPreTreatmentSelfTestNoCartridgeData.cpp \ Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -rff9c1810af33c01951d0639a48e9f6eb7152fa15 --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision ff9c1810af33c01951d0639a48e9f6eb7152fa15) @@ -433,6 +433,7 @@ case Gui::GuiActionType::ID_HDPostSingleResultData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDPostSingleResultData ); break; case Gui::GuiActionType::ID_HDPostFinalResultData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDPostFinalResultData ); break; case Gui::GuiActionType::ID_UIPostFinalResultHDReq : ok = notify(vMessage, vData, Gui::GuiActionType::ID_UIPostFinalResultHDReq ); break; + case Gui::GuiActionType::ID_HDRTCEpochData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDRTCEpochData ); break; // ----- Settings case Gui::GuiActionType::ID_AdjustServiceModeRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustServiceModeRsp ); break; @@ -442,7 +443,6 @@ case Gui::GuiActionType::ID_AdjustServiceDatesHDRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustServiceDatesHDRsp ); break; case Gui::GuiActionType::ID_AdjustHDDateTimeRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustHDDateTimeRsp ); break; - // ----- States case Gui::GuiActionType::ID_HDOperationModeData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDOperationModeData ); break; case Gui::GuiActionType::ID_PreTreatmentStates : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PreTreatmentStates ); break; Index: sources/model/MModel.h =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -rff9c1810af33c01951d0639a48e9f6eb7152fa15 --- sources/model/MModel.h (.../MModel.h) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/model/MModel.h (.../MModel.h) (revision ff9c1810af33c01951d0639a48e9f6eb7152fa15) @@ -63,6 +63,7 @@ #include "MHDAirTrapData.h" #include "MHDBloodLeakData.h" #include "MHDAirBubbleData.h" +#include "MHDRTCEpochData.h" // Debugging Messages #include "MHDDebugText.h" @@ -277,6 +278,7 @@ REGISTER_METATYPE( DGPostFinalResultData ) \ REGISTER_METATYPE( AdjustUIPostFinalResultRequestData ) \ REGISTER_METATYPE( UIPostFinalResultHDRequestData ) \ + REGISTER_METATYPE( HDRTCEpochData ) \ /* Devices */ \ REGISTER_METATYPE( DeviceBrightnessRequestData ) \ REGISTER_METATYPE( DeviceBrightnessResponseData ) \ @@ -478,6 +480,7 @@ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGPostSingleResultData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGPostFinalResultData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, UIPostFinalResultHDRequestData ) \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDRTCEpochData ) \ /* */ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, SettingsData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDOperationModeData ) \ @@ -664,6 +667,7 @@ ACTION_RECEIVE_BRIDGE_DEFINITION( HDPostFinalResultData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGPostSingleResultData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGPostFinalResultData ) \ + ACTION_RECEIVE_BRIDGE_DEFINITION( HDRTCEpochData ) \ /* The slot implementation is different in Dispatcher, App, Gui, so only signal is here. */ \ ACTION_RECEIVE_SIGNAL ( UIPostFinalResultHDRequestData ) \ \ @@ -951,6 +955,7 @@ ACTION_RECEIVE_SIGNAL( DGPostSingleResultData ) \ ACTION_RECEIVE_SIGNAL( DGPostFinalResultData ) \ ACTION_RECEIVE_SIGNAL( UIPostFinalResultHDRequestData ) \ + ACTION_RECEIVE_SIGNAL( HDRTCEpochData ) \ /* Received signals */ \ /* NO RESPONSE message model here */ \ ACTION_RECEIVE_SIGNAL( SettingsData ) \ Index: sources/view/settings/VDateTime.cpp =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -rff9c1810af33c01951d0639a48e9f6eb7152fa15 --- sources/view/settings/VDateTime.cpp (.../VDateTime.cpp) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/view/settings/VDateTime.cpp (.../VDateTime.cpp) (revision ff9c1810af33c01951d0639a48e9f6eb7152fa15) @@ -30,6 +30,7 @@ ACTION_VIEW_CONNECTION(AdjustHDDateTimeResponseData); ACTION_VIEW_CONNECTION(AdjustDGDateTimeResponseData); + ACTION_VIEW_CONNECTION(HDRTCEpochData); ADJUST_VIEW_CONNECTION( AdjustHDDateTimeRequestData); ADJUST_VIEW_CONNECTION( AdjustDGDateTimeRequestData); @@ -75,32 +76,26 @@ day ( vDay ); hour ( vHour ); minute ( vMinute ); - quint32 epoch = - QDateTime( - QDate(_year .toInt() , - _month .toInt() , - _day .toInt()), - QTime(_hour .toInt() , - _minute .toInt()) - ).toSecsSinceEpoch(); - // the accepted format of the Linux data command: - // example: 2021-03-16 16:24:00 - QString mDateTime = QString("%1-%2-%3 %4:%5:%6") - .arg(_year ) - .arg(_month ) - .arg(_day ) - .arg(_hour ) - .arg(_minute) - .arg(_second); + const QDateTime currentDateTimeLocal ( QDate(_year .toInt() , + _month .toInt() , + _day .toInt()), + QTime(_hour .toInt() , + _minute .toInt())); + const QString dateTimeLocalStr = currentDateTimeLocal.toString(_Settings.getDatetimeFormat()); - LOG_DEBUG(tr("SetDateTime %1").arg(mDateTime)); + // Get the current UTC datetime + QDateTime currentDateTimeUTC(currentDateTimeLocal); + currentDateTimeUTC.setTimeSpec(Qt::UTC); + const quint32 epochUTC_sec = currentDateTimeUTC.toSecsSinceEpoch(); + LOG_DEBUG(tr("SetDateTime %1").arg(dateTimeLocalStr)); + status("Setting date and time ..."); - dateTimeUI(mDateTime); - dateTimeHD(epoch ); - dateTimeDG(epoch ); + dateTimeUI(dateTimeLocalStr); + dateTimeHD(epochUTC_sec ); + dateTimeDG(epochUTC_sec ); } /*! @@ -247,3 +242,29 @@ quint16 military = _currentDateTime.time().hour() * 100 + _currentDateTime.time().minute(); greeting(military); } + +/*! + * + * \brief VHDPOSTData::onActionReceive + * \details received response model data handler + * \param vData - model data + */ +void VDateTime::onActionReceive(const HDRTCEpochData &vData) +{ + // Doing a single update of the HD-UI RTC sync on start-up + static bool _hasDoneHDSyncRTC = false; + if ( !_hasDoneHDSyncRTC ) { + QDateTime hdRTCTime; + hdRTCTime.setSecsSinceEpoch(vData.mEpoch); + hdRTCTime.setTimeSpec(Qt::UTC); + + QDateTime localDateTime = hdRTCTime.toLocalTime(); + + QString newDateTimeString = localDateTime.toString(_Settings.getDatetimeFormat()); + dateTimeUI(newDateTimeString); + + //DEBUG: qDebug() << "Sync HD-UI RTC | HD Epoch: " << vData.mEpoch << " | HD datetime: " << hdRTCTime.toString(_Settings.getDatetimeFormat()) <<" | datetime : " << newDateTimeString; + + _hasDoneHDSyncRTC = true; // indicate HD-UI RTC sync'd + } +}