Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r104bd9ab84f7619fe04670a5cee37638e30f5a39 -rcfa825a18b02440d9be8b0da68980a669ac42682 --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 104bd9ab84f7619fe04670a5cee37638e30f5a39) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision cfa825a18b02440d9be8b0da68980a669ac42682) @@ -103,7 +103,7 @@ /// HW volume variance in the syringe pump in encoder counts. #define SYRINGE_PUMP_HW_TOLERANCE_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * SYRINGE_PUMP_HW_TOLERANCE_ML ) /// Expected position of empty in relation to home position. -#define SYRINGE_PUMP_EMPTY_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * 10.755F ) +#define SYRINGE_PUMP_EMPTY_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * 9.92F ) /// Over-travel (past empty) allowance for alarm. #define SYRINGE_PUMP_EMPTY_POS_MARGIN ( SYRINGE_ENCODER_COUNTS_PER_ML * 0.5F ) /// Minimum retract position. Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r104bd9ab84f7619fe04670a5cee37638e30f5a39 -rcfa825a18b02440d9be8b0da68980a669ac42682 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 104bd9ab84f7619fe04670a5cee37638e30f5a39) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision cfa825a18b02440d9be8b0da68980a669ac42682) @@ -465,24 +465,24 @@ } else if ( TD_PRE_TREATMENT_HEPARIN_SETUP_STATE == currentPreTreatmentState ) { - // Treat the Load Syringe alarm acknowledgment as syringe load - // confirmation only while awaiting user confirmation. Otherwise, - // resume the interrupted Heparin Setup state. - if ( TRUE == isPreTxHeparinAwaitingSyringeLoadConfirmation() ) - { - signalPreTxHeparinSyringeLoadConfirmed(); - } - else - { - signalResumePreTxHeparinSetup(); - } + signalResumePreTxHeparinSetup(); } else { // No action required. } break; + case ALARM_ACTION_ACK: + if ( ( TD_PRE_TREATMENT_HEPARIN_SETUP_STATE == currentPreTreatmentState ) && + ( TRUE == isPreTxHeparinAwaitingSyringeLoadConfirmation() ) ) + { + // OK on the Load Syringe clear-only alarm confirms that + // the syringe was loaded and resumes the paused state. + signalResumePreTxHeparinSetup(); + } + break; + default: // Do not handle other actions in Pre-Treatment mode. break; Index: firmware/App/Modes/StatePreTxHeparinSetup.c =================================================================== diff -u -r18c3483e0b479ef408885b5edb71f2ccd118a6bb -rcfa825a18b02440d9be8b0da68980a669ac42682 --- firmware/App/Modes/StatePreTxHeparinSetup.c (.../StatePreTxHeparinSetup.c) (revision 18c3483e0b479ef408885b5edb71f2ccd118a6bb) +++ firmware/App/Modes/StatePreTxHeparinSetup.c (.../StatePreTxHeparinSetup.c) (revision cfa825a18b02440d9be8b0da68980a669ac42682) @@ -49,7 +49,6 @@ static PRE_TX_HEPARIN_SETUP_STATE_T interruptedPreTxHeparinSetupState; ///< Pre-treatment heparin setup substate interrupted by a recoverable alarm. static BOOL heparinSetupResumeRequested; ///< Flag indicates alarm requesting to resume pre-treatment heparin setup. -static BOOL syringeLoadConfirmed; ///< Flag indicates user confirmed syringe load. static BOOL syringeRetractStarted; ///< Flag indicating syringe retract has been initiated. static BOOL syringePreloadStarted; ///< Flag indicating syringe preload has been initiated. @@ -73,8 +72,7 @@ * @details \b Inputs: none. * @details \b Outputs: currentPreTxHeparinSetupState, * interruptedPreTxHeparinSetupState, syringeRetractStarted, - * syringePreloadStarted, heparinSetupResumeRequested, and - * syringeLoadConfirmed. + * syringePreloadStarted, heparinSetupResumeRequested, * @return none. *************************************************************************/ void initPreTxHeparinSetup( void ) @@ -84,7 +82,6 @@ syringeRetractStarted = FALSE; syringePreloadStarted = FALSE; heparinSetupResumeRequested = FALSE; - syringeLoadConfirmed = FALSE; resetPreTxHeparinSetupFlags(); } @@ -111,8 +108,7 @@ * pre-treatment heparin setup state is invalid. * @details \b Inputs: currentPreTxHeparinSetupState. * @details \b Outputs: currentPreTxHeparinSetupState, current substate, - * TD_EVENT_SUB_STATE_CHANGE event, heparinSetupResumeRequested, and - * syringeLoadConfirmed. + * TD_EVENT_SUB_STATE_CHANGE event, heparinSetupResumeRequested, * @return none. *************************************************************************/ void execPreTxHeparinSetup( void ) @@ -203,35 +199,27 @@ *************************************************************************/ BOOL isPreTxHeparinAwaitingSyringeLoadConfirmation( void ) { - return ( PRE_TX_HEPARIN_SETUP_AWAIT_SYRINGE_LOAD_CONFIRMATION_STATE == currentPreTxHeparinSetupState ) ? TRUE : FALSE; -} + BOOL awaitingSyringeLoadConfirmation = FALSE; -/*********************************************************************//** - * @brief - * The signalPreTxHeparinSyringeLoadConfirmed function signals that the - * user confirmed syringe load. - * @details \b Inputs: none. - * @details \b Outputs: syringeLoadConfirmed. - * @return none. - *************************************************************************/ -void signalPreTxHeparinSyringeLoadConfirmed( void ) -{ - syringeLoadConfirmed = TRUE; + awaitingSyringeLoadConfirmation = + ( PRE_TX_HEPARIN_SETUP_AWAIT_SYRINGE_LOAD_CONFIRMATION_STATE == currentPreTxHeparinSetupState ) || + ( ( PRE_TX_HEPARIN_SETUP_PAUSED_STATE == currentPreTxHeparinSetupState ) && + ( PRE_TX_HEPARIN_SETUP_AWAIT_SYRINGE_LOAD_CONFIRMATION_STATE == interruptedPreTxHeparinSetupState ) ); + + return awaitingSyringeLoadConfirmation; } /*********************************************************************//** * @brief * The resetPreTxHeparinSetupFlags function resets all signal flags used by * the pre-treatment heparin setup state machine. * @details \b Inputs: none. - * @details \b Outputs: heparinSetupResumeRequested and - * syringeLoadConfirmed. + * @details \b Outputs: heparinSetupResumeRequested * @return none. *************************************************************************/ static void resetPreTxHeparinSetupFlags( void ) { heparinSetupResumeRequested = FALSE; - syringeLoadConfirmed = FALSE; } /*********************************************************************//** @@ -305,7 +293,6 @@ } else if ( TRUE == isSyringePumpPreLoaded() ) { - setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); activateAlarmNoData( ALARM_ID_TD_PRE_TX_HEPARIN_LOAD_SYRINGE ); state = PRE_TX_HEPARIN_SETUP_AWAIT_SYRINGE_LOAD_CONFIRMATION_STATE; } @@ -337,7 +324,7 @@ * @brief * The handlePreTxHeparinAwaitSyringeLoadConfirmationState function handles * the await syringe load confirmation state. - * @details \b Inputs: syringeLoadConfirmed and alarm stop status. + * @details \b Inputs: alarm stop status. * @details \b Outputs: interruptedPreTxHeparinSetupState and syringe * pump operating state. * @return Current or next pre-treatment heparin setup state. @@ -352,7 +339,7 @@ setupPreTxHeparinState( PRE_TX_HEPARIN_SETUP_PAUSED_STATE ); state = PRE_TX_HEPARIN_SETUP_PAUSED_STATE; } - else if ( TRUE == syringeLoadConfirmed ) + else if ( TRUE == heparinSetupResumeRequested ) { setupPreTxHeparinState( PRE_TX_HEPARIN_SETUP_SEEK_STATE ); state = PRE_TX_HEPARIN_SETUP_SEEK_STATE; @@ -549,7 +536,6 @@ // Resume confirms syringe loading and continues to Seek. case PRE_TX_HEPARIN_SETUP_AWAIT_SYRINGE_LOAD_CONFIRMATION_STATE: - setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); setupPreTxHeparinState( PRE_TX_HEPARIN_SETUP_SEEK_STATE ); state = PRE_TX_HEPARIN_SETUP_SEEK_STATE; break; Index: firmware/App/Services/TxParams.c =================================================================== diff -u -r83310420ae862de4724f8cfbbaeda9936c47801b -rcfa825a18b02440d9be8b0da68980a669ac42682 --- firmware/App/Services/TxParams.c (.../TxParams.c) (revision 83310420ae862de4724f8cfbbaeda9936c47801b) +++ firmware/App/Services/TxParams.c (.../TxParams.c) (revision cfa825a18b02440d9be8b0da68980a669ac42682) @@ -1912,7 +1912,7 @@ pressureValid = isPressureLimitValueValid( value, getU32SysConfigTreatmentParamLowerRangeLimit( TREATMENT_PARAM_VEN_PRES_HIGH_LIMIT_WINDOW ), - getU32SysConfigTreatmentParamUpperRangeLimit( TREATMENT_PARAM_VEN_PRES_LOW_LIMIT_WINDOW ) ); + getU32SysConfigTreatmentParamUpperRangeLimit( TREATMENT_PARAM_VEN_PRES_HIGH_LIMIT_WINDOW ) ); return pressureValid; } @@ -1932,7 +1932,7 @@ pressureValid = isPressureLimitValueValid( value, - getU32SysConfigTreatmentParamLowerRangeLimit( TREATMENT_PARAM_VEN_PRES_HIGH_LIMIT_WINDOW ), + getU32SysConfigTreatmentParamLowerRangeLimit( TREATMENT_PARAM_VEN_PRES_LOW_LIMIT_WINDOW ), getU32SysConfigTreatmentParamUpperRangeLimit( TREATMENT_PARAM_VEN_PRES_LOW_LIMIT_WINDOW ) ); return pressureValid;