Index: firmware/App/Controllers/Switches.c =================================================================== diff -u -r3d72b777cf1ceb673d118341c46e2d6d5b7b75f5 -r34e8d77ff4891ad697f1017af3b7e9bfaadbd753 --- firmware/App/Controllers/Switches.c (.../Switches.c) (revision 3d72b777cf1ceb673d118341c46e2d6d5b7b75f5) +++ firmware/App/Controllers/Switches.c (.../Switches.c) (revision 34e8d77ff4891ad697f1017af3b7e9bfaadbd753) @@ -119,6 +119,27 @@ // If the bit is 0, the door switch is open, because it is normally open switch // TODO investigate the polarity of the pump track switch once it tied to the cartridge latch switchesStatus[ i ].status.data = currentSwitchStatus; + + // Clear active Alarms + switch ( i ) + { + case FRONT_DOOR: + if ( STATE_CLOSED == currentSwitchStatus ) + { + clearAlarmCondition( ALARM_ID_CARTRIDGE_DOOR_OPENED ); + } + break; + + case PUMP_TRACK_SWITCH: + if ( STATE_CLOSED == currentSwitchStatus ) + { + clearAlarmCondition( ALARM_ID_PUMP_TRACK_LATCH_OPENED ); + } + break; + + default: + break; + } } } else Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r8ba9bec762a05f15cda956997850f06f44c12516 -r34e8d77ff4891ad697f1017af3b7e9bfaadbd753 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 8ba9bec762a05f15cda956997850f06f44c12516) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 34e8d77ff4891ad697f1017af3b7e9bfaadbd753) @@ -256,18 +256,31 @@ /*********************************************************************//** * @brief * The verifySwitchStatus function checks Pump Track and Door switches are closed. - * Alarm is set if not. + * Verify Syringe is installed if needed. + * Alarm is set if not. Alarms cleared by driver executives. * @details Inputs: none * @details Outputs: Alarm * @return none *************************************************************************/ void verifySwitchStatus( void ) { - if ( STATE_OPEN == getSwitchStatus( FRONT_DOOR ) || STATE_OPEN == getSwitchStatus( PUMP_TRACK_SWITCH ) ) + F32 bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); + F32 hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); + + if ( STATE_OPEN == getSwitchStatus( FRONT_DOOR ) ) { activateAlarmNoData( ALARM_ID_CARTRIDGE_DOOR_OPENED ); - // TODO: Separate alarm for Pump Track Switch } + + if ( STATE_OPEN == getSwitchStatus( PUMP_TRACK_SWITCH ) ) + { + activateAlarmNoData( ALARM_ID_PUMP_TRACK_LATCH_OPENED ); + } + + if ( ( FALSE == isSyringeDetected() ) && ( ( bolusVol > NEARLY_ZERO ) && ( hepRate > NEARLY_ZERO ) ) ) + { + activateAlarmNoData( ALARM_ID_PUMP_TRACK_LATCH_OPENED ); + } } /*********************************************************************//**