Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -rf656b17f3d8d93b4fca49c9725e096e7eb55acc7 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision f656b17f3d8d93b4fca49c9725e096e7eb55acc7) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -121,7 +121,7 @@ static BOOL hasStartTrimmerHeaterRequested; ///< Start trimmer heater request flag. static U32 heatersOnWithNoFlowTimer; ///< Heaters are on but there is no sufficient flow. static TEMPERATURE_SENSORS_T primaryHeatersFeedbackTempSensor = TEMPSENSORS_OUTLET_PRIMARY_HEATER; ///< Primary heaters feedback temperature sensors. -static TEMPERATURE_SENSORS_T trimmerHeaterFeedbackTempSensor = TEMPSENSORS_OUTLET_REDUNDANT; ///< Trimmer heater feedback temperature sensors. +static TEMPERATURE_SENSORS_T trimmerHeaterFeedbackTempSensor = TEMPSENSORS_INLET_DIALYSATE; ///< Trimmer heater feedback temperature sensors. static U32 primaryHeatersInternalTempOutTimer = 0; ///< Primary heaters internal temperature out of range timer. static U32 trimmerHeaterInternalTempOutTimer = 0; ///< Trimmer heater internal temperature out of range timer. static BOOL isPrimaryHeatersTempOutOfRange = FALSE; ///< Boolean flag to indicate if the primary heaters internal temperature out of range. @@ -497,8 +497,13 @@ // heat disinfect, the feedback sensor will be Thd if ( DG_MODE_HEAT == getCurrentOperationMode() ) { +#ifdef THD_USING_TRO_CONNECTOR // Set the feedback temperature sensor - primaryHeatersFeedbackTempSensor = TEMPSENSORS_OUTLET_REDUNDANT; //TODO change this to Thd sensors once it is installed + // THd uses TRo in V3 + primaryHeatersFeedbackTempSensor = TEMPSENSORS_OUTLET_REDUNDANT; +#else + primaryHeatersFeedbackTempSensor = TEMPSENSORS_HEAT_DISINFECT; +#endif } state = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET; Index: firmware/App/Controllers/TemperatureSensors.h =================================================================== diff -u -r34ed52c598042fdcfa5526e3b1d46fa09b040199 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision 34ed52c598042fdcfa5526e3b1d46fa09b040199) +++ firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -35,6 +35,7 @@ typedef enum SENSORS_NAME { TEMPSENSORS_INLET_PRIMARY_HEATER = 0, ///< Inlet primary heaters temperature sensor + TEMPSENSORS_HEAT_DISINFECT, ///< Heat disinfect temperature sensor TEMPSENSORS_OUTLET_PRIMARY_HEATER, ///< Outlet primary heaters temperature sensor TEMPSENSORS_CONDUCTIVITY_SENSOR_1, ///< Conductivity sensor 1 temperature sensor TEMPSENSORS_CONDUCTIVITY_SENSOR_2, ///< Conductivity sensor 2 temperature sensor Index: firmware/App/DGCommon.h =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/DGCommon.h (.../DGCommon.h) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/DGCommon.h (.../DGCommon.h) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -49,14 +49,14 @@ #define IGNORE_DRAIN_PUMP_MONITOR 1 #define IGNORE_HEATERS_MONITOR 1 #define IGNORE_RO_PUMP_MONITOR 1 - #define IGNORE_HEAT_DISINFECT_RSRVR_TIMEOUT 1 // #define DISABLE_RO_RATIO_CHECK 1 #define DISABLE_COND_SENSOR_CHECK 1 #define DISABLE_MIXING 1 #define DISABLE_WATER_QUALITY_CHECK 1 #define DISABLE_RTC_CONFIG 1 //#define V_2_SYSTEM 1 //#define SKIP_RECIRC 1 + #define THD_USING_TRO_CONNECTOR 1 #include #include #endif Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -rb63e03ba8b2568afbbd314e9ba6c59c16db29f42 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision b63e03ba8b2568afbbd314e9ba6c59c16db29f42) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -220,7 +220,7 @@ * The transitionToChemicalDisinfectMode function prepares for transition to * chemical disinfect mode. * @details Inputs: none - * @details Outputs: none + * @details Outputs: chemical disisnfect mode variables are reset * @return none *************************************************************************/ void transitionToChemicalDisinfectMode( void ) @@ -381,9 +381,6 @@ // Check if the current operation mode is chemical disinfect if ( DG_MODE_CHEM == getCurrentOperationMode() ) { - // Reset all the actuators - deenergizeActuators(); - // Transition to mode standby requestNewOperationMode( DG_MODE_STAN ); @@ -1055,6 +1052,7 @@ else { F32 acidCP2PumpFlowRate = ACID_TO_WATER_MIXING_RATIO * measuredROFlowRate * ML_PER_LITER; + setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, acidCP2PumpFlowRate ); } @@ -1842,11 +1840,11 @@ DG_RESERVOIR_STATUS_T status = DG_RESERVOIR_BELOW_TARGET; F32 volume = 0.0; - if ( r == DG_RESERVOIR_1 ) + if ( DG_RESERVOIR_1 == r ) { volume = getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_1_PRIMARY ); } - else if ( r == DG_RESERVOIR_2 ) + else if ( DG_RESERVOIR_2 == r ) { volume = getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_2_PRIMARY ); } Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -417,8 +417,13 @@ resetReservoirsLowestWeight(); F32 ppiPressure = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_INLET ); - F32 TDiTemp = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); //TODo change to TDi + F32 TDiTemp = getTemperatureValue( TEMPSENSORS_INLET_DIALYSATE ); +#ifdef THD_USING_TRO_CONNECTOR + // TRo is connected to THd in V3 + F32 TRoTemp = getTemperatureValue( TEMPSENSORS_INLET_DIALYSATE ); +#else F32 TRoTemp = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); +#endif // If the inlet pressure is less than the threshold and TDi and TRo difference is greater than 3 C, the cycle // should be canceled @@ -661,7 +666,12 @@ // Check if the flush circulation time has elapsed and the temperature sensors are not in range yet if ( ( TRUE == didTimeout( stateTimer, FLUSH_CICRCULATION_WAIT_TIME_MS ) ) && ( FALSE == areTempSensorsInRange ) ) { - F32 ThdTemp = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); // TODO add THd later. This is the new temp sensor of the coldest spot. +#ifdef THD_USING_TRO_CONNECTOR + // THd uses TRo in V3 + F32 ThdTemp = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); +#else + F32 ThdTemp = getTemperatureValue( TEMPSENSORS_HEAT_DISINFECT ); +#endif F32 TPoTemp = getTemperatureValue( TEMPSENSORS_OUTLET_PRIMARY_HEATER ); F32 TD1Temp = getTemperatureValue( TEMPSENSORS_CONDUCTIVITY_SENSOR_1 ); F32 TD2Temp = getTemperatureValue( TEMPSENSORS_CONDUCTIVITY_SENSOR_2 ); @@ -1714,8 +1724,13 @@ deenergizeActuators(); // Check inlet dialysate and redundant outlet temperature sensors - F32 TDi = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); //TODO change to TDi + F32 TDi = getTemperatureValue( TEMPSENSORS_INLET_DIALYSATE ); +#ifdef THD_USING_TRO_CONNECTOR + // TRo is connected to THd in V3 + F32 TRo = getTemperatureValue( TEMPSENSORS_INLET_DIALYSATE ); +#else F32 TRo = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); +#endif // The two sensors must be less than a threshold to decide if mix drain is needed to normal drain if ( ( TDi < MIX_DRAIN_TEMPERATURE_THRESHOLD_C ) && ( TRo < MIX_DRAIN_TEMPERATURE_THRESHOLD_C ) ) @@ -1973,7 +1988,12 @@ HEAT_DISINFECT_STATUS_T status = HEAT_DISINFECT_IN_PROGRESS; F32 TPoTemp = getTemperatureValue( TEMPSENSORS_OUTLET_PRIMARY_HEATER ); - F32 ThdTemp = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); //TODO change this to actual THd sensor later +#ifdef THD_USING_TRO_CONNECTOR + // THd uses TRo in V3 + F32 ThdTemp = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); +#else + F32 ThdTemp = getTemperatureValue( TEMPSENSORS_HEAT_DISINFECT ); +#endif BOOL isR1OutOfRange = fabs( getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_1_PRIMARY ) - R1HeatDisinfectVol ) > RSRVRS_MAX_TARGET_VOL_CHANGE_ML; BOOL isR2OutOfRange = fabs( getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_2_PRIMARY ) - R2HeatDisinfectVol ) > RSRVRS_MAX_TARGET_VOL_CHANGE_ML; Index: firmware/App/Modes/ModeRecirculate.c =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -83,7 +83,7 @@ initRecirculateMode(); // TODO uncomment - //stopPrimaryHeater(); + //stopPrimaryHeater(); //TODO we will not stop the heater anymore, right? // TODO uncomment (SEAN) // set initial actuator states @@ -105,7 +105,7 @@ turnOnUVReactor( OUTLET_UV_REACTOR ); // TODO remove - setPrimaryHeaterTargetTemperature( 39.0 ); + setPrimaryHeaterTargetTemperature( 39.0 ); //TODO can I remove this? // TODO remove // NOTE: The target flow rate should be set prior to setting the start primary heater Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -95,34 +95,7 @@ // re-initialize standby mode each time we transition to standby mode initStandbyMode(); - //deenergizeActuators(); - - // set initial actuator states - setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); - setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); -#ifndef V_2_SYSTEM - setValveState( VRD1, VALVE_STATE_CLOSED ); - setValveState( VRD2, VALVE_STATE_CLOSED ); -#else - setValveState( VRD, VALVE_STATE_R2_C_TO_NO ); -#endif - setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); - setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState( VPI, VALVE_STATE_CLOSED ); - setValveState( VSP, VALVE_STATE_CLOSED ); - - signalROPumpHardStop(); - signalDrainPumpHardStop(); - stopPrimaryHeater(); - stopTrimmerHeater(); - requestConcentratePumpsOff( CONCENTRATEPUMPS_CP1_ACID ); - requestConcentratePumpsOff( CONCENTRATEPUMPS_CP2_BICARB ); - - // UV off - turnOffUVReactor( INLET_UV_REACTOR ); - turnOffUVReactor( OUTLET_UV_REACTOR ); + deenergizeActuators(); } /*********************************************************************//** Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -458,6 +458,8 @@ BOOL const hasTimeOut = didTimeout( reservoirWeightUnchangeStartTime[ reservoirId ], timeout ); BOOL const hasTargetReached = ( targetDrainVolume >= loadcellWeight ); + // If the goal is to tare the load cell, then the target drain should be reached and timing out on the + // reservoir weight is not enough if ( ( TRUE == hasTimeOut ) || ( ( TRUE == hasTargetReached ) && ( FALSE == tareLoadCellRequest ) ) ) { result = TRUE; Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -1056,6 +1056,7 @@ handleUIClockSyncRequest( message ); break; + // NOTE: This case must be last case MSG_ID_DG_TESTER_LOGIN_REQUEST: handleTesterLogInRequest( message ); break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r1a5efe97f5f39594b45797fded52cafce92afe80 -r3d131237935eb36e56e0d057a713430e31dc6405 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 1a5efe97f5f39594b45797fded52cafce92afe80) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3d131237935eb36e56e0d057a713430e31dc6405) @@ -26,7 +26,6 @@ #include "FPGA.h" #include "Heaters.h" #include "LoadCell.h" -#include "ModeChemicalDisinfect.h" #include "ModeFlush.h" #include "ModeStandby.h" #include "ModeRecirculate.h"