Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r7acc14a8f6eeaf6b26757fc2b5d2f6fc7edbdcec -r3bd1f9459a97de4d4f5c09c377c5c0d10235a436 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 7acc14a8f6eeaf6b26757fc2b5d2f6fc7edbdcec) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 3bd1f9459a97de4d4f5c09c377c5c0d10235a436) @@ -116,6 +116,7 @@ F32 fillFlowRateAverageLPM; ///< Fill flow average value in L/min. F32 fillLastTemperature; ///< Fill last temperature value. BOOL isThisFirstFill; ///< Fill flag to indicate whether it is the first fill or not. + BOOL isPrimeCondChecksSkipped; ///< Fill flag to indicate whether the acid and bicarb conductivity checks should be skipped after priming. } FILL_CONDITION_STATUS_T; /// Fill acid and bicarb types @@ -474,9 +475,10 @@ fillStatus.fillTemperatureRunningSum = 0.0F; // At the beginning the last and average temperatures are considered as the trimmer heater target temperature which // is the dialysate temperature - fillStatus.fillTemperatureAverage = getHeaterTargetTemperature( DG_TRIMMER_HEATER ); - fillStatus.fillLastTemperature = getHeaterTargetTemperature( DG_TRIMMER_HEATER ) + RESERVOIR_EXTRA_TEMPERATURE; - fillStatus.isThisFirstFill = TRUE; + fillStatus.fillTemperatureAverage = getHeaterTargetTemperature( DG_TRIMMER_HEATER ); + fillStatus.fillLastTemperature = getHeaterTargetTemperature( DG_TRIMMER_HEATER ) + RESERVOIR_EXTRA_TEMPERATURE; + fillStatus.isThisFirstFill = TRUE; + fillStatus.isPrimeCondChecksSkipped = FALSE; } /*********************************************************************//** @@ -668,7 +670,7 @@ } else { - result = DG_FILL_MODE_STATE_TEST_BICARB_CONDUCTIVITY; + result = ( FALSE == fillStatus.isPrimeCondChecksSkipped ? DG_FILL_MODE_STATE_TEST_BICARB_CONDUCTIVITY : DG_FILL_MODE_STATE_PRODUCE_DIALYSATE ); setModeFillStateTransition( result ); } } @@ -953,6 +955,9 @@ { setBadAvgConductivityDetectedFlag( TRUE ); // signal idle bad avg conductivity detected setThisFirstFillFlag( TRUE ); + // Bad fill conductivity. Set this flag so after priming the concentrate lines, acid and bicarb conductivities are not checked + // again to save time + fillStatus.isPrimeCondChecksSkipped = TRUE; SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_FILL_CONDUCTIVITY_OUT_OF_RANGE, avgBicarbConduSPerCM, bicarbNormalConduSPerCM ); // trigger replace bottles alarm #1 clearAlarm( ALARM_ID_DG_CREATING_DIALYSATE_PLEASE_WAIT ); // clear this alarm before triggering in case previous fill was bad and still active from before activateAlarmNoData ( ALARM_ID_DG_CREATING_DIALYSATE_PLEASE_WAIT ); @@ -1101,8 +1106,9 @@ setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, CONCENTRATE_PUMP_MAX_SPEED ); requestConcentratePumpOn( CONCENTRATEPUMPS_CP1_ACID ); requestConcentratePumpOn( CONCENTRATEPUMPS_CP2_BICARB ); - concPumpPrimeStartTimeMS = getMSTimerCount(); - fillStatus.isThisFirstFill = FALSE; + concPumpPrimeStartTimeMS = getMSTimerCount(); + fillStatus.isThisFirstFill = FALSE; + fillStatus.isPrimeCondChecksSkipped = FALSE; if ( ( DIALIN_FILL_FOR_CAL_ACID_CHECK == dialinFillForCalCheck ) && ( TRUE == isTestingActivated() ) ) { // After acid test, the state transitions to acid test. If the cal for check prime was set, transition to Gen Idle and