Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r27f3db92495948d4c1192421c1b0c20338c4a034 -ra97ade33cb05958a645306392f61b1182f6a1fe1 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 27f3db92495948d4c1192421c1b0c20338c4a034) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision a97ade33cb05958a645306392f61b1182f6a1fe1) @@ -567,17 +567,9 @@ currentUFState = handleUFRunningState( &result ); break; - case UF_OFF_STATE: - currentUFState = handleUFOffState( &result ); - break; - - case UF_COMPLETED_STATE: - currentUFState = handleUFCompletedState( &result ); - break; - default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_DIALYSIS_INVALID_UF_STATE, currentUFState ) - currentUFState = UF_COMPLETED_STATE; + currentUFState = UF_PAUSED_STATE; break; } @@ -635,20 +627,10 @@ *************************************************************************/ static UF_STATE_T handleUFStartState( DIALYSIS_STATE_T *dialysisState ) { - UF_STATE_T result; + lastUFTimeStamp = getMSTimerCount(); + uFTimeMS = 0; - if ( maxUFVolumeML < NEARLY_ZERO ) - { - result = UF_OFF_STATE; - } - else - { - lastUFTimeStamp = getMSTimerCount(); - uFTimeMS = 0; - result = UF_RUNNING_STATE; - } - - return result; + return UF_RUNNING_STATE; } /*********************************************************************//** @@ -725,7 +707,7 @@ // If we have reached target UF volume, UF is complete if ( refUFVolume >= maxUFVolumeML ) { - result = UF_COMPLETED_STATE; + setUFRate = 0.0; } // Handle saline bolus start request from user else if ( TRUE == salineBolusStartRequested ) @@ -750,74 +732,6 @@ /*********************************************************************//** * @brief - * The handleUFCompletedOrOffState function handles the UF Off state - * of the ultrafiltration state machine. - * @details Inputs: none - * @details Outputs: UF volumes updated and provided to DPo pump controller. - * @param dialysisState next dialysis state - * @return next ultrafiltration state - *************************************************************************/ -static UF_STATE_T handleUFOffState( DIALYSIS_STATE_T *dialysisState ) -{ - UF_STATE_T result = UF_OFF_STATE; - - // Calculate UF volumes and provide to dialysate outlet pump controller - updateUFVolumes(); - - // Handle saline bolus start request from user - if ( TRUE == salineBolusStartRequested ) - { - salineBolusAutoResumeUF = FALSE; - // Go to saline bolus state - if ( SALINE_BOLUS_STATE_IDLE == currentSalineBolusState ) - { - *dialysisState = DIALYSIS_SALINE_BOLUS_STATE; - } - else - { - salineBolusStartRequested = FALSE; - } - } - - return result; -} - -/*********************************************************************//** - * @brief - * The handleUFCompletedState function handles the UF Completed - * state of the ultrafiltration state machine. This is a terminal state. - * @details Inputs: none - * @details Outputs: UF volumes updated and provided to DPo pump controller. - * @param dialysisState next dialysis state - * @return next ultrafiltration state - *************************************************************************/ -static UF_STATE_T handleUFCompletedState( DIALYSIS_STATE_T *dialysisState ) -{ - UF_STATE_T result = UF_COMPLETED_STATE; - - // Calculate UF volumes and provide to dialysate outlet pump controller - updateUFVolumes(); - - // Handle saline bolus start request from user - if ( TRUE == salineBolusStartRequested ) - { - salineBolusAutoResumeUF = FALSE; - // Go to saline bolus state - if ( SALINE_BOLUS_STATE_IDLE == currentSalineBolusState ) - { - *dialysisState = DIALYSIS_SALINE_BOLUS_STATE; - } - else - { - salineBolusStartRequested = FALSE; - } - } - - return result; -} - -/*********************************************************************//** - * @brief * The handleSalineBolusIdleState function handles the idle state of the * saline bolus state machine. * @details Inputs: none Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r07e0fa769e376ae03dd1d7e9d01bdbf092e3af2f -ra97ade33cb05958a645306392f61b1182f6a1fe1 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 07e0fa769e376ae03dd1d7e9d01bdbf092e3af2f) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision a97ade33cb05958a645306392f61b1182f6a1fe1) @@ -25,6 +25,7 @@ #include "OperationModes.h" #include "PresOccl.h" #include "ModePostTreat.h" +#include "ModeTreatmentParams.h" #include "Timers.h" #include "Valves.h" @@ -193,6 +194,8 @@ *************************************************************************/ static HD_POST_TREATMENT_STATE_T handlePostTreatmentPatientDisconnectionState( void ) { + F32 const bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); + F32 const hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); HD_POST_TREATMENT_STATE_T state = HD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE; VALVE_T valve; @@ -210,8 +213,11 @@ homeDialInPump(); homeDialOutPump(); - // TODO: Enable when have syringe pump driver -// retractSyringePump(); + if ( ( bolusVol > 0.0 ) || ( hepRate > 0.0 ) ) + { + // TODO: Enable when have syringe pump driver + // retractSyringePump(); + } } return state; @@ -258,7 +264,6 @@ if ( STATE_CLOSED == getFPGADoorState() ) { - if ( FALSE == isCartridgeUnloaded() ) { activateAlarmNoData( ALARM_ID_CARTRIDGE_REMOVAL_FAILURE ); Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -re67d12da06d96f7f6a30771ef309fc9db5b92d70 -ra97ade33cb05958a645306392f61b1182f6a1fe1 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision e67d12da06d96f7f6a30771ef309fc9db5b92d70) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision a97ade33cb05958a645306392f61b1182f6a1fe1) @@ -1179,7 +1179,7 @@ handleTreatmentParametersFromUI( message ); break; - case MSG_ID_UI_START_TREATMENT: + case MSG_ID_UI_INITIATE_TREATMENT_REQUEST: handleUIStartTreatmentMsg( message ); break;