Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -r1d07de4e970f54f2ae1786ef546cf5567df9ba8e -r3b7059f9225a021c5c55a3cb7874bafc2ae1eb48 --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 1d07de4e970f54f2ae1786ef546cf5567df9ba8e) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 3b7059f9225a021c5c55a3cb7874bafc2ae1eb48) @@ -184,12 +184,6 @@ airTrapLevels[ AIR_TRAP_LEVEL_SENSOR_LOWER ].data = (U32)( TRUE == lower ? AIR_TRAP_LEVEL_AIR : AIR_TRAP_LEVEL_FLUID ); airTrapLevels[ AIR_TRAP_LEVEL_SENSOR_UPPER ].data = (U32)( TRUE == upper ? AIR_TRAP_LEVEL_AIR : AIR_TRAP_LEVEL_FLUID ); - // Clear fill timeout alarm condition if low level sensor sees fluid - if ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) - { - clearAlarmCondition( ALARM_ID_HD_AIR_TRAP_FILL_DURING_TREATMENT ); - } - // Check level readings are valid if ( ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) && ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) ) Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r8e9aa2234cc1318c6465480785a0e4af75e7be48 -r3b7059f9225a021c5c55a3cb7874bafc2ae1eb48 --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 8e9aa2234cc1318c6465480785a0e4af75e7be48) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision 3b7059f9225a021c5c55a3cb7874bafc2ae1eb48) @@ -24,6 +24,7 @@ #include "ModeTreatmentParams.h" #include "Prime.h" #include "SelfTests.h" +#include "Switches.h" #include "SystemCommMessages.h" #include "TaskGeneral.h" #include "Timers.h" @@ -997,7 +998,19 @@ static HD_PRE_TREATMENT_PRIME_STATE_T handlePrimePause( void ) { HD_PRE_TREATMENT_PRIME_STATE_T state = HD_PRIME_PAUSE; + BOOL doorClosed = ( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ? TRUE : FALSE ); + BOOL latchClosed = ( STATE_CLOSED == getSwitchStatus( PUMP_TRACK_SWITCH ) ? TRUE : FALSE ); + // require front door and pump track to be closed before allowing resume + if ( ( TRUE == doorClosed ) && ( TRUE == latchClosed ) ) + { + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); + } + else + { + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); + } + if ( TRUE == primeResumeRequested ) { primeResumeRequested = FALSE; Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r1d07de4e970f54f2ae1786ef546cf5567df9ba8e -r3b7059f9225a021c5c55a3cb7874bafc2ae1eb48 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 1d07de4e970f54f2ae1786ef546cf5567df9ba8e) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 3b7059f9225a021c5c55a3cb7874bafc2ae1eb48) @@ -27,6 +27,7 @@ #include "ModeTreatmentParams.h" #include "PresOccl.h" #include "SelfTests.h" +#include "Switches.h" #include "SyringePump.h" #include "SystemCommMessages.h" #include "TaskGeneral.h" @@ -133,6 +134,7 @@ static void resetSelfTestsFlags( void ); static void setupForSelfTestsStop( void ); +static void setAlarmResumePerDoorAndLatch( void ); static NO_CART_SELF_TESTS_STATE_T handleNoCartSelfTestsWaitForClosedDoor( void ); static NO_CART_SELF_TESTS_STATE_T handleNoCartSelfTestHomeValvesState( void ); @@ -241,6 +243,30 @@ /*********************************************************************//** * @brief + * The setAlarmResumePerDoorAndLatch function sets alarm resume enable for + * stop states based on whether door and pump track are closed. + * @details Inputs: state of front door and pump track + * @details Outputs: resume alarm enabled/disabled + * @return none + *************************************************************************/ +static void setAlarmResumePerDoorAndLatch( void ) +{ + BOOL doorClosed = ( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ? TRUE : FALSE ); + BOOL latchClosed = ( STATE_CLOSED == getSwitchStatus( PUMP_TRACK_SWITCH ) ? TRUE : FALSE ); + + // require front door and pump track to be closed before allowing resume + if ( ( TRUE == doorClosed ) && ( TRUE == latchClosed ) ) + { + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); + } + else + { + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); + } +} + +/*********************************************************************//** + * @brief * The transitionToNoCartSelfTests function resets anything required before * the start of no cartridge self-tests. * @details Inputs: none @@ -877,6 +903,7 @@ { NO_CART_SELF_TESTS_STATE_T state = NO_CART_SELF_TESTS_STOPPED_STATE; + setAlarmResumePerDoorAndLatch(); doorClosedRequired( FALSE, FALSE ); // Restart self-test start time @@ -1574,6 +1601,7 @@ { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_STOPPED_STATE; + setAlarmResumePerDoorAndLatch(); doorClosedRequired( FALSE, FALSE ); // if not enough heparin alarm, pre-load pusher after retract completes @@ -2081,6 +2109,7 @@ { WET_SELF_TESTS_STATE_T state = WET_SELF_TESTS_STOPPED_STATE; + setAlarmResumePerDoorAndLatch(); doorClosedRequired( FALSE, FALSE ); if ( TRUE == selfTestsResumeRequested )