Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r1781335a8c1833fad17b275bf44c7f6675e68423 -r67731d57db9a620418b3b848d8f75ff204902c36 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 1781335a8c1833fad17b275bf44c7f6675e68423) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 67731d57db9a620418b3b848d8f75ff204902c36) @@ -32,6 +32,7 @@ #include "TDInterface.h" #include "Temperature.h" #include "Timers.h" +#include "Ultrafiltration.h" #include "Valves.h" /** @@ -138,6 +139,7 @@ { initGenDialysateMode(); setCurrentSubState( NO_SUB_STATE ); + transitionToUltrafiltration(); return genDialysateState; } @@ -187,7 +189,7 @@ case DD_GEND_DIALYSATE_BYPASS_STATE: //Previous state - setValveState( M4_VALV, VALVE_STATE_OPEN ); + setValveState( DD_M4_VALV, VALVE_STATE_OPEN ); // Get the target temperature from TD targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); // Turn on the primary heater @@ -213,7 +215,7 @@ case DD_GEND_DIALYSATE_DELIVERY_STATE: //Previous state - setValveState( M4_VALV, VALVE_STATE_OPEN ); + setValveState( DD_M4_VALV, VALVE_STATE_OPEN ); // Get the target temperature from TD targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); setHeaterTargetTemperature( D5_HEAT, getGenDialysateTargetTemperature() ); @@ -237,6 +239,7 @@ signalDialysatePumpHardStop( D48_PUMP ); requestConcentratePumpOff( D11_PUMP, FALSE ); requestConcentratePumpOff( D10_PUMP, FALSE ); + requestConcentratePumpOff( D76_PUMP, FALSE ); stopHeater( D5_HEAT ); stopHeater( D45_HEAT ); @@ -275,8 +278,10 @@ // Update any dynamic treatment parameter changes updateTreatmentSettings(); +#ifdef ENABLE_ALARM_2 //Check dialysate temperature high/low alarms checkDialysateTemperature(); +#endif //Check temperature drift between D30 and D28 checkDialysateTemperatureSensors(); @@ -287,14 +292,6 @@ pendingStopDDGenDialRequest = FALSE; requestNewOperationMode( DD_MODE_STAN ); } - // Continuous water inlet pressure check - else if ( ( genDialysateState != DD_GEND_DIALYSATE_DELIVERY_PAUSE ) && - ( TRUE == areInletWaterConditionsAlarmsActive() ) ) - { - //Check RO alarms as required - setModeGenDStateTransition( DD_GEND_DIALYSATE_DELIVERY_PAUSE ); - genDialysateState = DD_GEND_DIALYSATE_DELIVERY_PAUSE; - } else { // execute current gen dialysate state @@ -349,7 +346,7 @@ LEVEL_STATE_T floaterLevel = getLevelStatus( D6_LEVL ); //Make sure Water Inlet Valve is open - setValveState( M4_VALV, VALVE_STATE_OPEN ); + setValveState( DD_M4_VALV, VALVE_STATE_OPEN ); // High level is met if ( LEVEL_STATE_HIGH == floaterLevel ) @@ -381,7 +378,7 @@ { DD_GEND_MODE_STATE_T state = DD_GEND_ISOLATED_UF_STATE; - //TODO: define isoalted ultrafilteration. + //TODO: define isoalted ultrafiltration. return state; } @@ -440,8 +437,11 @@ //Execute balancing chamber execBalancingChamberControl(); + //Execute ultrafiltration + execUFControl(); + // if TD asks for bypass or dialysate is not good to deliver - //transition to produce dialystate state + //transition to bypass dialystate state if ( ( FALSE == getDialGoodToDeliverStatus() ) || ( TRUE == getTDDialyzerBypass() ) ) { setModeGenDStateTransition( DD_GEND_DIALYSATE_BYPASS_STATE ); @@ -540,6 +540,7 @@ setHeaterTargetTemperature( D5_HEAT, getGenDialysateTargetTemperature() ); //TODO: update others parameters setting as needed. + signalUFRateUpdate(); //reset the flag isTreatmentParamUpdated = FALSE;