Index: firmware/App/Controllers/RinsePump.c =================================================================== diff -u -racac329c455014a27d247538bce6717a76e9c76c -r14998cd05a5b439a1e4a01ab11ad5e65c259ee3c --- firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision acac329c455014a27d247538bce6717a76e9c76c) +++ firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision 14998cd05a5b439a1e4a01ab11ad5e65c259ee3c) @@ -276,9 +276,12 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { + F32 pwmPercent; + // Set PWM to zero to stop the logical rinse pump rinsePumpPwmPercentage.data = 0.0F; - F32 pwmPercent = getF32OverrideValue( &rinsePumpPwmPercentage ); // TODO should we read from getF32Override for Off state, what is there is an active override and override sent for off state transition? + // PWM should be zero. Ignore the override value for rinsePumpPwmPercentage if any. + pwmPercent = rinsePumpPwmPercentage.data; setRinsePumpPwm( D79_RINSE_PUMP, pwmPercent ); } else @@ -303,12 +306,11 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { + F32 pwmPercent; + rinsePumpPwmPercentage.data = RINSE_PUMP_DEFAULT_PWM_PERCENT; - F32 pwmPercent = getF32OverrideValue( &rinsePumpPwmPercentage ); - U32 pwmInCount = (U32)( ( pwmPercent / RINSE_PUMP_MAX_PWM_PERCENT ) * RINSE_PUMP_PWM_IN_COUNT_MAX ); + pwmPercent = getF32OverrideValue( &rinsePumpPwmPercentage ); - rinsePumpTargetSpeedRPM = (U32)( ( (F32)pwmInCount / RINSE_PUMP_PWM_IN_COUNT_MAX ) * (F32)RINSE_PUMP_MAX_RPM_ESTIMATE ); - // Turn on logical rinse pump with given PWM value setRinsePumpPwm( D79_RINSE_PUMP, pwmPercent ); } @@ -335,6 +337,8 @@ { U08 pwmCount = (U08)( ( pwmPercent / RINSE_PUMP_MAX_PWM_PERCENT ) * RINSE_PUMP_PWM_IN_COUNT_MAX ); + rinsePumpTargetSpeedRPM = (U32)( ( (F32)pwmCount / RINSE_PUMP_PWM_IN_COUNT_MAX ) * (F32)RINSE_PUMP_MAX_RPM_ESTIMATE ); + switch ( pumpId ) { case D79_RINSE_PUMP: @@ -363,7 +367,7 @@ RINSE_PUMP_PAYLOAD_T data; data.d79State = getRinsePumpState(); - data.d79PumpPWM = getF32OverrideValue( &rinsePumpPwmPercentage ); + data.d79PumpPWM = ( getRinsePumpState() == RINSE_PUMP_STATE_OFF ? 0.0F : getF32OverrideValue( &rinsePumpPwmPercentage ) ); data.d79PumpRPM = rinsePumpMeasuredSpeed; broadcastData( MSG_ID_DD_RINSE_PUMP_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( RINSE_PUMP_PAYLOAD_T ) );