Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r6cb5b0565e199e7ebbdfb278c58c9775af181043 -r75f5cf4a8484f0c08b90edfb4b49a6268e51de65 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 6cb5b0565e199e7ebbdfb278c58c9775af181043) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 75f5cf4a8484f0c08b90edfb4b49a6268e51de65) @@ -716,6 +716,12 @@ state = CONCENTRATE_PUMP_CONTROL_TARGET_SPEED_STATE; } + if ( FALSE == concentratePumps[ pumpId ].hasTurnOnPumpsBeenRequested ) + { + state = CONCENTRATE_PUMP_OFF_STATE; + stopConcentratePump( pumpId ); + } + return state; } Index: firmware/App/Modes/ModeFlush.c =================================================================== diff -u -r12c382be0e4dabd6f655b59c3ff59cc059f7af8f -r75f5cf4a8484f0c08b90edfb4b49a6268e51de65 --- firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision 12c382be0e4dabd6f655b59c3ff59cc059f7af8f) +++ firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision 75f5cf4a8484f0c08b90edfb4b49a6268e51de65) @@ -67,7 +67,7 @@ #define BICARB_PUMP_SPEED_ML_PER_MIN 30.6F ///< Bicarb pump speed in mL/min. // Flush and drain R1 and R2 state defines -#define RSRVRS_FULL_VOL_ML 1900.0F ///< Reservoirs 1 & 2 full volume in mL. +#define RSRVRS_FULL_VOL_ML 1850.0F ///< Reservoirs 1 & 2 full volume in mL. #define RSRVRS_PARTIAL_FILL_VOL_ML 500.0F ///< Reservoirs 1 & 2 partial volume in mL. #define RSRVRS_FULL_STABLE_TIME_COUNT ( ( 4 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Reservoirs 1 & 2 full stable time in counts. #define RSRVRS_FILL_UP_TIMEOUT_MS ( 5 * 60 * MS_PER_SECOND ) ///< Reservoirs 1 & 2 full fill up timeout in ms. Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -r06ccd13d7e04a57dfb750a5d14ae4fea1525d4cc -r75f5cf4a8484f0c08b90edfb4b49a6268e51de65 --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 06ccd13d7e04a57dfb750a5d14ae4fea1525d4cc) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision 75f5cf4a8484f0c08b90edfb4b49a6268e51de65) @@ -91,7 +91,7 @@ // R1 to R2 & R2 to R1 heat disinfect circulation #define HEAT_DISINFECT_TARGET_RO_FLOW_LPM 1.3F ///< Heat disinfect target RO flow rate in L/min. -#define HEAT_DISINFECT_TARGET_RO_FLOW_TRANSFER_LPM 0.8F ///< Heat disinfect target RO flow rate in L/min when transferring between reservoirs. +#define HEAT_DISINFECT_TARGET_RO_FLOW_TRANSFER_LPM 0.5F ///< Heat disinfect target RO flow rate in L/min when transferring between reservoirs. #define HEAT_DISINFECT_MAX_RO_PRESSURE_PSI 30 ///< Heat disinfect maximum RO pressure in psi. #define HEAT_DISINFECT_START_TEMP_TIMEOUT_MS ( 4 * MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SECOND ) ///< Heat disinfect reaching to minimum temperature timeout in milliseconds. #define RSRVRS_TARGET_VOL_OUT_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Reservoirs 1 & 2 maximum volume out of range timeout during heat disinfect. @@ -636,7 +636,6 @@ stateTimer = getMSTimerCount(); stateTrialCounter = 0; state = DG_HEAT_DISINFECT_STATE_FLUSH_CIRCULATION; - } return state; Index: firmware/App/Modes/ModeHeatDisinfectActiveCool.c =================================================================== diff -u -r12c382be0e4dabd6f655b59c3ff59cc059f7af8f -r75f5cf4a8484f0c08b90edfb4b49a6268e51de65 --- firmware/App/Modes/ModeHeatDisinfectActiveCool.c (.../ModeHeatDisinfectActiveCool.c) (revision 12c382be0e4dabd6f655b59c3ff59cc059f7af8f) +++ firmware/App/Modes/ModeHeatDisinfectActiveCool.c (.../ModeHeatDisinfectActiveCool.c) (revision 75f5cf4a8484f0c08b90edfb4b49a6268e51de65) @@ -598,29 +598,28 @@ static DG_HEAT_DISINFECT_ACTIVE_COOL_STATE_T handleHeatDisinfectActiveCoolCancelWaterPathState( void ) { DG_HEAT_DISINFECT_ACTIVE_COOL_STATE_T state = DG_HEAT_DISINFECT_ACTIVE_COOL_CANCEL_WATER_PATH_STATE; - U32 drainSteadyTimeoutMS = RSRVR_DRAIN_STEADY_TIMEOUT_MS; - U32 drainTimeoutMS = RSRVR_DRAIN_TIMEOUT_MS; + F32 TDi = getTemperatureValue( TEMPSENSORS_INLET_DIALYSATE ); + F32 TRo = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); + BOOL isMixDrainNeeded = ( ( TDi >= RSRVR_MIX_DRAIN_TEMPERATURE_THRESHOLD_C ) && ( TRo >= RSRVR_MIX_DRAIN_TEMPERATURE_THRESHOLD_C ) ? TRUE : FALSE ); + U32 drainTimeoutMS = ( TRUE == isMixDrainNeeded ? RSRVR_MIX_DRAIN_TIMEOUT_MS : RSRVR_DRAIN_TIMEOUT_MS ); + U32 drainSteadyTimeoutMS = ( TRUE == isMixDrainNeeded ? ROF_ACTIVE_COOL_MIX_DRAIN_STEADY_TIMEOUT_MS : RSRVR_DRAIN_STEADY_TIMEOUT_MS ); if ( CANCELLATION_MODE_NONE == cancellationMode ) { U32 targetRPM = RSRVR_DRAIN_TARGET_RPM; - F32 TDi = getTemperatureValue( TEMPSENSORS_INLET_DIALYSATE ); - F32 TRo = getTemperatureValue( TEMPSENSORS_OUTLET_REDUNDANT ); cancellationMode = CANCELLATION_MODE_COLD; // The two sensors must be less than a threshold to decide if mix drain is needed to normal drain - if ( ( TDi >= RSRVR_MIX_DRAIN_TEMPERATURE_THRESHOLD_C ) && ( TRo >= RSRVR_MIX_DRAIN_TEMPERATURE_THRESHOLD_C ) ) + if ( TRUE == isMixDrainNeeded ) { // The fluid is hot so this is a mix drain. Set the VPd to direct the cold inlet fluid to drain setValveState( VPI, VALVE_STATE_OPEN ); setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NO ); turnOnUVReactor( INLET_UV_REACTOR ); - drainSteadyTimeoutMS = ROF_ACTIVE_COOL_MIX_DRAIN_STEADY_TIMEOUT_MS; - drainTimeoutMS = RSRVR_MIX_DRAIN_TIMEOUT_MS; - targetRPM = ROF_ACTIVE_COOL_INITIAL_TARGET_DRAIN_RPM; - cancellationMode = CANCELLATION_MODE_HOT; + targetRPM = ROF_ACTIVE_COOL_INITIAL_TARGET_DRAIN_RPM; + cancellationMode = CANCELLATION_MODE_HOT; } rsrvrsStatus.rsrvr[ DG_RESERVOIR_1 ].rStatus = DG_RESERVOIR_ABOVE_TARGET; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r9d89d7a4b551f6f192d579db61b5a80d81c5efa0 -r75f5cf4a8484f0c08b90edfb4b49a6268e51de65 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 9d89d7a4b551f6f192d579db61b5a80d81c5efa0) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 75f5cf4a8484f0c08b90edfb4b49a6268e51de65) @@ -68,8 +68,15 @@ /// Payload record structure for block message transmission request. typedef struct { - U16 blockedMessages[ MAX_MSGS_BLOCKED_FOR_XMIT ]; + U16 blockedMessages[ MAX_MSGS_BLOCKED_FOR_XMIT ]; ///< Blocked messages array. } BLOCKED_MSGS_DATA_T; + +/// Load cells override payload structure +typedef struct +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T ovRecord; ///< Test override array payload. + BOOL flag; ///< Flag. +} LC_OVERRIDE_PAYLOAD_T; #pragma pack(pop) // ********** private data ********** @@ -2070,12 +2077,6 @@ *************************************************************************/ void handleTestLoadCellOverrideRequest( MESSAGE_T *message ) { - typedef struct - { - TEST_OVERRIDE_ARRAY_PAYLOAD_T ovRecord; - BOOL flag; - } LC_OVERRIDE_PAYLOAD_T; - LC_OVERRIDE_PAYLOAD_T payload; BOOL result = FALSE;