Index: sources/drydemo/StateController.cpp =================================================================== diff -u -r4533fba9bf69d25de21536b849b5d9cb09d959ee -r8aa65ae1bbef5f6121783026efeeb99114c14414 --- sources/drydemo/StateController.cpp (.../StateController.cpp) (revision 4533fba9bf69d25de21536b849b5d9cb09d959ee) +++ sources/drydemo/StateController.cpp (.../StateController.cpp) (revision 8aa65ae1bbef5f6121783026efeeb99114c14414) @@ -55,6 +55,8 @@ case ID_UI_UF_PAUSE_RESUME_RQST: case ID_UI_TREATMENT_UF_VOLUME_VALIDATE_RQST: case ID_UI_ULTRAFILTRATION_CHANGE_CONFIRM_RQST: + case ID_UI_DURATION_VALIDATE_RQST: + case ID_UI_DURATION_CONFIRM_RQST: _treatmentRcvdMessages[receivedMsgID] = msg[1]; break; @@ -96,26 +98,22 @@ case ID_TD_TREATMENT_UF_VOLUME_VALIDATE_RESP: case ID_TD_TREATMENT_PARAM_RANGES_DATA: case ID_TD_ULTRAFILTRATION_CHANGE_CONFIRM_RESP: + case ID_TD_DURATION_VALIDATE_RESP: + case ID_TD_DURATION_CONFIRM_RESP: // Do nothing break; } } void StateController::timerEvent(QTimerEvent *) { - if (!_dryDemo.isRunning()){ - _dryDemo.start(); - } + if (!_dryDemo.isRunning()){ _dryDemo.start(); } _dryDemo.submitEvent("TimeoutEvent"); - if (_isBroadcastListReady){ - sendMessages(true); - } + if (_isBroadcastListReady){ sendMessages(true); } - if (_isSendListReady){ - sendMessages(false); - } + if (_isSendListReady){ sendMessages(false); } //if (! _treatmentRcvdMessages[ID_UI_CONFIRMATION_RESULT_RESP].isNull()){ // // Check for the user request message from the dry-deme menu @@ -130,17 +128,13 @@ { QList msgList = _broadcastMessages; - if (isBroadcast){ - _broadcastMessages.clear(); - } + if (isBroadcast){ _broadcastMessages.clear(); } else{ msgList = _sendMessages; _sendMessages.clear(); } - for (auto item: msgList){ - emit _ApplicationController.didActionTransmit(item); - } + for (auto item: msgList){ emit _ApplicationController.didActionTransmit(item); } } void StateController::handleDryDemoMenuRequestMessage() @@ -155,17 +149,13 @@ void StateController::handleBackToStandbyEvent(State_Status &status) { - //_dryDemo.connectToEvent(_back2StandbyEvent, [&status](const QScxmlEvent &event) { - // qDebug() << "Event invoked:" << event.name(); - // status = STATE_ON_ENTRY; - //}, Qt::UniqueConnection); + if (_treatmentRcvdMessages[ID_UI_CONFIRMATION_RESULT_RESP].isNull()) { return; } - if (! _treatmentRcvdMessages[ID_UI_CONFIRMATION_RESULT_RESP].isNull()){ - // Check for the user request message from the dry-demo menu - handleDryDemoMenuRequestMessage(); - _treatmentStatus.stateTransitionEvent = "T_Back_2_SB"; - status = STATE_ON_EXIT; - } + // Check for the user request message from the dry-demo menu + handleDryDemoMenuRequestMessage(); + _treatmentStatus.stateTransitionEvent = "T_Back_2_SB"; + status = STATE_ON_EXIT; + _treatmentRcvdMessages[ID_UI_CONFIRMATION_RESULT_RESP].clear(); } // ----------- State transition methods ---------------- // @@ -177,7 +167,6 @@ handleTDOpModeTransitionBroadcastData(MODE_STAN, 0, BC_IMMEDIATELY); setTreatmentParametersToDefault(); resetDryDemoVariables(); - status = STATE_ON_ACTION; qDebug() << "Standby on entry"; }; @@ -378,10 +367,11 @@ handleTDOpModeTransitionBroadcastData(MODE_TREA, 0, BC_DELAYED); txStates = {_treatmentStatus.txState, 0, _treatmentStatus.dialysisSubState, 0, 0, 0, 0, 0, _treatmentStatus.fluidBolusState, 0}; handleTreatmentStatesBroadcastData(txStates, BC_DELAYED); - handleTDPressureProcessAndBroadcastData(BC_DELAYED); + // Fluid bolus functions handleFluidBolusRequestMessage(); if (_treatmentStatus.fluidBolusState == FLUID_BOLUS_SALINE_IN_PROGRESS_STATE){ handleFluidBolusFluidDelivery(_treatmentParams.bloodFlowRateMLPM); } handleFluidBolusBroadcastData(BC_DELAYED); + // Broadcast functions handleTreatmentTimeProcessAndBroadcastData(BC_DELAYED); handleTreatmentPrescriptionEditRequestMessage(); handleSetPointBloodFlowChange(_treatmentParams.bloodFlowRateMLPM, hasFlowChngeRequested); @@ -391,11 +381,16 @@ handleDDConductivityBroadcastData(BC_DELAYED); handleSetPointDialysateFlowChange(); handleSetPointDialysateTemperatureChange(); - handleUltrafiltrationBroadcastData(BC_DELAYED); + handleTDPressureProcessAndBroadcastData(BC_DELAYED); + // UF functions funcntios handleUltrafiltrationPauseResume(); handleUltrafiltrationVolumeChangeValidation(); - handleTreatmentSettingBroadcastData(BC_DELAYED); handleUltrafiltrationVolumeChangeConfirm(); + handleUltrafiltrationBroadcastData(BC_DELAYED); + // Tx Time setting functions + handleTreatmentSettingBroadcastData(BC_DELAYED); + handleTreatmentTimeChangeValidation(); + handleTreatmentTimeChangeConfirm(); if ((_treatmentStatus.treatmentElapsedTimeMS / MILLISECONDS_PER_SECOND) >= (_treatmentParams.treatmentDurationMin * SECONDS_PER_MINUTE)) { _treatmentStatus.stateTransitionEvent = "T_Tx_2_TE"; status = STATE_ON_EXIT; @@ -455,20 +450,18 @@ void StateController::handleInitiateTreatmentRequestMessage(State_Status &status) { - if (! _treatmentRcvdMessages[ID_INITIATE_TREATMENT].isNull()){ + if (_treatmentRcvdMessages[ID_INITIATE_TREATMENT].isNull()){ return; } - quint32 treatmentStatus = extractU32DataFromReceivedMessage(ID_INITIATE_TREATMENT, 0); - User_Command_ID cmdID = CMD_STAND_BY; + quint32 treatmentStatus = extractU32DataFromReceivedMessage(ID_INITIATE_TREATMENT, 0); + User_Command_ID cmdID = CMD_STAND_BY; - // The initiate payload message payload. By default assume we are going back to standby - if (treatmentStatus == INITIATE_TREATMENT) { cmdID = CMD_PRE_TX; } - - _treatmentStatus.stateTransitionEvent = _transitionEventsFromStandby[cmdID][0].toString(); - _treatmentRcvdMessages[ID_INITIATE_TREATMENT].clear(); - handleUIResponseMessage(ID_TD_RESP_INITIATE_TREATMENT, ACCEPT_VALUE); - // Set the state to be on exit because the state has to exit - status = STATE_ON_EXIT; - } + // The initiate payload message payload. By default assume we are going back to standby + if (treatmentStatus == INITIATE_TREATMENT) { cmdID = CMD_PRE_TX; } + _treatmentStatus.stateTransitionEvent = _transitionEventsFromStandby[cmdID][0].toString(); + _treatmentRcvdMessages[ID_INITIATE_TREATMENT].clear(); + handleUIResponseMessage(ID_TD_RESP_INITIATE_TREATMENT, ACCEPT_VALUE); + // Set the state to be on exit because the state has to exit + status = STATE_ON_EXIT; } void StateController::handleTDOpModeTransitionBroadcastData(const TD_OP_MODE mode, const quint32 subMode, const Broadcast_Type BCType) @@ -628,7 +621,6 @@ { _treatmentStatus.hasTxParamsBeenInitialized = false; _treatmentStatus.treatmentElapsedTimeMS = DEF_TX_ELAPSED_TIME_S * MILLISECONDS_PER_SECOND; - _treatmentStatus.remainingTreatmentTimeS = DEF_TX_PARAM_PRESCRIBED_DUR_S - (_treatmentStatus.treatmentElapsedTimeMS / MILLISECONDS_PER_SECOND); _treatmentStatus.stateTransitionEvent = ""; _treatmentStatus.totalFluidBolusDeliveredML = 0.0; _treatmentStatus.accumFluidBolusDeliveredML = 0.0;