Index: firmware/App/Modes/ModePreGenDialysate.c =================================================================== diff -u -re9d780d77db564793278dac7dc613354f7b93049 -r1a258edd45a2bca2fbbff23a5480493f0ab3f10e --- firmware/App/Modes/ModePreGenDialysate.c (.../ModePreGenDialysate.c) (revision e9d780d77db564793278dac7dc613354f7b93049) +++ firmware/App/Modes/ModePreGenDialysate.c (.../ModePreGenDialysate.c) (revision 1a258edd45a2bca2fbbff23a5480493f0ab3f10e) @@ -14,6 +14,7 @@ * @date (original) 18-Apr-2025 * ***************************************************************************/ +#include // For fabs #include "BalancingChamber.h" #include "ConcentratePumps.h" @@ -46,16 +47,21 @@ #define PRE_GEN_DIALYSATE_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the pre-gen dialysate mode data published. #define HYD_CHAMBER_PRES_CHECK_TIME_OUT ( 30 * MS_PER_SECOND ) ///< Time out period when hydraulics chamber pressure check initiated #define NEG_PRES_PERSISTENCE_TIME_MS ( 1 * MS_PER_SECOND ) ///< Persistence time for Hydraulics chamber negative degassing pressure check. -#define PRE_GEN_DEFAULT_TIME_OUT ( 60 * MS_PER_SECOND ) ///< Pre Generate Default timeout for various states in ms. -#define PRE_GEN_FILL_HYDRO_CHAMBER_TIMEOUT ( 60 * MS_PER_SECOND ) ///< Pre Generate Hydro Chamber timeout in ms -#define PRE_GEN_FILL_HYDRO_CHAMBER_STABILITY_TIMER ( 10 * MS_PER_SECOND ) ///< Pre Generate Hydro Chamber stability timer -#define PRE_GEN_PRIME_CONCENTRATE_TIMEOUT ( 30 * MS_PER_SECOND ) ///< Pre Generate concentrate line priming timer. +#define PRE_GEN_FILL_HYDRO_CHAMBER_TIMEOUT ( 45 * MS_PER_SECOND ) ///< Pre Generate Hydro Chamber timeout in ms +#define PRE_GEN_FILL_HYDRO_CHAMBER_STABILITY_TIMER ( 1 * MS_PER_SECOND ) ///< Pre Generate Hydro Chamber stability timer +#define PRE_GEN_PRIME_CONCENTRATE_TIMEOUT ( 45 * MS_PER_SECOND ) ///< Pre Generate concentrate line priming timer. #define PRE_GEN_PRIME_CONCENTRATE_PUMP_SPEED 100.0F ///< Concentrate line priming speed. #define PRE_GEN_PRIME_CONCENTRATE_VOLUME 0xFFFF ///< Concentrate line volume. FFFF = no set volume. #define PRE_GEN_PRIME_BAL_CHAMBER_CONCENTRATE_PUMP_SPEED 60.0F ///< Concentrate line speed for balancing chamber switching. #define PRE_GEN_PRIME_D12_RPM 1600.0F ///< Pre Generate D12 set RPM. #define PRE_GEN_PRIME_D48_RPM 2000.0F ///< Pre Generate D48 set rpm. #define PRE_GEN_PRIME_DIALYZER_CONCENTRATE_PUMP_SPEED 30.0F ///< Pre Generate prime dialyzer concentate pump speed. +#define PRE_GEN_HYDRO_RECIRC_PRESSURE_TOLERANCE 1.0F ///< Pre Generate hydro recirc pressure test diff. +#define PRE_GEN_HYDRO_RECIRC_D9_PRESSURE -12.0F ///< Pre Generate D9 hydro recirc expected pressure. +#define PRE_GEN_HYDRO_RECIRC_D18_PRESSURE 25.0F ///< Pre Generate D18 hydro recirc expected pressure. +#define PRE_GEN_HYDRO_RECIRC_TIME_MS ( 10 * MS_PER_SECOND ) ///< Pre Generate hydro recirc pressure timer. +#define PRE_GEN_HYD_CHAMBER_FLUID_TEMP_C_MIN 35.0F ///< Minimum hydraulics fluid temperature in deg celsius +#define PRE_GEN_ULTRA_FILTER_TIMEOUT ( 20 * MS_PER_SECOND ) ///< Pre Generate Ultrafilter timer. // ********** private data ********** @@ -67,21 +73,24 @@ static BOOL pendingStopDDPreGenDialRequest; ///< Flag indicating TD has requested DD stop the pre generation dialysate. static U32 preGenDialysatePublishTimerCounter; ///< Pre-Gen Dialysate data broadcast timer counter used to schedule when to transmit data. static OVERRIDE_U32_T preGenDialysateModePublishInterval; ///< Interval (in task intervals) at which to publish pre-gen dialysate mode data to CAN bus. -static U32 preGenAcidPrimeTimer; ///< Acid priming timer counter. -static U32 preGenBicarbPrimeTimer; ///< Bicarb priming timer counter. static U32 preGenfillChamberCTimer; ///< Hydro chamber timer counter. static BOOL currentHydroChamberStatus; ///< Current hydro chamber status. static U32 startPreGenHydroStabilityTimer; ///< Hydro Chamber stability timer. +static U32 preGenHydroRecircTimer; ///< Hydro Chamber Recirc timer. +static U32 preGenUltrafilterTimer; ///< Prime Ultrafilter Timer; +static U32 preGenConcentrateTimer; // ********** private function prototypes ********** static void publishPreGenDialysateState( void ); -static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysateFillCompleteCheckState( void ); +static DD_PRE_GEN_DIALYSATE_STATE_T handleWaitForFPState( void ); +static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysateHydroChamberFill( void ); +static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysateHydroChamberRecirc( void ); static DD_PRE_GEN_DIALYSATE_STATE_T handleDryBicartInitialFillState( void ); static DD_PRE_GEN_DIALYSATE_STATE_T handleFillChamberF( void ); -static DD_PRE_GEN_DIALYSATE_STATE_T handlePrimeBicarbLine( void ); -static DD_PRE_GEN_DIALYSATE_STATE_T handlePrimeAcidLine( void ); -static DD_PRE_GEN_DIALYSATE_STATE_T handleWaitForFPState( void ); +static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysatePrimeConcentrate( void ); +static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysatePrimeUltrafilter( void ); + static void setModePreGenDialysateTransition( DD_PRE_GEN_DIALYSATE_STATE_T state ); //Wet Self test @@ -112,9 +121,10 @@ preGenDialysateModePublishInterval.override = OVERRIDE_RESET; currentHydroChamberStatus = FALSE; startPreGenHydroStabilityTimer = FALSE; - preGenAcidPrimeTimer = 0; - preGenBicarbPrimeTimer = 0; preGenfillChamberCTimer = 0; + preGenHydroRecircTimer = 0; + preGenConcentrateTimer = 0; + preGenUltrafilterTimer = 0; } /*********************************************************************//** @@ -153,10 +163,10 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_SKIP_PRE_GEN_PRIMING ) ) { - preGenDialysateState = DD_PRE_GEN_DIALYSATE_WAIT_FOR_GEND; + preGenDialysateState = DD_PRE_GEN_PRIME_ULTRAFILTER; } - //Manage Inlet water control after hydro chamber fill + // Manage Inlet water control after hydro chamber fill if( DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_FILL_CHECK < preGenDialysateState ) { currentHydroChamberStatus = hydChamberWaterInletControl(); @@ -179,9 +189,13 @@ break; case DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_FILL_CHECK: - preGenDialysateState = handlePreGenDialysateFillCompleteCheckState(); + preGenDialysateState = handlePreGenDialysateHydroChamberFill(); break; + case DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_RECIRC: + preGenDialysateState = handlePreGenDialysateHydroChamberRecirc(); + break; + case DD_PRE_GEN_DRY_BICART_INITIAL_FILL: preGenDialysateState = handleDryBicartInitialFillState(); break; @@ -190,23 +204,15 @@ preGenDialysateState = handleFillChamberF(); break; - case DD_PRE_GEN_PRIME_BICARB_LINE: - preGenDialysateState = handlePrimeBicarbLine(); + case DD_PRE_GEN_PRIME_CONCENTRATE: + preGenDialysateState = handlePreGenDialysatePrimeConcentrate(); break; - case DD_PRE_GEN_PRIME_ACID_LINE: - preGenDialysateState = handlePrimeAcidLine(); + case DD_PRE_GEN_PRIME_ULTRAFILTER: + preGenDialysateState = handlePreGenDialysatePrimeUltrafilter(); break; - case DD_PRE_GEN_DIALYSATE_WAIT_FOR_GEND: - - if ( TRUE == pendingStartDDGenDialRequest ) - { - pendingStartDDGenDialRequest = FALSE; - } - setTDDialyzerBypass( TRUE ); - requestNewOperationMode( DD_MODE_GEND ); - + case DD_PRE_GEN_SELF_TESTS: break; default: @@ -251,7 +257,7 @@ { BOOL result = FALSE; - if ( DD_PRE_GEN_DIALYSATE_WAIT_FOR_GEND == preGenDialysateState ) + if ( DD_PRE_GEN_PRIME_ULTRAFILTER == preGenDialysateState ) { result = TRUE; pendingStartDDGenDialRequest = TRUE; @@ -302,6 +308,7 @@ else if ( ( FP_MODE_DEGP == fpMode ) || ( FP_MODE_GENP == fpMode ) ) { state = DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_FILL_CHECK; + } //TODO: Should DD keep a timer and Alarm if FP never transitions? @@ -311,13 +318,13 @@ /*********************************************************************//** * @brief - * The handlePreGenDialysateFillCompleteCheckState function checks the + * The handlePreGenDialysateHydroChamberFill function checks the * hydrochamber fill and transition to next state. * @details \b Inputs: state * @details \b Outputs: none * @return current state of PreGenDialysate mode *************************************************************************/ -static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysateFillCompleteCheckState( void ) +static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysateHydroChamberFill( void ) { DD_PRE_GEN_DIALYSATE_STATE_T state = DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_FILL_CHECK; @@ -326,23 +333,61 @@ if ( FALSE == startPreGenHydroStabilityTimer ) { preGenfillChamberCTimer = getMSTimerCount(); - setDialysatePumpTargetRPM( D12_PUMP, PRE_GEN_PRIME_D12_RPM, TRUE ); - setValveState( D14_VALV, VALVE_STATE_OPEN ); startPreGenHydroStabilityTimer = TRUE; } if ( TRUE == didTimeout( preGenfillChamberCTimer, PRE_GEN_FILL_HYDRO_CHAMBER_STABILITY_TIMER ) ) { - state = DD_PRE_GEN_DRY_BICART_INITIAL_FILL; + state = DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_RECIRC; + } + } + return state; +} + +/*********************************************************************//** + * @brief + * The handlePreGenDialysateHydroChamberRecirc function checks the + * hydrochamber fill and transition to next state. + * @details \b Inputs: state + * @details \b Outputs: none + * @return current state of PreGenDialysate mode + *************************************************************************/ +static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysateHydroChamberRecirc( void ) +{ + DD_PRE_GEN_DIALYSATE_STATE_T state = DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_RECIRC; + F32 d18Pres = getFilteredPressure( D18_PRES ); + F32 d9Pres = getFilteredPressure( D9_PRES ); + F32 d18Diff = 0.0F; + F32 d9Diff = 0.0F; + + if ( TRUE == didTimeout( preGenHydroRecircTimer, PRE_GEN_HYDRO_RECIRC_TIME_MS ) ) + { + d18Diff = fabs( PRE_GEN_HYDRO_RECIRC_D18_PRESSURE - d18Pres ); + d9Diff = fabs( PRE_GEN_HYDRO_RECIRC_D9_PRESSURE - d9Pres ); + + if ( d18Diff > PRE_GEN_HYDRO_RECIRC_PRESSURE_TOLERANCE ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_PRE_GEN_D18_PRESSURE, d18Pres, d18Diff ) + } + + if ( d9Diff > PRE_GEN_HYDRO_RECIRC_PRESSURE_TOLERANCE ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_PRE_GEN_D9_PRESSURE, d9Pres, d9Diff ) + } + + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) + { + state = DD_PRE_GEN_PRIME_CONCENTRATE; + } + else + { //TODO: Rework disable dry bicarb config. Currently skipping // all concentrate related priming - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) - { - state = DD_PRE_GEN_PRIME_BICARB_LINE; - } + state = DD_PRE_GEN_DRY_BICART_INITIAL_FILL; } } + //TODO: Timeout alarm. 120s return state; @@ -392,7 +437,7 @@ if ( PRE_GEN_BICARB_SUPPLY_VENT_END_STATE == getCurrentDryBiCartPreGenFillExecState() ) { - state = DD_PRE_GEN_PRIME_BICARB_LINE; + state = DD_PRE_GEN_PRIME_CONCENTRATE; } //TODO: Timeout alarm. 120s @@ -401,39 +446,41 @@ /*********************************************************************//** * @brief - * The handlePrimeBicarbLine function handles priming the bicarb line - * and transition to next state. + * The handlePreGenPrimeConcentrateLines function primes D10 and D11 + * concentrate lines and transition to next state. * @details \b Inputs: state * @details \b Outputs: none * @return current state of PreGenDialysate mode *************************************************************************/ -static DD_PRE_GEN_DIALYSATE_STATE_T handlePrimeBicarbLine( void ) +static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysatePrimeConcentrate( void ) { - DD_PRE_GEN_DIALYSATE_STATE_T state = DD_PRE_GEN_PRIME_BICARB_LINE; + DD_PRE_GEN_DIALYSATE_STATE_T state = DD_PRE_GEN_PRIME_CONCENTRATE; - if ( TRUE == didTimeout( preGenBicarbPrimeTimer, PRE_GEN_PRIME_CONCENTRATE_TIMEOUT ) ) + // Balancing Chamber is doing the work & monitoring. + if ( TRUE == didTimeout( preGenConcentrateTimer, PRE_GEN_PRIME_CONCENTRATE_TIMEOUT ) ) { - state = DD_PRE_GEN_PRIME_ACID_LINE; + state = DD_PRE_GEN_PRIME_ULTRAFILTER; } return state; } /*********************************************************************//** * @brief - * The handlePrimeAcidLine function handles priming the acid line - * and transition to next state. + * The handlePreGenPrimeConcentrateLines function primes D10 and D11 + * concentrate lines and transition to next state. * @details \b Inputs: state * @details \b Outputs: none * @return current state of PreGenDialysate mode *************************************************************************/ -static DD_PRE_GEN_DIALYSATE_STATE_T handlePrimeAcidLine( void ) +static DD_PRE_GEN_DIALYSATE_STATE_T handlePreGenDialysatePrimeUltrafilter( void ) { - DD_PRE_GEN_DIALYSATE_STATE_T state = DD_PRE_GEN_PRIME_ACID_LINE; + DD_PRE_GEN_DIALYSATE_STATE_T state = DD_PRE_GEN_PRIME_ULTRAFILTER; - if ( TRUE == didTimeout( preGenAcidPrimeTimer, PRE_GEN_PRIME_CONCENTRATE_TIMEOUT ) ) + // Balancing Chamber is doing the work & monitoring. + if ( TRUE == didTimeout( preGenUltrafilterTimer, PRE_GEN_ULTRA_FILTER_TIMEOUT ) ) { - state = DD_PRE_GEN_DIALYSATE_WAIT_FOR_GEND; + requestNewOperationMode( DD_MODE_GEND ); } return state; @@ -458,12 +505,19 @@ case DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_FILL_CHECK: startPreGenHydroStabilityTimer = FALSE; - preGenfillChamberCTimer = getMSTimerCount(); - setValveState( D14_VALV, VALVE_STATE_CLOSED ); setValveState( D3_VALV, VALVE_STATE_OPEN ); break; + case DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_RECIRC: + setDialysatePumpTargetRPM( D12_PUMP, PRE_GEN_PRIME_D12_RPM, TRUE ); + setValveState( D14_VALV, VALVE_STATE_OPEN ); + preGenHydroRecircTimer = getMSTimerCount(); + break; + case DD_PRE_GEN_DRY_BICART_INITIAL_FILL: + setDialysatePumpTargetRPM( D12_PUMP, PRE_GEN_PRIME_D12_RPM, TRUE ); + setHeaterTargetTemperature( D5_HEAT, PRE_GEN_HYD_CHAMBER_FLUID_TEMP_C_MIN ); + startHeater( D5_HEAT ); if ( FALSE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) { @@ -472,93 +526,55 @@ break; case DD_PRE_GEN_FILL_CHAMBER_F: + setDialysatePumpTargetRPM( D12_PUMP, PRE_GEN_PRIME_D12_RPM, TRUE ); + setHeaterTargetTemperature( D5_HEAT, PRE_GEN_HYD_CHAMBER_FLUID_TEMP_C_MIN ); + startHeater( D5_HEAT ); + if ( FALSE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) { setBicartPreGenFillRequested(); } - setDialysatePumpTargetRPM( D12_PUMP, PRE_GEN_PRIME_D12_RPM, TRUE ); - break; - case DD_PRE_GEN_PRIME_BICARB_LINE: - preGenBicarbPrimeTimer = getMSTimerCount(); + case DD_PRE_GEN_PRIME_CONCENTRATE: + // Start BC switching + setBalChamberSwitchingOnlyStatus( TRUE ); + requestBalChamberSwitching( TRUE ); // dialyzer bypass - setValveState( D34_VALV, VALVE_STATE_OPEN ); - setValveState( D91_VALV, VALVE_STATE_CLOSED ); - setValveState( D35_VALV, VALVE_STATE_CLOSED ); - setValveState( D40_VALV, VALVE_STATE_CLOSED ); - // open BC fresh side - setValveState( D19_VALV, VALVE_STATE_OPEN ); - setValveState( D20_VALV, VALVE_STATE_OPEN ); - setValveState( D21_VALV, VALVE_STATE_OPEN ); - setValveState( D22_VALV, VALVE_STATE_OPEN ); - // close BC spent side - setValveState( D23_VALV, VALVE_STATE_CLOSED ); - setValveState( D24_VALV, VALVE_STATE_CLOSED ); - setValveState( D25_VALV, VALVE_STATE_CLOSED ); - setValveState( D26_VALV, VALVE_STATE_CLOSED ); - //vent air to chamber h - setValveState( D47_VALV, VALVE_STATE_OPEN ); - setValveState( D14_VALV, VALVE_STATE_CLOSED ); - setValveState( D80_VALV, VALVE_STATE_CLOSED ); + setValveState( D14_VALV, VALVE_STATE_OPEN ); + setValveState( D91_VALV, VALVE_STATE_OPEN ); + // heater and D12 + setDialysatePumpTargetRPM( D12_PUMP, PRE_GEN_PRIME_D12_RPM, TRUE ); + setHeaterTargetTemperature( D5_HEAT, PRE_GEN_HYD_CHAMBER_FLUID_TEMP_C_MIN ); + startHeater( D5_HEAT ); //set bicarb concentrate pump and rinse pump setRinsePumpState( RINSE_PUMP_STATE_ON ); setConcentratePumpTargetSpeed( D10_PUMP, PRE_GEN_PRIME_CONCENTRATE_PUMP_SPEED, PRE_GEN_PRIME_CONCENTRATE_VOLUME ); requestConcentratePumpOn( D10_PUMP ); + //set acid concentrate pump and rinse pump + setConcentratePumpTargetSpeed( D11_PUMP, PRE_GEN_PRIME_CONCENTRATE_PUMP_SPEED, PRE_GEN_PRIME_CONCENTRATE_VOLUME ); + requestConcentratePumpOn( D11_PUMP ); + preGenConcentrateTimer = getMSTimerCount(); break; - case DD_PRE_GEN_PRIME_ACID_LINE: - requestConcentratePumpOff( D10_PUMP, FALSE ); - //TODO: Merge concentrate line priming to one state. - preGenAcidPrimeTimer = getMSTimerCount(); + case DD_PRE_GEN_PRIME_ULTRAFILTER: + // Start BC switching if not started + setBalChamberSwitchingOnlyStatus( FALSE ); + requestBalChamberSwitching( TRUE ); // dialyzer bypass + setValveState( D14_VALV, VALVE_STATE_OPEN ); setValveState( D34_VALV, VALVE_STATE_OPEN ); setValveState( D91_VALV, VALVE_STATE_CLOSED ); - setValveState( D35_VALV, VALVE_STATE_CLOSED ); - setValveState( D40_VALV, VALVE_STATE_CLOSED ); - // open BC fresh side - setValveState( D19_VALV, VALVE_STATE_OPEN ); - setValveState( D20_VALV, VALVE_STATE_OPEN ); - setValveState( D21_VALV, VALVE_STATE_OPEN ); - setValveState( D22_VALV, VALVE_STATE_OPEN ); - // close BC spent side - setValveState( D23_VALV, VALVE_STATE_CLOSED ); - setValveState( D24_VALV, VALVE_STATE_CLOSED ); - setValveState( D25_VALV, VALVE_STATE_CLOSED ); - setValveState( D26_VALV, VALVE_STATE_CLOSED ); - //vent air to chamber h - setValveState( D47_VALV, VALVE_STATE_OPEN ); - setValveState( D14_VALV, VALVE_STATE_CLOSED ); - setValveState( D80_VALV, VALVE_STATE_CLOSED ); - //set acid concentrate pump and rinse pump + setValveState( D100_VALV, VALVE_STATE_CLOSED ); + // heater and D12 + setDialysatePumpTargetRPM( D12_PUMP, PRE_GEN_PRIME_D12_RPM, TRUE ); + setHeaterTargetTemperature( D5_HEAT, PRE_GEN_HYD_CHAMBER_FLUID_TEMP_C_MIN ); + startHeater( D5_HEAT ); setRinsePumpState( RINSE_PUMP_STATE_ON ); - setConcentratePumpTargetSpeed( D11_PUMP, PRE_GEN_PRIME_CONCENTRATE_PUMP_SPEED, PRE_GEN_PRIME_CONCENTRATE_VOLUME ); - requestConcentratePumpOn( D11_PUMP ); + preGenUltrafilterTimer = getMSTimerCount(); break; - case DD_PRE_GEN_DIALYSATE_WAIT_FOR_GEND: - signalDialysatePumpHardStop( D12_PUMP ); - setValveState( D34_VALV, VALVE_STATE_OPEN ); - setValveState( D91_VALV, VALVE_STATE_CLOSED ); - setValveState( D35_VALV, VALVE_STATE_CLOSED ); - setValveState( D40_VALV, VALVE_STATE_CLOSED ); - // open BC fresh side - setValveState( D19_VALV, VALVE_STATE_CLOSED ); - setValveState( D20_VALV, VALVE_STATE_CLOSED ); - setValveState( D21_VALV, VALVE_STATE_CLOSED ); - setValveState( D22_VALV, VALVE_STATE_CLOSED ); - // close BC spent side - setValveState( D23_VALV, VALVE_STATE_CLOSED ); - setValveState( D24_VALV, VALVE_STATE_CLOSED ); - setValveState( D25_VALV, VALVE_STATE_CLOSED ); - setValveState( D26_VALV, VALVE_STATE_CLOSED ); - //vent air to chamber h - setValveState( D47_VALV, VALVE_STATE_CLOSED ); - setValveState( D14_VALV, VALVE_STATE_OPEN ); - //TODO: update to recirculation instead of off states. - requestConcentratePumpOff( D10_PUMP, FALSE ); - requestConcentratePumpOff( D11_PUMP, FALSE ); - setRinsePumpState( RINSE_PUMP_STATE_OFF ); + case DD_PRE_GEN_SELF_TESTS: break; default: @@ -803,12 +819,12 @@ switch ( newSubMode ) { // TODO add validate condition after checking with Vinay - case DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_FILL_CHECK: - case DD_PRE_GEN_DRY_BICART_INITIAL_FILL: - case DD_PRE_GEN_FILL_CHAMBER_F: - case DD_PRE_GEN_PRIME_BICARB_LINE: - case DD_PRE_GEN_PRIME_ACID_LINE: - case DD_PRE_GEN_DIALYSATE_WAIT_FOR_GEND: + case DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_FILL_CHECK: + case DD_PRE_GEN_DRY_BICART_INITIAL_FILL: + case DD_PRE_GEN_FILL_CHAMBER_F: + case DD_PRE_GEN_PRIME_CONCENTRATE: + case DD_PRE_GEN_PRIME_ULTRAFILTER: + case DD_PRE_GEN_SELF_TESTS: result = TRUE; break; @@ -842,11 +858,13 @@ case DD_PRE_GEN_DIALYSATE_HYD_CHAMBER_FILL_CHECK: case DD_PRE_GEN_DRY_BICART_INITIAL_FILL: case DD_PRE_GEN_FILL_CHAMBER_F: - case DD_PRE_GEN_PRIME_BICARB_LINE: - case DD_PRE_GEN_PRIME_ACID_LINE: - case DD_PRE_GEN_DIALYSATE_WAIT_FOR_GEND: - default: - break; + case DD_PRE_GEN_PRIME_CONCENTRATE: + case DD_PRE_GEN_PRIME_ULTRAFILTER: + case DD_PRE_GEN_SELF_TESTS: + break; + + default: + break; } // TODO should setState handled separately for wet self state? }