Index: sources/drydemo/StateControllerTreatment.cpp =================================================================== diff -u -r38521851fd3271aa9a8965067d15daaba0db4b2e -r3a1edf1c2dc6f68d32af3adeeee4a59bbac739c5 --- sources/drydemo/StateControllerTreatment.cpp (.../StateControllerTreatment.cpp) (revision 38521851fd3271aa9a8965067d15daaba0db4b2e) +++ sources/drydemo/StateControllerTreatment.cpp (.../StateControllerTreatment.cpp) (revision 3a1edf1c2dc6f68d32af3adeeee4a59bbac739c5) @@ -110,9 +110,10 @@ void StateController::handleFluidBolusRequestMessage() { - if (! _treatmentRcvdMessages[ID_UI_FLUID_BOLUS_RQST].isNull()){ + if (!_treatmentRcvdMessages[ID_UI_FLUID_BOLUS_RQST].isNull()){ quint32 fluidBolusCmd = extractU32DataFromReceivedMessage(ID_UI_FLUID_BOLUS_RQST, 0); - + // Regardless of starting or stoping the bolus, widen the range + handleSignalInitiatePressureStabilization(USE_NORMAL_STABILIZATION_PERIOD); // Assume the fluid bolus is not in progress _treatmentSubStates.fluidBolusState = FLUID_BOLUS_IDLE_STATE; @@ -127,7 +128,7 @@ _treatmentParams.fluidBlousVolumeML}); } - if (! _treatmentRcvdMessages[ID_UI_BOLUS_VOLUME_CHANGE_RQST].isNull()){ + if (!_treatmentRcvdMessages[ID_UI_BOLUS_VOLUME_CHANGE_RQST].isNull()){ quint32 fluidBolusVolML = extractU32DataFromReceivedMessage(ID_UI_BOLUS_VOLUME_CHANGE_RQST, 0); // TODO Check the range of the requested bolus volume @@ -465,7 +466,7 @@ if (!_treatmentStatus.isBloodPumpRunning) { _pressureVars.presLimitState = PRESSURE_LIMITS_STATE_IDLE; } else if ((_treatmentSubStates.txState == TREAT_DIALYSIS_STATE) || (_treatmentSubStates.txState == TREAT_PAUSED_STATE)) { _pressureVars.presStabilizationTimerCtr = 0; - _pressureVars.presStabilizeTime = USE_NORMAL_STABILIZATION_PERIOD; + _pressureVars.presStabilizeTimePeriod = USE_NORMAL_STABILIZATION_PERIOD; _pressureVars.presLimitState = PRESSURE_LIMITS_STATE_STABILIZATION; } else if (_treatmentSubStates.txState == TREAT_RECIRC_STATE) { _pressureVars.presLimitState = PRESSURE_LIMITS_STATE_OFF; } @@ -486,7 +487,7 @@ else if ((_pressureVars.presStabilizationTimerCtr * QOBJECT_TIMER_TIMEOUT_MS) >= _pressureVars.presStabilizeTimeoutMS) { handleUpdatePressureLimitWindows(); _pressureVars.presStabilizationTimerCtr = 0; - _pressureVars.presStabilizeTime = USE_NORMAL_STABILIZATION_PERIOD; + _pressureVars.presStabilizeTimePeriod = USE_NORMAL_STABILIZATION_PERIOD; _pressureVars.presLimitState = PRESSURE_LIMITS_STATE_STABLE; } break; @@ -496,12 +497,11 @@ if (!_treatmentStatus.isBloodPumpRunning) { _pressureVars.presLimitState = PRESSURE_LIMITS_STATE_IDLE; } else if ((_treatmentSubStates.txState != TREAT_DIALYSIS_STATE) && (_treatmentSubStates.txState != TREAT_PAUSED_STATE)) { _pressureVars.presLimitState = PRESSURE_LIMITS_STATE_WIDE; - qDebug() << "WIDEW" << _pressureVars.presLimitState; } else if ((_pressureVars.presStabilizationTimerCtr * QOBJECT_TIMER_TIMEOUT_MS) >= PRES_LIMIT_RESTABILIZE_TIME_MS) { handleUpdatePressureLimitWindows(); _pressureVars.presStabilizationTimerCtr = 0; - _pressureVars.presStabilizeTime = STABILIZATION_PERIOD_OFF; + _pressureVars.presStabilizeTimePeriod = STABILIZATION_PERIOD_OFF; _pressureVars.presLimitState = PRESSURE_LIMITS_STATE_STABILIZATION; } break; @@ -521,7 +521,7 @@ float venMMHG; float tmpMMHG; - if (_pressureVars.presStabilizeTime == USE_SHORT_STABILIZATION_PERIOD) { + if (_pressureVars.presStabilizeTimePeriod == USE_SHORT_STABILIZATION_PERIOD) { artMMHG = _pressureVars.arterialFilteredMMHG; venMMHG = _pressureVars.venousFilteredMMHG; tmpMMHG = _pressureVars.tmpFilteredMMHG; @@ -576,10 +576,29 @@ } } +void StateController::handleSignalInitiatePressureStabilization(const Pressure_Stabilization_Periods period) +{ + if (_pressureVars.presLimitState == PRESSURE_LIMITS_STATE_STABILIZATION) { + quint32 currentTimeMS = _elapsedTimeCtr * QOBJECT_TIMER_TIMEOUT_MS; + quint32 presStabilizTimeMS = _pressureVars.presStabilizationTimerCtr * QOBJECT_TIMER_TIMEOUT_MS; + quint32 expiredTimeMS = (currentTimeMS >= presStabilizTimeMS ? presStabilizTimeMS - currentTimeMS : (0xFFFFFFFF - presStabilizTimeMS) + currentTimeMS + 1); + qDebug() << "Pressure ranges" << currentTimeMS << presStabilizTimeMS << expiredTimeMS; + if ((expiredTimeMS > PRES_LIMIT_MIN_STABE_TIME_MS) || (period == USE_NORMAL_STABILIZATION_PERIOD)) { + _pressureVars.presStabilizeTimePeriod = period; + _pressureVars.presStabilizationTimerCtr = 0; + } + } + else if (_pressureVars.presLimitState == PRESSURE_LIMITS_STATE_STABLE) { + _pressureVars.presStabilizeTimePeriod = period; + _pressureVars.presLimitState = PRESSURE_LIMITS_STATE_STABILIZATION; + _pressureVars.presStabilizationTimerCtr = 0; + } +} + void StateController::handleWidenPressureLimitsMessage() { - if (! _treatmentRcvdMessages[ID_UI_PRESSURE_LIMIT_WIDEN_RQST].isNull()){ + if (! _treatmentRcvdMessages[ID_UI_PRESSURE_LIMIT_WIDEN_RQST].isNull()) { _treatmentRcvdMessages[ID_UI_PRESSURE_LIMIT_WIDEN_RQST].clear(); // TODo address the increase per request handleUIResponseMessage(ID_TD_PRESSURE_LIMIT_WIDEN_RESP, ACCEPT_VALUE); @@ -589,3 +608,5 @@ + +