Index: firmware/App/Controllers/Switches.c =================================================================== diff -u -r34e8d77ff4891ad697f1017af3b7e9bfaadbd753 -rb53c3ab97a715ef9dc823a7148d0c0a52c413865 --- firmware/App/Controllers/Switches.c (.../Switches.c) (revision 34e8d77ff4891ad697f1017af3b7e9bfaadbd753) +++ firmware/App/Controllers/Switches.c (.../Switches.c) (revision b53c3ab97a715ef9dc823a7148d0c0a52c413865) @@ -119,27 +119,6 @@ // 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 @@ -148,6 +127,17 @@ } } + // Clear active Alarms + if ( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) + { + clearAlarmCondition( ALARM_ID_CARTRIDGE_DOOR_OPENED ); + } + + if ( STATE_CLOSED == getSwitchStatus( PUMP_TRACK_SWITCH ) ) + { + clearAlarmCondition( ALARM_ID_PUMP_TRACK_LATCH_OPENED ); + } + publishSwitchesData(); } Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r596b96528f155bd9f663ed1773fdc80761fc7b31 -rb53c3ab97a715ef9dc823a7148d0c0a52c413865 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 596b96528f155bd9f663ed1773fdc80761fc7b31) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision b53c3ab97a715ef9dc823a7148d0c0a52c413865) @@ -360,11 +360,11 @@ static HD_POST_TREATMENT_STATE_T handlePostTreatmentPatientDisconnectionState( void ) { F32 const bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); - F32 const hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); + F32 const hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); HD_POST_TREATMENT_STATE_T state = HD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE; VALVE_T valve; - if ( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) + if (( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) && (STATE_CLOSED == getSwitchStatus( PUMP_TRACK_SWITCH ))) { #ifdef SKIP_UI_INTERACTION patientDisconnectionConfirmed = TRUE; Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r34e8d77ff4891ad697f1017af3b7e9bfaadbd753 -rb53c3ab97a715ef9dc823a7148d0c0a52c413865 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 34e8d77ff4891ad697f1017af3b7e9bfaadbd753) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision b53c3ab97a715ef9dc823a7148d0c0a52c413865) @@ -672,8 +672,6 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE; - verifySwitchStatus(); - if ( TRUE == alarmActionResumeReceived ) { alarmActionResumeReceived = FALSE; @@ -691,6 +689,14 @@ transitionToCartridgeInstallation(); } } + else + { + if ( ( NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE <= getNoCartSelfTestsState() ) && + ( NO_CART_SELF_TESTS_STOPPED_STATE != getNoCartSelfTestsState() ) ) + { + verifySwitchStatus(); + } + } return state; } @@ -732,8 +738,6 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_SELF_TEST_DRY_STATE; - verifySwitchStatus(); - if ( TRUE == alarmActionResumeReceived ) { alarmActionResumeReceived = FALSE; @@ -751,6 +755,14 @@ transitionToPrime(); } } + else + { + if ( ( DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE <= getDrySelfTestsState() ) && + ( DRY_SELF_TESTS_STOPPED_STATE != getDrySelfTestsState() ) ) + { + verifySwitchStatus(); + } + } return state; } @@ -767,8 +779,6 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_PRIME_STATE; - verifySwitchStatus(); - if ( TRUE == alarmActionResumeReceived ) { alarmActionResumeReceived = FALSE; @@ -787,6 +797,13 @@ transitionToPreTreatmentRecirc(); } } + else + { + if ( ( HD_PRIME_PAUSE != getPrimeState() ) ) + { + verifySwitchStatus(); + } + } return state; } @@ -803,8 +820,6 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_RECIRCULATE_STATE; - verifySwitchStatus(); - if ( TRUE == alarmActionResumeReceived ) { alarmActionResumeReceived = FALSE; @@ -813,6 +828,11 @@ execPreTreatmentRecirc(); + if ( PRE_TREATMENT_RECIRC_STOPPED_STATE != getPreTreatmentRecircState() ) + { + verifySwitchStatus(); + } + #ifdef SKIP_UI_INTERACTION continueToTreatmentRequested = TRUE; #endif Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r596b96528f155bd9f663ed1773fdc80761fc7b31 -rb53c3ab97a715ef9dc823a7148d0c0a52c413865 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 596b96528f155bd9f663ed1773fdc80761fc7b31) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision b53c3ab97a715ef9dc823a7148d0c0a52c413865) @@ -632,7 +632,7 @@ selfTestStartTime = getMSTimerCount(); // TODO: Use appropriate sensor driver - if ( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) + if (( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) && (STATE_CLOSED == getSwitchStatus( PUMP_TRACK_SWITCH ) )) { state = NO_CART_SELF_TESTS_OCCLUSION_SENSORS_STATE; } @@ -816,7 +816,7 @@ selfTestStartTime = getMSTimerCount(); // TODO: Use appropriate sensor driver - if ( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) + if (( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) && (STATE_CLOSED == getSwitchStatus( PUMP_TRACK_SWITCH ) )) { state = DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE; setValvePosition( VDI, VALVE_POSITION_C_CLOSE );