Index: firmware/App/Controllers/FlowSensors.c =================================================================== diff -u -rbaaf3dc55c2dee07d04efb97022fd2329a5bd73d -r4b4eab2b311a43bd1fa35f24e427a8beb17df8b0 --- firmware/App/Controllers/FlowSensors.c (.../FlowSensors.c) (revision baaf3dc55c2dee07d04efb97022fd2329a5bd73d) +++ firmware/App/Controllers/FlowSensors.c (.../FlowSensors.c) (revision 4b4eab2b311a43bd1fa35f24e427a8beb17df8b0) @@ -121,6 +121,7 @@ U16 oldest2CurrentEdgeDiff = 0; F32 currentFlowLPM = 0.0F; BOOL isFlowOutOfRange = FALSE; + F32 measFlow = 0.0F; // Check if a new calibration is available if ( TRUE == isNewCalibrationRecordAvailable() ) @@ -141,18 +142,18 @@ oldest2CurrentEdgeDiff = u16DiffWithWrap( oldestEdgeCount, flowSensorStatus[ i ].edgeCountsBuffer[ countsIndex ] ); flowSensorStatus[ i ].measuredFlowBeforeCalLPM.data = oldest2CurrentEdgeDiff * FLOW_SENSORS_LITERS_PER_PULSES * SEC_PER_MIN; flowSensorStatus[ i ].measuredROFlowWithCPsLPM.data = getCalibrationAppliedFlowLPM( i, flowSensorStatus[ i ].measuredFlowBeforeCalLPM.data ); - flowSensorStatus[ i ].measuredFlowLPM.data = flowSensorStatus[ i ].measuredROFlowWithCPsLPM.data - + measFlow = flowSensorStatus[ i ].measuredROFlowWithCPsLPM.data - ( getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP1_ACID ) / ML_PER_LITER ) - ( getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP2_BICARB ) / ML_PER_LITER ); - flowSensorStatus[ i ].measuredFlowLPM.data = MAX( flowSensorStatus[ i ].measuredFlowLPM.data, 0.0F ); + flowSensorStatus[ i ].measuredFlowLPM.data = MAX( measFlow, 0.0F ); break; case DIALYSATE_FLOW_SENSOR: flowSensorStatus[ i ].edgeCountsBuffer[ countsIndex ] = getFPGADialysateFlowSensorEdgeCount(); oldest2CurrentEdgeDiff = u16DiffWithWrap( oldestEdgeCount, flowSensorStatus[ i ].edgeCountsBuffer[ countsIndex ] ); flowSensorStatus[ i ].measuredFlowBeforeCalLPM.data = oldest2CurrentEdgeDiff * FLOW_SENSORS_LITERS_PER_PULSES * SEC_PER_MIN; - flowSensorStatus[ i ].measuredFlowLPM.data = getCalibrationAppliedFlowLPM( i, flowSensorStatus[ i ].measuredFlowBeforeCalLPM.data ); - flowSensorStatus[ i ].measuredFlowLPM.data = MAX( flowSensorStatus[ i ].measuredFlowLPM.data, 0.0F ); + measFlow = getCalibrationAppliedFlowLPM( i, flowSensorStatus[ i ].measuredFlowBeforeCalLPM.data ); + flowSensorStatus[ i ].measuredFlowLPM.data = MAX( measFlow, 0.0F ); break; #ifndef _VECTORCAST_ Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -rbaaf3dc55c2dee07d04efb97022fd2329a5bd73d -r4b4eab2b311a43bd1fa35f24e427a8beb17df8b0 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision baaf3dc55c2dee07d04efb97022fd2329a5bd73d) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 4b4eab2b311a43bd1fa35f24e427a8beb17df8b0) @@ -355,7 +355,7 @@ alarm = ALARM_ID_DIALYSATE_FLOW_TOO_LOW_WHILE_TRIMMER_HEATER_IS_ON; measFlow = getMeasuredRawFlowRateLPM( DIALYSATE_FLOW_SENSOR ); minFlow = MIN_DIALYSATE_FLOWRATE_LPM; - isFlowLow = ( measFlow - minFlow < NEARLY_ZERO ? TRUE : FALSE ); + isFlowLow = ( measFlow > minFlow ? FALSE : TRUE ); } checkPersistentAlarm( alarm, isFlowLow, measFlow, minFlow );