Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -r5a505f86c26c8e1fd6d584cd53a3765c25120781 -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 5a505f86c26c8e1fd6d584cd53a3765c25120781) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -83,7 +83,7 @@ {Gui::GuiActionType::ID_Heparin , 2 * 4 }, // 2 parameters each 4bytes {Gui::GuiActionType::ID_Rinseback , 6 * 4 }, // 6 parameters each 4bytes {Gui::GuiActionType::ID_Recirculate , 2 * 4 }, // 2 parameters each 4bytes - {Gui::GuiActionType::ID_BloodPrime , 2 * 4 }, // 2 parameters each 4bytes + {Gui::GuiActionType::ID_BloodPrime , 4 * 4 }, // 4 parameters each 4bytes {Gui::GuiActionType::ID_TreatmentStop , 2 * 4 }, // 2 parameters each 4bytes {Gui::GuiActionType::ID_TDAirBubbleData , 2 * 4 }, // 2 parameters each 4bytes {Gui::GuiActionType::ID_TDAirPumpData , 2 * 4 }, // 2 parameters each 4bytes Index: sources/gui/qml/pages/endtreatment/rinseback/EndTreatmentRinseback.qml =================================================================== diff -u -r41a18f001483e96ccd4b08629b9f1e0ae20f3547 -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/gui/qml/pages/endtreatment/rinseback/EndTreatmentRinseback.qml (.../EndTreatmentRinseback.qml) (revision 41a18f001483e96ccd4b08629b9f1e0ae20f3547) +++ sources/gui/qml/pages/endtreatment/rinseback/EndTreatmentRinseback.qml (.../EndTreatmentRinseback.qml) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -97,7 +97,7 @@ imageDiameter : 25 imageTopMargin : 4 imageSource : "qrc:/images/iPauseOrange" - text : "Rinseback Paused" + text : qsTr("Rinseback Paused") textColor : Colors.mainTreatmentOrange textfontSize : 22 textfontWeight : Font.Medium Index: sources/gui/qml/pages/treatment/TreatmentBloodPrime.qml =================================================================== diff -u -r41a18f001483e96ccd4b08629b9f1e0ae20f3547 -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/gui/qml/pages/treatment/TreatmentBloodPrime.qml (.../TreatmentBloodPrime.qml) (revision 41a18f001483e96ccd4b08629b9f1e0ae20f3547) +++ sources/gui/qml/pages/treatment/TreatmentBloodPrime.qml (.../TreatmentBloodPrime.qml) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -30,9 +30,10 @@ property alias notification: _notification - signal decreaseClicked () - signal increaseClicked () - signal pauseClicked () + signal incrementRate (real newValue) + signal decrementRate (real newValue) + signal pause () + signal resume () Connections { target: vTreatmentAdjustmentBloodFlowRate function onAdjustmentTriggered ( vValue ) { @@ -59,6 +60,7 @@ anchors.horizontalCenter : parent.horizontalCenter thickness : 35 circleShadowColor : Colors.mainTreatmentLighterBlue + runAnimation : vTDTreatmentStates.bpPaused minimum : 0 maximum : vTreatmentBloodPrime.target value : vTreatmentBloodPrime.current @@ -74,6 +76,44 @@ color : Colors.textMain text : vTreatmentBloodPrime.current.toFixed(0) + " " + qsTr(Variables.unitTextFluid) } + + TimeText { id: _timeout + objectName : "_timeout" + anchors { + bottom : _volumeText.top + bottomMargin : Variables.defaultMargin * 2 + horizontalCenter: parent.horizontalCenter + } + textPixelSize : 30 + textWeight : Font.Normal + secondsVisible : false + seconds : vTreatmentBloodPrime.countdown * 60 + visible : vTreatmentBloodPrime.timeout + + readonly property int countdown: vTreatmentBloodPrime.countdown + readonly property int timeout: vTreatmentBloodPrime.timeout + onCountdownChanged: { console.log("countdown=", countdown) } + onTimeoutChanged: { console.log("timeout=", timeout) } + } + + NotificationBarSmall { id: _pausedNotification + objectName : "_pausedNotification" + anchors { + top : _volumeText.bottom + bottom : undefined + topMargin : _timeout.anchors.bottomMargin + } + visible : vTDTreatmentStates.bpPaused + height : 25 + color : "transparent" + imageDiameter : 25 + imageTopMargin : 4 + imageSource : "qrc:/images/iPauseOrange" + text : qsTr("Blood Prime Paused") + textColor : Colors.mainTreatmentOrange + textfontSize : 22 + textfontWeight : Font.Medium + } } Row { id: _bottomContentRow @@ -106,7 +146,7 @@ objectName : "_flowRateContentArea" anchors { top : _flowRateSection.header.bottom - bottom : _pauseButton.top + bottom : _pauseResumeButton.top left : parent.left right : parent.right margins : Variables.defaultMargin @@ -156,7 +196,7 @@ leftArrow : true enabled : _bloodFlowRangedValue.canDecrement - onClicked : { _root.decreaseClicked() } + onClicked : { _root.decrementRate(_bloodFlowRangedValue.decrementedValue()) } } ArrowButton { id: _incrementFlowRateButton @@ -169,12 +209,12 @@ rightArrow : true enabled : _bloodFlowRangedValue.canIncrement - onClicked : { _root.increaseClicked() } + onClicked : { _root.incrementRate(_bloodFlowRangedValue.incrementedValue()) } } } - TouchRect { id: _pauseButton - objectName: "_pauseButton" + TouchRect { id: _pauseResumeButton + objectName: "_pauseResumeButton" anchors { bottom : parent.bottom horizontalCenter: parent.horizontalCenter @@ -183,13 +223,13 @@ width : Variables.defaultButtonWidth height : Variables.defaultButtonHeight text { - text : qsTr("Pause Blood Prime") + text : vTDTreatmentStates.bpPaused ? qsTr("Resume Blood Prime") : qsTr("Pause Blood Prime") font.weight : Font.Medium } isDefault : true enabled : true - onClicked : { _root.pauseClicked() } + onClicked : { vTDTreatmentStates.bpPaused ? _root.resume() : _root.pause() } } } Index: sources/gui/qml/pages/treatment/TreatmentStack.qml =================================================================== diff -u -r5a505f86c26c8e1fd6d584cd53a3765c25120781 -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision 5a505f86c26c8e1fd6d584cd53a3765c25120781) +++ sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -75,11 +75,12 @@ // Components TreatmentBloodPrime { id: _treatmentBloodPrime - StackView.onActivating : { _headerBar.titleText = qsTr("Blood Priming") } - StackView.onDeactivated : { _headerBar.titleText = "" } - onDecreaseClicked : { vTreatmentAdjustmentBloodPrime.doDecrease () } - onIncreaseClicked : { vTreatmentAdjustmentBloodPrime.doIncrease () } - onPauseClicked : { vTreatmentAdjustmentBloodPrime.doPause () } + StackView.onActivating : { _headerBar.titleText = qsTr("Blood Priming") } + StackView.onDeactivated : { _headerBar.titleText = "" } + onIncrementRate : function(newValue) { vTreatmentAdjustmentBloodFlowRate.doAdjustment(newValue) } + onDecrementRate : function(newValue) { vTreatmentAdjustmentBloodFlowRate.doAdjustment(newValue) } + onPause : { vTreatmentAdjustmentBloodPrime.doPause() } + onResume : { vTreatmentAdjustmentBloodPrime.doResume() } } Connections { target: vTreatmentAdjustmentBloodPrime function onAdjustmentTriggered ( vValue ) { @@ -91,6 +92,16 @@ } } } + Connections { target: vTreatmentAdjustmentBloodFlowRate + function onAdjustmentTriggered ( vValue ) { + if (vTreatmentAdjustmentBloodPrime.adjustment_Accepted) { + _treatmentBloodPrime.notification.text = "" + } + else { + _treatmentBloodPrime.notification.text = vTreatmentAdjustmentBloodFlowRate.text() + } + } + } TreatmentHome { id: _treatmentHome } Connections { target: _treatmentHome Index: sources/model/td/data/treatment/MTreatmentBloodPrimeData.cpp =================================================================== diff -u -r9cd2d1e8daf48222977349cc29d06fb3d8015e71 -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/model/td/data/treatment/MTreatmentBloodPrimeData.cpp (.../MTreatmentBloodPrimeData.cpp) (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) +++ sources/model/td/data/treatment/MTreatmentBloodPrimeData.cpp (.../MTreatmentBloodPrimeData.cpp) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -18,15 +18,19 @@ QVariantList MTreatmentBloodPrime::parameters() const { return { - _data.mTarget .value, - _data.mCurrent.value, + _data.mTarget .value, + _data.mCurrent .value, + _data.mTimeout .value, + _data.mCountdown.value, }; } bool MTreatmentBloodPrime::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position - if ( ! GetValue(vByteArray, index, _data.mTarget )) goto lError; - if ( ! GetValue(vByteArray, index, _data.mCurrent)) goto lError; + if ( ! GetValue(vByteArray, index, _data.mTarget )) goto lError; + if ( ! GetValue(vByteArray, index, _data.mCurrent )) goto lError; + if ( ! GetValue(vByteArray, index, _data.mTimeout )) goto lError; + if ( ! GetValue(vByteArray, index, _data.mCountdown )) goto lError; return true ; @@ -43,7 +47,9 @@ */ MTreatmentBloodPrime::Data MTreatmentBloodPrime::data() const { Data data; - data.mTarget = _data.mTarget .value; - data.mCurrent = _data.mCurrent.value; + data.mTarget = _data.mTarget .value ; + data.mCurrent = _data.mCurrent.value ; + data.mTimeout = _data.mTimeout.value ; + data.mCountdown = _data.mCountdown.value; return data; } Index: sources/model/td/data/treatment/MTreatmentBloodPrimeData.h =================================================================== diff -u -r4f12de59339cd439770e0ceb94c2279a3f75477f -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/model/td/data/treatment/MTreatmentBloodPrimeData.h (.../MTreatmentBloodPrimeData.h) (revision 4f12de59339cd439770e0ceb94c2279a3f75477f) +++ sources/model/td/data/treatment/MTreatmentBloodPrimeData.h (.../MTreatmentBloodPrimeData.h) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -57,8 +57,10 @@ QVariantList parameters() const override; struct { - Types::F32 mTarget ; - Types::F32 mCurrent; + Types::F32 mTarget ; + Types::F32 mCurrent ; + Types::U32 mTimeout ; + Types::U32 mCountdown ; } _data; public: @@ -68,8 +70,10 @@ QString infoText() const override { return QString("BloodPrime") ; } struct Data { - float mTarget = 0; ///< Target volume of BloodPrime delivery - float mCurrent = 0; ///< Current volume of BloodPrime delivery + float mTarget = 0; ///< Target volume of BloodPrime delivery + float mCurrent = 0; ///< Current volume of BloodPrime delivery + quint32 mTimeout = 0; ///< Timeout of BloodPrime delivery + quint32 mCountdown = 0; ///< Countdown of BloodPrime delivery }; public: Index: sources/view/td/adjustment/treatment/VTreatmentAdjustmentBloodPrime.h =================================================================== diff -u -r09fc72d1410ab86f8de7b00dd7de4ea5612cf470 -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/view/td/adjustment/treatment/VTreatmentAdjustmentBloodPrime.h (.../VTreatmentAdjustmentBloodPrime.h) (revision 09fc72d1410ab86f8de7b00dd7de4ea5612cf470) +++ sources/view/td/adjustment/treatment/VTreatmentAdjustmentBloodPrime.h (.../VTreatmentAdjustmentBloodPrime.h) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -50,9 +50,8 @@ void adjustment (const GuiBloodPrimeCommands &vCommand); public slots: - void doDecrease () { adjustment( GuiBloodPrimeCommands::REQUESTED_USER_ACTION_BLOOD_PRIME_DECREASE_RATE ); } - void doIncrease () { adjustment( GuiBloodPrimeCommands::REQUESTED_USER_ACTION_BLOOD_PRIME_INCREASE_RATE ); } void doPause () { adjustment( GuiBloodPrimeCommands::REQUESTED_USER_ACTION_BLOOD_PRIME_PAUSE ); } + void doResume () { adjustment( GuiBloodPrimeCommands::REQUESTED_USER_ACTION_BLOOD_PRIME_RESUME ); } signals: /*! Index: sources/view/td/data/treatment/VTDTreatmentStatesData.cpp =================================================================== diff -u -rad57884fca3e8a0916b6d6bf51a69264b9b5263f -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/view/td/data/treatment/VTDTreatmentStatesData.cpp (.../VTDTreatmentStatesData.cpp) (revision ad57884fca3e8a0916b6d6bf51a69264b9b5263f) +++ sources/view/td/data/treatment/VTDTreatmentStatesData.cpp (.../VTDTreatmentStatesData.cpp) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -177,8 +177,12 @@ if ( mBloodPrime ) { ENUM_CHECK_O( GuiBloodPrimeStates, vData.mBloodPrimeState ) { ENUM_CHECK ( GuiBloodPrimeStates, BLOOD_PRIME_RAMP_STATE ) + ENUM_CHECK ( GuiBloodPrimeStates, BLOOD_PRIME_RUN_STATE ) + ENUM_CHECK ( GuiBloodPrimeStates, BLOOD_PRIME_PAUSED_STATE ) ENUM_CHECK_C( GuiBloodPrimeStates, NUM_OF_BLOOD_PRIME_STATES ) } - ENUM_READ ( GuiBloodPrimeStates, BLOOD_PRIME_RAMP_STATE , bpRamp ); + ENUM_READ ( GuiBloodPrimeStates, BLOOD_PRIME_RAMP_STATE , bpRamp ) + ENUM_READ ( GuiBloodPrimeStates, BLOOD_PRIME_RUN_STATE , bpRun ) + ENUM_READ ( GuiBloodPrimeStates, BLOOD_PRIME_PAUSED_STATE , bpPaused ); } txBloodPrime ( mBloodPrime ); Index: sources/view/td/data/treatment/VTDTreatmentStatesData.h =================================================================== diff -u -rad57884fca3e8a0916b6d6bf51a69264b9b5263f -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/view/td/data/treatment/VTDTreatmentStatesData.h (.../VTDTreatmentStatesData.h) (revision ad57884fca3e8a0916b6d6bf51a69264b9b5263f) +++ sources/view/td/data/treatment/VTDTreatmentStatesData.h (.../VTDTreatmentStatesData.h) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -107,6 +107,8 @@ // Blood Prime PROPERTY( bool , bpRamp , true ) ///< BLOOD_PRIME_RAMP_STATE = 0 # Ramp state of the blood prime sub-mode state machine + PROPERTY( bool , bpRun , true ) ///< BLOOD_PRIME_RUN_STATE = 1 # Run state of the blood prime sub-mode state machine + PROPERTY( bool , bpPaused , true ) ///< BLOOD_PRIME_PAUSED_STATE = 2 # Paused state of the blood prime sub-mode state machine // Treatment End PROPERTY( bool , teWaitRinseback , true ) ///< TREATMENT_END_WAIT_FOR_RINSEBACK_STATE = 0 # Wait for rinseback state of the treatment end sub-mode state machine Index: sources/view/td/data/treatment/VTreatmentBloodPrimeData.cpp =================================================================== diff -u -r9cd2d1e8daf48222977349cc29d06fb3d8015e71 -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/view/td/data/treatment/VTreatmentBloodPrimeData.cpp (.../VTreatmentBloodPrimeData.cpp) (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) +++ sources/view/td/data/treatment/VTreatmentBloodPrimeData.cpp (.../VTreatmentBloodPrimeData.cpp) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -21,6 +21,8 @@ void VTreatmentBloodPrime::onActionReceive(const TreatmentBloodPrimeData &vData) { - target (vData.mTarget ); - current(vData.mCurrent); + target ( vData.mTarget ); + current ( vData.mCurrent ); + timeout ( vData.mTimeout ); + countdown ( vData.mCountdown ); } Index: sources/view/td/data/treatment/VTreatmentBloodPrimeData.h =================================================================== diff -u -r9cd2d1e8daf48222977349cc29d06fb3d8015e71 -r726dc38cf98a8f0a827b2efeecfd32996d0eee90 --- sources/view/td/data/treatment/VTreatmentBloodPrimeData.h (.../VTreatmentBloodPrimeData.h) (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) +++ sources/view/td/data/treatment/VTreatmentBloodPrimeData.h (.../VTreatmentBloodPrimeData.h) (revision 726dc38cf98a8f0a827b2efeecfd32996d0eee90) @@ -36,8 +36,10 @@ { Q_OBJECT - PROPERTY( float , target , 0) - PROPERTY( float , current , 0) + PROPERTY( float , target , 0) + PROPERTY( float , current , 0) + PROPERTY( quint32 , timeout , 0) + PROPERTY( quint32 , countdown , 0) VIEW_DEC(VTreatmentBloodPrime, TreatmentBloodPrimeData) };