Index: sources/drydemo/StateController.h =================================================================== diff -u -r8aa65ae1bbef5f6121783026efeeb99114c14414 -r6e845078107f7d15a3e471be421d5bce31fc51da --- sources/drydemo/StateController.h (.../StateController.h) (revision 8aa65ae1bbef5f6121783026efeeb99114c14414) +++ sources/drydemo/StateController.h (.../StateController.h) (revision 6e845078107f7d15a3e471be421d5bce31fc51da) @@ -30,15 +30,18 @@ void timerEvent(QTimerEvent *) override; private: - struct Treatment_Status_Vars { - bool hasTxParamsBeenInitialized; - quint32 treatmentElapsedTimeMS; + bool hasTxParamsBeenInitialized; User_Command_ID userCmd; QString stateTransitionEvent; + bool requestTreatmentReset; + // Treatment time variable(s) + quint32 treatmentElapsedTimeMS; + // Fluid bolus + Fluid_Bolus_States fluidBolusState; float accumFluidBolusDeliveredML; float totalFluidBolusDeliveredML; - Fluid_Bolus_States fluidBolusState; + // Treatment states Treatment_States txState; Dialysis_States dialysisSubState; // UF variables @@ -47,12 +50,19 @@ bool validateUFVolReceived; float validateUFVolGoalL; float validateUFRateLHR; - // Tx dur variables + // Treatment duration variables bool validateTxDurReceived; quint32 validateTxDurMin; quint32 validateHepDurMin; - // Alarm variabls - bool isAnAlarmActive; + // Alarm variables + Alarm_List activeAlarm; + // Rinseback variables + Rinseback_States rinsebackStates; + quint32 rinsebackFlowMLPM; + float accumRinsebackVolML; + float additionalRinsebackVolML; + bool isRinsebackComplete; + quint32 rinsebackTimerCounter; }; struct Treatment_Params { @@ -83,7 +93,8 @@ float ufVolumeL; }; - QHash_transitionEventsFromStandby; + QHash _transitionEventsFromStandby; + QHash _alarmTriggerSpecs; QList _broadcastMessages; QList _sendMessages; QHash _treatmentRcvdMessages; @@ -92,18 +103,20 @@ Treatment_Status_Vars _treatmentStatus; bool _isBroadcastListReady; // TODO use a mutex? bool _isSendListReady; // Todo use a mutex? - bool _hasUserConfirmedToProceed; // TODO remove? drydemoXMLStates _dryDemo; // CAN function(s) void sendMessages(bool isBroadcast); - void handleDryDemoMenuRequestMessage(); + bool handleDryDemoMenuRequestMessage(); // State handlers void onStandbyStateChange(bool active); void onPretreatmentStateChange(bool active); void onBloodPrimeStateChange(bool active); void onTreatmentStateChange(bool active); + void onTreatmentPauseStateChange(bool active); + void onTreatmentRinsebackStateChange(bool active); + void onTreatmentRecriculateStateChange(bool active); void onTreatmentEndStateChange(bool active); // Helper methods @@ -113,10 +126,13 @@ void resetDryDemoVariables(); void handleBackToStandbyEvent(State_Status &status); quint32 extractU32DataFromReceivedMessage(const Can::Message_ID_Enum msgID, qint32 index); - float extractF32DataFromReceivedMessage(const Can::Message_ID_Enum msgID, qint32 index); + float extractF32DataFromReceivedMessage(const Can::Message_ID_Enum msgID, qint32 index); + void triggerAnAlarm(Alarm_List alarmID); + void handleAlarmUserAction(State_Status &status); // Standby methods void handleInitiateTreatmentRequestMessage(State_Status &status); + void handleSendUIConfirmationMessage(const Generic_Confirm_Id confirmID, const Generic_Confirm_Command confirmCmd, const Reject_Reasons rejectReason = REQUEST_REJECT_REASON_NONE); // Blood prime methods float getBloodPrimeRampStepML(); @@ -148,6 +164,12 @@ void handleTreatmentTimeChangeValidation(); void handleTreatmentTimeChangeConfirm(); + // Treatment rinseback methods + void initializeRinseback(); + void handleRinsebackRequestMessage(); + void handleRinsebackDelivery(); + void handleRinsebackBroadcastData(const Broadcast_Type BCType); + // Treatment end methods };