Index: firmware/App/Controllers/FlowSensors.c =================================================================== diff -u -r5c53288436774f0cf6a24132ace29a64a66d619d -r0f4fbb2a56cdbe35dcedd9cad23867fd7248f86e --- firmware/App/Controllers/FlowSensors.c (.../FlowSensors.c) (revision 5c53288436774f0cf6a24132ace29a64a66d619d) +++ firmware/App/Controllers/FlowSensors.c (.../FlowSensors.c) (revision 0f4fbb2a56cdbe35dcedd9cad23867fd7248f86e) @@ -18,8 +18,6 @@ // ********** private definitions ********** #define FLOW_SENSORS_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the Dialysate flow data is published on the CAN bus. - -#define FLOW_SENSORS_ZERO_READING 0xFFFF // TODO remove ///< Flow sensor reading indicates zero flow (or flow lower than can be detected by sensor). #define FLOW_SENSORS_EDGES_BUFFER_LENGTH 100 #define FLOW_SENSORS_PULSES_PER_LITER 110000 // TODO calibration record @@ -126,13 +124,15 @@ flowSensorStatus[ i ].measuredFlowLPM.data = 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.0 ); break; case DIALYSATE_FLOW_SENSOR: flowSensorStatus[ i ].edgeCountsBuffer[ countsIndex ] = getFPGADialysateFlowSensorEdgeCount(); oldest2CurrentEdgeDiff = u16DiffWithWrap( oldestEdgeCount, flowSensorStatus[ i ].edgeCountsBuffer[ countsIndex ] ); flowBeforeCalibrationLPM = oldest2CurrentEdgeDiff * FLOW_SENSORS_LITERS_PER_PULSES * SEC_PER_MIN; flowSensorStatus[ i ].measuredFlowLPM.data = getCalibrationAppliedFlowLPM( i, flowBeforeCalibrationLPM ); + flowSensorStatus[ i ].measuredFlowLPM.data = MAX( flowSensorStatus[ i ].measuredFlowLPM.data, 0.0 ); break; #ifndef _VECTORCAST_