Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r585e01a1d143a900ec37e1204a0a048ab6f86f53 -r068f4f4de69017a1d9d24c6c67bf7d3e46b8caed --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 585e01a1d143a900ec37e1204a0a048ab6f86f53) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 068f4f4de69017a1d9d24c6c67bf7d3e46b8caed) @@ -8,7 +8,7 @@ * @file SyringePump.c * * @author (last) Dara Navaei -* @date (last) 23-May-2022 +* @date (last) 15-Jun-2022 * * @author (original) Sean Nash * @date (original) 04-Mar-2021 @@ -520,16 +520,16 @@ *************************************************************************/ BOOL seekSyringePlunger( void ) { + if ( MODE_SERV == getCurrentOperationMode() ) // Allow syringe pump operations in Service Mode. + { + heparinDeliveryState = HEPARIN_STATE_STOPPED; + } if ( ( SYRINGE_PUMP_OFF_STATE == syringePumpState ) && ( TRUE == isSyringeDetected() ) && ( TRUE == syringePumpPositionKnown ) && ( heparinDeliveryState != HEPARIN_STATE_OFF ) ) { syringePumpSetRate = SYRINGE_PUMP_SEEK_RATE; syringePumpSeekRequested = TRUE; } - if ( MODE_SERV == getCurrentOperationMode() ) // Allow syringe pump operations in Service Mode. - { - heparinDeliveryState = HEPARIN_STATE_STOPPED; - } return syringePumpSeekRequested; } @@ -543,6 +543,10 @@ *************************************************************************/ BOOL primeSyringePump( void ) { + if ( MODE_SERV == getCurrentOperationMode() ) // Allow syringe pump operations in Service Mode. + { + heparinDeliveryState = HEPARIN_STATE_STOPPED; + } if ( ( SYRINGE_PUMP_OFF_STATE == syringePumpState ) && ( TRUE == isSyringeDetected() ) && ( heparinDeliveryState != HEPARIN_STATE_OFF ) && ( TRUE == syringePumpPlungerFound ) ) { @@ -551,10 +555,6 @@ syringePumpPrimeRequested = TRUE; resetHeparinVolumeDelivered(); } - if ( MODE_SERV == getCurrentOperationMode() ) // Allow syringe pump operations in Service Mode. - { - heparinDeliveryState = HEPARIN_STATE_STOPPED; - } return syringePumpPrimeRequested; } @@ -586,6 +586,10 @@ // If valid to start a bolus, kick it off if ( FALSE == isSyringePumpHome() ) { + if ( MODE_SERV == getCurrentOperationMode() ) // Allow syringe pump operations in Service Mode. + { + heparinDeliveryState = HEPARIN_STATE_STOPPED; + } if ( ( TRUE == isSyringeDetected() ) && ( TRUE == syringePumpPrimeCompleted ) && ( SYRINGE_PUMP_OFF_STATE == syringePumpState ) && ( HEPARIN_STATE_STOPPED == heparinDeliveryState ) ) { @@ -601,13 +605,9 @@ { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, (F32)SW_FAULT_ID_HD_SYRINGE_INVALID_BOLUS_CMD, syringePumpSetRate ) } - if ( MODE_SERV == getCurrentOperationMode() ) // Allow syringe pump operations in Service Mode. - { - heparinDeliveryState = HEPARIN_STATE_STOPPED; - } + } - return syringePumpBolusRequested; } @@ -624,6 +624,10 @@ if ( ( flowRate >= MIN_HEPARIN_CONTINUOUS_RATE ) && ( flowRate <= MAX_HEPARIN_CONTINUOUS_RATE ) && ( FALSE == isSyringePumpHome() ) ) { + if ( MODE_SERV == getCurrentOperationMode() ) // Allow syringe pump operations in Service Mode. + { + heparinDeliveryState = HEPARIN_STATE_STOPPED; + } if ( ( TRUE == isSyringeDetected() ) && ( SYRINGE_PUMP_OFF_STATE == syringePumpState ) && ( ( HEPARIN_STATE_STOPPED == heparinDeliveryState ) || ( HEPARIN_STATE_PAUSED == heparinDeliveryState ) ) ) { @@ -639,10 +643,6 @@ { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, (F32)SW_FAULT_ID_HD_SYRINGE_INVALID_CONT_CMD, flowRate ) } - if ( MODE_SERV == getCurrentOperationMode() ) // Allow syringe pump operations in Service Mode. - { - heparinDeliveryState = HEPARIN_STATE_STOPPED; - } } return syringePumpContinuousRequested; @@ -962,6 +962,11 @@ syringePumpMeasHome.data = ( (F32)getFPGASyringePumpADCChannel2() * SYRINGE_PUMP_ADC_REF_V ) / SYRINGE_PUMP_ADC_FULL_SCALE_BITS; syringePumpMeasSyringeDetectionSwitch.data = ( (F32)getFPGASyringePumpADCChannel1() * SYRINGE_PUMP_ADC_REF_V ) / SYRINGE_PUMP_ADC_FULL_SCALE_BITS; + // Log syringe detect switch changes + if ( prevSyringeDetected != isSyringeDetected() ) + { + sendTreatmentLogEventData( SYRINGE_DETECTION_SWITCH_CHANGED_EVENT, (F32)prevSyringeDetected, (F32)isSyringeDetected() ); + } #ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_SYRINGE_PUMP_ALARMS ) != SW_CONFIG_ENABLE_VALUE ) #endif @@ -999,7 +1004,7 @@ syringePumpLastPosition = getSyringePumpPosition(); syringePumpPosition.data = encPosition - syringePumpHomePositionOffset; // Calculate volume delivered from position - syringePumpVolumeDelivered.data = (F32)(syringePumpPosition.data - syringePumpVolumeStartPosition) / SYRINGE_ENCODER_COUNTS_PER_ML; + syringePumpVolumeDelivered.data = (F32)( syringePumpPosition.data - syringePumpVolumeStartPosition ) / SYRINGE_ENCODER_COUNTS_PER_ML; calcSafetyVolumeDelivered(); // Calculate measured rate (mL/hr) calcMeasRate();