Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -rfadef92f860470251023ad1fff77ae085b85389d -r8afa3bb034ae263e20e84ecc2783791776be837a --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision fadef92f860470251023ad1fff77ae085b85389d) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 8afa3bb034ae263e20e84ecc2783791776be837a) @@ -137,6 +137,8 @@ setCurrentSubState( NO_SUB_STATE ); + SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_INACTIVE_RESERVOIR_TEMP_REMOVE, (U32)inactiveReservoir, 0 ) // TODO remove + if ( DG_RESERVOIR_1 == inactiveReservoir ) { setValveStateDelayed( VRD1, VALVE_STATE_OPEN, DELAY_RES_DRAIN_VALVE_MS ); @@ -270,7 +272,19 @@ DG_RESERVOIR_ID_T inactiveReservoir = getInactiveReservoir(); U32 targetVolumeML = getTargetDrainVolumeML(); BOOL drainStatus = FALSE; + BOOL checkLowVolumeAlarms = TRUE; + HD_MODE_SUB_MODE_T mode; + getHDOperationMode( &mode ); + + // Ignore low volume alarms if not in treatment + if ( ( ( MODE_TREA == mode.hdMode) && ( TREATMENT_END_STATE == mode.hdSubMode) ) || + ( MODE_POST == mode.hdMode ) ) + { + // do not check low volume alarms + checkLowVolumeAlarms = FALSE; + } + if ( 0 == targetVolumeML ) { drainStatus = hasTargetDrainToZeroBeenReached( inactiveReservoir, DRAIN_WEIGHT_UNCHANGE_TIMEOUT_MS ); @@ -295,6 +309,8 @@ acidBottleVolML = acid.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].acidFullBottleVolumeML; bicarbBottleVolML = bicarb.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].bicarbStartVolumeML; + SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_INACTIVE_RESERVOIR_TEMP_REMOVE, (U32)inactiveReservoir, 0 ) // TODO remove + if ( DG_RESERVOIR_1 == inactiveReservoir ) { setValveState( VRD1, VALVE_STATE_CLOSED ); @@ -319,8 +335,13 @@ { resetChemicalUsedVolumeML( ACID ); setThisFirstFillFlag( TRUE ); // indicates bottles need prime - activateAlarmNoData( ALARM_ID_DG_ACID_BOTTLE_LOW_VOLUME ); - activateAlarmNoData ( ALARM_ID_DG_CREATING_DIALYSATE_PLEASE_WAIT ); + + // Alarm only valid in pre-treatment or treatment modes + if ( TRUE == checkLowVolumeAlarms ) + { + activateAlarmNoData( ALARM_ID_DG_ACID_BOTTLE_LOW_VOLUME ); + activateAlarmNoData ( ALARM_ID_DG_CREATING_DIALYSATE_PLEASE_WAIT ); + } } if ( ( ( bicarbBottleVolML - getChemicalUsedVolumeML( BICARB ) ) <= CONCENTRATE_BOTTLE_BICARB_LOW_VOLUME_ML ) && // SRSDG 837 @@ -329,8 +350,13 @@ { resetChemicalUsedVolumeML( BICARB ); setThisFirstFillFlag( TRUE ); - activateAlarmNoData( ALARM_ID_DG_BICARB_BOTTLE_LOW_VOLUME ); - activateAlarmNoData ( ALARM_ID_DG_CREATING_DIALYSATE_PLEASE_WAIT ); + + // Alarm only valid in pre-treatment or treatment modes + if ( TRUE == checkLowVolumeAlarms ) + { + activateAlarmNoData( ALARM_ID_DG_BICARB_BOTTLE_LOW_VOLUME ); + activateAlarmNoData ( ALARM_ID_DG_CREATING_DIALYSATE_PLEASE_WAIT ); + } } } @@ -366,6 +392,8 @@ if ( ++drainEmptyTareTimerCtr > DRAIN_EMPTY_TARE_WAIT ) { + SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_INACTIVE_RESERVOIR_TEMP_REMOVE, (U32)inactiveReservoir, 0 ) // TODO remove + drainEmptyTareTimerCtr = 0; tareLoadCellsAtEmpty( inactiveReservoir );