Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r88a641b7b0185e0bad77e21e6d438e1d7283fd28 -r8b7c7ff2bdb82aca355e3eed90cbdc6eb9507719 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 88a641b7b0185e0bad77e21e6d438e1d7283fd28) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 8b7c7ff2bdb82aca355e3eed90cbdc6eb9507719) @@ -319,6 +319,7 @@ { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_ARTERIAL_PRESSURE_LOW, artPres, artLowLimit ); } + if ( TRUE == isPersistentAlarmConditionCleared( ALARM_ID_ARTERIAL_PRESSURE_LOW, artPres < artLowLimit ) ) { clearAlarmCondition( ALARM_ID_ARTERIAL_PRESSURE_LOW ); @@ -328,6 +329,7 @@ { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_ARTERIAL_PRESSURE_HIGH, artPres, artHighLimit ); } + if ( TRUE == isPersistentAlarmConditionCleared( ALARM_ID_ARTERIAL_PRESSURE_HIGH, artPres > artHighLimit ) ) { clearAlarmCondition( ALARM_ID_ARTERIAL_PRESSURE_HIGH ); @@ -359,6 +361,7 @@ { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_VENOUS_PRESSURE_LOW, venPres, venLowLimit ); } + if ( TRUE == isPersistentAlarmConditionCleared( ALARM_ID_VENOUS_PRESSURE_LOW, venPres < venLowLimit ) ) { clearAlarmCondition( ALARM_ID_VENOUS_PRESSURE_LOW ); @@ -368,6 +371,7 @@ { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_VENOUS_PRESSURE_HIGH, venPres, venHighLimit ); } + if ( TRUE == isPersistentAlarmConditionCleared( ALARM_ID_VENOUS_PRESSURE_HIGH, venPres > venHighLimit ) ) { clearAlarmCondition( ALARM_ID_VENOUS_PRESSURE_HIGH ); Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -re65a2e67337ef5fff12de02db85ba101305fb006 -r8b7c7ff2bdb82aca355e3eed90cbdc6eb9507719 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision e65a2e67337ef5fff12de02db85ba101305fb006) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 8b7c7ff2bdb82aca355e3eed90cbdc6eb9507719) @@ -55,6 +55,7 @@ *************************************************************************/ void initPreTreatmentMode( void ) { + treatStartReqReceived = FALSE; currentPreTreatmentState = HD_PRE_TREATMENT_START_STATE; } @@ -73,8 +74,7 @@ setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, TRUE ); - treatStartReqReceived = FALSE; - currentPreTreatmentState = HD_PRE_TREATMENT_START_STATE; + initPreTreatmentMode(); } /*********************************************************************//** @@ -148,7 +148,8 @@ { BOOL result = FALSE; - if ( MODE_PRET == getCurrentOperationMode() ) + // TODO Change to appropriate constraint when UI action is available + if ( ( MODE_PRET == getCurrentOperationMode() ) && ( HD_PRE_TREATMENT_RECIRCULATE_STATE == currentPreTreatmentState ) ) { treatStartReqReceived = TRUE; result = TRUE; @@ -169,16 +170,31 @@ *************************************************************************/ void signalAlarmActionToPreTreatmentMode( ALARM_ACTION_T action ) { - if ( ( ALARM_ACTION_END_TREATMENT == action ) && ( TRUE == isAlarmActive( ALARM_ID_PRIME_COMPLETED_HIGH_PRIORITY ) ) ) + switch( action ) { - clearAlarm( ALARM_ID_PRIME_COMPLETED_HIGH_PRIORITY ); - requestNewOperationMode( MODE_POST ); + case ALARM_ACTION_STOP: + break; + + case ALARM_ACTION_RESUME: + break; + + case ALARM_ACTION_END_TREATMENT: + requestNewOperationMode( MODE_POST ); + break; + + case ALARM_ACTION_ACK: + // Nothing to be done here + break; + + default: + // Ignore + break; } } /*********************************************************************//** * @brief - * The handleSelfTestNoCartState function handles self-test with no cartrige. + * The handleSelfTestNoCartState function handles self-test with no cartridge. * @details Inputs: none * @details Outputs: home blood pump and dialysate pumps * @return current state (sub-mode) @@ -292,11 +308,9 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_RECIRCULATE_STATE; + // TODO Change to appropriate user action when UI action is available if ( TRUE == treatStartReqReceived ) { - clearAlarm( ALARM_ID_PRIME_COMPLETED_LOW_PRIORITY ); - clearAlarm( ALARM_ID_PRIME_COMPLETED_MEDIUM_PRIORITY ); - state = HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; }