Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -r38ae7b93679d05a54fc460dac68891562d7da72d -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 38ae7b93679d05a54fc460dac68891562d7da72d) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -7,7 +7,7 @@ * * \file MessageGlobals.h * \author (last) Dara Navaei - * \date (last) 08-May-2024 + * \date (last) 16-Sep-2024 * \author (original) Behrouz NematiPour * \date (original) 26-Aug-2020 * @@ -107,7 +107,7 @@ {Gui::GuiActionType::ID_HDAccelerometerData , 9 * 4 }, // 9 parameters each 4bytes {Gui::GuiActionType::ID_HDSyringePumpData , 9 * 4 }, // 9 parameters each 4bytes {Gui::GuiActionType::ID_HDUsageInfoReq , 0 * 4 }, // 0 parameters each 4bytes - {Gui::GuiActionType::ID_HDUsageInfoRsp , 4 * 4 + 2 }, // 4 parameters each 4bytes + 1 parameter 2 bytes + {Gui::GuiActionType::ID_HDUsageInfoRsp , 4 * 3 }, // 3 parameters each 4bytes // ---- TODO : AFTER GIVING IT SOME THOUGHT, IT SEEMS WE CAN GET THESE LEN FROM THE MODEL AND DO NOT NEED TO HAVE THIS BUT NEED TO INVESTIGATE MORE. {Gui::GuiActionType::ID_AlarmStatus , 4 * 4 + 2 }, // 4 parameters each 4bytes + 1 parameter 2bytes Index: sources/gui/qml/compounds/BPHREntry.qml =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/gui/qml/compounds/BPHREntry.qml (.../BPHREntry.qml) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/gui/qml/compounds/BPHREntry.qml (.../BPHREntry.qml) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file BPHREntry.qml - * \author (last) Vy - * \date (last) 02-Jun-2023 + * \author (last) Behrouz NematiPour + * \date (last) 23-Sep-2024 * \author (original) Behrouz NematiPour * \date (original) 21-Jun-2021 * @@ -51,6 +51,12 @@ width : _container.width height : _container.height + function clear() { + _root.systolic = "" + _root.diastolic = "" + _root.heartRate = "" + } + function setFocus(vShowKeyboard) { if(vShowKeyboard) { firstInput.textInput.forceActiveFocus() Index: sources/gui/qml/pages/disinfect/DisinfectStack.qml =================================================================== diff -u -rc70ae33e19c08779ce89e2f1728f2d1af7b5c100 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/gui/qml/pages/disinfect/DisinfectStack.qml (.../DisinfectStack.qml) (revision c70ae33e19c08779ce89e2f1728f2d1af7b5c100) +++ sources/gui/qml/pages/disinfect/DisinfectStack.qml (.../DisinfectStack.qml) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file DisinfectStack.qml - * \author (last) Behrouz NematiPour - * \date (last) 26-Mar-2024 + * \author (last) Dara Navaei + * \date (last) 16-Jul-2024 * \author (original) Behrouz NematiPour * \date (original) 17-Apr-2021 * @@ -32,21 +32,23 @@ property int stackStepIndex : 1 - readonly property string disinfectTitle : qsTr("Disinfection") - readonly property string flushTitle : qsTr("Water Flush") - readonly property string heatTitle : qsTr("Heat Disinfect") - readonly property string chemicalTitle : qsTr("Chemical Disinfect") - readonly property string chemFlushTitle : qsTr("Chemical Flush") - readonly property string roPermeateTitle: qsTr("RO Permeate Sample") + readonly property string disinfectTitle : qsTr("Disinfection") + readonly property string flushTitle : qsTr("Water Flush") + readonly property string heatActiveTitle : qsTr("Heat Disinfect with Active Cool") + readonly property string chemicalTitle : qsTr("Chemical Disinfect") + readonly property string chemFlushTitle : qsTr("Chemical Flush") + readonly property string roPermeateTitle : qsTr("RO Permeate Sample") + readonly property string heatPassiveTitle: qsTr("Heat Disinfect") - function doDisinfectFlush () { vDisinfectAdjustDisinfect.doDisinfectFlush (); page( _disinfectFlush )} - function doDisinfectHeat () { vDisinfectAdjustDisinfect.doDisinfectHeat (); page( _disinfectHeat )} - function doDisinfectChemical () { vDisinfectAdjustDisinfect.doDisinfectChemical (); page( _disinfectChemical )} - function doDisinfectChemFlush () { vDisinfectAdjustDisinfect.doDisinfectChemFlush (); page( _disinfectChemFlush )} - function doDisinfectROPermeate () { vDisinfectAdjustDisinfect.doDisinfectROPermeate(); page( _disinfectROPermeate )} + function doDisinfectFlush () { vDisinfectAdjustDisinfect.doDisinfectFlush (); page( _disinfectFlush )} + function doDisinfectHeatActiveCool () { vDisinfectAdjustDisinfect.doDisinfectHeatActiveCool (); page( _disinfectHeatActiveCool )} + function doDisinfectChemical () { vDisinfectAdjustDisinfect.doDisinfectChemical (); page( _disinfectChemical )} + function doDisinfectChemFlush () { vDisinfectAdjustDisinfect.doDisinfectChemFlush (); page( _disinfectChemFlush )} + function doDisinfectROPermeate () { vDisinfectAdjustDisinfect.doDisinfectROPermeate (); page( _disinfectROPermeate )} + function doDisinfectHeatPassiveCool () { vDisinfectAdjustDisinfect.doDisinfectHeatPassiveCool (); page( _disinfectHeatPassiveCool )} - function doDisinfectBack () { vDisinfectAdjustDisinfect.doDisinfectClear (); page ( _disinfectHome )} - function doDisinfectConfirm () { vDisinfectAdjustDisinfect.doDisinfectConfirm (); } + function doDisinfectBack () { vDisinfectAdjustDisinfect.doDisinfectClear (); page( _disinfectHome )} + function doDisinfectConfirm () { vDisinfectAdjustDisinfect.doDisinfectConfirm (); } function doDisplayReasonText (vPage) { if ( vDisinfectAdjustDisinfect.adjustment_Accepted ){ vPage.reasonText = "" } @@ -62,11 +64,12 @@ TouchGrid { property bool isVisible: vAdjustmentInstitutionalRecord.enableChemicalDisinfect width : parent.width / 2 + itemWidth : 400 colCount : 1 colSpacing : 0 - itemsText : [ _root.flushTitle , _root.heatTitle , _root.chemicalTitle , _root.chemFlushTitle , _root.roPermeateTitle , ] - itemsVisible : [ true , true , isVisible , isVisible , true , ] - onItemClicked : [ doDisinfectFlush , doDisinfectHeat , doDisinfectChemical , doDisinfectChemFlush , doDisinfectROPermeate , ][vIndex]() + itemsText : [ _root.flushTitle , _root.heatActiveTitle , _root.chemicalTitle , _root.chemFlushTitle , _root.roPermeateTitle , _root.heatPassiveTitle ] + itemsVisible : [ true , true , isVisible , isVisible , true , true ] + onItemClicked : [ doDisinfectFlush , doDisinfectHeatActiveCool , doDisinfectChemical , doDisinfectChemFlush , doDisinfectROPermeate , doDisinfectHeatPassiveCool][vIndex]() } Image { id: _denaliDeviceImage anchors.right : parent.right @@ -92,10 +95,11 @@ onConfirmClicked : doDisinfectConfirm () } - DisinfectBase { id : _disinfectHeat - objectName : "_disinfectHeat" - header.stepNames : [ _root.disinfectTitle , _root.heatTitle ] - title.text : _root.heatTitle + DisinfectBase { id : _disinfectHeatActiveCool + objectName : "_disinfectHeatActiveCool" + header.stepLineLength : 200 + header.stepNames : [ _root.disinfectTitle , _root.heatActiveTitle ] + title.text : _root.heatActiveTitle instructionBased : true header.backVisible : true header.confirmVisible : true @@ -136,19 +140,31 @@ onConfirmClicked : doDisinfectConfirm () } + DisinfectBase { id : _disinfectHeatPassiveCool + objectName : "_disinfectHeatPassiveCool" + header.stepNames : [ _root.disinfectTitle , _root.heatPassiveTitle ] + title.text : _root.heatPassiveTitle + instructionBased : true + header.backVisible : true + header.confirmVisible : true + onBackClicked : doDisinfectBack () + onConfirmClicked : doDisinfectConfirm () + } + // ----- Navigation Connections { target: vHDOperationMode function onStandbyWaitDisinfectChanged ( vValue ) { page( _disinfectHome , vValue )} // initialItem } // ----- Responses Connections { target: vDisinfectAdjustDisinfect - function onAdjustment_DisinfectModeTriggered ( vValue ) { doDisplayReasonText( _disinfectHome )} - function onAdjustment_DisinfectStartFlushTriggered ( vValue ) { doDisplayReasonText( _disinfectFlush )} - function onAdjustment_DisinfectStartHeatTriggered ( vValue ) { doDisplayReasonText( _disinfectHeat )} - function onAdjustment_DisinfectStartChemicalTriggered ( vValue ) { doDisplayReasonText( _disinfectChemical )} - function onAdjustment_DisinfectStartChemFlushTriggered ( vValue ) { doDisplayReasonText( _disinfectChemFlush )} - function onAdjustment_DisinfectStartROPermeateTriggered ( vValue ) { doDisplayReasonText( _disinfectROPermeate)} + function onAdjustment_DisinfectModeTriggered ( vValue ) { doDisplayReasonText( _disinfectHome )} + function onAdjustment_DisinfectStartFlushTriggered ( vValue ) { doDisplayReasonText( _disinfectFlush )} + function onAdjustment_DisinfectStartHeatActiveTriggered ( vValue ) { doDisplayReasonText( _disinfectHeatActiveCool )} + function onAdjustment_DisinfectStartChemicalTriggered ( vValue ) { doDisplayReasonText( _disinfectChemical )} + function onAdjustment_DisinfectStartChemFlushTriggered ( vValue ) { doDisplayReasonText( _disinfectChemFlush )} + function onAdjustment_DisinfectStartROPermeateTriggered ( vValue ) { doDisplayReasonText( _disinfectROPermeate )} + function onAdjustment_DisinfectStartHeatPassiveTriggered ( vValue ) { doDisplayReasonText( _disinfectHeatPassiveCool)} } onVisibleChanged: { Index: sources/gui/qml/pages/pretreatment/connection/PreTreatmentConnectionStack.qml =================================================================== diff -u -rc36f8432854c8ab42f71b76da826b50912822cf7 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/gui/qml/pages/pretreatment/connection/PreTreatmentConnectionStack.qml (.../PreTreatmentConnectionStack.qml) (revision c36f8432854c8ab42f71b76da826b50912822cf7) +++ sources/gui/qml/pages/pretreatment/connection/PreTreatmentConnectionStack.qml (.../PreTreatmentConnectionStack.qml) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -7,7 +7,7 @@ * * \file PreTreatmentConnectionStack.qml * \author (last) Behrouz NematiPour - * \date (last) 08-Mar-2024 + * \date (last) 23-Sep-2024 * \author (original) Behrouz NematiPour * \date (original) 18-Mar-2021 * @@ -35,13 +35,23 @@ property int stackStepIndex : 7 + function clear() { + _preTreatmentVitals .clear() + _preTreatmentUltrafiltration.clear() + + } + PreTreatmentBase { id: _preTreatmentVitals // BP/HR Entry function update(vSystolic, vDiastolic ,vHeartRate) { _bphrEntry.systolic = vSystolic ? vSystolic : "" _bphrEntry.diastolic = vDiastolic ? vDiastolic : "" _bphrEntry.heartRate = vHeartRate ? vHeartRate : "" } + function clear() { + _bphrEntry.clear() + } + header.stepIndex : 5 header.confirmText.text : qsTr("CONFIRM") header.backVisible : false @@ -187,6 +197,7 @@ _mainMenu.hidden = true } else { + clear() stackView.initialItem = null } } Index: sources/gui/qml/pages/pretreatment/connection/PreTreatmentUltrafiltration.qml =================================================================== diff -u -rc36f8432854c8ab42f71b76da826b50912822cf7 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/gui/qml/pages/pretreatment/connection/PreTreatmentUltrafiltration.qml (.../PreTreatmentUltrafiltration.qml) (revision c36f8432854c8ab42f71b76da826b50912822cf7) +++ sources/gui/qml/pages/pretreatment/connection/PreTreatmentUltrafiltration.qml (.../PreTreatmentUltrafiltration.qml) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -7,7 +7,7 @@ * * \file PreTreatmentUltrafiltration.qml * \author (last) Behrouz NematiPour - * \date (last) 08-Mar-2024 + * \date (last) 23-Sep-2024 * \author (original) Behrouz NematiPour * \date (original) 18-Mar-2021 * @@ -39,6 +39,11 @@ _volumeSlider.reset ( vValue ) } + function clear() { + _volumeSlider.reset ( _volumeSlider.defaultValue ) + _volumeSlider.isActive = false + } + function handleMinimum( vValue ) { if( _volumeSlider.minimum > vValue ){ _volumeSlider.reset ( _volumeSlider.minimum ) Index: sources/gui/qml/pages/settings/SettingsInformation.qml =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/gui/qml/pages/settings/SettingsInformation.qml (.../SettingsInformation.qml) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/gui/qml/pages/settings/SettingsInformation.qml (.../SettingsInformation.qml) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file SettingsInformation.qml - * \author (last) Behrouz NematiPour - * \date (last) 11-Sep-2023 + * \author (last) Dara Navaei + * \date (last) 16-Sep-2024 * \author (original) Behrouz NematiPour * \date (original) 18-Jul-2023 * @@ -82,7 +82,6 @@ vHDUsageInfo .totalTxHours , vHDUsageInfo .totalTxHoursSinceLastService , vHDUsageInfo .epochOfStartOfLastTx , - vHDUsageInfo .epochOfLastRecordReset , ] itemsText : [ qsTr("Versions" ), // col1 title @@ -102,11 +101,10 @@ qsTr("DG Last Service Date" ), qsTr("DG Next Service Date" ), - qsTr("Treatment" ), + qsTr("Treatment" ), qsTr("Total Hours" ), qsTr("Hours Since Last Service" ), - qsTr("Last Start" ), - qsTr("Last Reset" ), + qsTr("Last Treatment Start Date" ), ] } } Index: sources/model/hd/alarm/MAlarmMapping.cpp =================================================================== diff -u -r1c980d004a8fde2b1a08948f086c8533ebacd487 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision 1c980d004a8fde2b1a08948f086c8533ebacd487) +++ sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -339,7 +339,7 @@ /*0303*/case GuiAlarmID::ALARM_ID_DG_DRAIN_PUMP_DIRECTION_FPGA_FAULT : { result = QObject::tr("DG drain pump direction FPGA fault." ); break; } /* 303*/ /*0304*/case GuiAlarmID::ALARM_ID_HD_INVALID_USAGE_RECORD_CRC : { result = QObject::tr("HD invalid usage record." ); break; } /* 304*/ /*0305*/case GuiAlarmID::ALARM_ID_HD_CPU_RAM_ERROR : { result = QObject::tr("HD processor RAM error." ); break; } /* 305*/ -/*0306*/case GuiAlarmID::ALARM_ID_AVAILABLE_50 : { result = QObject::tr("Alarm ID available." ); break; } /* 306*/ +/*0306*/case GuiAlarmID::ALARM_ID_DG_TURN_OFF_INLET_WATER_VALVES : { result = QObject::tr("DG turn off inlet water valves." ); break; } /* 306*/ /*0307*/case GuiAlarmID::ALARM_ID_HD_AC_POWER_LOST_IN_TREATMENT : { result = QObject::tr("HD AC power lost second alarm." ); break; } /* 307*/ /*0308*/case GuiAlarmID::ALARM_ID_DG_CPI_COND_SENSOR_INVALID_CHAR : { result = QObject::tr("DG CPi conductivity sensor invalid character received." ); break; } /* 308*/ /*0309*/case GuiAlarmID::ALARM_ID_DG_CPO_COND_SENSOR_INVALID_CHAR : { result = QObject::tr("DG CPo conductivity sensor invalid character received." ); break; } /* 309*/ Index: sources/model/hd/data/MHDUsageInfoResponse.cpp =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/model/hd/data/MHDUsageInfoResponse.cpp (.../MHDUsageInfoResponse.cpp) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/model/hd/data/MHDUsageInfoResponse.cpp (.../MHDUsageInfoResponse.cpp) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file MHDUsageInfoResponse.cpp - * \author (last) Vy - * \date (last) 08-Sep-2023 + * \author (last) Dara Navaei + * \date (last) 16-Sep-2024 * \author (original) Vy * \date (original) 08-Sep-2023 * @@ -21,8 +21,6 @@ _data.mTotalTxHours .value, _data.mTotalTxHoursSinceLastService .value, _data.mEpochOfStartOfLastTx .value, - _data.mEpochOfLastRecordReset .value, - _data.mCrc .value, }; } @@ -31,14 +29,10 @@ if (GetValue(vByteArray, index, _data.mTotalTxHours )) if (GetValue(vByteArray, index, _data.mTotalTxHoursSinceLastService )) if (GetValue(vByteArray, index, _data.mEpochOfStartOfLastTx )) - if (GetValue(vByteArray, index, _data.mEpochOfLastRecordReset )) - if (GetValue(vByteArray, index, _data.mCrc )) return true ; else { if(vIndex) *vIndex = index; return false; } else { if(vIndex) *vIndex = index; return false; } else { if(vIndex) *vIndex = index; return false; } - else { if(vIndex) *vIndex = index; return false; } - else { if(vIndex) *vIndex = index; return false; } } /*! @@ -51,7 +45,5 @@ data.mTotalTxHours = _data.mTotalTxHours .value; data.mTotalTxHoursSinceLastService = _data.mTotalTxHoursSinceLastService.value; data.mEpochOfStartOfLastTx = _data.mEpochOfStartOfLastTx .value; - data.mEpochOfLastRecordReset = _data.mEpochOfLastRecordReset .value; - data.mCrc = _data.mCrc .value; return data; } Index: sources/model/hd/data/MHDUsageInfoResponse.h =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/model/hd/data/MHDUsageInfoResponse.h (.../MHDUsageInfoResponse.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/model/hd/data/MHDUsageInfoResponse.h (.../MHDUsageInfoResponse.h) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file MHDUsageInfoResponse.h - * \author (last) Behrouz NematiPour - * \date (last) 11-Oct-2023 + * \author (last) Dara Navaei + * \date (last) 16-Sep-2024 * \author (original) Vy * \date (original) 08-Sep-2023 * @@ -39,8 +39,6 @@ * | #1:(F32) | \ref Data::mTotalTxHours | * | #2:(F32) | \ref Data::mTotalTxHoursSinceLastService | * | #3:(U32) | \ref Data::mEpochOfStartOfLastTx | - * | #4:(U32) | \ref Data::mEpochOfLastRecordReset | - * | #5:(U16) | \ref Data::mCrc | * * \sa Data * @@ -63,8 +61,6 @@ Types::F32 mTotalTxHours ; Types::F32 mTotalTxHoursSinceLastService ; Types::U32 mEpochOfStartOfLastTx ; - Types::U32 mEpochOfLastRecordReset ; - Types::U16 mCrc ; } _data; public: @@ -77,8 +73,6 @@ float mTotalTxHours ; float mTotalTxHoursSinceLastService ; quint32 mEpochOfStartOfLastTx ; - quint32 mEpochOfLastRecordReset ; - quint16 mCrc ; }; MHDUsageInfoResponse () {} Index: sources/model/settings/MWifiNetwork.h =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/model/settings/MWifiNetwork.h (.../MWifiNetwork.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/model/settings/MWifiNetwork.h (.../MWifiNetwork.h) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file MWifiNetwork.h - * \author (last) Vy - * \date (last) 30-Jan-2023 + * \author (last) Behrouz NematiPour + * \date (last) 26-Aug-2024 * \author (original) Behrouz NematiPour * \date (original) 11-May-2021 * @@ -40,7 +40,9 @@ WPA_TKIP, WPA_TKIP_AES, WPA_AES, - WPA2_AES + WPA2_AES, + WPA3_SAE_ONLY, + WPA3_WPA2_TRNS, }; enum SIGNAL_LEVEL @@ -90,42 +92,35 @@ QStringList result; for (const SECURITY_TYPE &type : vSecurityTypes) { + // NOTE : Order of case is very IMPORTANT switch (type) { - case WEP: - { - result.append("WEP"); + case WPA3_SAE_ONLY: + result.append("WPA3_SAE"); break; - } - case WPA_TKIP: - { - result.append("WPA_TKIP"); + case WPA3_WPA2_TRNS: + result.append("WPA3_WPA2"); break; - } - case WPA_TKIP_AES: - { - result.append("WPA_TKIP_AES"); + case WPA2_AES: + result.append("WPA2_AES"); break; - } case WPA_AES: - { result.append("WPA_AES"); break; - } - case WPA2_AES: - { - result.append("WPA2_AES"); + case WPA_TKIP_AES: + result.append("WPA_TKIP_AES"); break; - } + case WPA_TKIP: + result.append("WPA_TKIP"); + break; + case WEP: + result.append("WEP"); + break; case UNSUPPORTED: - { result.append("UNSUPPORTED"); break; - } default: - { result.append("UNKNOWN"); break; - } } } return result; Index: sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.cpp =================================================================== diff -u -rc70ae33e19c08779ce89e2f1728f2d1af7b5c100 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.cpp (.../VDisinfectAdjustDisinfect.cpp) (revision c70ae33e19c08779ce89e2f1728f2d1af7b5c100) +++ sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.cpp (.../VDisinfectAdjustDisinfect.cpp) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VDisinfectAdjustDisinfect.cpp - * \author (last) Behrouz NematiPour - * \date (last) 26-Mar-2024 + * \author (last) Dara Navaei + * \date (last) 16-Jul-2024 * \author (original) Behrouz NematiPour * \date (original) 18-Apr-2021 * @@ -63,10 +63,11 @@ // *** otherwise will use the Previous values before being set. *** switch ( _data.mState ) { case GuiDisinfectDGStates::DG_DISINFECT_FLUSH_STATE : adjustment_DisinfectStartFlush (true); break; - case GuiDisinfectDGStates::DG_DISINFECT_HEAT_STATE : adjustment_DisinfectStartHeat (true); break; + case GuiDisinfectDGStates::DG_DISINFECT_HEAT_STATE_ACTIVE_COOL : adjustment_DisinfectStartHeatActive (true); break; case GuiDisinfectDGStates::DG_DISINFECT_CHEM_STATE : adjustment_DisinfectStartChemical (true); break; case GuiDisinfectDGStates::DG_DISINFECT_CHEM_FLUSH_STATE : adjustment_DisinfectStartChemFlush (true); break; case GuiDisinfectDGStates::DG_DISINFECT_RO_PERMEATE_SAMPLE_STATE: adjustment_DisinfectStartROPermeate (true); break; + case GuiDisinfectDGStates::DG_DISINFECT_HEAT_STATE_PASSIVE_COOL : adjustment_DisinfectStartHeatPassive (true); break; default: break; } } @@ -113,12 +114,12 @@ } /*! - * \brief View::VDisinfectAdjustDisinfect::doDisinfectHeat - * \details the invocable slot to send user's Disinfect Heat Request + * \brief View::VDisinfectAdjustDisinfect::doDisinfectHeatActiveCool + * \details the invocable slot to send user's Disinfect Heat Request with active cool */ -void View::VDisinfectAdjustDisinfect::doDisinfectHeat() +void View::VDisinfectAdjustDisinfect::doDisinfectHeatActiveCool() { - _data.mState = GuiDisinfectDGStates::DG_DISINFECT_HEAT_STATE; + _data.mState = GuiDisinfectDGStates::DG_DISINFECT_HEAT_STATE_ACTIVE_COOL; } /*! @@ -148,7 +149,17 @@ _data.mState = GuiDisinfectDGStates::DG_DISINFECT_RO_PERMEATE_SAMPLE_STATE; } +/*! + * \brief View::VDisinfectAdjustDisinfect::doDisinfectHeatPassiveCool + * \details the invocable slot to send user's Disinfect Heat Request with passive cool + */ +void View::VDisinfectAdjustDisinfect::doDisinfectHeatPassiveCool() +{ + _data.mState = GuiDisinfectDGStates::DG_DISINFECT_HEAT_STATE_PASSIVE_COOL; +} + void View::VDisinfectAdjustDisinfect::doDisinfectConfirm() { emit didAdjustment(_data); } + Index: sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.h =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.h (.../VDisinfectAdjustDisinfect.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.h (.../VDisinfectAdjustDisinfect.h) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VDisinfectAdjustDisinfect.h - * \author (last) Behrouz NematiPour - * \date (last) 28-May-2023 + * \author (last) Dara Navaei + * \date (last) 16-Jul-2024 * \author (original) Behrouz NematiPour * \date (original) 18-Apr-2021 * @@ -42,12 +42,13 @@ AdjustDisinfectStartRequestData _data; - TRIGGER ( bool , adjustment_DisinfectMode , 0) - TRIGGER ( bool , adjustment_DisinfectStartFlush , 0) - TRIGGER ( bool , adjustment_DisinfectStartHeat , 0) - TRIGGER ( bool , adjustment_DisinfectStartChemical , 0) - TRIGGER ( bool , adjustment_DisinfectStartChemFlush , 0) - TRIGGER ( bool , adjustment_DisinfectStartROPermeate , 0) + TRIGGER ( bool , adjustment_DisinfectMode , 0) + TRIGGER ( bool , adjustment_DisinfectStartFlush , 0) + TRIGGER ( bool , adjustment_DisinfectStartHeatActive , 0) + TRIGGER ( bool , adjustment_DisinfectStartChemical , 0) + TRIGGER ( bool , adjustment_DisinfectStartChemFlush , 0) + TRIGGER ( bool , adjustment_DisinfectStartROPermeate , 0) + TRIGGER ( bool , adjustment_DisinfectStartHeatPassive, 0) PROPERTY( bool , hasCancel , 0) @@ -56,16 +57,17 @@ VIEW_DEC_SLOT(AdjustDisinfectStartResponseData) public slots: - void doDisinfectInitiate (); - void doDisinfectCancel (); + void doDisinfectInitiate (); + void doDisinfectCancel (); - void doDisinfectClear (); - void doDisinfectFlush (); - void doDisinfectHeat (); - void doDisinfectChemical (); - void doDisinfectChemFlush (); - void doDisinfectROPermeate (); - void doDisinfectConfirm (); + void doDisinfectClear (); + void doDisinfectFlush (); + void doDisinfectHeatActiveCool (); + void doDisinfectChemical (); + void doDisinfectChemFlush (); + void doDisinfectROPermeate (); + void doDisinfectConfirm (); + void doDisinfectHeatPassiveCool (); signals: /*! Index: sources/view/settings/VAdjustmentServiceDates.cpp =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/view/settings/VAdjustmentServiceDates.cpp (.../VAdjustmentServiceDates.cpp) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/view/settings/VAdjustmentServiceDates.cpp (.../VAdjustmentServiceDates.cpp) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VAdjustmentServiceDates.cpp - * \author (last) Behrouz NematiPour - * \date (last) 01-Jun-2022 + * \author (last) Dara Navaei + * \date (last) 19-Sep-2024 * \author (original) Behrouz NematiPour * \date (original) 01-Jun-2022 * @@ -25,6 +25,7 @@ ADJUST_VIEW_CONNECTION( AdjustServiceDatesRequestData) ACTION_VIEW_CONNECTION(AdjustServiceDatesHDResponseData) ACTION_VIEW_CONNECTION(AdjustServiceDatesDGResponseData) + ACTION_VIEW_CONNECTION(SettingsData) } void View::VAdjustmentServiceDates::onActionReceive(const AdjustServiceDatesHDResponseData &vData) @@ -33,8 +34,8 @@ hdLastServiceEpoch (vData.mLastServiceDateEpoch ); hdServiceInterval (vData.mServiceIntervalSeconds ); - hdLastServiceDate (Format::fromEpoch(vData.mLastServiceDateEpoch , _serviceDateFormat)); - hdNextServiceDate (Format::fromEpoch(vData.mLastServiceDateEpoch + vData.mServiceIntervalSeconds , _serviceDateFormat)); + hdLastServiceDate (Format::fromEpoch(vData.mLastServiceDateEpoch , _dateFormat)); + hdNextServiceDate (Format::fromEpoch(vData.mLastServiceDateEpoch + vData.mServiceIntervalSeconds , _dateFormat)); // *** has to be the last to let the information to be set and then emit the signal *** // *** otherwise will use the previous values before being set. *** @@ -47,11 +48,15 @@ dgLastServiceEpoch (vData.mLastServiceDateEpoch ); dgServiceInterval (vData.mServiceIntervalSeconds ); - dgLastServiceDate (Format::fromEpoch(vData.mLastServiceDateEpoch , _serviceDateFormat)); - dgNextServiceDate (Format::fromEpoch(vData.mLastServiceDateEpoch + vData.mServiceIntervalSeconds , _serviceDateFormat)); + dgLastServiceDate (Format::fromEpoch(vData.mLastServiceDateEpoch , _dateFormat)); + dgNextServiceDate (Format::fromEpoch(vData.mLastServiceDateEpoch + vData.mServiceIntervalSeconds , _dateFormat)); // *** has to be the last to let the information to be set and then emit the signal *** // *** otherwise will use the previous values before being set. *** adjustmentDG(true); // set here only because adjustment parent needs it, but HD Service does not } +void View::VAdjustmentServiceDates::onActionReceive(const SettingsData &) +{ + _dateFormat = _Settings.dateFormat(); +} Index: sources/view/settings/VAdjustmentServiceDates.h =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/view/settings/VAdjustmentServiceDates.h (.../VAdjustmentServiceDates.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/view/settings/VAdjustmentServiceDates.h (.../VAdjustmentServiceDates.h) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VAdjustmentServiceDates.h - * \author (last) Behrouz NematiPour - * \date (last) 01-Jun-2022 + * \author (last) Dara Navaei + * \date (last) 19-Sep-2024 * \author (original) Behrouz NematiPour * \date (original) 01-Jun-2022 * @@ -21,6 +21,7 @@ #include "VAdjustmentResponseBase.h" #include "MAdjustHDServiceDatesResponse.h" #include "MAdjustDGServiceDatesResponse.h" +#include "MSettings.h" namespace View { @@ -37,9 +38,8 @@ // friends friend class ::tst_views; - const QString _serviceDateFormat = "yyyy/MM/dd"; + QString _dateFormat = "yyyy/MM/dd"; - // disabled coco begin validated: // The property adjustment_Triggered has to be always true // and to always trigger the change event to work as a notifier for GUI @@ -63,6 +63,7 @@ VIEW_DEC_CLASS(VAdjustmentServiceDates) VIEW_DEC_SLOT (AdjustServiceDatesHDResponseData) VIEW_DEC_SLOT (AdjustServiceDatesDGResponseData) + VIEW_DEC_SLOT (SettingsData) // ---------- Version public slots: Index: sources/view/settings/VHDUsageInfo.cpp =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/view/settings/VHDUsageInfo.cpp (.../VHDUsageInfo.cpp) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/view/settings/VHDUsageInfo.cpp (.../VHDUsageInfo.cpp) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VHDUsageInfo.cpp - * \author (last) Behrouz NematiPour - * \date (last) 11-Sep-2023 + * \author (last) Dara Navaei + * \date (last) 23-Sep-2024 * \author (original) Vy * \date (original) 08-Sep-2023 * @@ -24,6 +24,7 @@ void View::VHDUsageInfo::initConnections() { ADJUST_VIEW_CONNECTION( HDUsageInfoRequestData) ACTION_VIEW_CONNECTION(HDUsageInfoResponseData) + ACTION_VIEW_CONNECTION(SettingsData) } /*! @@ -33,21 +34,23 @@ */ void View::VHDUsageInfo::onActionReceive(const HDUsageInfoResponseData &vData) { - - int hours = vData.mTotalTxHours; - int minutes = (vData.mTotalTxHours - hours) * 60; - QString timeFormatted = QString("%1:%2").arg(hours).arg(minutes); + // Format the time in hours to be only one decimal point. + // In .arg(), the second field is the field width + // The third field is the number notation so 'f' in this case means no scientific notation + // The fourth field is the number of decimal places which 1 decimal is needed here. + QString timeFormatted = QString("%1").arg(vData.mTotalTxHours, 0, 'f', 0); totalTxHours(timeFormatted); - hours = vData.mTotalTxHoursSinceLastService; - minutes = (vData.mTotalTxHoursSinceLastService - hours) * 60; - timeFormatted = QString("%1:%2").arg(hours).arg(minutes); + timeFormatted = QString("%1").arg(vData.mTotalTxHoursSinceLastService, 0, 'f', 0); totalTxHoursSinceLastService(timeFormatted); + epochOfStartOfLastTx (Format::fromEpoch(vData.mEpochOfStartOfLastTx, _dateFormat)); - epochOfStartOfLastTx (vData.mEpochOfStartOfLastTx ? QString("%1").arg(vData.mEpochOfStartOfLastTx ) : "" ); - epochOfLastRecordReset (vData.mEpochOfLastRecordReset ? QString("%1").arg(vData.mEpochOfLastRecordReset) : "" ); - // *** has to be the last to let the information to be set and then emit the signal *** // *** otherwise will use the Previous values before being set. *** adjustment ( true ); } + +void View::VHDUsageInfo::onActionReceive(const SettingsData &) +{ + _dateFormat = _Settings.dateFormat(); +} Index: sources/view/settings/VHDUsageInfo.h =================================================================== diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/view/settings/VHDUsageInfo.h (.../VHDUsageInfo.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) +++ sources/view/settings/VHDUsageInfo.h (.../VHDUsageInfo.h) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VHDUsageInfo.h - * \author (last) Behrouz NematiPour - * \date (last) 11-Sep-2023 + * \author (last) Dara Navaei + * \date (last) 19-Sep-2024 * \author (original) Vy * \date (original) 08-Sep-2023 * @@ -21,6 +21,7 @@ #include "VAdjustmentResponseBase.h" #include "MAdjustHDRequests.h" #include "MHDUsageInfoResponse.h" +#include "MSettings.h" namespace View { @@ -38,6 +39,7 @@ friend class ::tst_views; HDUsageInfoRequestData _data; + QString _dateFormat = "yyyy/MM/dd"; // disabled coco begin validated: // The property adjustment_Triggered has to be always true @@ -54,6 +56,7 @@ VIEW_DEC_CLASS(VHDUsageInfo) VIEW_DEC_SLOT (HDUsageInfoResponseData) + VIEW_DEC_SLOT (SettingsData) // ---------- Version public slots: Index: sources/wifi/WifiInterface.cpp =================================================================== diff -u -r83b9d737cd495b34a7b42f5409962a9442f3b8f4 -r17f5bc42d292b6b0b4e326d6f3042c217f3166b2 --- sources/wifi/WifiInterface.cpp (.../WifiInterface.cpp) (revision 83b9d737cd495b34a7b42f5409962a9442f3b8f4) +++ sources/wifi/WifiInterface.cpp (.../WifiInterface.cpp) (revision 17f5bc42d292b6b0b4e326d6f3042c217f3166b2) @@ -7,7 +7,7 @@ * * \file WifiInterface.cpp * \author (last) Behrouz NematiPour - * \date (last) 06-Feb-2024 + * \date (last) 26-Aug-2024 * \author (original) Behrouz NematiPour * \date (original) 11-May-2021 * @@ -320,9 +320,27 @@ bool requiresPSK = QRegularExpression("Authentication Suites.*PSK").match(element).hasMatch(); bool supportsTKIP = QRegularExpression("Pairwise Ciphers.*TKIP").match(element).hasMatch(); + // NOTE: the iwlist command does not have the SAE and displayes it as unknown but the (8) is the SAE which comes from the driver. + bool isWPA3Only = false; + bool supportsSAE = QRegularExpression("Authentication Suites.*unknown \\(8\\)").match(element).hasMatch(); + // NOTE: if it only supports SAE it means that is the WPA3-only + // NOTE: iwlist is not reporting the WPA3 SSID as WPA3 so the only indication is the SAE which belongs only to WPA3. + // IMPORTANT: ******************************************************************* + // NOTE: we do not support the OWE and ENTERPRISE yet and it is personal for now. + // ****************************************************************************** + if ( supportsSAE ) { + isWPA3Only = QRegularExpression("Authentication Suites \\(1\\) : unknown \\(8\\)").match(element).hasMatch(); + } + //DEBUG:qDebug() << element << supportsSAE; + MWifiNetwork::SECURITY_TYPE securityType = MWifiNetwork::SECURITY_TYPE::UNSUPPORTED; - if (isWPA2 && requiresPSK && supportsAES && !supportsTKIP) + + // NOTE: order of the if is very IMPORTANT + if ( supportsSAE ) // the wpa3 has the highest priority, and if supported we connect with wpa3 + securityType = isWPA3Only ? MWifiNetwork::SECURITY_TYPE::WPA3_SAE_ONLY: + MWifiNetwork::SECURITY_TYPE::WPA3_WPA2_TRNS; + else if (isWPA2 && requiresPSK && supportsAES && !supportsTKIP) securityType = MWifiNetwork::SECURITY_TYPE::WPA2_AES; else if (isWPA && requiresPSK && supportsAES && supportsTKIP) securityType = MWifiNetwork::SECURITY_TYPE::WPA_TKIP_AES; @@ -342,6 +360,7 @@ securityTypes.append(MWifiNetwork::SECURITY_TYPE::WEP); } + //DEBUG:qDebug() << macAddress << ssid << securityTypes << signalLevel << requiresKey; WifiNetworkData network(macAddress, ssid, securityTypes, MWifiNetwork::STATUS::NOT_CONNECTED, signalLevel, requiresKey); networks.append(network); emit didAddNetwork(network); @@ -380,11 +399,14 @@ return; } QString securityType; - if (vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA2_AES)) + if (vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA3_WPA2_TRNS) + || vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA3_SAE_ONLY)) + securityType = "wpa3"; + else if (vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA2_AES)) securityType = "wpa2"; else if (vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA_TKIP_AES) - || vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA_AES) - || vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA_TKIP)) + || vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA_AES) + || vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WPA_TKIP)) securityType = "wpa"; else if (vNetwork.securityTypes().contains(MWifiNetwork::SECURITY_TYPE::WEP)) securityType = "wep";