Index: sources/StateController.cpp =================================================================== diff -u -r3b740846dabcba2ed00f2e48824a6ff155e78d26 -r794e12f4334ba060aa9a474d6eae787d572814d5 --- sources/StateController.cpp (.../StateController.cpp) (revision 3b740846dabcba2ed00f2e48824a6ff155e78d26) +++ sources/StateController.cpp (.../StateController.cpp) (revision 794e12f4334ba060aa9a474d6eae787d572814d5) @@ -847,9 +847,9 @@ venReadingCount = (venReadingCount >= arraySize + 1 ? arraySize + 1 : venReadingCount + 1); _treatmentVars.curVenPresMMHG = venRunningSumMMHG / venReadingCount; - qDebug() << "Pressure" << _treatmentParams.areterialPresLimitWindowMMHG << - _treatmentParams.venousPresLimitWindowMMHG << - _treatmentParams.venousPresLimitAsymWindowMMHG ; + //qDebug() << "Pressure" << _treatmentParams.areterialPresLimitWindowMMHG << + // _treatmentParams.venousPresLimitWindowMMHG << + // _treatmentParams.venousPresLimitAsymWindowMMHG ; } void StateController::handlePressureChangeReqeust(const QVariant &payload) @@ -1509,7 +1509,7 @@ // the treatment params QVariant emptyVariantList; setTreatmentParams(false, emptyVariantList); - + prepareOcclusionBroadcastData(); status = STATE_ON_EXIT; }; @@ -1528,31 +1528,52 @@ void StateController::onTreatmentBloodPrimeStateChange(bool active) { - static State_Status status = STATE_ON_ENTRY; - static float accumBloodVolML = 0.0; + static State_Status status = STATE_ON_ENTRY; + static float accumBloodVolML = 0.0; + static quint32 curBloodFlowMLPM = BLOOD_PRIME_START_FLOW_MLPM; auto inEntry = [=](){ qDebug() << "Blood prime entry"; - status = STATE_ON_ACTION; - accumBloodVolML = 0.0; + status = STATE_ON_ACTION; + accumBloodVolML = 0.0; + curBloodFlowMLPM = BLOOD_PRIME_START_FLOW_MLPM; _treatmentVars.broadcastIntervalCount = 0; - prepareBloodFlowBroadcastData(_treatmentParams.bloodFlowRateMLPM); + prepareBloodFlowBroadcastData(curBloodFlowMLPM); prepareBloodPrimeBroadcastData(accumBloodVolML); generateOcclusionPresureValues(true, 0); }; auto inAction = [=](){ _treatmentVars.broadcastIntervalCount++; - accumBloodVolML += (_treatmentParams.bloodFlowRateMLPM * FLOW_INTEGRATOR); + accumBloodVolML += (curBloodFlowMLPM * FLOW_INTEGRATOR); + generateOcclusionPresureValues(false, 0); if (_treatmentVars.broadcastIntervalCount % NUM_OF_COUNTS_TIMER_BC_EMIT == 0) { - prepareBloodFlowBroadcastData(_treatmentParams.bloodFlowRateMLPM); + + prepareBloodFlowBroadcastData(curBloodFlowMLPM); prepareBloodPrimeBroadcastData(accumBloodVolML); prepareOcclusionBroadcastData(); prepareTreatmentParamsRangesBroadcastData(); + + if (curBloodFlowMLPM < _treatmentParams.bloodFlowRateMLPM) { + curBloodFlowMLPM += BLOOD_PRIME_FLOW_CHNG_MLPM; + } + + if (curBloodFlowMLPM >= _treatmentParams.bloodFlowRateMLPM) { + if (_treatmentParams.bloodFlowRateMLPM < BLOOD_PRIME_START_FLOW_MLPM) { + curBloodFlowMLPM -= BLOOD_PRIME_FLOW_CHNG_MLPM; + + if (curBloodFlowMLPM <= _treatmentParams.bloodFlowRateMLPM) { + curBloodFlowMLPM = _treatmentParams.bloodFlowRateMLPM; + } + } + else { + curBloodFlowMLPM = _treatmentParams.bloodFlowRateMLPM; + } + } } if (accumBloodVolML > BLOOD_PRIME_VOLUME_ML) {