Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -r0c599603188536e9d329fbd60a8768affd0c49a2 -r7c99c8a08fdd3747c298d04a6995b325bb986097 --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 0c599603188536e9d329fbd60a8768affd0c49a2) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 7c99c8a08fdd3747c298d04a6995b325bb986097) @@ -249,23 +249,23 @@ { requestNewOperationMode( DG_MODE_GENE ); } + } - if ( TRUE == isEmptyAcidBottle() ) // is acid volume < 10% - { - setThisFisrtFillFlag( TRUE ); // indicates bottles need prime - activateAlarmNoData( ALARM_ID_DG_ACID_BOTTLE_LOW_VOLUME ); // trigger empty acid bottle alarm - } - else if ( TRUE == isEmptyBicarbBottle() ) // is bicarb volume < 10% - { - setThisFisrtFillFlag( TRUE ); // indicates bottles need prime - activateAlarmNoData( ALARM_ID_DG_BICARB_BOTTLE_LOW_VOLUME ); // trigger empty bicarb bottle alarm - } - else if ( ( FALSE == isAlarmActive( ALARM_ID_DG_ACID_BOTTLE_LOW_VOLUME ) ) || - ( FALSE == isAlarmActive( ALARM_ID_DG_BICARB_BOTTLE_LOW_VOLUME ) ) ) - { - requestNewOperationMode( DG_MODE_FILL ); - } + // check for empty bottles at the end of drain + if ( TRUE == isEmptyAcidBottle() ) // is acid volume < 10% + { + setThisFisrtFillFlag( TRUE ); // indicates bottles need prime + activateAlarmNoData( ALARM_ID_DG_ACID_BOTTLE_LOW_VOLUME ); // trigger empty acid bottle alarm } + else if ( TRUE == isEmptyBicarbBottle() ) // is bicarb volume < 10% + { + setThisFisrtFillFlag( TRUE ); // indicates bottles need prime + activateAlarmNoData( ALARM_ID_DG_BICARB_BOTTLE_LOW_VOLUME ); // trigger empty bicarb bottle alarm + } + else + { + requestNewOperationMode( DG_MODE_GENE ); // TODO: in idle, reject moving from idle to fill if alarm is active + } // Drain timed out raise the alarm if ( TRUE == didTimeout( dialysateDrainStartTime, DIALYSATE_DRAIN_TIME_OUT ) )