Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r2b7580660f89067dd78f91701dbd1a5b71bbdbba -r3a230bfa79e1f80038e8c243499f8ef7ea11ff60 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 2b7580660f89067dd78f91701dbd1a5b71bbdbba) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 3a230bfa79e1f80038e8c243499f8ef7ea11ff60) @@ -1420,12 +1420,23 @@ // Check DG Dialysate flow rate if ( ( TRUE == isDialInPumpRunning() ) && ( dialInPumpControlMode != PUMP_CONTROL_MODE_OPEN_LOOP ) ) { - F32 measuredDialInFlow = getDGRawDialysateFlowRateLMin() * ML_PER_LITER; + HD_OP_MODE_T mode = getCurrentOperationMode(); + U32 subMode = getCurrentSubMode(); - if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, measuredDialInFlow < MIN_DG_DIAL_FLOW_RATE ) ) ) + // Only check if in state where we would expect fluid in dialysate line to generate flow + if ( ( MODE_TREA == mode ) || ( ( MODE_PRET == mode ) && ( subMode > HD_PRE_TREATMENT_PRIME_STATE ) ) ) { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, measuredDialInFlow, (F32)targetDialInFlowRate ); + F32 measuredDialInFlow = getDGRawDialysateFlowRateLMin() * ML_PER_LITER; + + if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, measuredDialInFlow < MIN_DG_DIAL_FLOW_RATE ) ) ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, measuredDialInFlow, (F32)targetDialInFlowRate ); + } } + else + { + isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, FALSE ); + } } else {