Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r674e18b10904e97f4b2624b826abc21f3220dd32 -rddeff95f5374baa1f470496273907ea83347e376 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 674e18b10904e97f4b2624b826abc21f3220dd32) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision ddeff95f5374baa1f470496273907ea83347e376) @@ -567,7 +567,6 @@ bicarbConductivitySampleCount = 0; acidConductivitySampleCount = 0; #endif - requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB ); // Set pumps flow rate to prepare for acid conductivity testing setROPumpTargetFlowRateLPM( RO_PUMP_800_ML_PER_MIN / MILLILITERS_PER_LITER, TARGET_RO_PRESSURE_PSI ); @@ -620,15 +619,18 @@ pctDiffInConductivity = fabs( 2.0 * ( averageAcidConductivity - averageBicarbConductivity ) / ( averageAcidConductivity + averageBicarbConductivity ) ); - if ( ( TRUE == isValueWithinPercentRange(averageAcidConductivity, ACID_TEST_CD2_TCD, FIVE_PERCENT_FACTOR) ) && + if ( ( TRUE == isValueWithinPercentRange( averageAcidConductivity, ACID_TEST_CD2_TCD, FIVE_PERCENT_FACTOR ) ) && ( pctDiffInConductivity < FIVE_PERCENT_FACTOR ) ) { #endif + setROPumpTargetFlowRateLPM( getTargetFillFlowRateLPM(), TARGET_RO_PRESSURE_PSI ); + + handleDialysateMixing( getMeasuredROFlowRateLPM() * ML_PER_LITER ); + requestConcentratePumpOn( CONCENTRATEPUMPS_CP2_BICARB ); + // Do the necessary setup here before transition to Produce Dialysate State fillStatus.isThisFirstFill = FALSE; - //requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID ); // TODO why do we turn this off if we need this immediately? - setROPumpTargetFlowRateLPM( getTargetFillFlowRateLPM(), TARGET_RO_PRESSURE_PSI ); - result = DG_FILL_MODE_STATE_PRODUCE_DIALYSATE; + result = DG_FILL_MODE_STATE_PRODUCE_DIALYSATE; #ifndef DISABLE_ACID_CONDUCTIVITY_TEST } @@ -655,14 +657,11 @@ static DG_FILL_MODE_STATE_T handleProduceDialysateState( void ) { DG_FILL_MODE_STATE_T result = DG_FILL_MODE_STATE_PRODUCE_DIALYSATE; - F32 measuredROFlowRateMLPM = getMeasuredROFlowRateLPM() * ML_PER_LITER; // Prime mixing before deliver result to reservoir - handleDialysateMixing( measuredROFlowRateMLPM ); + handleDialysateMixing( getMeasuredROFlowRateLPM() * ML_PER_LITER ); + #ifndef DISABLE_MIXING - // TODO do we need these here? - requestConcentratePumpOn( CONCENTRATEPUMPS_CP1_ACID ); - requestConcentratePumpOn( CONCENTRATEPUMPS_CP2_BICARB ); if ( concentratePumpPrimeCount++ > CONCENTRATE_PUMP_PRIME_INTERVAL ) #endif @@ -710,6 +709,8 @@ fillStatus.fillTemperatureRunningSum += getTemperatureValue( (U32)TEMPSENSORS_OUTLET_PRIMARY_HEATER ); #ifndef DISABLE_MIXING + // If you start the fill you should be finished. + // Detect empty bottles using integrated volumes // TODO: empty bottles detection using conductivity sensors if ( ( ( ACID_CONCENTRATION_BOTTLE_VOLUME_ML - getF32OverrideValue( &usedAcidVolumeML ) ) <= CONCENTRATION_BOTTLE_LOW_VOLUME_ML ) ) // || // SRSDG 437 {