Index: denali.pro =================================================================== diff -u -r93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- denali.pro (.../denali.pro) (revision 93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16) +++ denali.pro (.../denali.pro) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -89,15 +89,17 @@ sources/model/hd/adjustment/MTreatmentAdjustRinsebackResponse.h \ sources/model/hd/adjustment/MTreatmentAdjustRecirculateResponse.h \ sources/model/hd/adjustment/MTreatmentAdjustEndResponse.h \ - \ # ---------- Models - HD - Data + \ # ---------- Models - HD - States Data sources/model/hd/data/MHDOperationModeData.h \ + sources/model/hd/data/MPreTreatmentStatesData.h \ + sources/model/hd/data/MTreatmentStatesData.h \ + \ # ---------- Models - HD - Data sources/model/hd/data/MHDAccelerometerData.h \ sources/model/hd/data/MTreatmentTimeData.h \ sources/model/hd/data/MTreatmentFlowsData.h \ sources/model/hd/data/MTreatmentOutletFlowData.h \ sources/model/hd/data/MTreatmentRangesData.h \ sources/model/hd/data/MTreatmentPressureOcclusionData.h \ - sources/model/hd/data/MTreatmentStatesData.h \ sources/model/hd/data/MTreatmentSalineData.h \ sources/model/hd/data/MTreatmentHeparinData.h \ sources/model/hd/data/MTreatmentRinsebackData.h \ @@ -156,9 +158,11 @@ sources/view/hd/adjustment/VTreatmentAdjustmentRinseback.h \ sources/view/hd/adjustment/VTreatmentAdjustmentRecirculate.h \ sources/view/hd/adjustment/VTreatmentAdjustmentEnd.h \ - \ # ---------- Views - HD - Data + \ # ---------- Views - HD - States Data sources/view/hd/data/VHDOperationModeData.h \ + sources/view/hd/data/VPreTreatmentStatesData.h \ sources/view/hd/data/VHDTreatmentStatesData.h \ + \ # ---------- Views - HD - Data sources/view/hd/data/VHDAccelerometerData.h \ sources/view/hd/data/VTreatmentTime.h \ sources/view/hd/data/VTreatmentBloodFlow.h \ @@ -234,15 +238,17 @@ sources/model/hd/adjustment/MTreatmentAdjustRinsebackResponse.cpp \ sources/model/hd/adjustment/MTreatmentAdjustRecirculateResponse.cpp \ sources/model/hd/adjustment/MTreatmentAdjustEndResponse.cpp \ + \ # ---------- Models - HD - States Data + sources/model/hd/data/MHDOperationModeData.cpp \ + sources/model/hd/data/MPreTreatmentStatesData.cpp \ + sources/model/hd/data/MTreatmentStatesData.cpp \ \ # ---------- Models - HD - Data sources/model/hd/data/MHDAccelerometerData.cpp \ - sources/model/hd/data/MHDOperationModeData.cpp \ sources/model/hd/data/MTreatmentTimeData.cpp \ sources/model/hd/data/MTreatmentFlowsData.cpp \ sources/model/hd/data/MTreatmentOutletFlowData.cpp \ sources/model/hd/data/MTreatmentRangesData.cpp \ sources/model/hd/data/MTreatmentPressureOcclusionData.cpp \ - sources/model/hd/data/MTreatmentStatesData.cpp \ sources/model/hd/data/MTreatmentSalineData.cpp \ sources/model/hd/data/MTreatmentHeparinData.cpp \ sources/model/hd/data/MTreatmentRinsebackData.cpp \ @@ -299,6 +305,10 @@ sources/view/hd/adjustment/VTreatmentAdjustmentRinseback.cpp \ sources/view/hd/adjustment/VTreatmentAdjustmentRecirculate.cpp \ sources/view/hd/adjustment/VTreatmentAdjustmentEnd.cpp \ + \ # ---------- Views - HD - States Data + sources/view/hd/data/VHDOperationModeData.cpp \ + sources/view/hd/data/VPreTreatmentStatesData.cpp \ + sources/view/hd/data/VHDTreatmentStatesData.cpp \ \ # ---------- Views - HD - Data sources/view/hd/data/VHDAccelerometerData.cpp \ sources/view/hd/data/VTreatmentTime.cpp \ @@ -307,13 +317,11 @@ sources/view/hd/data/VTreatmentUltrafiltration.cpp \ sources/view/hd/data/VTreatmentRanges.cpp \ sources/view/hd/data/VTreatmentPressureOcclusion.cpp \ - sources/view/hd/data/VHDOperationModeData.cpp \ sources/view/hd/data/VTreatmentSalineData.cpp \ sources/view/hd/data/VTreatmentHeparinData.cpp \ sources/view/hd/data/VTreatmentRinsebackData.cpp \ sources/view/hd/data/VTreatmentRecirculateData.cpp \ sources/view/hd/data/VTreatmentBloodPrimeData.cpp \ - sources/view/hd/data/VHDTreatmentStatesData.cpp \ \ # ---------- Views - DG - Data sources/view/dg/data/VDGDrainPumpData.cpp \ sources/view/dg/data/VDGHeatersData.cpp \ Index: denali.pro.user =================================================================== diff -u -rc15ce613e372838316d42c40a86953e6f0aa05d3 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- denali.pro.user (.../denali.pro.user) (revision c15ce613e372838316d42c40a86953e6f0aa05d3) +++ denali.pro.user (.../denali.pro.user) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -1,6 +1,6 @@ - + EnvironmentId Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -ra0f2700fad25ef602d0e3b953186d5572efd8169 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision a0f2700fad25ef602d0e3b953186d5572efd8169) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -63,7 +63,9 @@ // ---- - {Gui::GuiActionType::ID_HDOperationModeData , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_HDOperationModeData , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_PreTreatmentStates , 8 * 4 }, // 8 parameters each 4bytes + {Gui::GuiActionType::ID_TreatmentStates , 9 * 4 }, // 9 parameters each 4bytes // ---- {Gui::GuiActionType::ID_DGROPumpData , 4 * 4 }, // 4 parameters each 4bytes @@ -90,10 +92,7 @@ {Gui::GuiActionType::ID_StartTreatmentReq , 1 * 4 }, // 1 parameters each 4bytes {Gui::GuiActionType::ID_StartTreatmentRsp , 2 * 4 }, // 2 parameters each 4bytes {Gui::GuiActionType::ID_ConfirmTreatmentReq , 1 * 4 }, // 1 parameters each 4bytes - - // ---- {Gui::GuiActionType::ID_TreatmentRanges , 6 * 4 }, // 6 parameters each 4bytes - {Gui::GuiActionType::ID_TreatmentStates , 9 * 4 }, // 9 parameters each 4bytes // ---- {Gui::GuiActionType::ID_AdjustBloodDialysateReq , 2 * 4 }, // 2 parameters each 4bytes Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r0b8e00869ef81ef0a834c03c13049f4c281870d2 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 0b8e00869ef81ef0a834c03c13049f4c281870d2) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -320,26 +320,28 @@ switch (vMessage.actionId) { // notice we are in receive mode // ----- Debug case Gui::GuiActionType::ID_CANBusFaultCount : ok = canbusFaultCountData (vMessage, vData); break; // TODO : implement notify<>() + case Gui::GuiActionType::ID_HDDebugText : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDDebugText ); break; + 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; + case Gui::GuiActionType::ID_TreatmentStates : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentStates ); break; + // ----- Datum case Gui::GuiActionType::ID_TreatmentTime : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentTime ); break; case Gui::GuiActionType::ID_BloodFlow : ok = notify(vMessage, vData, Gui::GuiActionType::ID_BloodFlow ); break; case Gui::GuiActionType::ID_DialysateInletFlow : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DialysateInletFlow ); break; case Gui::GuiActionType::ID_DialysateOutletFlow : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DialysateOutletFlow ); break; case Gui::GuiActionType::ID_TreatmentRanges : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentRanges ); break; case Gui::GuiActionType::ID_PressureOcclusion : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PressureOcclusion ); break; - case Gui::GuiActionType::ID_TreatmentStates : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentStates ); break; case Gui::GuiActionType::ID_PrimingData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PrimingData ); break; case Gui::GuiActionType::ID_Saline : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Saline ); break; case Gui::GuiActionType::ID_Heparin : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Heparin ); break; case Gui::GuiActionType::ID_Rinseback : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Rinseback ); break; case Gui::GuiActionType::ID_Recirculate : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Recirculate ); break; case Gui::GuiActionType::ID_BloodPrime : ok = notify(vMessage, vData, Gui::GuiActionType::ID_BloodPrime ); break; case Gui::GuiActionType::ID_HDAccelerometerData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDAccelerometerData ); break; - // ----- Events - case Gui::GuiActionType::ID_HDOperationModeData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDOperationModeData ); break; - case Gui::GuiActionType::ID_HDDebugText : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDDebugText ); break; + // ----- Events case Gui::GuiActionType::ID_Acknow : ok = true; break; // TODO : implement notify<>() case Gui::GuiActionType::ID_PowerOff : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PowerOff ); break; case Gui::GuiActionType::ID_ShuttingDown : ok = true; LOG_EVENT("HD,ShuttingDown"); break; // TODO : implement notify<>() Index: sources/gui/GuiGlobals.cpp =================================================================== diff -u -r93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/gui/GuiGlobals.cpp (.../GuiGlobals.cpp) (revision 93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16) +++ sources/gui/GuiGlobals.cpp (.../GuiGlobals.cpp) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -29,19 +29,21 @@ #include "VAlarmStatus.h" #include "VPowerOff.h" +#include "VHDOperationModeData.h" +#include "VPreTreatmentStatesData.h" +#include "VHDTreatmentStatesData.h" + #include "VTreatmentBloodFlow.h" #include "VTreatmentDialysateFlow.h" #include "VTreatmentUltrafiltration.h" #include "VTreatmentPressureOcclusion.h" #include "VTreatmentTime.h" #include "VTreatmentRanges.h" -#include "VHDOperationModeData.h" #include "VTreatmentSalineData.h" #include "VTreatmentHeparinData.h" #include "VTreatmentRinsebackData.h" #include "VTreatmentRecirculateData.h" #include "VTreatmentBloodPrimeData.h" -#include "VHDTreatmentStatesData.h" #include "VHDAccelerometerData.h" #include "VDGDrainPumpData.h" Index: sources/gui/GuiGlobals.h =================================================================== diff -u -r93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -76,15 +76,17 @@ ID_KeepAlive = 0x0700, // HD Data Messages + ID_HDOperationModeData = 0x2500, // 37 + ID_PreTreatmentStates = 0x5C00, // 92 + ID_TreatmentStates = 0x0F00, // 15 + ID_PowerOff = 0x0100, ID_ShuttingDown = 0x0E00, ID_TreatmentTime = 0x0D00, ID_BloodFlow = 0x0500, ID_DialysateInletFlow = 0x0800, ID_DialysateOutletFlow = 0x0B00, ID_TreatmentRanges = 0x1A00, // 26 - ID_TreatmentStates = 0x0F00, // 15 - ID_HDOperationModeData = 0x2500, // 37 ID_PressureOcclusion = 0x0900, ID_Saline = 0x2F00, // 47 ID_Heparin = 0x4D00, // 77 @@ -221,9 +223,20 @@ // Treatment End Q_ENUM(Treatment_End_States) Q_ENUM(Requested_Treatment_End_User_Actions) + // Pre-Treatment SubMode + Q_ENUM(HD_Pre_Treatment_Mode_States) + // Pre-Treatment Water Sample + Q_ENUM(HD_Pre_Treatment_Sample_Water_States) + Q_ENUM(Requested_Sample_Water_User_Actions) + // Pre-Treatment Self Test No Cartridge + Q_ENUM(HD_Pre_Treatment_No_Cart_Self_Tests_States) + // Pre-Treatment Self Test Dry + Q_ENUM(HD_Pre_Treatment_Dry_Self_Tests_States) + // Pre-Treatment Prime + Q_ENUM(HD_Pre_Treatment_Prime_States) + // Pre-Treatment Recirculate + Q_ENUM(HD_Pre_Treatment_Recirc_States) - // Treatment Stop - #include "DGDefs.h" Q_ENUM(DG_Op_Modes) }; @@ -269,7 +282,22 @@ typedef GuiActions::Treatment_Stop_States GuiTreatmentStopStates; // typedef GuiActions::Requested_Treatment_Stop_User_Actions GuiTreatmentStopCommands; // No user Action defined + // Pre-Treatment SubMode + typedef GuiActions::HD_Pre_Treatment_Mode_States GuiPreTreatmentStates; + // Pre-Treatment Water Sample + typedef GuiActions::HD_Pre_Treatment_Sample_Water_States GuiPreTreatmentWaterSampleStates; + typedef GuiActions::Requested_Sample_Water_User_Actions GuiPreTreatmentWaterSampleCommands; + // Pre-Treatment Self Test No Cartridge + typedef GuiActions::HD_Pre_Treatment_No_Cart_Self_Tests_States GuiPreTreatmentSelfTestNoCartridgeStates; + // Pre-Treatment Self Test Dry + typedef GuiActions::HD_Pre_Treatment_Dry_Self_Tests_States GuiPreTreatmentSelfTestDryStates; + // Pre-Treatment Prime + typedef GuiActions::HD_Pre_Treatment_Prime_States GuiPreTreatmentPrimeStates; + // Pre-Treatment Recirculate + typedef GuiActions::HD_Pre_Treatment_Recirc_States GuiPreTreatmentRecirculateStates; + + void registerTypes(); void registerQmlTypes(); Index: sources/gui/qml/main.qml =================================================================== diff -u -rc15ce613e372838316d42c40a86953e6f0aa05d3 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/gui/qml/main.qml (.../main.qml) (revision c15ce613e372838316d42c40a86953e6f0aa05d3) +++ sources/gui/qml/main.qml (.../main.qml) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -21,19 +21,20 @@ import Gui.View 0.1 import Gui.Actions 0.1 -// TODO : When Testing data on Setting screen is removed -// This needs to be moved into the TreatmentFlows.qml +// View classes +import VHDOperationMode 0.1 +import VPreTreatmentStates 0.1 import VHDTreatmentStates 0.1 -import VTreatmentRanges 0.1 + import VTreatmentBloodFlow 0.1 import VTreatmentDialysateFlow 0.1 import VTreatmentPressureOcclusion 0.1 import VTreatmentUltrafiltration 0.1 import VTreatmentTime 0.1 -import VHDOperationMode 0.1 import VTreatmentRinseback 0.1 import VTreatmentRecirculate 0.1 import VTreatmentBloodPrime 0.1 +import VTreatmentRanges 0.1 import VHDAccelerometer 0.1 import VDGDrainPump 0.1 @@ -79,6 +80,9 @@ height: Variables.applicationHeight VHDOperationMode { id: vHDOperationMode } + VPreTreatmentStates { id: vPreTreatmentStates } + VHDTreatmentStates { id: vHDTreatmentStates } + VTreatmentBloodFlow { id: vTreatmentBloodFlow } VTreatmentDialysateFlow { id: vTreatmentDialysateFlow } VTreatmentPressureOcclusion { id: vTreatmentPressureOcclusion } @@ -107,7 +111,6 @@ VTreatmentBegin { id: vTreatmentBegin } VTreatmentAdjustmentUltrafiltrationInit { id: vTreatmentAdjustmentUltrafiltrationInit } - VHDTreatmentStates { id: vHDTreatmentStates } VTreatmentRanges { id: vTreatmentRanges } VTreatmentAdjustmentSaline { id: vTreatmentAdjustmentSaline } Index: sources/gui/qml/pages/ManagerHome.qml =================================================================== diff -u -r2cee3c28bf7565eeb55dcb033961fe6962f11d16 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/gui/qml/pages/ManagerHome.qml (.../ManagerHome.qml) (revision 2cee3c28bf7565eeb55dcb033961fe6962f11d16) +++ sources/gui/qml/pages/ManagerHome.qml (.../ManagerHome.qml) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -331,6 +331,23 @@ } } + DebugDataColumn { id: _PreTreatmentStates + x: col(1) + y: row(6.5) + title: qsTr(" PreTx States ") + model: [ "%1, %2, %3, %4, %5, %6, %7, %8" + .arg(vPreTreatmentStates.subMode ) + .arg(vPreTreatmentStates.waterSampleState ) + .arg(vPreTreatmentStates.selfTestNoCartridgeState) + .arg(vPreTreatmentStates.installationState ) + .arg(vPreTreatmentStates.selfTestDryState ) + .arg(vPreTreatmentStates.primeState ) + .arg(vPreTreatmentStates.recirculateState ) + .arg(vPreTreatmentStates.patientConnectionState ) + ] + textObjectName: "_PreTreatmentStates" + } + Connections { target: _GuiView onDidActionReceive: { if (vAction === GuiActions.ID_CANBusFaultCount ) { Index: sources/model/MModel.h =================================================================== diff -u -r93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/model/MModel.h (.../MModel.h) (revision 93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16) +++ sources/model/MModel.h (.../MModel.h) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -24,12 +24,14 @@ #include "MAlarmClearedCondition.h" #include "MHDOperationModeData.h" +#include "MPreTreatmentStatesData.h" +#include "MTreatmentStatesData.h" + #include "MTreatmentTimeData.h" #include "MTreatmentFlowsData.h" #include "MTreatmentOutletFlowData.h" #include "MTreatmentPressureOcclusionData.h" #include "MTreatmentRangesData.h" -#include "MTreatmentStatesData.h" #include "MTreatmentSalineData.h" #include "MTreatmentHeparinData.h" #include "MTreatmentRinsebackData.h" @@ -191,20 +193,21 @@ */ #define REGISTER_MODEL_METATYPES \ \ + REGISTER_METATYPE( HDOperationModeData ) \ + REGISTER_METATYPE( PreTreatmentStatesData ) \ + REGISTER_METATYPE( TreatmentStatesData ) \ REGISTER_METATYPE( BloodFlowData ) \ REGISTER_METATYPE( DialysateFlowData ) \ REGISTER_METATYPE( OutletFlowData ) \ REGISTER_METATYPE( TreatmentTimeData ) \ REGISTER_METATYPE( PressureOcclusionData ) \ REGISTER_METATYPE( PowerOffData ) \ REGISTER_METATYPE( TreatmentRangesData ) \ - REGISTER_METATYPE( TreatmentStatesData ) \ REGISTER_METATYPE( TreatmentSalineData ) \ REGISTER_METATYPE( TreatmentHeparinData ) \ REGISTER_METATYPE( TreatmentRinsebackData ) \ REGISTER_METATYPE( TreatmentRecirculateData ) \ REGISTER_METATYPE( TreatmentBloodPrimeData ) \ - REGISTER_METATYPE( HDOperationModeData ) \ REGISTER_METATYPE( HDAccelerometerData ) \ \ REGISTER_METATYPE( AlarmStatusData ) \ @@ -286,20 +289,21 @@ */ #define ACTION_RECEIVE_MODEL_BRIDGE_CONNECTIONS(vSOURCE) \ \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDOperationModeData ) \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PreTreatmentStatesData ) \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentStatesData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, BloodFlowData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DialysateFlowData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, OutletFlowData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentTimeData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PressureOcclusionData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PowerOffData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentRangesData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentStatesData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentSalineData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentHeparinData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentRinsebackData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentRecirculateData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentBloodPrimeData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDOperationModeData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDAccelerometerData ) \ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmStatusData ) \ @@ -386,20 +390,21 @@ */ #define ACTION_RECEIVE_MODEL_BRIDGE_DEFINITIONS \ \ + ACTION_RECEIVE_BRIDGE_DEFINITION( HDOperationModeData ) \ + ACTION_RECEIVE_BRIDGE_DEFINITION( PreTreatmentStatesData ) \ + ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentStatesData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( BloodFlowData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DialysateFlowData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( OutletFlowData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentTimeData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( PressureOcclusionData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( PowerOffData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentRangesData ) \ - ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentStatesData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentSalineData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentHeparinData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentRinsebackData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentRecirculateData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentBloodPrimeData ) \ - ACTION_RECEIVE_BRIDGE_DEFINITION( HDOperationModeData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( HDAccelerometerData ) \ \ ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmStatusData ) \ @@ -519,20 +524,21 @@ #define ACTION_RECEIVE_SIGNALS \ /* Received signals */ \ /* NO RESPONSE message model here */ \ + ACTION_RECEIVE_SIGNAL( HDOperationModeData ) \ + ACTION_RECEIVE_SIGNAL( PreTreatmentStatesData ) \ + ACTION_RECEIVE_SIGNAL( TreatmentStatesData ) \ ACTION_RECEIVE_SIGNAL( BloodFlowData ) \ ACTION_RECEIVE_SIGNAL( DialysateFlowData ) \ ACTION_RECEIVE_SIGNAL( OutletFlowData ) \ ACTION_RECEIVE_SIGNAL( TreatmentTimeData ) \ ACTION_RECEIVE_SIGNAL( PressureOcclusionData ) \ ACTION_RECEIVE_SIGNAL( PowerOffData ) \ ACTION_RECEIVE_SIGNAL( TreatmentRangesData ) \ - ACTION_RECEIVE_SIGNAL( TreatmentStatesData ) \ ACTION_RECEIVE_SIGNAL( TreatmentSalineData ) \ ACTION_RECEIVE_SIGNAL( TreatmentHeparinData ) \ ACTION_RECEIVE_SIGNAL( TreatmentRinsebackData ) \ ACTION_RECEIVE_SIGNAL( TreatmentRecirculateData ) \ ACTION_RECEIVE_SIGNAL( TreatmentBloodPrimeData ) \ - ACTION_RECEIVE_SIGNAL( HDOperationModeData ) \ ACTION_RECEIVE_SIGNAL( HDAccelerometerData ) \ \ ACTION_RECEIVE_SIGNAL( AlarmStatusData ) \ Index: sources/model/MPowerOff.h =================================================================== diff -u -rc15ce613e372838316d42c40a86953e6f0aa05d3 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/model/MPowerOff.h (.../MPowerOff.h) (revision c15ce613e372838316d42c40a86953e6f0aa05d3) +++ sources/model/MPowerOff.h (.../MPowerOff.h) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -29,7 +29,7 @@ * * | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | * |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------:| - * |0x1000| 0x020 | 6 | Cmd | N | HD | UI | Power Off | + * |0x0100| 0x020 | 6 | Cmd | N | HD | UI | Power Off | * * | Payload || * | || Index: sources/model/hd/data/MPreTreatmentStatesData.cpp =================================================================== diff -u --- sources/model/hd/data/MPreTreatmentStatesData.cpp (revision 0) +++ sources/model/hd/data/MPreTreatmentStatesData.cpp (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -0,0 +1,69 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file MPreTreatmentStatesData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 01-Mar-2021 + * \author (original) Behrouz NematiPour + * \date (original) 02-Jul-2020 + * + */ +#include "MPreTreatmentStatesData.h" + +using namespace Model; + +QVariantList MPreTreatmentStates::parameters() const { + return { + _data.mSubMode .value, + _data.mWaterSampleState .value, + _data.mSelfTestNoCartridgeState .value, + _data.mInstallationState .value, + _data.mSelfTestDryState .value, + _data.mPrimeState .value, + _data.mRecirculateState .value, + _data.mPatientConnectionState .value, + }; +} + +bool MPreTreatmentStates::fromByteArray(const QByteArray &vByteArray, int *vIndex) { + int index = 0; // message data start position + if (GetValue(vByteArray, index, _data.mSubMode )) + if (GetValue(vByteArray, index, _data.mWaterSampleState )) + if (GetValue(vByteArray, index, _data.mSelfTestNoCartridgeState )) + if (GetValue(vByteArray, index, _data.mInstallationState )) + if (GetValue(vByteArray, index, _data.mSelfTestDryState )) + if (GetValue(vByteArray, index, _data.mPrimeState )) + if (GetValue(vByteArray, index, _data.mRecirculateState )) + if (GetValue(vByteArray, index, _data.mPatientConnectionState )) + 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; } + else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } +} + +/*! + * \brief MPreTreatmentStates::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +MPreTreatmentStates::Data MPreTreatmentStates::data() const { + Data data; + data.mSubMode = _data.mSubMode .value; + data.mWaterSampleState = _data.mWaterSampleState .value; + data.mSelfTestNoCartridgeState = _data.mSelfTestNoCartridgeState .value; + data.mInstallationState = _data.mInstallationState .value; + data.mSelfTestDryState = _data.mSelfTestDryState .value; + data.mPrimeState = _data.mPrimeState .value; + data.mRecirculateState = _data.mRecirculateState .value; + data.mPatientConnectionState = _data.mPatientConnectionState .value; + return data; +} Index: sources/model/hd/data/MPreTreatmentStatesData.h =================================================================== diff -u --- sources/model/hd/data/MPreTreatmentStatesData.h (revision 0) +++ sources/model/hd/data/MPreTreatmentStatesData.h (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -0,0 +1,108 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file MTreatmentStatesData.h + * \author (last) Behrouz NematiPour + * \date (last) 07-Nov-2021 + * \author (original) Behrouz NematiPour + * \date (original) 02-Jul-2020 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MTreatmentStates class + * \details The treatment states data model + * These are states of the current treatment. + * It also includes the ultrafiltration states, saline bolus states. + * + * | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | + * |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: | + * |0x5C00| 0x040 | 7 | 1 Hz | N | HD | All | Pre-Treatment States Data | + * + * | Payload || + * | || + * | #1:(U32) | \ref Data::mSubMode | + * | #2:(U32) | \ref Data::mWaterSampleState | + * | #3:(U32) | \ref Data::mSelfTestNoCartridgeState | + * | #4:(U32) | \ref Data::mInstallationState | + * | #5:(U32) | \ref Data::mSelfTestDryState | + * | #6:(U32) | \ref Data::mPrimeState | + * | #7:(U32) | \ref Data::mRecirculateState | + * | #8:(U32) | \ref Data::mPatientConnectionState | + * + * \sa Data + * \sa HD_Pre_Treatment_Mode_States + * \sa HD_Pre_Treatment_Sample_Water_States + * \sa HD_Pre_Treatment_No_Cart_Self_Tests_States + * \sa HD_Pre_Treatment_Dry_Self_Tests_States + * \sa HD_Pre_Treatment_Prime_States + * \sa HD_Pre_Treatment_Recirc_States + * + *

