Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r4b17eafaab61aef5766ffd0c17769561bdbb159c -r0b8f332794e830b2a9c87c7b7ba852120e1a7334 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 4b17eafaab61aef5766ffd0c17769561bdbb159c) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 0b8f332794e830b2a9c87c7b7ba852120e1a7334) @@ -46,12 +46,12 @@ /// Interval (ms/task time) at which the post-treatment state data is published on the CAN bus. #define POST_TREATMENT_DATA_PUB_INTERVAL ( 250 / TASK_GENERAL_INTERVAL ) #define DIP_DRAIN_DG_FLOW_RATE_ML_MIN 60 ///< DG drain inlet pump flow rate in mL/min. -#define DIP_DRAIN_DG_RUNTIME_MS 20000 ///< DG drain inlet pump run time. +#define DIP_DRAIN_DG_RUNTIME_MS 20000 ///< DG drain inlet pump run time in ms. /// Post-Treatment drain reservoirs state machine. typedef enum Drain_States { - DRAIN_DG_STATE = 0, ///< Drain DG excess fluid state. + DRAIN_DG_DEPRIME_STATE = 0, ///< Drain DG De-prime dialysate lines of excess fluid state. DRAIN_RESERVOIR_SWITCH_STATE, ///< Switch reservoir state. DRAIN_RESERVOIR_START_DRAIN_STATE, ///< Drain reservoir start drain state. DRAIN_RESERVOIR_DRAIN_STATE, ///< Drain first reservoir state. @@ -65,6 +65,8 @@ static BOOL disposableRemovalConfirmed; ///< Flag indicates user confirms disposable removal. static BOOL rinseConcentrateLines; ///< FLag indicates to rinse concentrate lines. static BOOL isThisFirstDrain; ///< Flag to indicate whether this is the first time the reservoir is drained. +static BOOL drainDGDePrimeActive; ///< FLag to indicate DePrime DG Dialysate lines active +static U32 drainDGDePrimeStarttime; ///< DG DePrime start time static HD_POST_TREATMENT_STATE_T currentPostTreatmentState; ///< Current state of post-treatment mode state machine. static DRAIN_STATE_T currentDrainReservoirState; ///< Current drain reservoir state. static U32 postTreatmentPublishTimerCounter; ///< Timer counter used to schedule post-treatment data broadcast. @@ -81,7 +83,7 @@ static HD_POST_TREATMENT_STATE_T handlePostTreatmentVerifyState( void ); static void execDrainReservoirs( void ); -static DRAIN_STATE_T handleDrainDGState( void ); +static DRAIN_STATE_T handleDrainDePrimeDGDialysateLinesState( void ); static DRAIN_STATE_T handleDrainReservoirSwitchState( void ); static DRAIN_STATE_T handleDrainReservoirStartDrainState( void ); static DRAIN_STATE_T handleDrainReservoirDrainState( void ); @@ -102,7 +104,7 @@ rinseConcentrateLines = FALSE; isThisFirstDrain = TRUE; currentPostTreatmentState = HD_POST_TREATMENT_DRAIN_RESERVOIRS_STATE; - currentDrainReservoirState = DRAIN_DG_STATE; // DRAIN_RESERVOIR_SWITCH_STATE; + currentDrainReservoirState = DRAIN_DG_DEPRIME_STATE; postTreatmentPublishTimerCounter = 0; // Reset treatment log data @@ -150,6 +152,9 @@ exitBloodLeakNormalState(); + drainDGDePrimeActive = FALSE; + drainDGDePrimeStarttime = 0; + return currentPostTreatmentState; } @@ -506,8 +511,8 @@ { switch ( currentDrainReservoirState ) { - case DRAIN_DG_STATE: - currentDrainReservoirState = handleDrainDGState(); + case DRAIN_DG_DEPRIME_STATE: + currentDrainReservoirState = handleDrainDePrimeDGDialysateLinesState(); break; case DRAIN_RESERVOIR_SWITCH_STATE: @@ -534,35 +539,33 @@ /*********************************************************************//** * @brief - * The handleDrainDGState function waits for DG to complete + * The handleDrainDePrimeDGDialysateLinesState function waits for DG to complete * reservoir switch. * @details Inputs: * @details Outputs: * @return next state *************************************************************************/ -static DRAIN_STATE_T handleDrainDGState( void ) +static DRAIN_STATE_T handleDrainDePrimeDGDialysateLinesState( void ) { - static BOOL drain_dg_active = FALSE; - static U32 drain_dg_starttime = 0; - DRAIN_STATE_T state = DRAIN_DG_STATE; + DRAIN_STATE_T state = DRAIN_DG_DEPRIME_STATE; if ( ( DG_MODE_GENE == getDGOpMode() ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == getDGSubMode() ) ) { - if ( FALSE == drain_dg_active ) + if ( FALSE == drainDGDePrimeActive ) { // First entry - Run DPi slow reverse, VDi, VDo closed in init, DPo Off in init. setDialInPumpTargetFlowRate( DIP_DRAIN_DG_FLOW_RATE_ML_MIN, MOTOR_DIR_REVERSE, PUMP_CONTROL_MODE_OPEN_LOOP ); - drain_dg_starttime = getMSTimerCount(); - drain_dg_active = TRUE; + drainDGDePrimeStarttime = getMSTimerCount(); + drainDGDePrimeActive = TRUE; } } - if ( TRUE == drain_dg_active ) + if ( TRUE == drainDGDePrimeActive ) { // Thereafter, check for time elapsed - if ( TRUE == didTimeout( drain_dg_starttime, DIP_DRAIN_DG_RUNTIME_MS ) ) + if ( TRUE == didTimeout( drainDGDePrimeStarttime, DIP_DRAIN_DG_RUNTIME_MS ) ) { - drain_dg_active = FALSE; - setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + drainDGDePrimeActive = FALSE; + signalDialInPumpHardStop( ); state = DRAIN_RESERVOIR_SWITCH_STATE; } }