Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -rd0536d759cb33f099357033c3429401ff1637d26 -r09ac8a11080a42d32c9a217d267fc16c9f397cc2 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision d0536d759cb33f099357033c3429401ff1637d26) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 09ac8a11080a42d32c9a217d267fc16c9f397cc2) @@ -23,6 +23,7 @@ #include "SystemCommMessages.h" #include "TaskGeneral.h" #include "Utilities.h" +#include "OperationModes.h" /** * @addtogroup ConcentratePumps @@ -389,6 +390,47 @@ /*********************************************************************//** * @brief + * The handleConcentratePumpParkRequest function accepts/rejects the park + * concentrate pumps request. + * @details Inputs: Pump state and DG operating mode + * @details Outputs: command response set to true if able to perform parking pump. + * @return result as true if park is accomplished. + *************************************************************************/ +BOOL handleConcentratePumpParkRequest( void ) +{ + CONCENTRATE_PUMPS_T pumpId; + DG_CMD_RESPONSE_T cmdResponse; + BOOL result = FALSE; + DG_OP_MODE_T opMode = getCurrentOperationMode(); + cmdResponse.commandID = DG_CMD_PARK_CONCENTRATE_PUMPS; + cmdResponse.rejected = FALSE; + cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; + + + for ( pumpId = CONCENTRATEPUMPS_CP1_ACID; pumpId < NUM_OF_CONCENTRATE_PUMPS; pumpId++ ) + { + // check if pump is not ON and DG mode is not in filling or fault mode, then park the concentrate pumps + if ( ( concentratePumps[ pumpId ].execState == CONCENTRATE_PUMP_OFF_STATE ) && ( ( DG_MODE_FILL != opMode ) || ( DG_MODE_FAUL != opMode ) ) ) + { + // Park concentrate pump + requestConcentratePumpOff( pumpId, PARK_CONC_PUMPS ); + result |= TRUE; + } + else + { + cmdResponse.rejected = TRUE; + cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_INVALID_MODE; + result |= FALSE; + } + } + + sendCommandResponseMsg( &cmdResponse ); + + return result; +} + +/*********************************************************************//** + * @brief * The requestConcentratePumpOff function requests the module to turn off * the concentrate pumps. * @details Inputs: none Index: firmware/App/Controllers/ConcentratePumps.h =================================================================== diff -u -r8ebab816fadec93b2f3c6a42f15a07c26b3a4f59 -r09ac8a11080a42d32c9a217d267fc16c9f397cc2 --- firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision 8ebab816fadec93b2f3c6a42f15a07c26b3a4f59) +++ firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision 09ac8a11080a42d32c9a217d267fc16c9f397cc2) @@ -81,6 +81,7 @@ F32 getMeasuredPumpSpeedMLPM( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpIsParked( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpParkIsFaulted( CONCENTRATE_PUMPS_T pumpId ); +BOOL handleConcentratePumpParkRequest( void ); BOOL testSetConcentratePumpDataPublishIntervalOverride( U32 value ); BOOL testResetConcentratePumpDataPublishIntervalOverride( void ); Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r2b2cf776b2e1dec6d61c3a4150a4b5d838b4f911 -r09ac8a11080a42d32c9a217d267fc16c9f397cc2 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 2b2cf776b2e1dec6d61c3a4150a4b5d838b4f911) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 09ac8a11080a42d32c9a217d267fc16c9f397cc2) @@ -881,7 +881,7 @@ handleHDStartStopTrimmerHeaterCmd( message ); break; - case MSG_ID_DG_PARK_CONCENTRATE_PUMPS: + case MSG_ID_DG_PARK_CONCENTRATE_PUMPS_CMD_REQUEST: handleParkConecentratePumpsCmd( message ); break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r2b2cf776b2e1dec6d61c3a4150a4b5d838b4f911 -r09ac8a11080a42d32c9a217d267fc16c9f397cc2 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 2b2cf776b2e1dec6d61c3a4150a4b5d838b4f911) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 09ac8a11080a42d32c9a217d267fc16c9f397cc2) @@ -1145,17 +1145,7 @@ if ( message->hdr.payloadLen == 0 ) { - DG_CMD_RESPONSE_T cmdResponse; - cmdResponse.commandID = DG_CMD_PARK_CONCENTRATE_PUMPS; - cmdResponse.rejected = FALSE; - cmdResponse.rejectCode = DG_CMD_REQUEST_REJECT_REASON_NONE; - result = TRUE; - - // Park both acid and Bicarb concentrate pumps - requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID, PARK_CONC_PUMPS ); - requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB, NO_PARK_CONC_PUMPS ); - - sendCommandResponseMsg( &cmdResponse ); + result = handleConcentratePumpParkRequest(); } sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DG_2_HD, result );