Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -rc9890bc0bc9a1d779be9fec7e0478cfc6fba1cfb -rb38d8ceb35a5a4a41b4fa64a44a7db9cebbd6c2f --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision c9890bc0bc9a1d779be9fec7e0478cfc6fba1cfb) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision b38d8ceb35a5a4a41b4fa64a44a7db9cebbd6c2f) @@ -124,7 +124,6 @@ static void checkUFControl( void ); static void updateUFVolumes( void ); -//static void publishSalineBolusData( void ); static void checkLoadCellsStablePrimaryBackupDriftOutOfRange( DG_RESERVOIR_ID_T reservoirID, RESERVOIR_STEADY_CYCLE_T cycle ); /*********************************************************************//** @@ -679,11 +678,11 @@ DIALYSIS_STATE_T result = DIALYSIS_SALINE_BOLUS_STATE; SALINE_BOLUS_STATE_T currSalineBolusState = execSalineBolus(); - if ( currSalineBolusState != SALINE_BOLUS_STATE_IN_PROGRESS ) + if ( SALINE_BOLUS_STATE_IDLE == currSalineBolusState ) { result = DIALYSIS_UF_STATE; - if ( ( FALSE == isAlarmActive( ALARM_ID_HD_EMPTY_SALINE_BAG ) ) && ( currSalineBolusState != SALINE_BOLUS_STATE_MAX_DELIVERED ) ) + if ( FALSE == isAlarmActive( ALARM_ID_HD_EMPTY_SALINE_BAG ) ) { // Resume UF if appropriate if ( TRUE == autoResumeUF ) Index: firmware/App/Modes/SalineBolus.c =================================================================== diff -u -rc9890bc0bc9a1d779be9fec7e0478cfc6fba1cfb -rb38d8ceb35a5a4a41b4fa64a44a7db9cebbd6c2f --- firmware/App/Modes/SalineBolus.c (.../SalineBolus.c) (revision c9890bc0bc9a1d779be9fec7e0478cfc6fba1cfb) +++ firmware/App/Modes/SalineBolus.c (.../SalineBolus.c) (revision b38d8ceb35a5a4a41b4fa64a44a7db9cebbd6c2f) @@ -18,9 +18,6 @@ */ // ********** private definitions ********** - -#define MAX_SALINE_VOLUME_DELIVERED_ML 800 ///< Maximum saline volume delivered for a treatment in milliliters. - static const U32 SALINE_BOLUS_DATA_PUB_INTERVAL = ( MS_PER_SECOND / TASK_GENERAL_INTERVAL); ///< Saline bolus data broadcast interval (ms/task time) count. @@ -40,7 +37,6 @@ static SALINE_BOLUS_STATE_T handleSalineBolusIdleState( void ); static SALINE_BOLUS_STATE_T handleSalineBolusWait4Pumps2Stop( void ); static SALINE_BOLUS_STATE_T handleSalineBolusInProgressState( void ); -static SALINE_BOLUS_STATE_T handleSalineBolusMaxDeliveredState( void ); /*********************************************************************//** * @brief @@ -76,11 +72,7 @@ bolusSalineVolumeDelivered_mL = 0.0; salineBolusStartRequested = FALSE; salineBolusAbortRequested = FALSE; - - if ( currentSalineBolusState != SALINE_BOLUS_STATE_MAX_DELIVERED ) - { - currentSalineBolusState = SALINE_BOLUS_STATE_IDLE; - } + currentSalineBolusState = SALINE_BOLUS_STATE_IDLE; resetUF(); } @@ -109,18 +101,13 @@ currentSalineBolusState = handleSalineBolusInProgressState(); break; - case SALINE_BOLUS_STATE_MAX_DELIVERED: - currentSalineBolusState = handleSalineBolusMaxDeliveredState(); - break; - default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_DIALYSIS_INVALID_SALINE_BOLUS_STATE, currentSalineBolusState ) - currentSalineBolusState = SALINE_BOLUS_STATE_MAX_DELIVERED; + currentSalineBolusState = SALINE_BOLUS_STATE_IDLE; break; } - // MAX DELIVERED transitions different and sends the event on its own. - if ( ( priorSubState != currentSalineBolusState ) && ( currentSalineBolusState != SALINE_BOLUS_STATE_MAX_DELIVERED ) ) + if ( priorSubState != currentSalineBolusState ) { setCurrent4thLevelState( (U32)currentSalineBolusState ); SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, currentSalineBolusState ); @@ -205,10 +192,6 @@ { rejReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; } - else if ( totalSalineVolumeDelivered_mL >= (F32)MAX_SALINE_VOLUME_DELIVERED_ML ) - { - rejReason = REQUEST_REJECT_REASON_SALINE_MAX_VOLUME_REACHED; - } else if ( currentSalineBolusState != SALINE_BOLUS_STATE_IDLE ) { rejReason = REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS; @@ -387,26 +370,16 @@ result = SALINE_BOLUS_STATE_IDLE; } - // Determine if we have reached maximum saline delivery volume - if ( ( totalSalineVolumeDelivered_mL >= (F32)MAX_SALINE_VOLUME_DELIVERED_ML ) ) + // Determine if bolus is complete + if ( bolusSalineVolumeDelivered_mL >= bolusTargetVolume ) { - result = SALINE_BOLUS_STATE_MAX_DELIVERED; - setCurrent4thLevelState( (U32)result ); - sendOperationStatusEvent(); + result = SALINE_BOLUS_STATE_IDLE; } - else + // User is aborting saline bolus + else if ( TRUE == salineBolusAbortRequested ) { - // Determine if bolus is complete - if ( bolusSalineVolumeDelivered_mL >= bolusTargetVolume ) - { - result = SALINE_BOLUS_STATE_IDLE; - } - // User is aborting saline bolus - else if ( TRUE == salineBolusAbortRequested ) - { - salineBolusAbortRequested = FALSE; - result = SALINE_BOLUS_STATE_IDLE; - } + salineBolusAbortRequested = FALSE; + result = SALINE_BOLUS_STATE_IDLE; } // Are we stopping the bolus? @@ -426,20 +399,4 @@ return result; } -/*********************************************************************//** - * @brief - * The handleSalineBolusMaxDeliveredState function handles the max saline delivered - * state of the saline bolus state machine. This is a terminal state. - * @details Inputs: none - * @details Outputs: - * @param dialysisState next dialysis state - * @return next saline bolus state - *************************************************************************/ -static SALINE_BOLUS_STATE_T handleSalineBolusMaxDeliveredState( void ) -{ - SALINE_BOLUS_STATE_T result = SALINE_BOLUS_STATE_MAX_DELIVERED; - - return result; -} - /**@}*/ Index: firmware/App/Modes/TreatmentStop.c =================================================================== diff -u -rc9890bc0bc9a1d779be9fec7e0478cfc6fba1cfb -rb38d8ceb35a5a4a41b4fa64a44a7db9cebbd6c2f --- firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision c9890bc0bc9a1d779be9fec7e0478cfc6fba1cfb) +++ firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision b38d8ceb35a5a4a41b4fa64a44a7db9cebbd6c2f) @@ -353,8 +353,9 @@ setupForBloodRecirculationStopState(); result = TREATMENT_STOP_RECIRC_DIALYSATE_ONLY_STATE; } - else if ( ( TREATMENT_STOP_DELIVER_SALINE_BOLUS_STATE != state ) /*&&*/ ) + else if ( ( TREATMENT_STOP_DELIVER_SALINE_BOLUS_STATE != state ) && ( TRUE == isSalineBolusStartRequested() ) ) { + // No need for setup function since the saline bolus exec function starts from Idle and sets the actuators result = TREATMENT_STOP_DELIVER_SALINE_BOLUS_STATE; } }