Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r74d78e2ac10592448dd5c7b83fccebdc6c65556b -rdaf8d5b60c753becab80cbaf164aac0e49d533a2 --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 74d78e2ac10592448dd5c7b83fccebdc6c65556b) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision daf8d5b60c753becab80cbaf164aac0e49d533a2) @@ -40,10 +40,10 @@ // ********** private definitions ********** #define HEAT_DISINFECT_TIME_INTERVAL_DAYS 2U ///< Heat disinfect time interval in days //TODO change the interval to actual value (was it every 21 days?) -#define HEAT_DISINFECT_TIME_INTERVAL_SECONDS ( HEAT_DISINFECT_TIME_INTERVAL_DAYS * 86400 ) ///< Heat disinfect time interval in seconds +#define HEAT_DISINFECT_TIME_INTERVAL_SECONDS ( HEAT_DISINFECT_TIME_INTERVAL_DAYS * SECONDS_IN_A_DAY ) ///< Heat disinfect time interval in seconds #define HEAT_DISINFECT_TARGET_TEMPERATURE 30U ///< Heat disinfection target temperature //TODO change the target temperature back to 85C -#define MAX_TPO_AND_TDI_SENSORS_DIFFERENCE 1U ///< Maximum allowed temperature difference in between TPi and TPo +#define MAX_TPO_AND_TDI_SENSORS_DIFFERENCE 1U ///< Maximum allowed temperature difference in between TDi and TPo //TODO remove #define MAX_TEMPERATURE_DEVIATION_FROM_TARGET 4U ///< Maximum allowed temperature deviation from target temperature #define HEAT_DISINFECT_RECIRC_PATH_TIME_MINS 1U ///< Recirculation path heat disinfection duration in minutes @@ -84,10 +84,10 @@ static INTERNAL_HEAT_DISINFECT_STATE_T heatDisinfectInternalState = INTERNAL_HEAT_DISINFECT_STATE_OFF; ///< Currently active internal heat disinfect state static DG_HEAT_DISINFECT_STATE_T heatDisinfectState = DG_HEAT_DISINFECT_STATE_START; ///< Currently active heat disinfect state -static U32 heatDisinfectElapsedTime = 0; ///< Overall heat disinfection elapsed time +static U32 heatDisinfectStartTime = 0; ///< Overall heat disinfection elapsed time static U32 stateTimer = 0; ///< Timer of an individual state static U32 drainPumpTargetRPM = 0; ///< Drain pump current target RPM -static U32 heatDisinfectCurrentCycle = 0; ///< Current cycle count of the heat disinfect mode +static U32 heatDisinfectCurrentCycle = 1; ///< Current cycle count of the heat disinfect mode static U32 heatDisinfectPublishCounter = 0; ///< Current publication counter of heat disinfect mode static OVERRIDE_F32_T heatDisinfectRecircDuration = { HEAT_DISINFECT_RECIRC_PATH_TIME_MS, @@ -122,8 +122,8 @@ static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectEvacuateDialysateFillWithWater( void ); static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectHeatWater( void ); static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectRecirculationPath( void ); -static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectReservoir1To2( void ); -static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectReservoir2To1( void ); +static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectR1ToR2( void ); +static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectR2ToR1( void ); static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectDrainPath( void ); static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectFillWithWaterDeprimeReservoirs( void ); @@ -137,23 +137,23 @@ static DATA_GET_PROTOTYPE( U32, getPublishHeatDisinfectDataInterval ); static DATA_GET_PROTOTYPE( F32, getRecirculationDuration ); -static DATA_GET_PROTOTYPE( F32, getRSVR1ToRSVR2Duration ); -static DATA_GET_PROTOTYPE( F32, getRSVR2ToRSVR1Duration ); +static DATA_GET_PROTOTYPE( F32, getR1ToR2Duration ); +static DATA_GET_PROTOTYPE( F32, getR2ToR1Duration ); static DATA_GET_PROTOTYPE( U32, getNoOfCyclesToRun ); /*********************************************************************//** * @brief * The initHeatDisinfectMode function initializes the heat disinfect Mode module. * @details - * Inputs : none - * Outputs : none + * Inputs: none + * Outputs: none * @return none *************************************************************************/ void initHeatDisinfectMode( void ) { - heatDisinfectElapsedTime = 0; + heatDisinfectStartTime = 0; drainPumpTargetRPM = 0; - heatDisinfectCurrentCycle = 0; + heatDisinfectCurrentCycle = 1; heatDisinfectState = DG_HEAT_DISINFECT_STATE_START; } @@ -162,8 +162,8 @@ * The transitionToHeatDisinfectMode function prepares for transition * to heat disinfect mode. * @details - * Inputs : none - * Outputs : none + * Inputs: none + * Outputs: none * @return none *************************************************************************/ void transitionToHeatDisinfectMode( void ) @@ -177,8 +177,8 @@ * The execHeatDisinfectMode function executes the heat disinfect Mode * state machine. * @details - * Inputs : none - * Outputs : none + * Inputs: none + * Outputs: none * @return current state. *************************************************************************/ U32 execHeatDisinfectMode( void ) @@ -202,11 +202,11 @@ break; case DG_HEAT_DISINFECT_STATE_DISINFECT_RESERVOIR_1_TO_2: - heatDisinfectState = handleHeatDisinfectReservoir1To2(); + heatDisinfectState = handleHeatDisinfectR1ToR2(); break; case DG_HEAT_DISINFECT_STATE_DISINFECT_RESERVOIR_2_TO_1: - heatDisinfectState = handleHeatDisinfectReservoir2To1(); + heatDisinfectState = handleHeatDisinfectR2ToR1(); break; case DG_HEAT_DISINFECT_STATE_DISINFECT_DRAIN_PATH: @@ -237,8 +237,8 @@ * The getCurrentHeatDisinfectState function returns the current state of the \n * heat disinfect mode. * @details - * Inputs : heatState - * Outputs : none + * Inputs: heatState + * Outputs: none * @return the current state of heat disinfect mode. *************************************************************************/ DG_HEAT_DISINFECT_STATE_T getCurrentHeatDisinfectState( void ) @@ -250,30 +250,28 @@ * @brief * The startDGHeatDisinfect function starts heat disinfect mode. * @details - * Inputs : none - * Outputs : none - * @return state of run + * Inputs: none + * Outputs: none + * @return: TRUE if the switch was successful *************************************************************************/ BOOL startDGHeatDisinfect( void ) { // TODO: make sure DG is not in the middle of something and it is in standby - initHeatDisinfectMode(); requestNewOperationMode( DG_MODE_HEAT ); - return TRUE; // For now. Check whether it is the right request before switching + return TRUE; // TODO Check whether it is the right request before switching } /*********************************************************************//** * @brief * The stopDGHeatDisinfect function stops heat disinfect mode. * @details - * Inputs : heatDisinfectionState - * Outputs : heatDisinfectionState + * Inputs: heatDisinfectionState + * Outputs: heatDisinfectionState * @return none *************************************************************************/ void stopDGHeatDisinfect( void ) { - //heatDisinfectionState = DG_HEAT_DISINFECT_STATE_COMPLETE; stopActuators(); requestNewOperationMode( DG_MODE_STAN ); } @@ -284,10 +282,10 @@ * @brief * The handleHeatDisinfectStart function handles heat disinfect start state * @details - * Inputs : drainPumpTargetRPM, heatDisinfectInternalState, - * heatDisinfectElapsedTime - * Outputs : drainPumpTargetRPM, heatDisinfectInternalState, - * heatDisinfectElapsedTime + * Inputs: drainPumpTargetRPM, heatDisinfectInternalState, + * heatDisinfectStartTime + * Outputs: drainPumpTargetRPM, heatDisinfectInternalState, + * heatDisinfectStartTime * @return next state *************************************************************************/ static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectStart( void ) @@ -298,7 +296,7 @@ drainPumpTargetRPM = DRAIN_PUMP_EVACUATE_FLUID_TARGET_RPM; heatDisinfectInternalState = INTERNAL_HEAT_DISINFECT_STATE_OFF; - heatDisinfectElapsedTime = getMSTimerCount(); + heatDisinfectStartTime = getMSTimerCount(); return state; } @@ -308,8 +306,8 @@ * The handleHeatDisinfectEvacuateDialysateFillWithWater function handles \n * evacuate dialysate and fill with water state * @details - * Inputs : heatDisinfectInternalState - * Outputs : none + * Inputs: heatDisinfectInternalState + * Outputs: none * @return next state *************************************************************************/ static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectEvacuateDialysateFillWithWater( void ) @@ -352,8 +350,8 @@ * @brief * The handleHeatDisinfectHeatWater function handles heat water state * @details - * Inputs : stateTimer - * Outputs : stateTimer + * Inputs: stateTimer + * Outputs: stateTimer * @return next state *************************************************************************/ static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectHeatWater( void ) @@ -363,7 +361,8 @@ F32 TPi = getTemperatureValue ( TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ); F32 TDi = getTemperatureValue ( TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR ); - if ( fabs(TPi - TDi) <= MAX_TPO_AND_TDI_SENSORS_DIFFERENCE ) + if ( fabs(TPi - HEAT_DISINFECT_TARGET_TEMPERATURE) <= MAX_TEMPERATURE_DEVIATION_FROM_TARGET && + fabs(TDi - HEAT_DISINFECT_TARGET_TEMPERATURE) <= MAX_TEMPERATURE_DEVIATION_FROM_TARGET ) { // Set the states to disinfect recirculation path setValveState ( VPI, VALVE_STATE_OPEN ); @@ -389,8 +388,8 @@ * The handleHeatDisinfectRecirculationPath function handles disinfect \n * recirculate path state * @details - * Inputs : stateTimer - * Outputs : stateTimer + * Inputs: stateTimer + * Outputs: stateTimer * @return next state *************************************************************************/ static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectRecirculationPath( void ) @@ -432,11 +431,11 @@ * The handleHeatDisinfectReservoir1To2 function handles disinfect \n * reservoir 1 to reservoir 2 state * @details - * Inputs : stateTimer - * Outputs : stateTimer + * Inputs: stateTimer + * Outputs: stateTimer * @return next state *************************************************************************/ -static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectReservoir1To2( void ) +static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectR1ToR2( void ) { DG_HEAT_DISINFECT_STATE_T state = DG_HEAT_DISINFECT_STATE_DISINFECT_RESERVOIR_1_TO_2; @@ -445,7 +444,7 @@ { state = DG_HEAT_DISINFECT_STATE_HEAT_WATER; } - else if ( didTimeout( stateTimer, getRSVR1ToRSVR2Duration() ) ) + else if ( didTimeout( stateTimer, getR1ToR2Duration() ) ) { // Set the state for reservoir 1 to reservoir 2 setValveState ( VPI, VALVE_STATE_OPEN ); @@ -475,13 +474,13 @@ * The handleHeatDisinfectReservoir2To1 function handles disinfect \n * reservoir 2 to reservoir 1 state * @details - * Inputs : heatDisinfectCurrentCycle, heatDisinfectInternalState, + * Inputs: heatDisinfectCurrentCycle, heatDisinfectInternalState, * drainPumpTargetRPM, stateTimer - * Outputs : heatDisinfectCurrentCycle, heatDisinfectInternalState, + * Outputs: heatDisinfectCurrentCycle, heatDisinfectInternalState, * drainPumpTargetRPM, stateTimer * @return next state *************************************************************************/ -static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectReservoir2To1( void ) +static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectR2ToR1( void ) { DG_HEAT_DISINFECT_STATE_T state = DG_HEAT_DISINFECT_STATE_DISINFECT_RESERVOIR_2_TO_1; @@ -490,7 +489,7 @@ { state = DG_HEAT_DISINFECT_STATE_HEAT_WATER; } - else if ( didTimeout( stateTimer, getRSVR2ToRSVR1Duration() ) ) + else if ( didTimeout( stateTimer, getR2ToR1Duration() ) ) { // Set the state for reservoir 1 to reservoir 2 setValveState ( VPI, VALVE_STATE_OPEN ); @@ -508,7 +507,7 @@ setDrainPumpTargetDeltaPressure( DRAIN_PUMP_TARGET_DELTA_PRESSURE ); setROPumpTargetFlowRate( RO_PUMP_TARGET_FLOW_RATE_LPM ); - if ( ++heatDisinfectCurrentCycle > getNoOfCyclesToRun() ) + if ( ++heatDisinfectCurrentCycle >= getNoOfCyclesToRun() ) { drainPumpTargetRPM = DRAIN_PUMP_DISINFECT_DRAIN_PATH_TARGET_RPM; heatDisinfectInternalState = INTERNAL_HEAT_DISINFECT_STATE_OFF; @@ -541,8 +540,8 @@ * The handleHeatDisinfectDrainPath function handles disinfect drain path \n * state * @details - * Inputs : drainPumpTargetRPM, heatDisinfectInternalState - * Outputs : drainPumpTargetRPM, heatDisinfectInternalState + * Inputs: drainPumpTargetRPM, heatDisinfectInternalState + * Outputs: drainPumpTargetRPM, heatDisinfectInternalState * @return next state *************************************************************************/ static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectDrainPath( void ) @@ -566,8 +565,8 @@ * The handleHeatDisinfectFillWithWaterDeprimeReservoirs function handles \n * fill with water and deprime the reservoirs state * @details - * Inputs : none - * Outputs : none + * Inputs: none + * Outputs: none * @return next state *************************************************************************/ static DG_HEAT_DISINFECT_STATE_T handleHeatDisinfectFillWithWaterDeprimeReservoirs( void ) @@ -590,8 +589,8 @@ * The execHeatDisinfectInternalStates function executes the heat \n * disinfection internal state machine * @details - * Inputs : heatDisinfectInternalState - * Outputs : heatDisinfectInternalState + * Inputs: heatDisinfectInternalState + * Outputs: heatDisinfectInternalState * @return none *************************************************************************/ static void execHeatDisinfectInternalStates( void ) @@ -623,6 +622,7 @@ break; default: + // TODO add sw fault heatDisinfectInternalState = INTERNAL_HEAT_DISINFECT_STATE_COMPLETE; break; } @@ -633,8 +633,8 @@ * The handleHeatDisinfectOffState function handles internal heat disinfec \n * off state * @details - * Inputs : heatDisinfectState, stateTimer - * Outputs : stateTimer + * Inputs: heatDisinfectState, stateTimer + * Outputs: stateTimer * @return next state *************************************************************************/ static INTERNAL_HEAT_DISINFECT_STATE_T handleHeatDisinfectOffState( void ) @@ -645,17 +645,17 @@ if ( heatDisinfectState == DG_HEAT_DISINFECT_STATE_EVACUATE_DIALYSATE_FILL_WITH_WATER ) { // Set the actuators for evacuate recirculation path - setValveState ( VPI, VALVE_STATE_OPEN ); - setValveState ( VBF, VALVE_STATE_OPEN ); - setValveState ( VSP, VALVE_STATE_CLOSED ); - setValveState ( VPD, VALVE_STATE_OPEN_C_TO_NO ); - setValveState ( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState ( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRO, VALVE_STATE_R2_C_TO_NO ); - setValveState ( VRD, VALVE_STATE_R1_C_TO_NO ); - setValveState ( VRI, VALVE_STATE_R1_C_TO_NO ); - setValveState ( VRF, VALVE_STATE_R2_C_TO_NO ); + setValveState( VPI, VALVE_STATE_OPEN ); + setValveState( VBF, VALVE_STATE_OPEN ); + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRO, VALVE_STATE_R2_C_TO_NO ); + setValveState( VRD, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); setROPumpTargetFlowRate( RO_PUMP_TARGET_FLOW_RATE_LPM ); stateTimer = getMSTimerCount(); // For evac recirc path. TODO later, it should be controlled using // the composite pump @@ -677,17 +677,19 @@ // Set the actuators for draining the path signalROPumpHardStop(); signalDrainPumpHardStop(); - setValveState ( VPI, VALVE_STATE_OPEN ); - setValveState ( VBF, VALVE_STATE_OPEN ); - setValveState ( VSP, VALVE_STATE_CLOSED ); - setValveState ( VPD, VALVE_STATE_OPEN_C_TO_NO ); - setValveState ( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState ( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRO, VALVE_STATE_R2_C_TO_NC ); - setValveState ( VRD, VALVE_STATE_R1_C_TO_NC ); - setValveState ( VRI, VALVE_STATE_R1_C_TO_NO ); - setValveState ( VRF, VALVE_STATE_R2_C_TO_NO ); + stopPrimaryHeater(); + stopTrimmerHeater(); + setValveState( VPI, VALVE_STATE_OPEN ); + setValveState( VBF, VALVE_STATE_OPEN ); + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); + setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); + setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); setDrainPumpTargetSpeed( drainPumpTargetRPM ); state = INTERNAL_HEAT_DISINFECT_STATE_EVACUATE_RESERVOIR_1; @@ -701,16 +703,16 @@ * The handleHeatDisinfectFillWithWaterState function handles internal \n * fill with water state * @details - * Inputs : heatDisinfectState, stateTimer - * Outputs : stateTimer + * Inputs: heatDisinfectState, stateTimer + * Outputs: stateTimer * @return next state *************************************************************************/ static INTERNAL_HEAT_DISINFECT_STATE_T handleHeatDisinfectFillWithWaterState( void ) { INTERNAL_HEAT_DISINFECT_STATE_T state = INTERNAL_HEAT_DISINFECT_STATE_FILL_WITH_WATER; - F32 reservoir1Weight = getLoadCellFilteredWeight ( LOAD_CELL_A1 ); - F32 reservoir2Weight = getLoadCellFilteredWeight ( LOAD_CELL_B1 ); + F32 reservoir1Weight = getLoadCellFilteredWeight( LOAD_CELL_A1 ); + F32 reservoir2Weight = getLoadCellFilteredWeight( LOAD_CELL_B1 ); if ( reservoir1Weight >= FULL_RESERVOIRS_WEIGHT_GRAMS && reservoir2Weight >= FULL_RESERVOIRS_WEIGHT_GRAMS ) @@ -722,17 +724,17 @@ } else if ( heatDisinfectState == DG_HEAT_DISINFECT_STATE_FILL_WITH_WATER_DEPRIME_RESERVOIRS ) { - setValveState ( VPI, VALVE_STATE_OPEN ); - setValveState ( VBF, VALVE_STATE_OPEN ); - setValveState ( VSP, VALVE_STATE_CLOSED ); - setValveState ( VPD, VALVE_STATE_OPEN_C_TO_NO ); - setValveState ( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState ( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRO, VALVE_STATE_R2_C_TO_NO ); - setValveState ( VRD, VALVE_STATE_R1_C_TO_NO ); - setValveState ( VRI, VALVE_STATE_R1_C_TO_NO ); - setValveState ( VRF, VALVE_STATE_R2_C_TO_NO ); + setValveState( VPI, VALVE_STATE_OPEN ); + setValveState( VBF, VALVE_STATE_OPEN ); + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRO, VALVE_STATE_R2_C_TO_NO ); + setValveState( VRD, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); setROPumpTargetFlowRate( RO_PUMP_TARGET_FLOW_RATE_LPM ); stateTimer = getMSTimerCount(); @@ -748,8 +750,8 @@ * The handleHeatDisinfectEvacRecircPathState function handles internal \n * evacuate recirculation path state * @details - * Inputs : stateTimer, drainPumpTargetRPM - * Outputs : none + * Inputs: stateTimer, drainPumpTargetRPM + * Outputs: none * @return next state *************************************************************************/ static INTERNAL_HEAT_DISINFECT_STATE_T handleHeatDisinfectEvacRecircPathState( void ) @@ -761,18 +763,18 @@ { // Set the state to evacuate reservoir 1 signalROPumpHardStop(); - setValveState ( VPI, VALVE_STATE_OPEN ); - setValveState ( VBF, VALVE_STATE_OPEN ); - setValveState ( VSP, VALVE_STATE_CLOSED ); - setValveState ( VPD, VALVE_STATE_OPEN_C_TO_NO ); - setValveState ( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState ( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRO, VALVE_STATE_R2_C_TO_NO ); - setValveState ( VRD, VALVE_STATE_R1_C_TO_NC ); - setValveState ( VRI, VALVE_STATE_R1_C_TO_NO ); - setValveState ( VRF, VALVE_STATE_R2_C_TO_NO ); - setDrainPumpTargetSpeed ( drainPumpTargetRPM ); + setValveState( VPI, VALVE_STATE_OPEN ); + setValveState( VBF, VALVE_STATE_OPEN ); + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRO, VALVE_STATE_R2_C_TO_NO ); + setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); + setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); + setDrainPumpTargetSpeed( drainPumpTargetRPM ); state = INTERNAL_HEAT_DISINFECT_STATE_EVACUATE_RESERVOIR_1; } @@ -785,31 +787,31 @@ * The handleHeatDisifnectEvacReservoir1State function handles internal \n * evacuate reservoir 1 state * @details - * Inputs : none - * Outputs : none + * Inputs: none + * Outputs: none * @return next state *************************************************************************/ static INTERNAL_HEAT_DISINFECT_STATE_T handleHeatDisifnectEvacReservoir1State( void ) { INTERNAL_HEAT_DISINFECT_STATE_T state = INTERNAL_HEAT_DISINFECT_STATE_EVACUATE_RESERVOIR_1; - F32 reservoir1Weight = getLoadCellFilteredWeight ( LOAD_CELL_A1 ); + F32 reservoir1Weight = getLoadCellFilteredWeight( LOAD_CELL_A1 ); if ( reservoir1Weight <= EMPTY_RESERVOIRS_WEIGHT_GRAMS ) { // Set the state to evacuate reservoir 2 - setValveState ( VPI, VALVE_STATE_OPEN ); - setValveState ( VBF, VALVE_STATE_OPEN ); - setValveState ( VSP, VALVE_STATE_CLOSED ); - setValveState ( VPD, VALVE_STATE_OPEN_C_TO_NO ); - setValveState ( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState ( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRO, VALVE_STATE_R2_C_TO_NC ); - setValveState ( VRD, VALVE_STATE_R2_C_TO_NO ); - setValveState ( VRI, VALVE_STATE_R2_C_TO_NC ); - setValveState ( VRF, VALVE_STATE_R2_C_TO_NO ); - setDrainPumpTargetSpeed ( drainPumpTargetRPM ); //probably it is not needed TODO test this + setValveState( VPI, VALVE_STATE_OPEN ); + setValveState( VBF, VALVE_STATE_OPEN ); + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); + setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); + setValveState( VRI, VALVE_STATE_R2_C_TO_NC ); + setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); + setDrainPumpTargetSpeed( drainPumpTargetRPM ); //probably it is not needed TODO test this state = INTERNAL_HEAT_DISINFECT_STATE_EVACUATE_RESERVOIR_2; } @@ -822,8 +824,8 @@ * The handleHeatDisinfectEvacReservoir2State function handles internal \n * evacuate reservoir 2 state * @details - * Inputs : heatDisinfectState - * Outputs : none + * Inputs: heatDisinfectState + * Outputs: none * @return next state *************************************************************************/ static INTERNAL_HEAT_DISINFECT_STATE_T handleHeatDisinfectEvacReservoir2State( void ) @@ -854,24 +856,24 @@ * The stopActuators function sets all the actuators in stop and \n * de-energized state * @details - * Inputs : none - * Outputs : none + * Inputs: none + * Outputs: none * @return none *************************************************************************/ static void stopActuators( void ) { // De-energize all the valves - setValveState ( VPI, VALVE_STATE_OPEN ); - setValveState ( VBF, VALVE_STATE_OPEN ); - setValveState ( VSP, VALVE_STATE_CLOSED ); - setValveState ( VPD, VALVE_STATE_OPEN_C_TO_NO ); - setValveState ( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState ( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRO, VALVE_STATE_R2_C_TO_NO ); - setValveState ( VRD, VALVE_STATE_R1_C_TO_NC ); - setValveState ( VRI, VALVE_STATE_R1_C_TO_NO ); - setValveState ( VRF, VALVE_STATE_R2_C_TO_NO ); + setValveState( VPI, VALVE_STATE_OPEN ); + setValveState( VBF, VALVE_STATE_OPEN ); + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRO, VALVE_STATE_R2_C_TO_NO ); + setValveState( VRD, VALVE_STATE_R1_C_TO_NC ); + setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); + setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); //TODO composition pumps signalROPumpHardStop(); @@ -887,21 +889,19 @@ * The isTemperatureInRange function checks whether the water temperature \n * is out of range * @details - * Inputs : heatDisinfectElapsedTime - * Outputs : heatDisinfectElapsedTime + * Inputs: none + * Outputs: none * @return TRUE if the water temperature is still in range *************************************************************************/ static BOOL isTemperatureInRange( void ) { BOOL result = FALSE; - F32 TPi = getTemperatureValue ( TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ); - F32 TDi = getTemperatureValue ( TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR ); + F32 TPi = getTemperatureValue( TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ); + F32 TDi = getTemperatureValue( TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR ); - if ( fabs( TPi - TDi ) <= MAX_TEMPERATURE_DEVIATION_FROM_TARGET ) + if ( fabs(TPi - HEAT_DISINFECT_TARGET_TEMPERATURE) <= MAX_TEMPERATURE_DEVIATION_FROM_TARGET && + fabs(TDi - HEAT_DISINFECT_TARGET_TEMPERATURE) <= MAX_TEMPERATURE_DEVIATION_FROM_TARGET ) { - // Reset the heat disinfect elapsed time - // It has to start over - heatDisinfectElapsedTime = 0; result = TRUE; } @@ -913,23 +913,23 @@ * The setActuatorsToFillWater function sets the actuators to fill with \n * water mode * @details - * Inputs : none - * Outputs : none + * Inputs: none + * Outputs: none * @return none *************************************************************************/ static void setActuatorsToFillWater( void ) { - setValveState ( VPI, VALVE_STATE_OPEN ); - setValveState ( VBF, VALVE_STATE_OPEN ); - setValveState ( VSP, VALVE_STATE_CLOSED ); - setValveState ( VPD, VALVE_STATE_OPEN_C_TO_NO ); - setValveState ( VPO, VALVE_STATE_FILL_C_TO_NC ); - setValveState ( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState ( VRO, VALVE_STATE_R2_C_TO_NO ); - setValveState ( VRD, VALVE_STATE_R2_C_TO_NO ); - setValveState ( VRI, VALVE_STATE_R2_C_TO_NC ); - setValveState ( VRF, VALVE_STATE_R1_C_TO_NC ); + setValveState( VPI, VALVE_STATE_OPEN ); + setValveState( VBF, VALVE_STATE_OPEN ); + setValveState( VSP, VALVE_STATE_CLOSED ); + setValveState( VPD, VALVE_STATE_OPEN_C_TO_NO ); + setValveState( VPO, VALVE_STATE_FILL_C_TO_NC ); + setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); + setValveState( VRO, VALVE_STATE_R2_C_TO_NO ); + setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); + setValveState( VRI, VALVE_STATE_R2_C_TO_NC ); + setValveState( VRF, VALVE_STATE_R1_C_TO_NC ); setROPumpTargetFlowRate( RO_PUMP_TARGET_FLOW_RATE_LPM ); } @@ -938,8 +938,8 @@ * The getPublishHeatDisinfectDataInterval function sets the data publish \n * interval * @details - * Inputs : heatDisinfectDataPublishInterval - * Outputs : none + * Inputs: heatDisinfectDataPublishInterval + * Outputs: none * @return result : data publish time interval *************************************************************************/ static U32 getPublishHeatDisinfectDataInterval( void ) @@ -958,16 +958,16 @@ * @brief * The publishHeatDisinfectData function publishes heat disinfect mode * @details - * Inputs : heatDisinfectPublishCounter, heatDisinfectCurrentCycle, - * heatDisinfectInternalState - * Outputs : heatDisinfectPublishCounter + * Inputs: heatDisinfectPublishCounter, heatDisinfectCurrentCycle, + * heatDisinfectInternalState + * Outputs: heatDisinfectPublishCounter * @return none *************************************************************************/ static void publishHeatDisinfectData ( void ) { if ( ++heatDisinfectPublishCounter >= getPublishHeatDisinfectDataInterval() ) { - F32 elapsedtime = calcTimeSince( heatDisinfectElapsedTime ) / MINUTES_TO_MS_CONVERSION; + F32 elapsedtime = calcTimeSince( heatDisinfectStartTime ) / MINUTES_TO_MS_CONVERSION; broadcastHeatDisinfectData( (U32)heatDisinfectInternalState, elapsedtime, heatDisinfectCurrentCycle ); heatDisinfectPublishCounter = 0; } @@ -978,10 +978,10 @@ * The testSetHeatDisinfectDataPublishIntervalOverride function overrides \n * the data publication interval * @details - * Inputs : heatDisinfectDataPublishInterval - * Outputs : heatDisinfectDataPublishInterval - * @param value : The requested value for override - * @return result : TRUE if override was successful + * Inputs: heatDisinfectDataPublishInterval + * Outputs: heatDisinfectDataPublishInterval + * @param: value : The requested value for override + * @return: result : TRUE if override was successful *************************************************************************/ BOOL testSetHeatDisinfectDataPublishIntervalOverride( U32 value ) { @@ -1004,9 +1004,9 @@ * The testResetHeatDisinfectDataPublishIntervalOverride function \n * resets the overridden data publication time interval * @details - * Inputs : heatDisinfectDataPublishInterval - * Outputs : heatDisinfectDataPublishInterval - * @return result : TRUE if reset was successful + * Inputs: heatDisinfectDataPublishInterval + * Outputs: heatDisinfectDataPublishInterval + * @return: result : TRUE if reset was successful *************************************************************************/ BOOL testResetHeatDisinfectDataPublishIntervalOverride( void ) { @@ -1027,20 +1027,20 @@ * The testSetHeatDisinfectRecircDurationOverride function overrides the \n * duration of the recirculation path heat disinfection in minutes * @details - * Inputs : heatDisinfectRecircDuration - * Outputs : heatDisinfectRecircDuration - * @param recircMins : recirculation duration in minutes - * @return result : TRUE if override was successful + * Inputs: heatDisinfectRecircDuration + * Outputs: heatDisinfectRecircDuration + * @param: recircMins : recirculation duration in minutes + * @return: result : TRUE if override was successful *************************************************************************/ BOOL testSetHeatDisinfectRecircDurationOverride( F32 recircMins ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { - heatDisinfectRecircDuration.ovInitData = heatDisinfectRecircDuration.data; - heatDisinfectRecircDuration.ovData = recircMins * MINUTES_TO_MS_CONVERSION; - heatDisinfectRecircDuration.override = OVERRIDE_KEY; + heatDisinfectRecircDuration.ovInitData = heatDisinfectRecircDuration.data; + heatDisinfectRecircDuration.ovData = recircMins * MINUTES_TO_MS_CONVERSION; + heatDisinfectRecircDuration.override = OVERRIDE_KEY; } return result; @@ -1051,9 +1051,9 @@ * The testResetHeatDisinfectRecircDurationOverride function resets the \n * overridden duration of recirculation path heat disinfection * @details - * Inputs : heatDisinfectRecircDuration - * Outputs : heatDisinfectRecircDuration - * @return result : TRUE if reset was successful + * Inputs: heatDisinfectRecircDuration + * Outputs: heatDisinfectRecircDuration + * @return: result : TRUE if reset was successful *************************************************************************/ BOOL testResetHeatDisinfectRecircDurationOverride( void ) { @@ -1062,8 +1062,8 @@ if ( TRUE == isTestingActivated() ) { result = TRUE; - heatDisinfectRecircDuration.ovData = heatDisinfectRecircDuration.ovInitData; - heatDisinfectRecircDuration.override = OVERRIDE_RESET; + heatDisinfectRecircDuration.ovData = heatDisinfectRecircDuration.ovInitData; + heatDisinfectRecircDuration.override = OVERRIDE_RESET; } return result; @@ -1074,10 +1074,10 @@ * The testSetHeatDisinfectR1ToR2DurationOverride function overrides\n * the duration of reservoir 1 to reservoir 2 heat disinfection in minutes * @details - * Inputs : heatDisinfectR1ToR2Duration - * Outputs : heatDisinfectR1ToR2Duration - * @param R1ToR2Mins : reservoir 1 to reservoir 2 duration in minutes - * @return result : TRUE if override was successful + * Inputs: heatDisinfectR1ToR2Duration + * Outputs: heatDisinfectR1ToR2Duration + * @param: R1ToR2Mins : reservoir 1 to reservoir 2 duration in minutes + * @return: result : TRUE if override was successful *************************************************************************/ BOOL testSetHeatDisinfectR1ToR2DurationOverride( F32 R1ToR2Mins ) { @@ -1086,9 +1086,9 @@ if ( TRUE == isTestingActivated() ) { result = TRUE; - heatDisinfectR1ToR2Duration.ovInitData = heatDisinfectR1ToR2Duration.data; - heatDisinfectR1ToR2Duration.ovData = R1ToR2Mins * MINUTES_TO_MS_CONVERSION; - heatDisinfectR1ToR2Duration.override = OVERRIDE_KEY; + heatDisinfectR1ToR2Duration.ovInitData = heatDisinfectR1ToR2Duration.data; + heatDisinfectR1ToR2Duration.ovData = R1ToR2Mins * MINUTES_TO_MS_CONVERSION; + heatDisinfectR1ToR2Duration.override = OVERRIDE_KEY; } return result; @@ -1099,9 +1099,9 @@ * The testResetHeatDisinfectR1ToR2DurationOverride function \n * resets the overridden reservoir 1 to reservoir 2 duration * @details - * Inputs : heatDisinfectR1ToR2Duration - * Outputs : heatDisinfectR1ToR2Duration - * @return result : TRUE if reset was successful + * Inputs: heatDisinfectR1ToR2Duration + * Outputs: heatDisinfectR1ToR2Duration + * @return: result : TRUE if reset was successful *************************************************************************/ BOOL testResetHeatDisinfectR1ToR2DurationOverride( void ) { @@ -1110,8 +1110,8 @@ if ( TRUE == isTestingActivated() ) { result = TRUE; - heatDisinfectR1ToR2Duration.ovData = heatDisinfectR1ToR2Duration.ovInitData; - heatDisinfectR1ToR2Duration.override = OVERRIDE_RESET; + heatDisinfectR1ToR2Duration.ovData = heatDisinfectR1ToR2Duration.ovInitData; + heatDisinfectR1ToR2Duration.override = OVERRIDE_RESET; } return result; @@ -1121,10 +1121,10 @@ * @brief * The testSetHeatDisinfectionR2ToR1DurationOverride function overrides \n * the duration of reservoir 2 to reservoir 1 heat disinfection in minutes - * Inputs : heatDisinfectR2ToR1Duration - * Outputs : heatDisinfectR2ToR1Duration - * @param R2ToR1Mins : reservoir 2 to reservoir 1 duration in minutes - * @return result : TRUE is override was successful + * Inputs: heatDisinfectR2ToR1Duration + * Outputs: heatDisinfectR2ToR1Duration + * @param: R2ToR1Mins : reservoir 2 to reservoir 1 duration in minutes + * @return: result : TRUE is override was successful *************************************************************************/ BOOL testSetHeatDisinfectionR2ToR1DurationOverride( F32 R2ToR1Mins ) { @@ -1133,9 +1133,9 @@ if ( TRUE == isTestingActivated() ) { result = TRUE; - heatDisinfectR2ToR1Duration.ovInitData = heatDisinfectR2ToR1Duration.data; - heatDisinfectR2ToR1Duration.ovData = R2ToR1Mins * MINUTES_TO_MS_CONVERSION; - heatDisinfectR2ToR1Duration.override = OVERRIDE_KEY; + heatDisinfectR2ToR1Duration.ovInitData = heatDisinfectR2ToR1Duration.data; + heatDisinfectR2ToR1Duration.ovData = R2ToR1Mins * MINUTES_TO_MS_CONVERSION; + heatDisinfectR2ToR1Duration.override = OVERRIDE_KEY; } return result; @@ -1157,8 +1157,8 @@ if ( TRUE == isTestingActivated() ) { result = TRUE; - heatDisinfectR2ToR1Duration.ovData = heatDisinfectR2ToR1Duration.ovInitData; - heatDisinfectR2ToR1Duration.override = OVERRIDE_RESET; + heatDisinfectR2ToR1Duration.ovData = heatDisinfectR2ToR1Duration.ovInitData; + heatDisinfectR2ToR1Duration.override = OVERRIDE_RESET; } return result; @@ -1169,10 +1169,10 @@ * The testSetHeatDisinfectNoOfCyclesOverride function overrides the \n * number of cycles to run during heat disinfection * @details - * Inputs : heatDisinfectNoOfCyclesToRun - * Outputs : heatDisinfectNoOfCyclesToRun - * @param cycles : number of cycles to run heat disinfection - * @return result : TRUE if override was successful + * Inputs: heatDisinfectNoOfCyclesToRun + * Outputs: heatDisinfectNoOfCyclesToRun + * @param: cycles : number of cycles to run heat disinfection + * @return: result : TRUE if override was successful *************************************************************************/ BOOL testSetHeatDisinfectNoOfCyclesOverride( U32 cycles ) { @@ -1194,9 +1194,9 @@ * The testResetHeatDisinfectNoOfCyclesOverride function \n * resets the cycles to run heat disinfection * @details - * Inputs : heatDisinfectNoOfCyclesToRun - * Outputs : heatDisinfectNoOfCyclesToRun - * @return result : TRUE if reset was successful + * Inputs: heatDisinfectNoOfCyclesToRun + * Outputs: heatDisinfectNoOfCyclesToRun + * @return: result : TRUE if reset was successful *************************************************************************/ BOOL testResetHeatDisinfectNoOfCyclesOverride( void ) { @@ -1217,9 +1217,9 @@ * The getRecirculationDuration function gets the duration of recirculation \n * path heat disinfection * @details - * Inputs : heatDisinfectRecircDuration - * Outputs : none - * @return result : the duration in minutes + * Inputs: heatDisinfectRecircDuration + * Outputs: none + * @return: result : the duration in minutes *************************************************************************/ static F32 getRecirculationDuration( void ) { @@ -1238,11 +1238,11 @@ * The getRSVR1ToRSVR2Duration function gets the duration of reservoir 1 \n * to reservoir 2 heat disinfection * @details - * Inputs : heatDisinfectR1ToR2Duration - * Outputs : none - * @return result : the duration in minutes + * Inputs: heatDisinfectR1ToR2Duration + * Outputs: none + * @return: result : the duration in minutes *************************************************************************/ -static F32 getRSVR1ToRSVR2Duration( void ) +static F32 getR1ToR2Duration( void ) { F32 result = heatDisinfectR1ToR2Duration.data; @@ -1259,11 +1259,11 @@ * The getRSVR2ToRSVR1Duration function gets the duration of reservoir 2 \n * to reservoir 1 heat disinfection * @details - * Inputs : heatDisinfectR2ToR1Duration - * Outputs : none - * @return result : the duration in minutes + * Inputs: heatDisinfectR2ToR1Duration + * Outputs: none + * @return: result : the duration in minutes *************************************************************************/ -static F32 getRSVR2ToRSVR1Duration() +static F32 getR2ToR1Duration() { F32 result = heatDisinfectR2ToR1Duration.data; @@ -1280,9 +1280,9 @@ * The getNoOfCyclesToRun function gets the number of cycles to run \n * heat disinfection * @details - * Inputs : heatDisinfectNoOfCyclesToRun - * Outputs : none - * @return result : the no of cycles + * Inputs: heatDisinfectNoOfCyclesToRun + * Outputs: none + * @return: result : the no of cycles *************************************************************************/ static U32 getNoOfCyclesToRun() {