Logging info

+ * | || + * | || + * | typeText | Datum | + * | unitText | HD | + * | infoText | PreTreatmentStates | + * + */ +class MPreTreatmentStates : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::U32 mSubMode ; + Types::U32 mWaterSampleState ; + Types::U32 mSelfTestNoCartridgeState ; + Types::U32 mInstallationState ; + Types::U32 mSelfTestDryState ; + Types::U32 mPrimeState ; + Types::U32 mRecirculateState ; + Types::U32 mPatientConnectionState ; + } _data; + +public: + + Type_Enum typeText () const override { return Type_Enum::eDatum ; } + Unit_Enum unitText () const override { return Unit_Enum::eHD ; } + QString infoText () const override { return QString("PreTreatmentStates"); } + + struct Data { + quint32 mSubMode = 0; ///< SubMode State - HD_Pre_Treatment_Mode_States + quint32 mWaterSampleState = 0; ///< WaterSample State - HD_Pre_Treatment_Sample_Water_States + quint32 mSelfTestNoCartridgeState = 0; ///< SelfTestNoCartridge State - HD_Pre_Treatment_No_Cart_Self_Tests_States + quint32 mInstallationState = 0; ///< Installation State - 0 = One state only + quint32 mSelfTestDryState = 0; ///< SelfTestDry State - HD_Pre_Treatment_Dry_Self_Tests_States + quint32 mPrimeState = 0; ///< Prime State - HD_Pre_Treatment_Prime_States + quint32 mRecirculateState = 0; ///< Recirculate State - HD_Pre_Treatment_Recirc_States + quint32 mPatientConnectionState = 0; ///< PatientConnection State - 0 = One state only + }; + + MPreTreatmentStates() { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; +} + +typedef Model::MPreTreatmentStates::Data PreTreatmentStatesData; Index: sources/view/VView.h =================================================================== diff -u -r93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16 -r0a4abcc41defc031ae20dd79f9550619bc6c9806 --- sources/view/VView.h (.../VView.h) (revision 93b6bd48e2aec1fca4f2b5b79dcefffa49e9ce16) +++ sources/view/VView.h (.../VView.h) (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -5,11 +5,11 @@ * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * - * \file vview.h - * \author (last) Behrouz NematiPour - * \date (last) 13-Aug-2020 - * \author (original) Behrouz NematiPour - * \date (original) 10-Mar-2020 + * \file vview.h + * \author (last) Behrouz NematiPour + * \date (last) 01-Mar-2021 + * \author (original) Behrouz NematiPour + * \date (original) 10-Mar-2020 * */ #pragma once @@ -105,6 +105,10 @@ REGISTER_TYPE( VAlarmStatus ) \ REGISTER_TYPE( VPowerOff ) \ \ + REGISTER_TYPE( VHDOperationMode ) \ + REGISTER_TYPE( VPreTreatmentStates ) \ + REGISTER_TYPE( VHDTreatmentStates ) \ + \ REGISTER_TYPE( VTreatmentBloodFlow ) \ REGISTER_TYPE( VTreatmentDialysateFlow ) \ REGISTER_TYPE( VTreatmentUltrafiltration ) \ @@ -116,8 +120,6 @@ REGISTER_TYPE( VTreatmentRinseback ) \ REGISTER_TYPE( VTreatmentRecirculate ) \ REGISTER_TYPE( VTreatmentBloodPrime ) \ - REGISTER_TYPE( VHDOperationMode ) \ - REGISTER_TYPE( VHDTreatmentStates ) \ REGISTER_TYPE( VHDAccelerometer ) \ \ REGISTER_TYPE( VDGDrainPump ) \ Index: sources/view/hd/data/VPreTreatmentStatesData.cpp =================================================================== diff -u --- sources/view/hd/data/VPreTreatmentStatesData.cpp (revision 0) +++ sources/view/hd/data/VPreTreatmentStatesData.cpp (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -0,0 +1,137 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file VPreTreatmentStatesData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 01-Mar-2021 + * \author (original) Behrouz NematiPour + * \date (original) 13-Aug-2020 + * + */ +#include "VPreTreatmentStatesData.h" + +// Project +#include "GuiController.h" + +VIEW_DEF(VPreTreatmentStates, PreTreatmentStatesData) + + +/*! + * \brief VHDTreatmentStates::onActionReceive + * \details sets the properties for the received data of Treatment States + * \param vData - Treatment States data + */ +void VPreTreatmentStates::onActionReceive(const PreTreatmentStatesData &vData) +{ + subMode ( vData.mSubMode ); + waterSampleState ( vData.mWaterSampleState ); + selfTestNoCartridgeState( vData.mSelfTestNoCartridgeState ); + installationState ( vData.mInstallationState ); + selfTestDryState ( vData.mSelfTestDryState ); + primeState ( vData.mPrimeState ); + recirculateState ( vData.mRecirculateState ); + patientConnectionState ( vData.mPatientConnectionState ); + + // start state + start ( vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_START_STATE ); + + + // water sample state + bool mWaterSample = vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_WATER_SAMPLE_STATE ; + if ( mWaterSample ) { + waterSample_setup ( vData.mWaterSampleState == GuiPreTreatmentWaterSampleStates ::SAMPLE_WATER_SETUP_STATE ); + waterSample_running ( vData.mWaterSampleState == GuiPreTreatmentWaterSampleStates ::SAMPLE_WATER_STATE ); + } + waterSample( mWaterSample ); // it's the main even so moved last to have all the sub-states updated prior to. + + + // Self tests with no cartridge state + bool mSelfTestNoCartridge = vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE ; + if ( mSelfTestNoCartridge ) { + selfTestNoCartridge_start ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_START_STATE ); + selfTestNoCartridge_waitDoorClose ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE ); + selfTestNoCartridge_occlusionSensors ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_OCCLUSION_SENSORS_STATE ); + selfTestNoCartridge_bloodFlowMeters ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE ); + selfTestNoCartridge_dialysateFlowMeters ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE); + selfTestNoCartridge_pumps ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_PUMPS_STATE ); + selfTestNoCartridge_leakDetectors ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_LEAK_DETECTORS_STATE ); + selfTestNoCartridge_boardTemperature ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_BOARD_TEMPERATURE_STATE ); + selfTestNoCartridge_doorSwitch ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_DOOR_SWITCH_STATE ); + selfTestNoCartridge_homeValvesAndPumps ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_HOME_VALVES_AND_PUMPS_STATE); + selfTestNoCartridge_homeIdle ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_HOME_IDLE_STATE ); + selfTestNoCartridge_stopped ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_STOPPED_STATE ); + selfTestNoCartridge_complete ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_COMPLETE_STATE ); + } + selfTestNoCartridge(mSelfTestNoCartridge); // it's the main even so moved last to have all the sub-states updated prior to. + + + // Consumable and cartridge installation state + bool mInstallation = vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_CART_INSTALL_STATE ; + if ( mInstallation ) { + // There is not state(enum) for this and it is always 0 for now. but will be used to notify UI about being in this state. + installation_start ( vData.mInstallationState == 0 /* There is no other state and it is always 0 for now */ ); + } + installation(mInstallation); // it's the main even so moved last to have all the sub-states updated prior to. + + + // Self tests dry state + bool mSelfTestDry = vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_SELF_TEST_DRY_STATE ; + if ( mSelfTestDry ) { + selfTestDry_start ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_START_STATE ); + selfTestDry_waitDoorClose ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE ); + selfTestDry_bubbleDetector ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE ); + selfTestDry_airTrap ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_AIR_TRAP_STATE ); + selfTestDry_occlusionSensors ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE ); + selfTestDry_pressureSensorsSetup ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE ); + selfTestDry_pressureSensors ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_STATE ); + selfTestDry_pressureSensorsNormal ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE ); + selfTestDry_stopped ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_STOPPED_STATE ); + selfTestDry_complete ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_COMPLETE_STATE ); + } + selfTestDry(mSelfTestDry); // it's the main even so moved last to have all the sub-states updated prior to. + + + // Prime blood and dialysate circuits and run wet self-tests state + bool mPrime = vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_PRIME_STATE ; + if ( mPrime ) { + prime_start ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_START_STATE ); + prime_waitUserStart ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_WAIT_FOR_USER_START_STATE ); + prime_salineSetup ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_SALINE_SETUP_STATE ); + prime_salinePurgeAir ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_SALINE_PURGE_AIR_STATE ); + prime_salineCirculateBloodCircuit ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE ); + prime_reservoiOneFillComplete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE ); + prime_dialysateDialyzer ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_DIALYSATE_DIALYZER_STATE ); + prime_reservoirTwoFillComplete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE ); + prime_dialysateBypass ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_DIALYSATE_BYPASS_STATE ); + prime_wetSelfTests ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_WET_SELF_TESTS_STATE ); + prime_pause ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_PAUSE ); + prime_complete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_COMPLETE ); + } + prime(mPrime); // it's the main even so moved last to have all the sub-states updated prior to. + + + // Re-circulate blood and dialysate circuits state + bool mRecirculate = vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_RECIRCULATE_STATE ; + if ( mRecirculate ) { + recirculate_start ( vData.mRecirculateState == GuiPreTreatmentRecirculateStates ::PRE_TREATMENT_RECIRC_STATE ); + recirculate_stopped ( vData.mRecirculateState == GuiPreTreatmentRecirculateStates ::PRE_TREATMENT_RECIRC_STOPPED_STATE ); + } + recirculate(mRecirculate); // it's the main even so moved last to have all the sub-states updated prior to. + + + // Patient connection state + bool mPatientConnection = vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE ; + if ( mPatientConnection ) { + // There is not state(enum) for this and it is always 0 for now. but will be used to notify UI about being in this state. + patientConnection_start ( vData.mPatientConnectionState == 0 /* There is no other state and it is always 0 for now */ ); + } + patientConnection(mPatientConnection); + + // *** Only for test *** + // Be careful it is always triggered on each message. + state(true); +} Index: sources/view/hd/data/VPreTreatmentStatesData.h =================================================================== diff -u --- sources/view/hd/data/VPreTreatmentStatesData.h (revision 0) +++ sources/view/hd/data/VPreTreatmentStatesData.h (revision 0a4abcc41defc031ae20dd79f9550619bc6c9806) @@ -0,0 +1,124 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file VPreTreatmentStatesData.h + * \author (last) Behrouz NematiPour + * \date (last) 01-Mar-2021 + * \author (original) Behrouz NematiPour + * \date (original) 13-Aug-2020 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "main.h" // Doxygen : don't remove +#include "MModel.h" +#include "VView.h" +#include "GuiGlobals.h" + +// namespace +using namespace Gui; +namespace View { + +/*! + * \brief The VPreTreatmentStates class + * \details View for Model's data representation. + * + * \sa Model::MPreTreatmentStates + * + */ +class VPreTreatmentStates : public QObject +{ + Q_OBJECT + + // *** Only for test *** + // Be careful it is always triggered on each message. + TRIGGER ( bool , state , false ) // changes in case any message received. + + PROPERTY( quint8 , subMode , 0 ) ///< HD_PRE_TREATMENT_START_STATE , Start pre-treatment mode state + PROPERTY( quint8 , waterSampleState , 0 ) ///< HD_PRE_TREATMENT_WATER_SAMPLE_STATE , Water sample state + PROPERTY( quint8 , selfTestNoCartridgeState , 0 ) ///< HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE , Self tests with no cartridge state + PROPERTY( quint8 , installationState , 0 ) ///< HD_PRE_TREATMENT_CART_INSTALL_STATE , Consumable and cartridge installation state + PROPERTY( quint8 , selfTestDryState , 0 ) ///< HD_PRE_TREATMENT_SELF_TEST_DRY_STATE , Self tests dry state + PROPERTY( quint8 , primeState , 0 ) ///< HD_PRE_TREATMENT_PRIME_STATE , Prime blood and dialysate circuits and run wet self-tests state + PROPERTY( quint8 , recirculateState , 0 ) ///< HD_PRE_TREATMENT_RECIRCULATE_STATE , Re-circulate blood and dialysate circuits state + PROPERTY( quint8 , patientConnectionState , 0 ) ///< HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE , Patient connection state + + // Start pre-treatment mode state + PROPERTY( bool , start , false ) ///< HD_PRE_TREATMENT_START_STATE , Start pre-treatment mode state + PROPERTY( bool , waterSample , false ) ///< HD_PRE_TREATMENT_WATER_SAMPLE_STATE , Water sample state + PROPERTY( bool , selfTestNoCartridge , false ) ///< HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE , Self tests with no cartridge state + PROPERTY( bool , installation , false ) ///< HD_PRE_TREATMENT_CART_INSTALL_STATE , Consumable and cartridge installation state + PROPERTY( bool , selfTestDry , false ) ///< HD_PRE_TREATMENT_SELF_TEST_DRY_STATE , Self tests dry state + PROPERTY( bool , prime , false ) ///< HD_PRE_TREATMENT_PRIME_STATE , Prime blood and dialysate circuits and run wet self-tests state + PROPERTY( bool , recirculate , false ) ///< HD_PRE_TREATMENT_RECIRCULATE_STATE , Re-circulate blood and dialysate circuits state + PROPERTY( bool , patientConnection , false ) ///< HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE , Patient connection state + + // Water sample state + PROPERTY( bool , waterSample_setup , false ) ///< SAMPLE_WATER_SETUP_STATE , Sample water setup state of the sample water sub-mode state machine + PROPERTY( bool , waterSample_running , false ) ///< SAMPLE_WATER_STATE , Sample water state of the sample water sub-mode state machine + + // Self tests with no cartridge state + PROPERTY( bool , selfTestNoCartridge_start , false ) ///< NO_CART_SELF_TESTS_START_STATE , No cartridge self-tests starting state. + PROPERTY( bool , selfTestNoCartridge_waitDoorClose , false ) ///< NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE , Wait for door to be closed before running self-tests. + PROPERTY( bool , selfTestNoCartridge_occlusionSensors , false ) ///< NO_CART_SELF_TESTS_OCCLUSION_SENSORS_STATE , No cartridge occlusion sensors self-test state. + PROPERTY( bool , selfTestNoCartridge_bloodFlowMeters , false ) ///< NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE , No cartridge blood flow meter self-test state. + PROPERTY( bool , selfTestNoCartridge_dialysateFlowMeters , false ) ///< NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE , No cartridge dialysate flow meter self-test state. + PROPERTY( bool , selfTestNoCartridge_pumps , false ) ///< NO_CART_SELF_TESTS_PUMPS_STATE , No cartridge self-test for blood pump, dialysate in pump, dialysate out pump state. + PROPERTY( bool , selfTestNoCartridge_leakDetectors , false ) ///< NO_CART_SELF_TESTS_LEAK_DETECTORS_STATE , No cartridge leak detectors self-test state. + PROPERTY( bool , selfTestNoCartridge_boardTemperature , false ) ///< NO_CART_SELF_TESTS_BOARD_TEMPERATURE_STATE , No cartridge board temperature self-test state. + PROPERTY( bool , selfTestNoCartridge_doorSwitch , false ) ///< NO_CART_SELF_TESTS_DOOR_SWITCH_STATE , No cartridge door switch self-test state. + PROPERTY( bool , selfTestNoCartridge_homeValvesAndPumps , false ) ///< NO_CART_SELF_TESTS_HOME_VALVES_AND_PUMPS_STATE , No cartridge home valves and pumps self-test state. + PROPERTY( bool , selfTestNoCartridge_homeIdle , false ) ///< NO_CART_SELF_TESTS_HOME_IDLE_STATE , Wait for valves and pumps finish homing state. + PROPERTY( bool , selfTestNoCartridge_stopped , false ) ///< NO_CART_SELF_TESTS_STOPPED_STATE , No cart self-test stopped state. + PROPERTY( bool , selfTestNoCartridge_complete , false ) ///< NO_CART_SELF_TESTS_COMPLETE_STATE , No cartridge self-test complete state. + + // Consumable and cartridge installation state + // There is not state(enum) for this and it is always 0 for now. but will be used to notify UI about being in this state. + PROPERTY( bool , installation_start , false ) ///< Consumable and cartridge installation state + + // Self tests dry state + PROPERTY( bool , selfTestDry_start , false ) ///< DRY_SELF_TESTS_START_STATE , Dry self-tests starting state. + PROPERTY( bool , selfTestDry_waitDoorClose , false ) ///< DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE , Wait for door to close before executing self-tests. + PROPERTY( bool , selfTestDry_bubbleDetector , false ) ///< DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE , Bubble detectors dry self-test state. + PROPERTY( bool , selfTestDry_airTrap , false ) ///< DRY_SELF_TESTS_AIR_TRAP_STATE , Air trap fill level ultrasonic sensor dry self-test state. + PROPERTY( bool , selfTestDry_occlusionSensors , false ) ///< DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE , Occlusion sensors dry self-test state. + PROPERTY( bool , selfTestDry_pressureSensorsSetup , false ) ///< DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE , Pressure sensors dry self-test setup valves and pump state. + PROPERTY( bool , selfTestDry_pressureSensors , false ) ///< DRY_SELF_TESTS_PRESSURE_SENSORS_STATE , Pressure sensors verify pressure readings state. + PROPERTY( bool , selfTestDry_pressureSensorsNormal , false ) ///< DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE , Pressure sensors verify normal pressure readings state. + PROPERTY( bool , selfTestDry_stopped , false ) ///< DRY_SELF_TESTS_STOPPED_STATE , Dry self-test stopped state. + PROPERTY( bool , selfTestDry_complete , false ) ///< DRY_SELF_TESTS_COMPLETE_STATE , Dry self-test complete state. + + // Prime blood and dialysate circuits and run wet self-tests state + PROPERTY( bool , prime_start , false ) ///< HD_PRIME_START_STATE , Prime start state + PROPERTY( bool , prime_waitUserStart , false ) ///< HD_PRIME_WAIT_FOR_USER_START_STATE , Wait for user to start prime state + PROPERTY( bool , prime_salineSetup , false ) ///< HD_PRIME_SALINE_SETUP_STATE , Saline setup state + PROPERTY( bool , prime_salinePurgeAir , false ) ///< HD_PRIME_SALINE_PURGE_AIR_STATE , Saline purge air state + PROPERTY( bool , prime_salineCirculateBloodCircuit , false ) ///< HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE , Circulate blood circuit state + PROPERTY( bool , prime_reservoiOneFillComplete , false ) ///< HD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE , Wait for reservoir 1 fill complete + PROPERTY( bool , prime_dialysateDialyzer , false ) ///< HD_PRIME_DIALYSATE_DIALYZER_STATE , Dialysate dialyzer fluid path state + PROPERTY( bool , prime_reservoirTwoFillComplete , false ) ///< HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE , Wait for reservoir 2 fill complete + PROPERTY( bool , prime_dialysateBypass , false ) ///< HD_PRIME_DIALYSATE_BYPASS_STATE , Dialysate bypass fluid path state + PROPERTY( bool , prime_wetSelfTests , false ) ///< HD_PRIME_WET_SELF_TESTS_STATE , Perform wet self-tests after priming complete + PROPERTY( bool , prime_pause , false ) ///< HD_PRIME_PAUSE , Prime pause state, waits to be resumed + PROPERTY( bool , prime_complete , false ) ///< HD_PRIME_COMPLETE , Prime complete state + + // Re-circulate blood and dialysate circuits state + PROPERTY( bool , recirculate_start , false ) ///< PRE_TREATMENT_RECIRC_STATE , Pre-treatment recirculate state. + PROPERTY( bool , recirculate_stopped , false ) ///< PRE_TREATMENT_RECIRC_STOPPED_STATE , Pre-treatment recirculate stopped state. + + // Patient connection state + // There is not state(enum) for this and it is always 0 for now. but will be used to notify UI about being in this state. + PROPERTY( bool , patientConnection_start , false ) ///< Patient connection state + + + VIEW_DEC(VPreTreatmentStates, PreTreatmentStatesData) +}; +}