Index: sources/drydemo/StateController.h =================================================================== diff -u -r756496932decbaae7bb3c9f694afc0402eeb1349 -r6d7f1800f7f56813c0824df509487f527a4026b2 --- sources/drydemo/StateController.h (.../StateController.h) (revision 756496932decbaae7bb3c9f694afc0402eeb1349) +++ sources/drydemo/StateController.h (.../StateController.h) (revision 6d7f1800f7f56813c0824df509487f527a4026b2) @@ -29,7 +29,6 @@ void timerEvent(QTimerEvent *) override; private: - // TODO REMOVE // General defines #define UI_MSG_BB_STATUS_INDEX 4 @@ -40,7 +39,6 @@ #define MILLILITERS_PER_LITER 1000 #define ACCEPT_VALUE 1 #define REJECT_VALUE 0 - #define START_TX_FROM_MSG_38 1 #define CONFIRM_CMD_ACCEPT_CLOSE 3 #define PASS_RESULT 1 #define DEVICE_ID 1234 @@ -51,7 +49,7 @@ #define PROGRESS_TIME_BC_INTERVAL_MS 1000 #define NUM_OF_COUNTS_TIMER_BC_EMIT (PROGRESS_TIME_BC_INTERVAL_MS / QOBJECT_TIMER_TIMEOUT_MS) #define NUM_OF_COUNTS_TIMER_2_CONTROL (PROGRESS_TIME_BC_INTERVAL_MS / QOBJECT_TIMER_TIMEOUT_MS) - #define NUM_OF_COUNTS_TO_BC_MSG 3 + #define NUM_OF_COUNTS_TO_BC_MSG 3 // TODO remove // Treatment params #define MIN_DIAL_RATE_MLPM 100 @@ -66,7 +64,7 @@ #define MIN_UF_RATE_MLPM 0.0 #define MAX_UF_RATE_MLPM (2000.0 / MINUTES_PER_HOUR) - #define ACID_TYPES_1251_1_K 1.0 + #define ACID_TYPES_1251_1_K 1.0 // TODO remove? #define ACID_TYPES_CALCIUM 2.5 #define ACID_TYPES_BICARB 33 #define ACID_TYPES_SODIUM 137 @@ -76,8 +74,8 @@ #define DEF_TX_PARAM_PRESCRIBED_DUR_S DEF_TX_PARAM_PRESCRIBED_DUR_MIN * SECONDS_PER_MINUTE #define DEF_TX_PARAM_UF_VOLUME_L 2.0 #define DEF_TX_PARAM_BLOOD_FLOW_RATE_MLPM 400 - #define DEF_TX_PARAM_DIAL_FLOW_RATE_MLPM 600 - #define DEF_TX_PARAM_SALINE_BOLUS_VOL_ML 200 + #define DEF_TX_PARAM_DIAL_FLOW_RATE_MLPM 350 + #define DEF_TX_PARAM_SALINE_BOLUS_VOL_ML 100 #define DEF_TX_PARAM_RINSEBACK_FLOW_RATE_MLPM 250 #define DEF_TX_PARAM_ART_PRES_LIMIT_WIN_MMHG 120 #define DEF_TX_PARAM_VEN_PRES_LIMIT_WIN_MMHG 100 @@ -87,22 +85,25 @@ // Arterial /Venous limits #define MIN_ART_PRES_LIMIT_MMHG -300.0 #define MAX_ART_PRES_LIMIT_MMHG 100.0 - #define MIN_VEN_PRES_LIMIT_MMHG 0.0 + #define MIN_VEN_PRES_LIMIT_MMHG 20.0 #define MAX_VEN_PRES_LIMIT_MMHG 400.0 + #define MAX_TMP_PRES_LIMIT_MMHG 100.0 + #define MIN_TMP_PRES_LIMIT_MMHG -500.0 #define OCCLUSION_STABLE_TIME_COUNT (10 * MILLISECONDS_PER_SECOND) / QOBJECT_TIMER_TIMEOUT_MS + // Initiate treatment + #define INITIATE_TREATMENT 1 + #define ALLOW_DIALYSATE_DELIVER 1 + // Treatment defines #define BLOOD_PRIME_VOLUME_ML (106.6 + 40) #define BLOOD_PRIME_START_FLOW_MLPM 250 - #define FLOW_INTEGRATOR (1.0 / (SECONDS_PER_MINUTE * (MILLISECONDS_PER_SECOND / QOBJECT_TIMER_TIMEOUT_MS))) - #define MAX_DIALYSATE_VOLUME_ML 150000 + #define BLOOD_PRIME_FLOW_INTEGRATOR (1.0 / (SECONDS_PER_MINUTE * (MILLISECONDS_PER_SECOND / QOBJECT_TIMER_TIMEOUT_MS))) #define BLOOD_PRIME_PAUSE_TIMEOUT_S (5 * SECONDS_PER_MINUTE) + #define BLOOD_PRIME_RESUME 1 + #define BLOOD_PRIME_PAUSE 2 + #define BLOOD_PRIME_RAMP_STATE 1 - // Treatment substates - #define BLOOD_RPIME_SUB_STATE 1 - #define DIALYSIS_SUB_STATE 2 - #define RINSEBACK_SUBSTATE 4 - #define TX_END_SUB_STATE 6 // Heparin substates #define HEPARIN_OFF_SUBSTATE 0 #define HEPARIN_PAUSED_SUBSTATE 2 @@ -124,15 +125,9 @@ #define RINSEBACK_PAUSE_STATE 2 #define RINSEBACK_STOP_STATE 3 - // Saline Bolus defines - #define SALINE_BOLUS_IDLE_STATE 0 - #define SALINE_BOLUS_IN_PROG_STATE 2 - #define SALINE_BOLUS_MAX_DELIVERED 3 + // Fluid Bolus defines + #define FLUID_BOLUS_START_CMD 1 - #define SALINE_BOLUS_START_CMD 1 - #define SALINE_BOLUS_MAX_VOL_ML 800 - #define SALINE_BOLUS_TARGET_FLOW_MLPM 250 - enum Treatment_States { TREAT_START_STATE = 0, TREAT_BLOOD_PRIME_STATE = 1, @@ -146,6 +141,13 @@ TREAT_DIALYSIS_PAUSED_STATE = 9, }; + enum Fluid_Bolus_States { + FLUID_BOLUS_IDLE_STATE = 0, + FLUID_BOLUS_WAIT_FOR_PUMPS_STOP_STATE = 1, + FLUID_BOLUS_SALINE_IN_PROGRESS_STATE = 2, + FLUID_BOLUS_SUBSITUTE_IN_PROGRESS_STATE = 3, + }; + enum User_Command_ID { CMD_NONE = -1, CMD_STAND_BY = 0, @@ -174,11 +176,15 @@ struct Treatment_Status_Vars { bool hasTxParamsBeenInitialized; - quint32 treatmentElapsedTimeS; + quint32 treatmentElapsedTimeMS; quint32 remainingTreatmentTimeS; quint32 prescribedTreatmentTimeS; User_Command_ID userCmd; QString stateTransitionEvent; + float accumFluidBolusDeliveredML; + float totalFluidBolusDeliveredML; + Fluid_Bolus_States fluidBolusState; + Treatment_States txState; }; struct Treatment_Params { @@ -226,28 +232,42 @@ void handleDryDemoMenuRequestMessage(); // State handlers - void onBackToStanbyEvent(); // TODO remove - void onStandbyStateChange(bool active); void onPretreatmentStateChange(bool active); void onBloodPrimeStateChange(bool active); void onTreatmentStateChange(bool active); + void onTreatmentEndStateChange(bool active); - // Helper functions + // Helper methods void handleTDOpModeTransitionBroadcastData(const Can::TD_OP_MODE mode, const quint32 subMode, const Broadcast_Type BCType); void setTreatmentParametersFromUI(const QVariant &payload); // TODO move the implementation to pretx cpp void handleUIResponseMessage(const Can::Message_ID_Enum msgID, const quint32 acceptReject); void resetDryDemoVariables(); void handleBackToStandbyEvent(State_Status &status); quint32 extractU32DataFromReceivedMessage(const Can::Message_ID_Enum msgID, qint32 index); + // Standby methods + void handleInitiateTreatmentRequestMessage(State_Status &status); + // Blood prime methods float getBloodPrimeRampStepML(); void handleBloodPrimeBroadcastData(const float accumulatedVolML, const quint32 primeTimeOutS, const quint32 pauseCountDownS, const Broadcast_Type BCType); - void handleBloodPrimeVolML(const bool resume, const float rampStepML, const bool hasFlowChanged, quint32 &currBlodFlowMLPM, float &accumBloodVolML); + void handleBloodPrimeVolML(const bool resume, const float rampStepML, const bool hasFlowChanged, quint32 &currBloodFlowMLPM, float &accumBloodVolML); // Treatment methods void setTreatmentParametersToDefault(); - void handleTreatmentSetpointsBroadcastData(const quint32 bloodFlowMLPM, const quint32 dialFlowMLPM, const float dialTempC); + void handleTreatmentSetpointsBroadcastData(const quint32 bloodFlowMLPM, const quint32 dialFlowMLPM, const float dialTempC, const Broadcast_Type BCType); void handleTreatmentStatesBroadcastData(const QList &txStates, const Broadcast_Type BCType); + void handleFluidBolusRequestMessage(); + void handleFluidBolusFluidDelivery(const quint32 bloodFlowMLPM); + void handleFluidBolusBroadcastData(const Broadcast_Type BCType); + void handleTDPressureProcessAndBroadcastData(const Broadcast_Type BCType); + void handleTreatmentTimeProcessAndBroadcastData(const Broadcast_Type BCType); + void handleTreatmentPrescriptionEditRequestMessage(); + void handleSetPointBloodFlowChange(quint32 &bloodFlowMLPM, bool &hasBloodFlowChanged); + void handleDDGenDialysateModeBroadcastData(const Broadcast_Type BCType); + void handleSetPointDialysateFlowChange(); + + // Treatment end methods + };