Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -re7fe0454b5b2d39009dc784dc8c156856df8bc86 -r48ca7fd644c67920acc29a80b7af379d0a134d1a --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision e7fe0454b5b2d39009dc784dc8c156856df8bc86) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 48ca7fd644c67920acc29a80b7af379d0a134d1a) @@ -36,7 +36,7 @@ #define CONCENTRATE_PUMP_REVERSE_DIR 0x0 ///< Concentrate pump reverse direction configuration. #define CONCENTRATE_PUMP_SPEED_INCREMENT 2.0F ///< Speed increase (mL/min) when controlling concentrate pump to target step speed. -#define CONCENTRATE_PUMP_MIN_SPEED 3.0F ///< Minimum speed for concentrate pump in mL per min. +#define CONCENTRATE_PUMP_MIN_SPEED 0.1F ///< Minimum speed for concentrate pump in mL per min. #define CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_ON_PCT 0.02F ///< Concentrate pump speed out of range tolerance when on in percentage. #define CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_SLOW_MLPM 1.0F ///< Concentrate pump speed out of range tolerance when slow in mL/min. #define CONCENTRATE_PUMP_LOW_SPEED_THRESHOLD_MLPM 10.0F ///< Concentrate pump low speed threshold in mL/min. @@ -115,6 +115,13 @@ BOOL isConcPumpParkInProgress; ///< Concentrate pump park progress boolean flag (T/F). } CONCENTRATE_PUMP_T; +/// Payload record structure for concentrate pump start request +typedef struct +{ + U32 pumpID; ///< Concentrate pump ID (0:Acid ,1:Bicarb) + F32 speed; ///< Speed range from 0.1 ml/min to 48.0 ml/min. +} CONC_PUMP_START_CMD_PAYLOAD_T; + // ********** private data ********** static U32 concentratePumpMonitorTimerCounter; ///< Timer counter to perform monitor on concentrate pump. @@ -459,8 +466,8 @@ } /* - * If 3 <= speed <= 48 set it - * If speed < 3 set to 0 + * If 0.1 <= speed <= 48 set it + * If speed < 0.1 set to 0 * else speed > 48 set to 48 */ if ( ( CONCENTRATE_PUMP_MIN_SPEED <= targetSpeed_ml_min ) && ( targetSpeed_ml_min <= CONCENTRATE_PUMP_MAX_SPEED ) ) @@ -1140,6 +1147,44 @@ /*********************************************************************//** * @brief + * The testConcentratePumpStartOverride function starts a given concentrate pump + * at mentioned speed/flowrate ( ml/min). + * @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 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 ) + { + CONC_PUMP_START_CMD_PAYLOAD_T payload; + + memcpy( &payload, message->payload, sizeof(CONC_PUMP_START_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 ) ) ) + { + setConcentratePumpTargetSpeed( (CONCENTRATE_PUMPS_T)payload.pumpID, payload.speed ); + requestConcentratePumpOn ( (CONCENTRATE_PUMPS_T)payload.pumpID ); + result = TRUE; + } + } + } + + return result; +} + +/*********************************************************************//** + * @brief * The testConcentratePumpParkRequestOverride function overrides the given pump * to park request. * @details \b Inputs: concentratePumps