Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -rcc511a2e779106c4fda8305c25bd1f9d9fbf06ce -r2df21d2472a8d79d78af7e359518acf3614accc5 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision cc511a2e779106c4fda8305c25bd1f9d9fbf06ce) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 2df21d2472a8d79d78af7e359518acf3614accc5) @@ -241,22 +241,41 @@ BOOL pauseUF( void ) { BOOL result = FALSE; + REQUEST_REJECT_REASON_CODE_T rejectReason = REQUEST_REJECT_REASON_NONE; TREATMENT_STATE_T trtState = getTreatmentState(); - OP_MODE currMode = getCurrentOperationMode(); + HD_OP_MODE_T currMode = getCurrentOperationMode(); if ( ( MODE_TREA == currMode ) && ( TREATMENT_DIALYSIS_STATE == trtState ) && ( DIALYSIS_UF_STATE == currentDialysisState ) && ( UF_RUNNING_STATE == currentUFState ) ) { + result = TRUE; // set outlet pump to dialysate rate - result = setDialOutPumpTargetRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); - - if ( TRUE == result ) + setDialOutPumpTargetRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + // go to UF paused state + currentUFState = UF_PAUSED_STATE; + } + else + { + if ( MODE_TREA != currMode ) { - // go to UF paused state - currentUFState = UF_PAUSED_STATE; + rejectReason = REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE; } + else if ( TREATMENT_DIALYSIS_STATE != trtState ) + { + rejectReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; + } + else if ( DIALYSIS_UF_STATE != currentDialysisState ) + { + rejectReason = REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS; + } + else + { + rejectReason = REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS; + } } + // TODO - send response w/ reason code if rejected + return result; } @@ -271,24 +290,43 @@ BOOL resumeUF( void ) { BOOL result = FALSE; + REQUEST_REJECT_REASON_CODE_T rejectReason = REQUEST_REJECT_REASON_NONE; TREATMENT_STATE_T trtState = getTreatmentState(); - OP_MODE currMode = getCurrentOperationMode(); + HD_OP_MODE_T currMode = getCurrentOperationMode(); if ( ( MODE_TREA == currMode ) && ( TREATMENT_DIALYSIS_STATE == trtState ) && ( DIALYSIS_UF_STATE == currentDialysisState ) && ( UF_PAUSED_STATE == currentUFState ) ) { + result = TRUE; // set outlet pump to dialysate rate + set UF rate - result = setDialOutPumpTargetRate( setDialysateFlowRate + FLOAT_TO_INT_WITH_ROUND( setUFRate ), MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); - - if ( TRUE == result ) + setDialOutPumpTargetRate( setDialysateFlowRate + FLOAT_TO_INT_WITH_ROUND( setUFRate ), MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + // restart UF time accumulation for reference volume calculation + lastUFTimeStamp = getMSTimerCount(); + // go to UF paused state + currentUFState = UF_RUNNING_STATE; + } + else + { + if ( MODE_TREA != currMode ) { - // restart UF time accumulation for reference volume calculation - lastUFTimeStamp = getMSTimerCount(); - // go to UF paused state - currentUFState = UF_RUNNING_STATE; + rejectReason = REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE; } + else if ( TREATMENT_DIALYSIS_STATE != trtState ) + { + rejectReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; + } + else if ( DIALYSIS_UF_STATE != currentDialysisState ) + { + rejectReason = REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS; + } + else + { + rejectReason = REQUEST_REJECT_REASON_UF_NOT_PAUSED; + } } + // TODO - send response w/ reason code if rejected + return result; }