Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -racb534a5d5921959493304a26dbc21d2b03338e0 -r573a26b2a0273a4983b1de1cbff5bed63e01dce0 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision acb534a5d5921959493304a26dbc21d2b03338e0) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 573a26b2a0273a4983b1de1cbff5bed63e01dce0) @@ -549,18 +549,17 @@ if ( D11_PUMP == pumpId ) { setFPGAD11PumpRevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); - isDosingCompleted [ D11_PUMP ] = FALSE; } else if ( D10_PUMP == pumpId ) { setFPGAD10PumpRevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); - isDosingCompleted [ D10_PUMP ] = FALSE; } else { setFPGAD76PumpRevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); - isDosingCompleted [ D76_PUMP ] = FALSE; } + + isDosingCompleted [ pumpId ] = FALSE; } /* @@ -619,12 +618,24 @@ * for a given concentrate pump. * @details \b Inputs: concentratePumps * @details \b Outputs: none + * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid pump ID is seen. * @param pumpId concentrate pump id to get current dosing status * @return TRUE if dosing completed otherwise,FALSE. *************************************************************************/ BOOL isConcentratePumpDosingCompleted( CONCENTRATE_PUMPS_T pumpId ) { - return isDosingCompleted[ pumpId ]; + BOOL status = FALSE; + + if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) + { + status = isDosingCompleted[ pumpId ]; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CONCENTRATE_PUMP_INVALID_PUMP_ID, pumpId ); + } + + return status; } /*********************************************************************//**