Index: sources/drydemo/StateControllerTreatment.cpp =================================================================== diff -u -rb13dd2b30889640ebf03f54414f536ca5c8d2dc7 -rbf271a558491a83b39eb30748784f1b744736dd2 --- sources/drydemo/StateControllerTreatment.cpp (.../StateControllerTreatment.cpp) (revision b13dd2b30889640ebf03f54414f536ca5c8d2dc7) +++ sources/drydemo/StateControllerTreatment.cpp (.../StateControllerTreatment.cpp) (revision bf271a558491a83b39eb30748784f1b744736dd2) @@ -5,7 +5,7 @@ #include "ApplicationController.h" #include "types.h" -float StateController::getBloodPrimeRampStepML() +float StateController::handleBloodPrimeGetRampStepML() { qint32 setBPRateMLPM = _treatmentParams.bloodFlowRateMLPM - BLOOD_PRIME_START_FLOW_MLPM; float rampRateS = ((BLOOD_PRIME_VOLUME_ML / (setBPRateMLPM + BLOOD_PRIME_VOLUME_ML) / BLOOD_PRIME_START_FLOW_MLPM) / 2.0) * SECONDS_PER_MINUTE; @@ -541,10 +541,10 @@ void StateController::handleDeterminePressureLimits() { if (_pressureVars.presLimitState == PRESSURE_LIMITS_STATE_STABLE) { - qint32 artOffsetMMHG = static_cast(ART_PRES_LIMIT_WINDOW_MMHG) / 2; - qint32 venMinOffsetMMHG = static_cast(VEN_PRES_LIMIT_ASYMM_MMHG); - qint32 venMaxOffsetMMHG = static_cast(VEN_PRES_LIMIT_WINDOW_MMHG) - venMinOffsetMMHG; - qint32 tmpOffsetMMHG = static_cast(TMP_PRES_LIMIT_WINDOW_MMHG) / 2; + qint32 artOffsetMMHG = _pressureVars.arterialPresLimitWindowMMHG / 2; + qint32 venMinOffsetMMHG = _pressureVars.venousPresHighLimitWindowMMHG; + qint32 venMaxOffsetMMHG = _pressureVars.venousPresLowLimitWindowMMHG - venMinOffsetMMHG; + qint32 tmpOffsetMMHG = _pressureVars.tmpPresLimitWindowMMHG / 2; _pressureVars.arterialMinLimitMMHG = _pressureVars.arterialStableMMHG - artOffsetMMHG; _pressureVars.arterialMinLimitMMHG = qMax(_pressureVars.arterialMinLimitMMHG, static_cast(MIN_ART_PRES_LIMIT_MMHG)); @@ -603,11 +603,34 @@ handleUIResponseMessage(ID_TD_PRESSURE_LIMIT_WIDEN_RESP, ACCEPT_VALUE); } +void StateController::handlePressureLimitsChangeRequest() +{ + if (_treatmentRcvdMessages[ID_UI_PRESSURE_LIMITS_CHANGE_RQST].isNull()) { return; } + QVariantList reason; + quint32 acceptReject = REJECT_VALUE; + + // TODO implement reject reasons + _pressureVars.arterialPresLimitWindowMMHG = static_cast(extractU32DataFromReceivedMessage(ID_UI_PRESSURE_LIMITS_CHANGE_RQST, 0)); + _pressureVars.venousPresHighLimitWindowMMHG = static_cast(extractU32DataFromReceivedMessage(ID_UI_PRESSURE_LIMITS_CHANGE_RQST, 4)); + _pressureVars.venousPresLowLimitWindowMMHG = static_cast(extractU32DataFromReceivedMessage(ID_UI_PRESSURE_LIMITS_CHANGE_RQST, 8)); + _pressureVars.tmpPresLimitWindowMMHG = static_cast(extractU32DataFromReceivedMessage(ID_UI_PRESSURE_LIMITS_CHANGE_RQST, 12)); + handleUpdatePressureLimitWindows(); + + acceptReject = ACCEPT_VALUE; + reason.append(REQUEST_REJECT_REASON_NONE); + reason.append(REQUEST_REJECT_REASON_NONE); + reason.append(REQUEST_REJECT_REASON_NONE); + reason.append(REQUEST_REJECT_REASON_NONE); + + _treatmentRcvdMessages[ID_UI_PRESSURE_LIMITS_CHANGE_RQST].clear(); + handleUIResponseMessage(ID_TD_PRESSURE_LIMITS_CHANGE_RESP, acceptReject, reason); +} + void StateController::handleVitalsAdjustmentMessage() { if (_treatmentRcvdMessages[ID_UI_VITALS_ADJUSTMENT_RQST].isNull()) { return; } - quint32 vitalIntMIN = extractU32DataFromReceivedMessage(ID_UI_VITALS_ADJUSTMENT_RQST, 16); + quint32 vitalIntMIN = extractU32DataFromReceivedMessage(ID_UI_VITALS_ADJUSTMENT_RQST, VITALS_MEAS_TIME_INT_INDEX); quint32 acceptReject = ACCEPT_VALUE; QVariantList reason; // TODO implement the reject reasons @@ -633,9 +656,50 @@ handleVitalsBroadcastData(); } +// TREATMENT PAUSE +void StateController::handleDryBicartActionRequest() +{ + if (_treatmentRcvdMessages[ID_UI_DRY_BICART_DISCONNECT_RQST].isNull()) { return; } + quint32 dryBicartAction = extractU32DataFromReceivedMessage(ID_UI_DRY_BICART_DISCONNECT_RQST, 0); + _treatmentStatus.bicartAction = static_cast(dryBicartAction); + switch (_treatmentStatus.bicartAction) { + case DRY_BICART_ACTION_DRAIN: + // If either of drain or depressurization commands were selected, set the progress to 0 as it is a new start + _treatmentStatus.bicartDrainInProgress = DRY_BICART_DRIN_IN_PROGRESS; + _treatmentStatus.bicartProgress = 0; + break; + case DRY_BICART_ACTION_DEPRESSURIZE: + _treatmentStatus.bicartDepresInProgress = DRY_BICART_DEPRES_IN_PROGRESS; + _treatmentStatus.bicartProgress = 0; + break; + case DRY_BICART_ACTION_CANCEL: + // If cancel is selected cancel both (in case cancle was selected) + // Set the progress to 0 + _treatmentStatus.bicartDrainInProgress = DRY_BICART_DRIN_NOT_IN_PROGRESS; + _treatmentStatus.bicartDepresInProgress = DRY_BICART_DEPRES_NOT_IN_PROGRESS; + _treatmentStatus.bicartProgress = 0; + break; + case DRY_BICART_ACTION_DONE: + default: + // Do nothing + break; + } + // Broadcast the results of the action immediately + handleDryBicartBroadcastData(BC_IMMEDIATELY); + + _treatmentRcvdMessages[ID_UI_DRY_BICART_DISCONNECT_RQST].clear(); + handleUIResponseMessage(ID_TD_DRY_BICART_DISCONNECT_RESP, ACCEPT_VALUE); +} + + + + + + +