Index: sources/StateController.h =================================================================== diff -u -r43668888e2a573f688493685ce3535c3b2117558 -r47baa703592f0e21098cb21c0ed267de4e958b2f --- sources/StateController.h (.../StateController.h) (revision 43668888e2a573f688493685ce3535c3b2117558) +++ sources/StateController.h (.../StateController.h) (revision 47baa703592f0e21098cb21c0ed267de4e958b2f) @@ -7,7 +7,7 @@ #include "main.h" #include "MessageGlobals.h" -#include "drydemoxmlstates.h" +#include "LeahiDryDemoXMLStates.h" #define _StateController StateController::I() @@ -29,6 +29,8 @@ void timerEvent(QTimerEvent *) override; private: + + // TODO REMOVE // General defines #define UI_MSG_BB_STATUS_INDEX 4 #define UI_MSG_BB_PAYLOAD_ID 0x63 @@ -129,6 +131,7 @@ #define SALINE_BOLUS_START_CMD 1 #define SALINE_BOLUS_MAX_VOL_ML 800 #define SALINE_BOLUS_TARGET_FLOW_MLPM 250 + // TODO REMOVE enum User_Command_ID { CMD_NONE = -1, @@ -156,128 +159,24 @@ STATE_ON_EXIT, }; - enum Rinseback_Rqst { - RINSEBACK_START_RB = 0, - RINSEBACK_ACCEL_FLOW = 1, - RINSEABCK_DECEL_FLOW = 2, - RINSEBACK_PAUSE_RB = 3, - RINSEBACK_RESUME_RB = 4, - RINSEBACK_END_RB = 5, - RINSEBACK_SALINE_BOLUS = 6, - RINSEBACK_END_TX = 8, - RINSEBACK_BACK = 9, - }; - struct Pre_Treatment_Params { - bool hasTxParamsBeenInitialized; - quint32 bloodFlowRateMLPM; - quint32 dialysateFlowRateMLPM; - quint32 txDurationMins; - quint32 heparinPreStopMin; - quint32 salineBolusVolML; - quint32 acidConc; - quint32 bicarbConc; - quint32 dialyzerType; - quint32 heparinType; - quint32 bloodMeasurementInveralMin; - quint32 rinsebackFlowRateMLPM; - qint32 areterialPresLimitWindowMMHG; - qint32 venousPresLimitWindowMMHG; - qint32 venousPresLimitAsymWindowMMHG; - float heparinDispenseRateMLHR; - float heparinBolusVolML; - float dialysateTemperatureC; - }; - - // New state machine stuff - struct Treatment_Variables { - quint32 broadcastIntervalCount; - quint32 treatmentElapsedTimeS; - quint32 remainingTreatmentTimeS; - quint32 prescribedTreatmentTimeS; - // UF variables - float txParamsUFVolL; - float prescribedMaxUFVolML; - float prescribedUFRate; - float refUFVolumeML; - float measUFVolumeML; - // Arterial/venous values - float curArtPresMMHG; - float curVenPresMMHG; - qint32 minArtPresLimitMMHG; - qint32 maxArtPresLimitMMHG; - qint32 minVenPresLimitMMHG; - qint32 maxVenPresLimitMMHG; - // Accumulated saline bolus volume in millilters - quint32 cumSalineVolML; - // Treatment start and end times - quint32 treatmentStarTimeEpoch; - quint32 treatmentEndTimeEpoch; - // Accumulated heparin dispensed volume in milliters - float cumHeparinDisVolML; - }; - QHash_transitionEventsFromIdle; QList _broadcastMessages; QList _sendMessages; QHash _treatmentRcvdMessages; QRandomGenerator _randNumGenerator; bool _isBroadcastListReady; // TODO use a mutex bool _isSendListReady; // Todo use a mutex - Treatment_Variables _treatmentVars; - Pre_Treatment_Params _treatmentParams; bool _hasUserConfirmedToProceed; drydemoXMLstates _dryDemo; + // CAN function(s) void sendMessages(bool isBroadcast); - void setTreatmentParams(bool isFromUI, const QVariant &payload); - void prepareOcclusionBroadcastData(); - void prepareTreatmentTimeBroadcastData(); - void prepareBloodFlowBroadcastData(quint32 flowMLPM); - void prepareDialysateFlowBroadcastData(); - void prepareDialysateOutFlowBroadcastData(); - void prepareTreatmentParamsRangesBroadcastData(bool isResetInSB); - void prepareHDModeTransitionBroadcastData(Can::HD_OP_MODE mode, quint32 subMode); - void prepareStatesBroadcastData(Can::Message_ID_Enum msgID, const QList &preTxStates); - void prepareBloodPrimeBroadcastData(float accumulatedVolML); - void prepareRinsebackBroadcastData(const QList &volsML, const QList &payload); - void prepareTreatmentTimeChangeResponse(quint32 accept, quint32 txDurS, float maxUFvolML); - void prepareSalineBolusBroadcastData(float cumSalineVolML, float bolSalineVolML); - void prepareHeparinVolumeBroadcastData(); - - void handleTreatmentTimeChangeRequest(const QVariant &payload); - qint32 handleMsgBBPayload(const QVariant &payload); - void prepareMsgBA(quint32 cmd, quint32 acceptType); - bool hasPreTxTimerElapsed(Can::Message_ID_Enum msgID, Can::Can_Id canChan, - quint32 &timerCountDownS, quint32 defaultTimeoutS); - void handleUltrafiltrationValidation(const QVariant &payload); - void handleRinsebackSubstate(const QVariant &payload, float &accumVolML, - quint32 &txState, quint32 &rbState, quint32 &rbFlowMLPM); - bool isTreatmenStartRequested(const QVariant &payload); - void handleAlarmStatus(bool trigger, User_Command_ID cmd); - void generateOcclusionPresureValues(bool initArray, quint32 stableCount); - void handlePressureChangeReqeust(const QVariant &payload); - void handleBloodDialRateChangeRequest(const QVariant &payload); - void handleTreatmentLogRequest(); - void handleHeparinStatus(quint32 &heparinSubState); - // State handlers void onIdleStateChange(bool active); - void onTreatmentParamsStateChange(bool active); - void onWaterSampleStateChange(bool active); - void onConsumablesStateChange(bool active); - void onDisposablesStateChange(bool active); - void onSystemPrimeStateChange(bool active); - void onBPHRStateChange(bool active); - void onUltrafiltrationStateChange(bool active); - void onConnectionStateChange(bool active); - void onStartTreatmentStateChange(bool active); - void onTreatmentBloodPrimeStateChange(bool active); - void onTreatmentTreatmentStateChange(bool active); - void onEndTreatmentStateChange(bool active); - void onPostTreatmentStateChange(bool active); - void onDisinfectStateChange(bool active); + // Helper functions + void prepareTDOpModeTransitionData(Can::TD_OP_MODE mode, quint32 subMode); };