Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -r0237b2fc49d60b6602bac35ce43831b37f294c81 -re45524455c005d4fa1734efcbaf7ed0499302670 --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 0237b2fc49d60b6602bac35ce43831b37f294c81) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision e45524455c005d4fa1734efcbaf7ed0499302670) @@ -44,13 +44,6 @@ #define MIN_RINSEBACK_FLOW_RATE_ML_MIN 50 ///< Minimum rinseback flow rate (in mL/min). #define MAX_RINSEBACK_FLOW_RATE_ML_MIN 150 ///< Maximum rinseback flow rate (in mL/min). -#ifndef DISABLE_PUMP_FLOW_CHECKS -/// Maximum rinseback volume measured by independent means (as % of target). -static const F32 MAX_RINSEBACK_SAFETY_VOLUME_ML = ( TARGET_RINSEBACK_VOLUME_ML * 1.2 ); -/// Minimum rinseback volume measured by independent means (as % of target). -static const F32 MIN_RINSEBACK_SAFETY_VOLUME_ML = ( TARGET_RINSEBACK_VOLUME_ML * 0.8 ); -#endif - /// Interval at which rinseback progress is to be published to UI. #define RINSEBACK_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) /// Maximum time allowed for rinseback operation until full volume is delivered. Timer is reset whenever BP is running. @@ -71,7 +64,6 @@ static U32 rinsebackTimerCtr; ///< Timer counter for time spent in rinseback sub-mode. static OVERRIDE_F32_T cumulativeRinsebackVolume_mL = { 0.0, 0.0, 0.0, 0 }; ///< Total cumulative rinseback volume (in mL). -static OVERRIDE_F32_T rinsebackVolumeDelivered_Safety = { 0.0, 0.0, 0.0, 0 }; ///< The cumulative independent rinseback volume (in mL) calculated so far. static F32 targetRinsebackVolumePlusAdditional_mL; ///< Target rinseback volume w/ additional volume(s) added (in mL). static F32 additionalRinsebackVolume_mL; ///< Total volume (in mL) delivered so far for additional volume request. static F32 totalAdditionalRinsebackVolume_mL; ///< Total accumulated volume (in mL) delivered so far for all additional volumes combined. @@ -101,7 +93,6 @@ static void setupForRinsebackStopOrPause( void ); static F32 getRinsebackVolume( void ); -static F32 getRinsebackSafetyVolume( void ); static RINSEBACK_STATE_T handleRinsebackStopInitState( void ); static RINSEBACK_STATE_T handleRinsebackRunState( void ); @@ -137,7 +128,6 @@ targetRinsebackVolumePlusAdditional_mL = TARGET_RINSEBACK_VOLUME_ML; rinsebackTimerCtr = 0; cumulativeRinsebackVolume_mL.data = 0.0; - rinsebackVolumeDelivered_Safety.data = 0.0; additionalRinsebackVolume_mL = 0.0; totalAdditionalRinsebackVolume_mL = 0.0; rinsebackMotorCount = 0; @@ -265,26 +255,6 @@ /*********************************************************************//** * @brief - * The getRinsebackSafetyVolume function gets the calculated independent - * blood prime volume delivered. - * @details Inputs: rinsebackVolumeDelivered_Safety - * @details Outputs: none - * @return the current rinseback safety volume delivered (in mL). - *************************************************************************/ -static F32 getRinsebackSafetyVolume( void ) -{ - F32 result = rinsebackVolumeDelivered_Safety.data; - - if ( OVERRIDE_KEY == rinsebackVolumeDelivered_Safety.override ) - { - result = rinsebackVolumeDelivered_Safety.ovData; - } - - return result; -} - -/*********************************************************************//** - * @brief * The getCurrentRinsebackState function returns the current state of the * rinseback sub-mode. * @details Inputs: rinsebackState @@ -388,7 +358,7 @@ * The handleRinsebackRunState function handles the rinseback run state * operations. * @details Inputs: flags - * @details Outputs: cumulativeRinsebackVolume_mL, rinsebackVolumeDelivered_Safety, flags handled + * @details Outputs: cumulativeRinsebackVolume_mL, flags handled * @return next rinseback state *************************************************************************/ static RINSEBACK_STATE_T handleRinsebackRunState( void ) @@ -400,9 +370,6 @@ // Update rinseback volume delivered so far cumulativeRinsebackVolume_mL.data += ( getMeasuredBloodFlowRate() * RINSEBACK_FLOW_INTEGRATOR ); - // update independent calculated safety volume delivered so far - rinsebackMotorCount = u32BiDiffWithWrap( rinsebackLastMotorCount, getBloodPumpMotorCount() ) / BP_HALL_EDGE_COUNTS_PER_REV; - rinsebackVolumeDelivered_Safety.data = ( (F32)rinsebackMotorCount * VOLUME_PER_BP_MOTOR_REV_ML ); // TODO - include upstream pressure compensation to this calc // Has user requested to end rinseback? if ( TRUE == endRinsebackRequested ) @@ -418,13 +385,6 @@ setupForRinsebackStopOrPause(); targetRinsebackVolumePlusAdditional_mL = getRinsebackVolume(); result = RINSEBACK_STOP_STATE; -#ifndef DISABLE_PUMP_FLOW_CHECKS - // Check for under-delivery - if ( getRinsebackSafetyVolume() < MIN_RINSEBACK_SAFETY_VOLUME_ML ) - { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_RINSEBACK_VOLUME_CHECK_FAILURE, TARGET_RINSEBACK_VOLUME_ML, getRinsebackSafetyVolume() ); - } -#endif } // Check for empty saline bag if ( TRUE == isSalineBagEmpty() ) @@ -440,12 +400,12 @@ result = RINSEBACK_PAUSED_STATE; } #ifndef DISABLE_PUMP_FLOW_CHECKS - // Has independent safety volume exceeded safety limit? - else if ( getRinsebackSafetyVolume() > MAX_RINSEBACK_SAFETY_VOLUME_ML ) + // Is rinseback taking too long? + else if ( TBD ) { setRinsebackIsCompleted( TRUE ); setupForRinsebackStopOrPause(); - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_RINSEBACK_VOLUME_CHECK_FAILURE, TARGET_RINSEBACK_VOLUME_ML, getRinsebackSafetyVolume() ); + activateAlarmNoData( ALARM_ID_RINSEBACK_VOLUME_CHECK_FAILURE ); result = RINSEBACK_STOP_STATE; } #endif @@ -1043,14 +1003,14 @@ timeout = MAX_RINSEBACK_DONE_TIME / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); } data.deliveredRinsebackVolumeMl = getRinsebackVolume(); - data.safetyRinsebackVolumeMl = getRinsebackSafetyVolume(); data.rinsebackFlowRateMlMin = rinsebackRate_mL_min; if ( RINSEBACK_RUN_ADDITIONAL_STATE == rinsebackState ) { data.rinsebackFlowRateMlMin = MIN_RINSEBACK_FLOW_RATE_ML_MIN; } data.timeout = timeout; data.countdown = countdown; + data.unused = 0.0; // TODO - remove when UI no longer looks for this field broadcastData( MSG_ID_HD_RINSEBACK_PROGRESS, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( RINSEBACK_DATA_PAYLOAD_T ) ); } } @@ -1128,51 +1088,6 @@ /*********************************************************************//** * @brief - * The testSetRinsebackSafetyVolumeOverride function overrides the calculated - * rinseback safety volume. - * @details Inputs: none - * @details Outputs: rinsebackVolumeDelivered_Safety - * @param vol override calculated rinseback safety volume (in mL) - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testSetRinsebackSafetyVolumeOverride( F32 vol ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - rinsebackVolumeDelivered_Safety.ovData = vol; - rinsebackVolumeDelivered_Safety.override = OVERRIDE_KEY; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testResetRinsebackSafetyVolumeOverride function resets the override of the - * calculated rinseback safety volume. - * @details Inputs: none - * @details Outputs: rinsebackVolumeDelivered_Safety - * @return TRUE if reset successful, FALSE if not - *************************************************************************/ -BOOL testResetRinsebackSafetyVolumeOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - rinsebackVolumeDelivered_Safety.override = OVERRIDE_RESET; - rinsebackVolumeDelivered_Safety.ovData = rinsebackVolumeDelivered_Safety.ovInitData; - } - - return result; -} - -/*********************************************************************//** - * @brief * The testSetRinsebackPublishIntervalOverride function sets the override of the * rinseback data publication interval. * @details Inputs: none