Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r48ca7fd644c67920acc29a80b7af379d0a134d1a -rb6d20d9e5c704a9f7ebceea9bb12731dac61fc2a --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 48ca7fd644c67920acc29a80b7af379d0a134d1a) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision b6d20d9e5c704a9f7ebceea9bb12731dac61fc2a) @@ -115,12 +115,13 @@ BOOL isConcPumpParkInProgress; ///< Concentrate pump park progress boolean flag (T/F). } CONCENTRATE_PUMP_T; -/// Payload record structure for concentrate pump start request +/// Payload record structure for concentrate pump start/stop request typedef struct { U32 pumpID; ///< Concentrate pump ID (0:Acid ,1:Bicarb) + U32 startStop; ///< Concentrate pump start:1,stop :0. F32 speed; ///< Speed range from 0.1 ml/min to 48.0 ml/min. -} CONC_PUMP_START_CMD_PAYLOAD_T; +} CONC_PUMP_START_STOP_CMD_PAYLOAD_T; // ********** private data ********** @@ -1147,35 +1148,45 @@ /*********************************************************************//** * @brief - * The testConcentratePumpStartOverride function starts a given concentrate pump - * at mentioned speed/flowrate ( ml/min). + * The testConcentratePumpStartStopOverride function starts a given concentrate pump + * at mentioned speed/flowrate ( ml/min) or stops the concentrate pump. * @details \b Inputs: tester logged in * @details \b Outputs: concentratePumps[] * @param message set message from Dialin which includes the concentrate pump to set * and the state to set the concentratet pump to. * @return TRUE if set request is successful, FALSE if not *************************************************************************/ -BOOL testConcentratePumpStartOverride( MESSAGE_T *message ) +BOOL testConcentratePumpStartStopOverride( MESSAGE_T *message ) { BOOL result = FALSE; // Verify tester has logged in with TD if ( TRUE == isTestingActivated() ) { // Verify payload length is valid - if ( sizeof( CONC_PUMP_START_CMD_PAYLOAD_T ) == message->hdr.payloadLen ) + if ( sizeof( CONC_PUMP_START_STOP_CMD_PAYLOAD_T ) == message->hdr.payloadLen ) { - CONC_PUMP_START_CMD_PAYLOAD_T payload; + CONC_PUMP_START_STOP_CMD_PAYLOAD_T payload; - memcpy( &payload, message->payload, sizeof(CONC_PUMP_START_CMD_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof(CONC_PUMP_START_STOP_CMD_PAYLOAD_T) ); - // Speed range is 0.1 ml/min to 40 ml/min. - if ( ( (CONCENTRATE_PUMPS_T)payload.pumpID < NUM_OF_CONCENTRATE_PUMPS ) && - ( ( payload.speed >= CONCENTRATE_PUMP_MIN_SPEED ) && ( payload.speed <= CONCENTRATE_PUMP_MAX_SPEED ) ) ) + if ( (CONCENTRATE_PUMPS_T)payload.pumpID < NUM_OF_CONCENTRATE_PUMPS ) { - setConcentratePumpTargetSpeed( (CONCENTRATE_PUMPS_T)payload.pumpID, payload.speed ); - requestConcentratePumpOn ( (CONCENTRATE_PUMPS_T)payload.pumpID ); - result = TRUE; + // Handle start command + if ( ( TRUE == payload.startStop ) && + ( ( payload.speed >= CONCENTRATE_PUMP_MIN_SPEED ) && ( payload.speed <= CONCENTRATE_PUMP_MAX_SPEED ) ) ) + { + setConcentratePumpTargetSpeed( (CONCENTRATE_PUMPS_T)payload.pumpID, payload.speed ); + requestConcentratePumpOn ( (CONCENTRATE_PUMPS_T)payload.pumpID ); + result = TRUE; + } + + //Handle stop command + if ( FALSE == payload.startStop ) + { + stopConcentratePump( (CONCENTRATE_PUMPS_T)payload.pumpID ); + result = TRUE; + } } } }