Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r687cd19f4cd2476f648b7eb48c54c20fca0facb1 -rd9839070a9c1d8dbc58cbba991b0b6845ee42d59 --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 687cd19f4cd2476f648b7eb48c54c20fca0facb1) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision d9839070a9c1d8dbc58cbba991b0b6845ee42d59) @@ -327,6 +327,8 @@ setValveState( D40_VALV, VALVE_STATE_CLOSED ); setValveState( D100_VALV, VALVE_STATE_CLOSED ); setValveState( D47_VALV, VALVE_STATE_CLOSED ); + setValveState( D23_VALV, VALVE_STATE_OPEN ); + setValveState( D25_VALV, VALVE_STATE_OPEN ); requestConcentratePumpOff( D76_PUMP, FALSE ); switch ( state ) @@ -362,6 +364,8 @@ setValveState( D40_VALV, VALVE_STATE_OPEN ); setValveState( D91_VALV, VALVE_STATE_OPEN ); setValveState( D47_VALV, VALVE_STATE_OPEN ); + setValveState( D23_VALV, VALVE_STATE_CLOSED ); + setValveState( D25_VALV, VALVE_STATE_CLOSED ); setConcentratePumpTargetSpeed( D76_PUMP, HEAT_DISINFECT_CONC_FLUSH_SPEED_ML_MIN, DOSING_CONT_VOLUME ); requestConcentratePumpOn( D76_PUMP ); break; @@ -750,7 +754,7 @@ switch ( depressurizeSubState ) { case HEAT_DEPRES_WAIT_D6: - if ( LEVEL_STATE_HIGH == getLevelStatus( D6_LEVL ) ) + if ( LVL_STATE_HIGH == getFloaterStatus( D6_LEVL ) ) { setValveState( D3_VALV, VALVE_STATE_CLOSED ); depressurizeSubState = HEAT_DEPRES_OPEN_D64; @@ -1069,6 +1073,15 @@ } } + if ( DD_HEAT_DISINFECT_DEPRESSURIZE_BICART == heatDisinfectState ) + { + setCurrentSubState( (U32)depressurizeSubState ); + } + else + { + setCurrentSubState( NO_SUB_STATE ); + } + publishHeatDisinfectModeData(); return heatDisinfectState; @@ -1113,6 +1126,7 @@ * The publishHeatDisinfectModeData function broadcasts heat disinfect * mode data at the configured interval. * @details \b Inputs: heatDisinfectPublishTimerCounter, heatDisinfectModePublishInterval, + * heatDisinfectState, depressurizeSubState, * ddDwellAtTarget, ddDwellAccumulatedMS, ddDwellAtTargetStartMS, * wcidDwellAtTarget, wcidDwellAccumulatedMS, wcidDwellAtTargetStartMS * @details \b Outputs: heatDisinfectPublishTimerCounter @@ -1127,8 +1141,18 @@ HEAT_DISINFECT_STATE_DATA_T data; data.heatDisinfectExecState = (U32)getCurrentHeatDisinfectState(); + if ( DD_HEAT_DISINFECT_DEPRESSURIZE_BICART == heatDisinfectState ) + { + data.heatDisinfectSubState = (U32)depressurizeSubState; + } + else + { + data.heatDisinfectSubState = NO_SUB_STATE; + } data.ddRecircDwellTimeMS = currentDwellMs( ddDwellAtTarget, ddDwellAccumulatedMS, ddDwellAtTargetStartMS ); data.wcidRecircDwellTimeMS = currentDwellMs( wcidDwellAtTarget, wcidDwellAccumulatedMS, wcidDwellAtTargetStartMS ); + data.ddDwellAtTarget = (U32)ddDwellAtTarget; + data.wcidDwellAtTarget = (U32)wcidDwellAtTarget; broadcastData( MSG_ID_DD_HEAT_DISINFECT_STATE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( HEAT_DISINFECT_STATE_DATA_T ) ); heatDisinfectPublishTimerCounter = 0; }