Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -re64816def7cd98e7dcb6d133b3a56c9fea835af3 -r2637b1aada1cd724952d1b80de139804bb7b675b --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision e64816def7cd98e7dcb6d133b3a56c9fea835af3) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 2637b1aada1cd724952d1b80de139804bb7b675b) @@ -56,7 +56,7 @@ /// Maximum time allowed for rinseback operation until full volume is delivered. Timer is reset whenever BP is running. static const U32 MAX_RINSEBACK_TIME = ( 5 * SEC_PER_MIN * ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); /// Maximum time allowed for each additional rinseback volume delivery. -static const U32 MAX_RINSEBACK_ADDITIONAL_TIME = ( 15 * MS_PER_SECOND / TASK_GENERAL_INTERVAL ); +static const U32 MAX_RINSEBACK_ADDITIONAL_TIME = ( 20 * MS_PER_SECOND / TASK_GENERAL_INTERVAL ); /// Multiplier to convert flow (mL/min) into volume (mL) for period of general task interval. static const F32 RINSEBACK_FLOW_INTEGRATOR = 1.0 / (F32)( SEC_PER_MIN * ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); @@ -985,17 +985,14 @@ U32 timeout = MAX_RINSEBACK_TIME / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); U32 countdown = ( rinsebackTimerCtr >= MAX_RINSEBACK_TIME ? 0 : ( MAX_RINSEBACK_TIME - rinsebackTimerCtr ) / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); + data.targetRinsebackVolumeMl = TARGET_RINSEBACK_VOLUME_ML; rinsebackPublishTimerCtr = 0; - // If we have completed rinseback, timeout is no longer in force - indicate by zeroing timeout + // If we have completed rinseback, timeout is no longer in force - indicate by zeroing timeout. Also include any additionals to target. if ( ( rinsebackState > RINSEBACK_PAUSED_STATE ) && ( getRinsebackVolume() >= TARGET_RINSEBACK_VOLUME_ML ) ) { + data.targetRinsebackVolumeMl = targetRinsebackVolumePlusAdditional_mL; timeout = 0; } - data.targetRinsebackVolumeMl = TARGET_RINSEBACK_VOLUME_ML; - if ( RINSEBACK_RUN_ADDITIONAL_STATE == rinsebackState ) - { - data.targetRinsebackVolumeMl = targetRinsebackVolumePlusAdditional_mL; - } data.deliveredRinsebackVolumeMl = getRinsebackVolume(); data.safetyRinsebackVolumeMl = getRinsebackSafetyVolume(); data.rinsebackFlowRateMlMin = rinsebackRate_mL_min;