Index: firmware/App/Controllers/FlowSensors.c =================================================================== diff -u -r4b4eab2b311a43bd1fa35f24e427a8beb17df8b0 -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 --- firmware/App/Controllers/FlowSensors.c (.../FlowSensors.c) (revision 4b4eab2b311a43bd1fa35f24e427a8beb17df8b0) +++ firmware/App/Controllers/FlowSensors.c (.../FlowSensors.c) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) @@ -1,21 +1,22 @@ /************************************************************************** * -* Copyright (c) 2022-2022 Diality Inc. - All Rights Reserved. +* Copyright (c) 2022-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file FlowSensors.c * -* @author (last) Dara Navaei -* @date (last) 12-Oct-2022 +* @author (last) Sean Nash +* @date (last) 22-Sep-2023 * * @author (original) Dara Navaei * @date (original) 21-Jul-2022 * ***************************************************************************/ #include +#include // For memcpy #include "ConcentratePumps.h" #include "FlowSensors.h" @@ -143,8 +144,8 @@ flowSensorStatus[ i ].measuredFlowBeforeCalLPM.data = oldest2CurrentEdgeDiff * FLOW_SENSORS_LITERS_PER_PULSES * SEC_PER_MIN; flowSensorStatus[ i ].measuredROFlowWithCPsLPM.data = getCalibrationAppliedFlowLPM( i, flowSensorStatus[ i ].measuredFlowBeforeCalLPM.data ); measFlow = flowSensorStatus[ i ].measuredROFlowWithCPsLPM.data - - ( getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP1_ACID ) / ML_PER_LITER ) - - ( getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP2_BICARB ) / ML_PER_LITER ); + ( getMeasuredPumpSpeedMLPM( CONCENTRATEPUMPS_CP1_ACID ) / ML_PER_LITER ) - + ( getMeasuredPumpSpeedMLPM( CONCENTRATEPUMPS_CP2_BICARB ) / ML_PER_LITER ); flowSensorStatus[ i ].measuredFlowLPM.data = MAX( measFlow, 0.0F ); break; @@ -240,10 +241,12 @@ { FLOW_SENSORS_DATA_T data; - data.ROFlowRateLPM = getMeasuredFlowRateLPM( RO_FLOW_SENSOR ); - data.dialysateFlowRateLPM = getMeasuredFlowRateLPM( DIALYSATE_FLOW_SENSOR ); - data.ROFlowRateWithCPsLPM = getMeasuredROFlowRateWithConcPumpsLPM(); - dataPublicationCounter = 0; + data.ROFlowRateLPM = getMeasuredFlowRateLPM( RO_FLOW_SENSOR ); + data.dialysateFlowRateLPM = getMeasuredFlowRateLPM( DIALYSATE_FLOW_SENSOR ); + data.ROFlowRateWithCPsLPM = getMeasuredROFlowRateWithConcPumpsLPM(); + data.RORawFlowRateLPM = getMeasuredRawFlowRateLPM( RO_FLOW_SENSOR ); + data.dialysateRawFlowRateLPM = getMeasuredRawFlowRateLPM( DIALYSATE_FLOW_SENSOR ); + dataPublicationCounter = 0; broadcastData( MSG_ID_DG_FLOW_SENSORS_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( FLOW_SENSORS_DATA_T ) ); } @@ -281,7 +284,7 @@ * flow sensors data publish interval. * @details Inputs: none * @details Outputs: flowSensorsDataPublishInterval - * @param: value override flow data publish interval with (in ms) + * @param value override flow data publish interval with (in ms) * @return TRUE if override successful, FALSE if not *************************************************************************/ BOOL testSetFlowDataPublishIntervalOverride( U32 value ) @@ -327,22 +330,33 @@ * flow rate. * @details Inputs: none * @details Outputs: flowSensorStatus - * @param: sensorId the Id of the sensor which its value is overridden. - * @param: value override measured flow rate in LPM + * @param sensorId the Id of the sensor which its value is overridden. + * @param value override measured flow rate in LPM + * @param raw override pre-calibrated, raw value, or post-calibrated values. * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetMeasuredFlowRateOverride( U32 sensorId, F32 flowLPM ) +BOOL testSetMeasuredFlowRateOverride( U32 sensorId, F32 flowLPM, BOOL raw ) { BOOL result = FALSE; if ( sensorId < NUM_OF_FLOW_SENSORS ) { if ( TRUE == isTestingActivated() ) { - flowSensorStatus[ sensorId ].measuredFlowLPM.ovInitData = flowSensorStatus[ sensorId ].measuredFlowLPM.data; - flowSensorStatus[ sensorId ].measuredFlowLPM.ovData = flowLPM; - flowSensorStatus[ sensorId ].measuredFlowLPM.override = OVERRIDE_KEY; - result = TRUE; + if ( TRUE == raw ) + { + flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.ovInitData = flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.data; + flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.ovData = flowLPM; + flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.override = OVERRIDE_KEY; + result = TRUE; + } + else + { + flowSensorStatus[ sensorId ].measuredFlowLPM.ovInitData = flowSensorStatus[ sensorId ].measuredFlowLPM.data; + flowSensorStatus[ sensorId ].measuredFlowLPM.ovData = flowLPM; + flowSensorStatus[ sensorId ].measuredFlowLPM.override = OVERRIDE_KEY; + result = TRUE; + } } } @@ -355,7 +369,7 @@ * of the measured flow rate. * @details Inputs: none * @details Outputs: flowSensorStatus - * @param: sensorId the Id of the sensor which its value is reset. + * @param sensorId the Id of the sensor which its value is reset. * @return TRUE if override successful, FALSE if not *************************************************************************/ BOOL testResetMeasuredFlowRateOverride( U32 sensorId ) @@ -370,6 +384,12 @@ flowSensorStatus[ sensorId ].measuredFlowLPM.override = OVERRIDE_RESET; flowSensorStatus[ sensorId ].measuredFlowLPM.ovInitData = 0.0F; flowSensorStatus[ sensorId ].measuredFlowLPM.ovData = 0.0F; + + flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.data = flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.ovInitData; + flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.override = OVERRIDE_RESET; + flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.ovInitData = 0.0F; + flowSensorStatus[ sensorId ].measuredFlowBeforeCalLPM.ovData = 0.0F; + result = TRUE; } }