Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r8550fa4d9700f4ce2da48c3ed1d67113e787addf -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 8550fa4d9700f4ce2da48c3ed1d67113e787addf) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) @@ -250,7 +250,7 @@ { roPumpDutyCyclePctSet = roPumpFlowToPWM( getTargetROPumpFlowRateMLPM() ); } - resetPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, roPumpDutyCyclePctSet, 0.0F); + resetPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, roPumpDutyCyclePctSet, 0.0F ); state = RO_PUMP_CONTROL_TO_TARGET_FLOW_STATE; } // If there is a target pressure set, transition to the PI controller and control to pressure. @@ -594,7 +594,7 @@ * The roPumpPresToPWM function calculates the duty cycle for the given target * pressure. * @details \b Inputs: none - * @details \b Outputs: dutyCyclePct + * @details \b Outputs: none * @param targetPressure target pressure value to control in PSI * @return the current target RO pump PWM in a percentage. *************************************************************************/ @@ -610,7 +610,7 @@ * The roPumpFlowToPWM function calculates the duty cycle for the given target * flow rate. * @details \b Inputs: none - * @details \b Outputs: dutyCyclePct + * @details \b Outputs: none * @param targetFlow target flow value to control in in mL/min * @return the current target RO pump PWM in a percentage. *************************************************************************/ @@ -623,10 +623,11 @@ /*********************************************************************//** * @brief - * The signalROPumpStop function stops the P12 pump immediately and + * The signalROPumpHardStop function stops the P12 pump immediately and * resets all the variables associated with the P12 pump run. - * @details \b Inputs: roPumpState[] - * @details \b Outputs: stopPumpRequest[] + * @details \b Inputs: targetROPumpFlowRate, targetROPumpPressure + * @details \b Outputs: roPumpState, roPumpDutyCyclePctSet, roControlTimerCounter, + * roPumpOpenLoopTargetDutyCycle, targetROPumpFlowRate, targetROPumpPressure * @return none *************************************************************************/ void signalROPumpHardStop( void ) @@ -735,8 +736,10 @@ * @brief * The testROPumpTargetPressureOverride function overrides the RO pump * data publish interval. - * @details \b Inputs: targetROPumpPressure - * @details \b Outputs: targetROPumpPressure + * @details \b Inputs: targetROPumpPressure, targetROPumpFlowRate, + * roPumpOpenLoopTargetDutyCycle + * @details \b Outputs: targetROPumpPressure, targetROPumpFlowRate, + * roPumpOpenLoopTargetDutyCycle * @param message Override message from Dialin which includes the value * of the target pressure * @return TRUE if override successful, FALSE if not @@ -784,8 +787,10 @@ * @brief * The testROPumpTargetFlowOverride function overrides the RO pump * data publish interval. - * @details \b Inputs: targetROPumpFlowRate - * @details \b Outputs: targetROPumpFlowRate + * @details \b Inputs: targetROPumpFlowRate, roPumpOpenLoopTargetDutyCycle, + * targetROPumpPressure + * @details \b Outputs: targetROPumpFlowRate, roPumpOpenLoopTargetDutyCycle, + * targetROPumpPressure * @param message Override message from Dialin which includes the value * of the target flow * @return TRUE if override successful, FALSE if not @@ -833,8 +838,10 @@ * @brief * The testROPumpTargetDutyCycleOverride function overrides the RO pump * duty cycle. - * @details \b Inputs: roPumpOpenLoopTargetDutyCycle - * @details \b Outputs: roPumpOpenLoopTargetDutyCycle + * @details \b Inputs: roPumpOpenLoopTargetDutyCycle, targetROPumpPressure, + * targetROPumpFlowRate + * @details \b Outputs: roPumpOpenLoopTargetDutyCycle, targetROPumpPressure, + * targetROPumpFlowRate * @param message Override message from Dialin which includes the value * of the target flow * @return TRUE if override successful, FALSE if not @@ -881,8 +888,8 @@ /*********************************************************************//** * @brief * The testBoostPumpHardStopOverride function stops the RO pump. - * @details \b Inputs: boostPumpOpenLoopTargetDutyCycle - * @details \b Outputs: boostPumpOpenLoopTargetDutyCycle + * @details \b Inputs: roPumpOpenLoopTargetDutyCycle + * @details \b Outputs: roPumpOpenLoopTargetDutyCycle * @param message Override message from Dialin which includes the value * of the target flow * @return TRUE if override successful, FALSE if not Index: firmware/App/Modes/FPModes/FlushConcentrate.c =================================================================== diff -u -rfd21e08ba076054488aa112641e0db4191ee0b35 -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e --- firmware/App/Modes/FPModes/FlushConcentrate.c (.../FlushConcentrate.c) (revision fd21e08ba076054488aa112641e0db4191ee0b35) +++ firmware/App/Modes/FPModes/FlushConcentrate.c (.../FlushConcentrate.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) @@ -48,7 +48,6 @@ #define CONCENTRATE_FLUSH_WAIT_FOR_TANK_FULL_TIMEOUT ( 60 * MS_PER_SECOND ) ///< Concentrate flush wait for tank full timer (in ms) #define CONCENTRATE_FLUSH_WAIT_FOR_TANK_FULL_TGT_FLOW 700 ///< target flow rate for waiting for tank state - // ********** private data ********** static const F32 CONCENTRATE_FLOW_INTEGRATOR = 1.0F / (F32)( SEC_PER_MIN * ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); ///< Multiplier to convert flow (mL/min) into volume (mL) for period of general task interval. @@ -142,8 +141,8 @@ /*********************************************************************//** * @brief * The handleConcentrateFlushProgressState handles the in progress state of Concentrate flush - * @details \b Inputs: none - * @details \b Outputs: none + * @details \b Inputs: concentrateFlushTimer + * @details \b Outputs: isFlushComplete * @return the next state of Concentrate flush state *************************************************************************/ static FP_CONC_FLUSH_STATE_T handleConcentrateFlushProgressState( void ) @@ -166,8 +165,9 @@ /*********************************************************************//** * @brief - * The handleConcentrateFlushWaitForTankFullState handles the in progress state of Concentrate flush - * @details \b Inputs: none + * The handleConcentrateFlushWaitForTankFullState handles the wait for + * tank full state of Concentrate flush + * @details \b Inputs: concentrateFlushTankFullTimer * @details \b Outputs: none * @return the next state of Concentrate flush state *************************************************************************/ @@ -193,9 +193,9 @@ /*********************************************************************//** * @brief - * The handleConcentrateFlushProgressState handles the in progress state of Concentrate flush - * @details \b Inputs: none - * @details \b Outputs: none + * The handleConcentrateFlushPausedState handles the paused state of Concentrate flush + * @details \b Inputs: pendingStartConcentrateFlushRequest + * @details \b Outputs: isFlushComplete, pendingStartConcentrateFlushRequest * @return the next state of Concentrate flush state *************************************************************************/ static FP_CONC_FLUSH_STATE_T handleConcentrateFlushPausedState( void ) @@ -272,10 +272,10 @@ setValveState( P34_VALV, VALVE_STATE_CLOSED ); setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_CLOSED ); - if ( TRUE == isBoostPumpInstalled() ) { - signalBoostPumpHardStop(); + F32 currentDutyCyclePct = getCurrentBoostPumpDutyCyclePCT(); + setBoostPumpTargetDutyCycle( currentDutyCyclePct ); } signalROPumpHardStop(); } Index: firmware/App/Modes/FPModes/FlushFilter.c =================================================================== diff -u -r7594294ed040b16277a89be6161d7ab9321e4b08 -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e --- firmware/App/Modes/FPModes/FlushFilter.c (.../FlushFilter.c) (revision 7594294ed040b16277a89be6161d7ab9321e4b08) +++ firmware/App/Modes/FPModes/FlushFilter.c (.../FlushFilter.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) @@ -34,6 +34,7 @@ #define FILTER_FLUSH_MAX_TIMEOUT ( 600 * MS_PER_SECOND ) ///< Max override timeout for 10 minutes #define FILTER_FLUSH_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the gen water mode data published. #define FILTER_FLUSH_TIMEOUT ( 30 * MS_PER_SECOND ) ///< Filter flush timer (in ms) +#define FILTER_FLUSH_BOOST_PUMP_TGT_PSI 25 ///< Pressure target in PSI for the boost pump during filter flush. // ********** private data ********** @@ -119,14 +120,12 @@ * @brief * The handleFilterFlushProgressState handles the in progress state of filter flush * @details \b Inputs: filterFlushTimer - * @details \b Outputs: none + * @details \b Outputs: isFlushComplete * @return the next state of filter flush state *************************************************************************/ static FP_FILTER_FLUSH_STATE_T handleFilterFlushProgressState( void ) { FP_FILTER_FLUSH_STATE_T state = FILTER_FLUSH_IN_PROGRESS; - BOOL isPressureOutOfRange = FALSE; - F32 pressureDif = 0.0; // if ( TRUE == 1 )// TODO Alarm and Stop State Rework // { @@ -144,7 +143,7 @@ /*********************************************************************//** * @brief - * The handleFilterFlushProgressState handles the in progress state of filter flush + * The handleFilterFlushPausedState handles the pause state of filter flush * @details \b Inputs: pendingStartFilterFlushRequest * @details \b Outputs: pendingStartFilterFlushRequest, isFlushComplete * @return the next state of filter flush state @@ -187,6 +186,10 @@ setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_OPEN ); filterFlushTimer = getMSTimerCount(); + if ( TRUE == isBoostPumpInstalled() ) + { + setBoostPumpTargetPressure( FILTER_FLUSH_BOOST_PUMP_TGT_PSI ); + } break; case FILTER_FLUSH_PAUSED: @@ -201,6 +204,11 @@ setValveState( P34_VALV, VALVE_STATE_CLOSED ); setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_CLOSED ); + if ( TRUE == isBoostPumpInstalled() ) + { + F32 currentDutyCyclePct = getCurrentBoostPumpDutyCyclePCT(); + setBoostPumpTargetDutyCycle( currentDutyCyclePct ); + } } break; Index: firmware/App/Modes/FPModes/FlushPermeate.c =================================================================== diff -u -rfd21e08ba076054488aa112641e0db4191ee0b35 -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e --- firmware/App/Modes/FPModes/FlushPermeate.c (.../FlushPermeate.c) (revision fd21e08ba076054488aa112641e0db4191ee0b35) +++ firmware/App/Modes/FPModes/FlushPermeate.c (.../FlushPermeate.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) @@ -250,7 +250,6 @@ setValveState( P34_VALV, VALVE_STATE_CLOSED ); setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_CLOSED ); - if ( TRUE == isBoostPumpInstalled() ) { signalBoostPumpHardStop(); Index: firmware/App/Modes/FPModes/ModeGenPermeate.c =================================================================== diff -u -rfd21e08ba076054488aa112641e0db4191ee0b35 -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e --- firmware/App/Modes/FPModes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision fd21e08ba076054488aa112641e0db4191ee0b35) +++ firmware/App/Modes/FPModes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) @@ -17,6 +17,7 @@ #include "BoostPump.h" #include "FPInterface.h" +#include "Flow.h" #include "FPModeStandby.h" #include "FPOperationModes.h" #include "Level.h" @@ -39,12 +40,14 @@ // ********** private definitions ********** -#define PRE_GEN_PERMEATE_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the gen permeate mode data published. -#define GEN_PERMEATE_BOOST_PUMP_TGT_PSI 25.0F ///< Pressure target in PSI for the boost pump during generate permeate mode. -#define GEN_PERMEATE_RO_PUMP_TGT_ML 750 ///< Flow target in ml/min for the ro pump during generate permeate mode. -#define PUMP_REST_TIMEOUT_MS ( 3 * MS_PER_SECOND ) ///< Verify Water timer ( in ms ) -#define RO_REJECTION_WAIT_TIME_MS ( 8 * MS_PER_SECOND ) ///< Verify Water timer ( in ms ) -#define MIN_SAMPLES_NEEDED_FOR_DUTY_CYCLE_AVG 10 ///< Minimum number for samples needed for calculating the average duty cycle +#define PRE_GEN_PERMEATE_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the gen permeate mode data published. +#define GEN_PERMEATE_BOOST_PUMP_TGT_PSI 25.0F ///< Pressure target in PSI for the boost pump during generate permeate mode. +#define GEN_PERMEATE_RO_PUMP_TGT_ML 750 ///< Flow target in ml/min for the ro pump during generate permeate mode. +#define PUMP_REST_TIMEOUT_MS ( 3 * MS_PER_SECOND ) ///< Duraion for open loop control at the start of tank fill/full state ( in ms ) +#define RO_REJECTION_WAIT_TIME_MS ( 8 * MS_PER_SECOND ) ///< RO rejection alarm wait time. 5 seconds for RR to stabilize and 3 seconds for calculating rolling average ( in ms ) +#define MIN_SAMPLES_NEEDED_FOR_DUTY_CYCLE_AVG 10 ///< Minimum number for samples needed for calculating the average duty cycle +#define PERMEATE_FLOW_OUT_RANGE_PERSISTENCE_TIME_MS ( 1 * MS_PER_SECOND ) ///< Verify Water timer ( in ms ) +#define PERMEATE_FLOW_TOLERANCE 1.25 ///< Permeate flow tolerance limit // ********** private data ********** @@ -61,6 +64,7 @@ static BOOL isFullAvgValid; ///< Flag to check if the average full duty cycle value is valid or not. static U32 timeInState; ///< Time to wait after reset before starting close loop control (temporary) static BOOL stateTransitioned; ///< Flag to check if permeate tank state transitioned +static U32 permeateFlowPersistanceStartTimeMS; ///< Permeate flow out range alarm timer // ********** private function prototypes ********** @@ -97,6 +101,7 @@ isFullAvgValid = FALSE; timeInState = 0; stateTransitioned = FALSE; + permeateFlowPersistanceStartTimeMS = 0; } /*********************************************************************//** @@ -129,6 +134,7 @@ U32 execGenPermeateMode( void ) { FP_GENP_MODE_STATE_T prevState = genPermeateState; + F32 permeateFlow = 0.0F; // execute current gen Permeate state switch ( genPermeateState ) @@ -156,6 +162,26 @@ setModeGenPTransition( genPermeateState ); SEND_EVENT_WITH_2_U32_DATA( FP_EVENT_GENP_CHANGE, genPermeateState, prevState ) } + + permeateFlow = getFilteredFlow( P16_FLOW ); + // check for permeate flow (P16) is not within range + if( permeateFlow >= ( GEN_PERMEATE_RO_PUMP_TGT_ML * PERMEATE_FLOW_TOLERANCE ) ) + { + if ( 0 == permeateFlowPersistanceStartTimeMS ) + { + permeateFlowPersistanceStartTimeMS = getMSTimerCount(); + } + else if ( TRUE == didTimeout( permeateFlowPersistanceStartTimeMS, PERMEATE_FLOW_OUT_RANGE_PERSISTENCE_TIME_MS ) ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_RO_PERMEATE_FLOW_OUT_HIGH_RANGE, PERMEATE_FLOW_OUT_RANGE_PERSISTENCE_TIME_MS, permeateFlow) + } + } + // check for permeate flow (P16) within range and reset the alarm timer + else if ( permeateFlow < ( GEN_PERMEATE_RO_PUMP_TGT_ML * PERMEATE_FLOW_TOLERANCE ) ) + { + permeateFlowPersistanceStartTimeMS = 0; + } + //Publish Gen Permeate mode data publishGenPModeData(); @@ -166,14 +192,15 @@ * @brief * The setModeGenPTransition function sets the actuators and variables * for the state transition in generate permeate mode. - * @details Inputs: Valve states, Pump speed + * @details Inputs: none * @details Outputs: Actuate valves, pumps as desired. * @param state gen permeate state enum * @return none *************************************************************************/ static void setModeGenPTransition( FP_GENP_MODE_STATE_T state ) { F32 initDutyCycle = 0.0F; + // Execute on running state switch( state ) { @@ -207,8 +234,8 @@ /*********************************************************************//** * @brief * The handleGenPTankFillState handles the fill state of gen water. - * @details \b Inputs: none - * @details \b Outputs: none + * @details \b Inputs: timeInState, stateTransitioned + * @details \b Outputs: stateTransitioned * @return the next state of gen water mode *************************************************************************/ static FP_GENP_MODE_STATE_T handleGenPTankFillState( void ) @@ -238,8 +265,8 @@ /*********************************************************************//** * @brief * The handleGenPTankFullState handles the full state of gen permeate. - * @details \b Inputs: stateDelayTime - * @details \b Outputs: none + * @details \b Inputs: timeInState, stateTransitioned + * @details \b Outputs: stateTransitioned * @return the next state of gen permeate mode *************************************************************************/ static FP_GENP_MODE_STATE_T handleGenPTankFullState( void ) @@ -266,7 +293,7 @@ * The updateDutyCycleAvg function accumulates duty cycle samples for * states in generate permeate mode. * @details \b Inputs: none - * @details \b Outputs: none + * @details \b Outputs: fillDutySum, fillDutyCount, fullDutySum, fullDutyCount * @param state genPermeateState enum * @return none *************************************************************************/ @@ -290,8 +317,10 @@ * @brief * The calculateDutyCycleAvg function computes the average duty cycle * from the accumulated samples collected using updateDutyCyle. - * @details \b Inputs: none - * @details \b Outputs: none + * @details \b Inputs: fillDutyCount, fullDutyCount + * @details \b Outputs: prevFillAvgDutyCycle, isFillAvgValid, fillDutySum, + * fillDutyCount, prevFullAvgDutyCycle, isFullAvgValid, fullDutySum, + * fullDutyCount * @param state genPermeateState enum * @return none *************************************************************************/ Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -r2869d16c34888bec55bded3b8aefd0203f56d3b0 -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 2869d16c34888bec55bded3b8aefd0203f56d3b0) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) @@ -40,6 +40,7 @@ #define SIZE_OF_FLOW_TEMP_ROLLING_AVG ( CONDUCTIVITY_TEMP_SAMPLE_FILTER_MS / TASK_PRIORITY_INTERVAL ) ///< Filtered conductivity temprature moving average sample count. #define RO_RR_MOVING_AVG_NUM_OF_SAMPLES 300 ///< RO rejection ratio moving average number of samples. #define FRACTION_TO_PERCENT_CONVERSION_FACTOR 100.0F ///< RO rejection ratio factor to percentage conversion factor value +#define RO_RR_SAMPLE_COLLECTION_INTERVAL 10 ///< Collect RO rejection ratio sample for every 10th time in priority task /// Filter conductivity readings record. typedef struct @@ -79,6 +80,7 @@ static U32 roRRSamplesNextIndex; ///< RO rejection ratio sample next index number. static U32 roRRCount; ///< RO rejection ratio Number of samples in average buffer. static F32 roRRTankFillAvg; ///< Average RO rejection ratio during permeate tank fill state. +static U32 roRRSampleIntervalCounter; ///< RO rejection ratio sample collection timer counter. // ********** private function prototypes ********** @@ -115,6 +117,7 @@ roRRAvg.ovData = 0.0F; roRRAvg.ovInitData = 0.0F; roRRAvg.override = OVERRIDE_RESET; + roRRSampleIntervalCounter = 0; // Initialize override structures for each conductivity sensor for ( sensor = FIRST_DD_COND_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) @@ -325,7 +328,7 @@ * The calcRORejectionRatio function calculates the RO rejection ratio using * the P9 sensor conductivity value and P18 sensor conductivity value. * @details Inputs: P9 sensor conductivity, P18 sensor conductivity - * @details Outputs: RO rejection ratio + * @details Outputs: RO rejection ratio, Tank fill RO rejection ratio * @return none *************************************************************************/ static void calcRORejectionRatio( void ) @@ -356,31 +359,37 @@ *************************************************************************/ static void filterRORejectionRatioReadings( void ) { - // Filter RO rejection ratio - if ( roRRCount >= RO_RR_MOVING_AVG_NUM_OF_SAMPLES ) + F32 roRR = 0.0F; + + // Moving average samples are collected for every 100 msec + if ( ++roRRSampleIntervalCounter >= RO_RR_SAMPLE_COLLECTION_INTERVAL ) { - roRRRunningSum -= roRRSamples[ roRRSamplesNextIndex ]; - } + // Filter RO rejection ratio + if ( roRRCount >= RO_RR_MOVING_AVG_NUM_OF_SAMPLES ) + { + roRRRunningSum -= roRRSamples[ roRRSamplesNextIndex ]; + } - F32 roRR = getRORejectonRatio(); - roRRSamples[ roRRSamplesNextIndex ] = roRR; - roRRRunningSum += roRR; - roRRSamplesNextIndex = INC_WRAP( roRRSamplesNextIndex, 0, RO_RR_MOVING_AVG_NUM_OF_SAMPLES - 1 ); - roRRCount = INC_CAP( roRRCount, RO_RR_MOVING_AVG_NUM_OF_SAMPLES ); - roRRAvg.data = roRRRunningSum / (F32)roRRCount; + roRR = getRORejectonRatio(); + roRRSamples[ roRRSamplesNextIndex ] = roRR; + roRRRunningSum += roRR; + roRRSamplesNextIndex = INC_WRAP( roRRSamplesNextIndex, 0, RO_RR_MOVING_AVG_NUM_OF_SAMPLES - 1 ); + roRRCount = INC_CAP( roRRCount, RO_RR_MOVING_AVG_NUM_OF_SAMPLES ); + roRRAvg.data = roRRRunningSum / (F32)roRRCount; + roRRSampleIntervalCounter = 0; - // Update the Filter RO rejection ratio during tank fill if the tank is filling - if ( getCurrentGenPermeateState() == FP_GENP_TANK_FILL_STATE ) - { -// roRRTankFillAvg = getRORRAverage(); - roRRTankFillAvg = roRRAvg.data; + // Update the Filter RO rejection ratio during tank fill if the tank is filling + if ( getCurrentGenPermeateState() == FP_GENP_TANK_FILL_STATE ) + { + roRRTankFillAvg = roRRAvg.data; + } } } /*********************************************************************//** * @brief * The getRORejectonRatio function returns the RO rejection ratio - * @details \b Inputs: none + * @details \b Inputs: roRejectionRatio * @details \b Outputs: none * @return the RO rejection ratio in percentage *************************************************************************/ @@ -393,7 +402,7 @@ * @brief * The getTankFillRORejectionRatio function returns the RO rejection ratio * during tank fill state - * @details \b Inputs: none + * @details \b Inputs: roRejectionRatioTankFill * @details \b Outputs: none * @return the tank fill RO rejection ratio in percentage *************************************************************************/ @@ -405,7 +414,7 @@ /*********************************************************************//** * @brief * The getRORRAverage function returns the average RO rejection ratio - * @details \b Inputs: none + * @details \b Inputs: roRRAvg * @details \b Outputs: none * @return the average RO rejection ratio in percentage *************************************************************************/ @@ -420,7 +429,7 @@ * @brief * The getTankFillRORRAverage function returns the average RO rejection ratio * during tank fill state - * @details \b Inputs: none + * @details \b Inputs: roRRTankFillAvg * @details \b Outputs: none * @return the average tank fill RO rejection ratio in percentage *************************************************************************/ @@ -433,8 +442,10 @@ * @brief * The publishConductivitySensorsData function publishes DD conductivity data * at a set interval. - * @details \b Inputs: conductivityPublishTimerCounter - * @details \b Outputs: conductivityPublishTimerCounter + * @details \b Inputs: ddconductivityPublishTimerCounter, fpConductivityPublishTimerCounter, + * roRRPublishTimerCounter + * @details \b Outputs: ddconductivityPublishTimerCounter, fpConductivityPublishTimerCounter, + * roRRPublishTimerCounter, DD, FP, RO data broadcast message sent * @details \b Message \b Sent: MSG_ID_DD_CONDUCTIVITY_DATA to publish DD conductivity data. * @details \b Message \b Sent: MSG_ID_FP_CONDUCTIVITY_DATA to publish FP conductivity data. * @return none Index: firmware/App/Monitors/WaterQualityMonitor.c =================================================================== diff -u -r76ede35cf15c9310c2915151f1d47998f22b71de -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e --- firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision 76ede35cf15c9310c2915151f1d47998f22b71de) +++ firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) @@ -282,6 +282,7 @@ } } + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/