Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r7e1358a440116fedad5a049d49c2d6f9be85d60e -ra0c1350fb3266a722f91298dde1e97876081cd2e --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 7e1358a440116fedad5a049d49c2d6f9be85d60e) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision a0c1350fb3266a722f91298dde1e97876081cd2e) @@ -941,7 +941,7 @@ F32 avgCPo = sumFillCPoConductivity / (F32)fillCPoConductivitySampleCnt; // sample count incremented above w/o condition so no need for divide by zero checks F32 avgRR = sumFillRejRatio / (F32)fillCPoConductivitySampleCnt; - if ( ( avgCPo > MAX_CPO_CONDUCTIVITY_ALLOW ) && ( getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) != FALSE ) ) + if ( ( avgCPo > MAX_CPO_CONDUCTIVITY_ALLOW ) && ( getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) != TRUE ) ) { // Fault alarm per PRS 483 SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_OUTLET_PRIMARY_CONDUCTIVITY_OUT_OF_RANGE, avgCPo, MAX_CPO_CONDUCTIVITY_ALLOW ); Index: firmware/App/Modes/ModeGenIdle.c =================================================================== diff -u -r7e1358a440116fedad5a049d49c2d6f9be85d60e -ra0c1350fb3266a722f91298dde1e97876081cd2e --- firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision 7e1358a440116fedad5a049d49c2d6f9be85d60e) +++ firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision a0c1350fb3266a722f91298dde1e97876081cd2e) @@ -368,11 +368,14 @@ if ( FALSE == isAlarmActive( ALARM_ID_DG_FILL_CONDUCTIVITY_OUT_OF_RANGE ) ) { // Save the HD target fill volume before command 1000 mL fill volume - //targetFillVolumeML = getTargetFillVolumeML(); - state = DG_HANDLE_BAD_FILL_STATE_FLUSH_FILL; - // Start the flush fill - startFillCmd( BAD_FLUSH_FILL_TARGET_VOLUME_ML, getTargetFillFlowRateLPM() ); + state = DG_HANDLE_BAD_FILL_STATE_FLUSH_FILL; + + // Start the flush fill. + // NOTE: the actual target fill from HD is sent here but at this stage the fill target is 1000 mL. + // The other functions that check against the fill target know to check for 1000 mL. This is to make sure + // the actual fill target from HD is not overridden in case multiple bad fills occurred back to back. + startFillCmd( getTargetFillVolumeML(), getTargetFillFlowRateLPM() ); } return state; Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r7e1358a440116fedad5a049d49c2d6f9be85d60e -ra0c1350fb3266a722f91298dde1e97876081cd2e --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 7e1358a440116fedad5a049d49c2d6f9be85d60e) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision a0c1350fb3266a722f91298dde1e97876081cd2e) @@ -366,13 +366,9 @@ // validate parameters if ( fillToVolMl < MAX_FILL_VOLUME_ML ) { - if ( getCurrentGenIdleBadFillState() != DG_HANDLE_BAD_FILL_STATE_FIRST_DRAIN ) - { - fillVolumeTargetMl.data = fillToVolMl; - } + fillVolumeTargetMl.data = fillToVolMl; + cmdResponse.rejected = FALSE; - cmdResponse.rejected = FALSE; - if ( ( FALSE == isAlarmActive( ALARM_ID_DG_ACID_BOTTLE_LOW_VOLUME ) ) || // reject moving to fill mode if ( FALSE == isAlarmActive( ALARM_ID_DG_BICARB_BOTTLE_LOW_VOLUME ) ) ) // alarm is active { Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -re58e3385eaf5e920335f963937b2e9f654a32cfe -ra0c1350fb3266a722f91298dde1e97876081cd2e --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a0c1350fb3266a722f91298dde1e97876081cd2e) @@ -4700,10 +4700,10 @@ if ( ( sizeof( F32 ) * NUM_OF_LOAD_CELLS ) == message->hdr.payloadLen ) { - status = TRUE; - F32 payload[ NUM_OF_LOAD_CELLS ]; + status = TRUE; + memcpy( &payload, message->payload, sizeof( F32 ) * NUM_OF_LOAD_CELLS ); setLoadCellsTareValues( (U08*)&payload );