Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -rbd241ef5231a9869adaf7bb5ed166135beb2c0fb -rc4857379637e79ab8fcc72ecfd791796b9f48e6d --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision bd241ef5231a9869adaf7bb5ed166135beb2c0fb) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision c4857379637e79ab8fcc72ecfd791796b9f48e6d) @@ -7,8 +7,8 @@ * * @file SyringePump.c * -* @author (last) Sean Nash -* @date (last) 15-Nov-2021 +* @author (last) Dara Navaei +* @date (last) 04-Jan-2022 * * @author (original) Sean Nash * @date (original) 04-Mar-2021 @@ -90,8 +90,9 @@ #define TEN_PCT_OVER_ALLOWANCE 1.1 ///< Allow 10 percent over target before alarming on over travel. #define FIVE_PCT_OVER_ALLOWANCE 1.05 ///< Allow 5 percent over target before alarming on over travel. -/// Expected position of empty in relation to home postion. -#define SYRINGE_PUMP_EMPTY_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * 10.84 ) +/// Expected position of empty in relation to home position. +#define SYRINGE_PUMP_EMPTY_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * 10.84 ) ///< get syringe volume from home to empty (11 mL is placeholder) + /// Margin of error for empty position determination. #define SYRINGE_PUMP_EMPTY_POS_MARGIN ( SYRINGE_ENCODER_COUNTS_PER_ML * 0.5 ) /// Minimum retract position. @@ -1033,6 +1034,12 @@ { // Execute syringe pump monitor execSyringePumpMonitor(); + + // Clear pump running while off alarm persistence if not in off state + if ( syringePumpState != SYRINGE_PUMP_OFF_STATE ) + { + isPersistentAlarmTriggered( ALARM_ID_HD_SYRINGE_PUMP_NOT_STOPPED_ERROR, FALSE ); + } // Execute syringe pump control state machine switch ( syringePumpState ) @@ -1143,6 +1150,9 @@ { SYRINGE_PUMP_STATE_T result = SYRINGE_PUMP_OFF_STATE; + isPersistentAlarmTriggered( ALARM_ID_HD_SYRINGE_PUMP_ENCODER_DIRECTION_ERROR, FALSE ); // reset direction alarm persistence when pump is off + isPersistentAlarmTriggered( ALARM_ID_HD_SYRINGE_PUMP_CONTROLLER_DIRECTION_ERROR, FALSE ); // reset direction alarm persistence when pump is off + #ifndef DISABLE_SYRINGE_PUMP_ALARMS // Check position is not changing while stopped if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_SYRINGE_PUMP_NOT_STOPPED_ERROR, ( syringePumpLastPosition != getSyringePumpPosition() ) ) ) @@ -1327,7 +1337,6 @@ if ( TRUE == stopPump ) { stopSyringePump(); - retractSyringePump(); result = SYRINGE_PUMP_OFF_STATE; }