Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -ra4669c80291e85fa5ce17d77ebcfd0c882831202 -r9826fc85bd1497ec617ae0e825f78b91972de2b3 --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision a4669c80291e85fa5ce17d77ebcfd0c882831202) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 9826fc85bd1497ec617ae0e825f78b91972de2b3) @@ -55,9 +55,6 @@ #define RINSE_CONCENTRATE_LINES_WAIT ( 25 * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Time period to wait for concentrate lines to rinse. #define RINSE_SPEED ( ( CONCENTRATE_PUMP_MAX_SPEED - 3.0F ) * -1.0F ) ///< Reserver the concentrate speed to rinse out concentrate lines. - -#define ACID_CONCENTRATION_BOTTLE_VOLUME_ML 3430.0F ///< Bottle volume of acid concentration in mL. -#define BICARB_CONCENTRATION_BOTTLE_VOLUME_ML 3780.0F ///< Bottle volume of bicarb concentration in mL. #define CONCENTRATION_BOTTLE_LOW_VOLUME_ML 100.0F ///< Concentration bottle low volume in mL. // ********** private data ********** @@ -238,8 +235,19 @@ // if we have reached our target drain to volume (by weight) or cannot drain anymore, we are done draining - go back to generation idle mode if ( TRUE == hasTargetDrainVolumeBeenReached( inactiveReservoir, DRAIN_WEIGHT_UNCHANGE_TIMEOUT ) ) { + DG_ACID_CONCENTRATES_RECORD_T acid; + F32 acidBottleVolML; + DG_BICARB_CONCENTRATES_RECORD_T bicarb; + F32 bicarbBottleVolML; + + getAcidConcentrateCalRecord( &acid ); + getBicarbConcentrateCalRecord( &bicarb ); signalDrainPumpHardStop(); + acidBottleVolML = acid.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].acidFullBottleVolumeML; + bicarbBottleVolML = bicarb.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].bicarbStartVolumeML; + + if ( DG_RESERVOIR_1 == inactiveReservoir ) { setValveState( VRD1, VALVE_STATE_CLOSED ); @@ -254,14 +262,14 @@ #endif { // Detect empty bottles using integrated volumes - if ( ( ACID_CONCENTRATION_BOTTLE_VOLUME_ML - getChemicalUsedVolumeML( ACID ) ) <= CONCENTRATION_BOTTLE_LOW_VOLUME_ML ) // || // SRSDG 437 + if ( ( acidBottleVolML - getChemicalUsedVolumeML( ACID ) ) <= CONCENTRATION_BOTTLE_LOW_VOLUME_ML ) // || // SRSDG 437 { resetChemicalUsedVolumeML( ACID ); setThisFisrtFillFlag( TRUE ); // indicates bottles need prime activateAlarmNoData( ALARM_ID_DG_ACID_BOTTLE_LOW_VOLUME ); } - if ( ( BICARB_CONCENTRATION_BOTTLE_VOLUME_ML - getChemicalUsedVolumeML( BICARB ) ) <= CONCENTRATION_BOTTLE_LOW_VOLUME_ML ) // || // SRSDG 438 + if ( ( bicarbBottleVolML - getChemicalUsedVolumeML( BICARB ) ) <= CONCENTRATION_BOTTLE_LOW_VOLUME_ML ) // || // SRSDG 438 { resetChemicalUsedVolumeML( BICARB ); setThisFisrtFillFlag( TRUE );