Index: sources/drydemo/StateControllerTreatment.cpp =================================================================== diff -u -r8aa65ae1bbef5f6121783026efeeb99114c14414 -r6e845078107f7d15a3e471be421d5bce31fc51da --- sources/drydemo/StateControllerTreatment.cpp (.../StateControllerTreatment.cpp) (revision 8aa65ae1bbef5f6121783026efeeb99114c14414) +++ sources/drydemo/StateControllerTreatment.cpp (.../StateControllerTreatment.cpp) (revision 6e845078107f7d15a3e471be421d5bce31fc51da) @@ -16,25 +16,6 @@ return rampStepML; } - -void StateController::handleBloodPrimeBroadcastData(const float accumulatedVolML, const quint32 primeTimeOutS, const quint32 pauseCountDownS, const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 0; - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - - // Broadcast - QVariantList msg; - msg.append(static_cast(ID_TD_BLOOD_PRIME_PROGRESS_DATA)); - msg.append(Can_Id::eChlid_TD_Sync); - msg.append(BLOOD_PRIME_VOLUME_ML); - msg.append(accumulatedVolML); - msg.append(primeTimeOutS); - msg.append(pauseCountDownS); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - void StateController::handleBloodPrimeVolML(const bool resume, const float rampStepML, const bool hasFlowChanged, quint32 &currBloodFlowMLPM, float &accumBloodVolML) { @@ -91,6 +72,7 @@ _treatmentParams.dialysateTemperatureC = DEF_TX_PARAM_DIA_TEMPERATURE_C; _treatmentParams.fluidBlousVolumeML = DEF_TX_PARAM_SALINE_BOLUS_VOL_ML; _treatmentParams.ufVolumeL = DEF_TX_PARAM_UF_VOLUME_L; + _treatmentParams.rinsebackVolumeML = DEF_TX_PARAM_RINSEBACK_VOLUME_ML; } void StateController::initializeTreatmentTimeAndUltrafiltration() @@ -107,36 +89,6 @@ qDebug() << "UF Init" << presUFRateLHR << UFVolLMS << _treatmentStatus.ufVolDeliveredL; } -void StateController::handleTreatmentSetpointsBroadcastData(const quint32 bloodFlowMLPM, const quint32 dialFlowMLPM, const float dialTempC, - const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 3; - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - - QVariantList msg; - msg.append(static_cast(ID_TD_TREATMENT_SET_POINTS)); - msg.append(Can_Id::eChlid_TD_Sync); - msg.append(bloodFlowMLPM); msg.append(dialFlowMLPM); msg.append(dialTempC); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - -void StateController::handleTreatmentStatesBroadcastData(const QList &txStates, const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 0; - if ((++broadcastCounter % NUN_OF_COUNTS_QART_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - - QVariantList msg; - msg.append(static_cast(ID_TD_TREATMENT_STATE_DATA)); - msg.append(Can_Id::eChlid_TD_Sync); - - for (auto item: txStates) { msg.append(item);} - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - void StateController::handleFluidBolusRequestMessage() { if (! _treatmentRcvdMessages[ID_UI_FLUID_BOLUS_RQST].isNull()){ @@ -186,98 +138,6 @@ qDebug() << "Bolus" << deliveredFluidML << _treatmentStatus.accumFluidBolusDeliveredML << _treatmentStatus.totalFluidBolusDeliveredML; } -void StateController::handleFluidBolusBroadcastData(const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 5; - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - - QVariantList msg; - msg.append(static_cast(ID_TD_FLUID_BOLUS_DATA)); - msg.append(Can_Id::eChlid_TD_Sync); - msg.append(_treatmentParams.fluidBlousVolumeML); - msg.append(_treatmentStatus.accumFluidBolusDeliveredML); - msg.append(_treatmentStatus.totalFluidBolusDeliveredML); - msg.append(ENABLE_BOLUS); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - -void StateController::handleTDPressureProcessAndBroadcastData(const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 10; - 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); - } - - // TODO update the pressures - float h2ArtPresMMHG = 12.2; - float h14VenPresMMHG = 80.1; - quint32 presLimitState = 1; - qint32 h2ArtMinLimitMMHG = MIN_ART_PRES_LIMIT_MMHG; - qint32 h2ArtMaxLimitMMHG = MAX_ART_PRES_LIMIT_MMHG; - qint32 h14VenMinLimitMMGH = MIN_VEN_PRES_LIMIT_MMHG; - qint32 h14VenMaxLimitMMHG = MAX_VEN_PRES_LIMIT_MMHG; - float h2ArtLongFilterPresMMHG = -23.0; - float h14VenLongFilterPresMMHG = 67.5; - float tmpPresMMHG = 45.03; - float tmpLongFilter = 45.5; - float tmpMinLimitMMHG = MIN_TMP_PRES_LIMIT_MMHG; - float tmpMaxLimitMMHG = MAX_TMP_PRES_LIMIT_MMHG; - float h23BaroPresPSI = 14.2l; - - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - - QVariantList msg; - msg.append(static_cast(ID_TD_PRESSURE_DATA)); - msg.append(Can_Id::eChlid_TD_Sync); - msg.append(h2ArtPresMMHG); - msg.append(h14VenPresMMHG); - msg.append(presLimitState); - msg.append(h2ArtMinLimitMMHG); - msg.append(h2ArtMaxLimitMMHG); - msg.append(h14VenMinLimitMMGH); - msg.append(h14VenMaxLimitMMHG); - msg.append(h2ArtLongFilterPresMMHG); - msg.append(h14VenLongFilterPresMMHG); - msg.append(tmpPresMMHG); - msg.append(tmpLongFilter); - msg.append(tmpMinLimitMMHG); - msg.append(tmpMaxLimitMMHG); - msg.append(h23BaroPresPSI); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - -void StateController::handleTreatmentTimeProcessAndBroadcastData(const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 12; - if (_treatmentStatus.fluidBolusState == FLUID_BOLUS_IDLE_STATE) { - _treatmentStatus.treatmentElapsedTimeMS += QOBJECT_TIMER_TIMEOUT_MS; - } - - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - - quint32 prescribedTimeS = _treatmentParams.treatmentDurationMin * SECONDS_PER_MINUTE; - quint32 elapsedTimeS = _treatmentStatus.treatmentElapsedTimeMS / MILLISECONDS_PER_SECOND; - quint32 remainingTimeS = prescribedTimeS - elapsedTimeS; - - qDebug() << "Times" << prescribedTimeS << elapsedTimeS << remainingTimeS; - - QVariantList msg; - msg.append(static_cast(ID_TD_TREATMENT_TIME_DATA)); - msg.append(Can_Id::eChlid_TD_Sync); - msg.append(prescribedTimeS); - msg.append(elapsedTimeS); - msg.append(remainingTimeS); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - void StateController::handleTreatmentPrescriptionEditRequestMessage() { if (! _treatmentRcvdMessages[ID_UI_TREATMENT_SET_POINTS_CHANGE_RQST].isNull()){ @@ -352,27 +212,7 @@ _treatmentRcvdMessages[ID_UI_TREATMENT_SET_POINT_BLOOD_FLOW_CHANGE_RQST].clear(); } -void StateController::handleDDGenDialysateModeBroadcastData(const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 15; - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - quint32 dummyData = 1; - float dummyFloat = 150.2; - quint32 dialBypass = (_treatmentStatus.fluidBolusState == FLUID_BOLUS_SALINE_IN_PROGRESS_STATE ? BYPASS_DIALYSATE_DELIVER : ALLOW_DIALYSATE_DELIVER); - - QVariantList msg; - msg.append(static_cast(ID_DD_GEN_DIALYSATE_MODE_DATA)); - msg.append(Can_Id::eChlid_DD_Sync); - msg.append(dummyData); - msg.append(dummyData); - msg.append(dialBypass); - msg.append(dummyFloat); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - void StateController::handleSetPointDialysateFlowChange() { if (_treatmentRcvdMessages[ID_UI_TREATMENT_SET_POINT_DIALYSATE_FLOW_CHANGE_RQST].isNull()) { return; } @@ -385,66 +225,11 @@ _treatmentRcvdMessages[ID_UI_TREATMENT_SET_POINT_DIALYSATE_FLOW_CHANGE_RQST].clear(); } -void StateController::handleDDConductivityBroadcastData(const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 22; - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - - float d27Cond = 250.63; - - QVariantList msg; - msg.append(static_cast(ID_DD_CONDUCTIVITY_DATA)); - msg.append(Can_Id::eChlid_DD_Sync); - msg.append(0.0); - msg.append(d27Cond); - msg.append(0.0); - msg.append(0.0); - msg.append(0.0); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - -void StateController::handleTDBloodPressureBroadcastData(const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 22; - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - // TODO copmlete -} - -void StateController::handleUltrafiltrationBroadcastData(const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 31; - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - // Only count for UF when the dialysis state is in UF - if (_treatmentStatus.dialysisSubState != DIALYSIS_UF_STATE) { return; } - - float presUFVolL = _treatmentParams.ufVolumeL; - float presUFRateLHR = presUFVolL / (static_cast(_treatmentParams.treatmentDurationMin) / static_cast(MINUTES_PER_HOUR)); - float targetUFRateLHR = (_treatmentStatus.presUFRateMLPM * MINUTES_PER_HOUR) / static_cast(MILLILITERS_PER_LITER); - float UFVolLMS = presUFRateLHR / (static_cast(MINUTES_PER_HOUR * SECONDS_PER_MINUTE * MILLISECONDS_PER_SECOND)); - - _treatmentStatus.ufVolDeliveredL += UFVolLMS * PROGRESS_TIME_BC_INTERVAL_MS; - - //qDebug() << "UF" << presUFRateLHR << targetUFRateLHR << UFVolLMS << _treatmentStatus.ufVolDeliveredL; - - QVariantList msg; - msg.append(static_cast(ID_TD_ULTRAFILTRATION_DATA)); - msg.append(Can_Id::eChlid_TD_Sync); - msg.append(presUFVolL); - msg.append(targetUFRateLHR); - msg.append(_treatmentStatus.ufVolDeliveredL); - msg.append(static_cast(_treatmentStatus.dialysisSubState)); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - void StateController::handleSetPointDialysateTemperatureChange() { if (_treatmentRcvdMessages[ID_UI_TREATMENT_SET_POINT_DIALYSATE_TEMP_CHANGE_RQST].isNull()){ return; } - // TODO range check + // TODO range check _treatmentParams.dialysateTemperatureC = extractF32DataFromReceivedMessage(ID_UI_TREATMENT_SET_POINT_DIALYSATE_TEMP_CHANGE_RQST, 0); handleUIResponseMessage(ID_TD_TREATMENT_SET_POINT_DIALYSATE_TEMP_CHANGE_RESP, ACCEPT_VALUE); handleTreatmentSetpointsBroadcastData(_treatmentParams.bloodFlowRateMLPM, _treatmentParams.dialysateFlowRateMLPM, @@ -465,6 +250,7 @@ _treatmentStatus.dialysisSubState = DIALYSIS_UF_STATE; _treatmentStatus.dialysisSubState = (cmd == 0 ? DIALYSIS_UF_PAUSED_STATE : _treatmentStatus.dialysisSubState); acceptReject = ACCEPT_VALUE; + qDebug() << "UF Pa" << _treatmentStatus.dialysisSubState; } else if (_treatmentStatus.txState != TREAT_DIALYSIS_STATE) { reason.append(REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE); } else { @@ -494,7 +280,7 @@ qDebug() << "UF CLAC" << elapsedTimeMin << measuredUFVolML << treatmentDurMin << requestedUFVolL << requestedUFVolML; - if ((requestedUFVolL >= MIN_UF_VOL_L) && (requestedUFVolL <= MAX_UF_VOL_L)){ + if ((requestedUFVolL >= MIN_UF_VOL_L) && (requestedUFVolL <= MAX_UF_VOL_L)) { if (requestedUFVolML > measuredUFVolML) { if (treatmentDurMin > elapsedTimeMin) { float remainingUFVolML = requestedUFVolML - measuredUFVolML; @@ -521,40 +307,6 @@ _treatmentRcvdMessages[ID_UI_TREATMENT_UF_VOLUME_VALIDATE_RQST].clear(); } -void StateController::handleTreatmentSettingBroadcastData(const Broadcast_Type BCType) -{ - static quint32 broadcastCounter = 38; - if ((++broadcastCounter % NUM_OF_COUNTS_TIMER_BC_EMIT != 0) && (BCType == BC_DELAYED)) { return; } - - quint32 elapsedTimeMin = _treatmentStatus.treatmentElapsedTimeMS / static_cast(SECONDS_PER_MINUTE * MILLISECONDS_PER_SECOND); - // NOTE: min tx time macro was converted to quint32 to prevent compilation error in qMax - quint32 minTxTimeMin = qMax(elapsedTimeMin + 2, static_cast(MIN_TX_TIME_MINS)); - // TOOD fix maxTime once firmware is done - quint32 maxTxTime1Min = minTxTimeMin; // TODO add the UF to it - quint32 maxTxTime2Min = MAX_TX_TIME_MINS; - quint32 maxTxTimeMin = qMax(maxTxTime1Min, maxTxTime2Min); - - float minUFVolML = 0.0; // TODO check with firmware for min - float maxUFVol1ML = minUFVolML + (static_cast(_treatmentParams.treatmentDurationMin - elapsedTimeMin) * MAX_UF_RATE_MLPM); - float maxUFVol2ML = (_treatmentStatus.presUFRateMLPM > 0.0 ? minUFVolML + static_cast(MAX_TX_TIME_MINS - elapsedTimeMin - 1) : minUFVolML); - float maxUFVolML = qMax(maxUFVol1ML, maxUFVol2ML); - qDebug() << "TIME settings" << elapsedTimeMin << minTxTimeMin << maxTxTime1Min << maxTxTime2Min << maxTxTimeMin - << maxUFVol1ML << maxUFVol2ML << maxUFVolML; - - QVariantList msg; - msg.append(static_cast(ID_TD_TREATMENT_PARAM_RANGES_DATA)); - msg.append(Can_Id::eChlid_TD_Sync); - msg.append(minTxTimeMin); - msg.append(maxTxTimeMin); - msg.append(minUFVolML); - msg.append(maxUFVolML); - msg.append(MIN_DIAL_RATE_MLPM); - msg.append(MAX_DIAL_RATE_MLPM); - _isBroadcastListReady = false; - _broadcastMessages.append(msg); - _isBroadcastListReady = true; -} - void StateController::handleUltrafiltrationVolumeChangeConfirm() { if (_treatmentRcvdMessages[ID_UI_ULTRAFILTRATION_CHANGE_CONFIRM_RQST].isNull()) { return; } @@ -678,3 +430,4 @@ } +