Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -r4408a78b7ddd69bc4cee8dd675997cc073a83d36 --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 4408a78b7ddd69bc4cee8dd675997cc073a83d36) @@ -50,8 +50,6 @@ #define RINSEBACK_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) /// 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 after rinseback operation completed. Timer is reset whenever BP is running (additional). -static const U32 MAX_RINSEBACK_DONE_TIME = ( 15 * SEC_PER_MIN * ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); /// Warning time after rinseback operation completed. Timer is reset whenever BP is running (additional). static const U32 RINSEBACK_DONE_WARNING_TIME = ( 13 * SEC_PER_MIN * ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); /// Maximum time allowed for each additional rinseback volume delivery. @@ -500,15 +498,8 @@ RINSEBACK_STATE_T result = RINSEBACK_STOP_STATE; // Have we been in this stopped state for too long despite having delivered full blood volume back to patient? - if ( ( rinsebackTimerCtr > MAX_RINSEBACK_DONE_TIME ) && ( getRinsebackVolume() >= rinsebackTargetVolume_mL ) ) + if ( ( RINSEBACK_DONE_WARNING_TIME == rinsebackTimerCtr ) && ( getRinsebackVolume() >= rinsebackTargetVolume_mL ) ) { - signalGoToTreatmentStopped(); - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TREATMENT_RINSEBACK_TIMEOUT_ALARM, rinsebackTimerCtr, MAX_RINSEBACK_DONE_TIME ); - clearAlarm( ALARM_ID_HD_TREATMENT_RINSEBACK_TIMEOUT_WARNING ); - } - // Have we been in this stopped state for too long despite having delivered full blood volume back to patient? - else if ( ( RINSEBACK_DONE_WARNING_TIME == rinsebackTimerCtr ) && ( getRinsebackVolume() >= rinsebackTargetVolume_mL ) ) - { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_TREATMENT_RINSEBACK_TIMEOUT_WARNING, rinsebackTimerCtr, RINSEBACK_DONE_WARNING_TIME ); } // Have we been in this stopped state for too long w/o having delivered full blood volume back to patient? @@ -1001,12 +992,12 @@ RINSEBACK_DATA_PAYLOAD_T data; TREATMENT_STOP_PAYLOAD_T sdata; U32 timeout = MAX_RINSEBACK_TIME / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); - U32 countdown = ( getRinsebackVolume() >= rinsebackTargetVolume_mL ? MAX_RINSEBACK_DONE_TIME : MAX_RINSEBACK_TIME ); + U32 countdown = ( getRinsebackVolume() >= rinsebackTargetVolume_mL ? 0 : MAX_RINSEBACK_TIME ); U32 stopTO = ( getRinsebackVolume() >= rinsebackTargetVolume_mL ? 0 : MAX_RINSEBACK_TIME ); countdown -= rinsebackTimerCtr; // Handle countdown past zero - if ( countdown > MAX_RINSEBACK_DONE_TIME ) + if ( countdown > MAX_RINSEBACK_TIME ) { countdown = 0; } @@ -1019,7 +1010,7 @@ if ( ( rinsebackState > RINSEBACK_PAUSED_STATE ) && ( getRinsebackVolume() >= rinsebackTargetVolume_mL ) ) { data.targetRinsebackVolumeMl = targetRinsebackVolumePlusAdditional_mL; - timeout = MAX_RINSEBACK_DONE_TIME / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); + timeout = 0; } data.deliveredRinsebackVolumeMl = getRinsebackVolume(); data.rinsebackFlowRateMlMin = rinsebackRate_mL_min;