Index: sources/StateController.cpp =================================================================== diff -u -rde65521102d2315e1812b8b14b2b21d6c4e5e949 -r4af87533b19d61512e7a368554042501eeea75f2 --- sources/StateController.cpp (.../StateController.cpp) (revision de65521102d2315e1812b8b14b2b21d6c4e5e949) +++ sources/StateController.cpp (.../StateController.cpp) (revision 4af87533b19d61512e7a368554042501eeea75f2) @@ -29,8 +29,6 @@ _dryDemo.connectToState("End_Tx" , this, &StateController::onEndTreatmentStateChange ); _dryDemo.connectToState("Disinfect" , this, &StateController::onDisinfectStateChange ); - - resetVariables(); } void StateController::quit() @@ -146,17 +144,6 @@ } // ---------------------- Private methods ------------------ // -void StateController::resetVariables() -{ - _isBroadcastListReady = false; - _isSendListReady = false; - - _treatmentVars.broadcastIntervalCount = 0; - - _broadcastMessages.clear(); - _sendMessages.clear(); -} - void StateController::sendMessages(bool isBroadcast) { QList msgList = _broadcastMessages; @@ -311,8 +298,6 @@ _treatmentVars.remainingTreatmentTimeS = 0; } - //qDebug() << " Treatment time" << QTime::currentTime() << _treatmentVars._broadcastIntervalCount << _treatmentVars._treatmentElapsedTimeS << _treatmentVars._remainingTreatmentTimeS; - QVariantList msg; msg.append(static_cast(ID_TX_TIME_BC)); msg.append(Can_Id::eChlid_HD_Sync); @@ -526,17 +511,22 @@ cmd = param.value; } + prepareMsgBA(cmd, CONFIRM_CMD_ACCEPT_CLOSE); + + return cmd; +} + +void StateController::prepareMsgBA(quint32 cmd, quint32 acceptType) +{ QVariantList msg; msg.append(static_cast(ID_HD_UI_CONFIRM_RQST)); msg.append(Can_Id::eChlid_HD_UI); - msg.append(UI_MSG_BB_PAYLOAD_ID); - msg.append(ACCEPT_VALUE); + msg.append(cmd); + msg.append(acceptType); msg.append(0); _isSendListReady = false; _sendMessages.append(msg); _isSendListReady = true; - - return cmd; } bool StateController::hasPreTxTimerElapsed(Can::Message_ID_Enum msgID, Can::Can_Id canChan, @@ -703,9 +693,21 @@ static State_Status status = STATE_ON_ENTRY; auto inEntry = [=](){ - resetVariables(); prepareHDModeTransitionBroadcastData(MODE_STAN, 0); + // Send the pre treatment states to reset so it starts from the right state + QList preTxStates({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}); + prepareStatesBroadcastData(ID_PRE_TX_STATES_BC, preTxStates); + + // Send the treatment params in Idle too. This is to make sure if the user + // jumped to the Ultrafiltration page the min and max UF volumes are set prior to it. + QVariant emptyVar; + setTreatmentParams(false, emptyVar); + prepareTreatmentParamsRangesBroadcastData(); + + // Send message 0xBA in case the dry demo menu stayed open to be closed upon transitioning to standby + prepareMsgBA(MODE_STAN, CONFIRM_CMD_ACCEPT_CLOSE); + _transitionEventsFromIdle.clear(); _transitionEventsFromIdle[CMD_TX_PARAMS ] = "Transition_2_Tx_Parms"; _transitionEventsFromIdle[CMD_WATER_SAMPLE ] = "Transition_2_Water_Sample"; @@ -1218,7 +1220,6 @@ auto inEntry = [=](){ qDebug() << "Start Treatment active"; - resetVariables(); prepareHDModeTransitionBroadcastData(MODE_TREA, 0); QList txStates({BLOOD_RPIME_SUB_STATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}); @@ -1251,11 +1252,11 @@ static float accumBloodVolML = 0.0; auto inEntry = [=](){ - resetVariables(); qDebug() << "Blood prime entry"; status = STATE_ON_ACTION; accumBloodVolML = 0.0; + _treatmentVars.broadcastIntervalCount = 0; prepareBloodPrimeBroadcastData(accumBloodVolML); }; @@ -1300,7 +1301,6 @@ static State_Status status = STATE_ON_ENTRY; auto inEntry = [=](){ - resetVariables(); _treatmentVars.prescribedTreatmentTimeS = _treatmentParams.txDurationMins * SECONDS_PER_MINUTE; _treatmentVars.treatmentElapsedTimeS = DEF_TX_ELAPSED_TIME_S; _treatmentVars.remainingTreatmentTimeS = _treatmentVars.prescribedTreatmentTimeS - _treatmentVars.treatmentElapsedTimeS;