Index: firmware/App/Controllers/PermeateTank.c =================================================================== diff -u -rfd21f03d28eec499fb5c01bf595c57893db94406 -r65fc5c36624e283aca69aae3f35542ecfec0f24c --- firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision fd21f03d28eec499fb5c01bf595c57893db94406) +++ firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision 65fc5c36624e283aca69aae3f35542ecfec0f24c) @@ -160,42 +160,48 @@ void execPermeateTankController( void ) { PERMEATE_TANK_STATE_T prevState = permeateTankControllerState; + FP_OP_MODE_T opMode = getCurrentFPOperationMode(); + // If we have faulted, close valve and go to manual control - if ( FP_MODE_FAUL == getCurrentFPOperationMode() ) + if ( FP_MODE_FAUL == opMode ) { endPermeateTankControl(); } - // Execute air trap state machine - switch( permeateTankControllerState ) + // do not execute state machine if in defeatured modes. + // BETA's will still have featured HW installed. + if ( FALSE == isFPDefeatured() ) { - case PERMEATE_TANK_INIT_STATE: - permeateTankControllerState = PERMEATE_TANK_MANUAL_CONTROL_STATE; - break; + // Execute permeate tank state machine + switch( permeateTankControllerState ) + { + case PERMEATE_TANK_INIT_STATE: + permeateTankControllerState = PERMEATE_TANK_MANUAL_CONTROL_STATE; + break; - case PERMEATE_TANK_MANUAL_CONTROL_STATE: - permeateTankControllerState = handlePermeateTankManualControlState(); - break; + case PERMEATE_TANK_MANUAL_CONTROL_STATE: + permeateTankControllerState = handlePermeateTankManualControlState(); + break; - case PERMEATE_TANK_FILL_STATE: - permeateTankControllerState = handlePermeateTankFillState(); - break; + case PERMEATE_TANK_FILL_STATE: + permeateTankControllerState = handlePermeateTankFillState(); + break; - case PERMEATE_TANK_FULL_STATE: - permeateTankControllerState = handlePermeateTankFullState(); - break; + case PERMEATE_TANK_FULL_STATE: + permeateTankControllerState = handlePermeateTankFullState(); + break; - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, (U32)FP_FAULT_ID_FP_INVALID_PERMEATE_TANK_STATE, (U32)permeateTankControllerState ) - permeateTankControllerState = PERMEATE_TANK_INIT_STATE; - break; - } + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, (U32)FP_FAULT_ID_FP_INVALID_PERMEATE_TANK_STATE, (U32)permeateTankControllerState ) + permeateTankControllerState = PERMEATE_TANK_INIT_STATE; + break; + } - if ( prevState != permeateTankControllerState ) - { - setPermeateTankTransition( permeateTankControllerState ); + if ( prevState != permeateTankControllerState ) + { + setPermeateTankTransition( permeateTankControllerState ); + } } - // Publish permeate tank data if due publishPermeateTankData(); } Index: firmware/App/Drivers/ConductivitySensors.c =================================================================== diff -u -rb6b17e417c14f820a81e93dd7b20aa9dd790a7c1 -r65fc5c36624e283aca69aae3f35542ecfec0f24c --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision b6b17e417c14f820a81e93dd7b20aa9dd790a7c1) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 65fc5c36624e283aca69aae3f35542ecfec0f24c) @@ -41,10 +41,10 @@ #define RESISTANCE_SCALE_HIGH_BOUNDS 3.0F ///< High bounds for resistance scale values. #define TEMPERATURE_CORRECTION_LOW_BOUNDS 0.005F ///< Low bounds for temperature correction values. #define TEMPERATURE_CORRECTION_HIGH_BOUNDS 0.04F ///< High bounds for temperature correction values. -#define TEMPERATURE_OFFSET_LOW_BOUNDS -10.0F ///< Low bounds for temperature scale values. -#define TEMPERATURE_OFFSET_HIGH_BOUNDS 10.0F ///< High bounds for temperature offset values. -#define TEMPERATURE_SCALE_LOW_BOUNDS 0.5F ///< Low bounds for temperature scale values. -#define TEMPERATURE_SCALE_HIGH_BOUNDS 2.0F ///< High bounds for temperature scale values. +#define TEMPERATURE_OFFSET_LOW_BOUNDS -300.0F ///< Low bounds for temperature offset values. +#define TEMPERATURE_OFFSET_HIGH_BOUNDS 300.0F ///< High bounds for temperature offset values. +#define TEMPERATURE_SCALE_LOW_BOUNDS 0.2F ///< Low bounds for temperature scale values. +#define TEMPERATURE_SCALE_HIGH_BOUNDS 1.0F ///< High bounds for temperature scale values. #define LOWER_WORD_SIZE 4 ///< Size in bytes of the lower word size for retrieving revision data. #define MID_WORD_SIZE 4 ///< Size in bytes of the middle word size for retrieving revision data. Index: firmware/App/Drivers/ConductivitySensors.h =================================================================== diff -u -rb6b17e417c14f820a81e93dd7b20aa9dd790a7c1 -r65fc5c36624e283aca69aae3f35542ecfec0f24c --- firmware/App/Drivers/ConductivitySensors.h (.../ConductivitySensors.h) (revision b6b17e417c14f820a81e93dd7b20aa9dd790a7c1) +++ firmware/App/Drivers/ConductivitySensors.h (.../ConductivitySensors.h) (revision 65fc5c36624e283aca69aae3f35542ecfec0f24c) @@ -84,8 +84,8 @@ F32 alpha_low; ///< Temperature correction, low range, default = 0.02, range = [0.005, 0.04] F32 eta_low; ///< Resistance scale factor, low range, default = 1, range = [0.5, 3] F32 zeta_low; ///< Resistance offset, low range, default = 0, range = [-1000, 1000] - F32 beta; ///< Temperature scale factor, default = 1, range = [0.5, 2] - F32 delta; ///< Temperature offset, default = 0, range = [-10, 10] + F32 beta; ///< Temperature scale factor, default = 1, range = [0.2, 1.0] + F32 delta; ///< Temperature offset, default = 0, range = [-300, 300] F32 reserved1; ///< Reserved cal slot. F32 reserved2; ///< Reserved cal slot. } CONDUCTIVITY_COEFFICIENTS_T; Index: firmware/App/Modes/FPModes/FPOperationModes.c =================================================================== diff -u -r6c1e038c32aae95cd5649320d12c1d7239834425 -r65fc5c36624e283aca69aae3f35542ecfec0f24c --- firmware/App/Modes/FPModes/FPOperationModes.c (.../FPOperationModes.c) (revision 6c1e038c32aae95cd5649320d12c1d7239834425) +++ firmware/App/Modes/FPModes/FPOperationModes.c (.../FPOperationModes.c) (revision 65fc5c36624e283aca69aae3f35542ecfec0f24c) @@ -194,7 +194,7 @@ break; case FP_MODE_DEGP: - currentSubMode = execPreGenPMode(); + currentSubMode = execGenPermeateDefeaturedMode(); break; default: Index: firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.c =================================================================== diff -u -r3e1af7cc2576e347ab8bdf2f400196b2301def07 -r65fc5c36624e283aca69aae3f35542ecfec0f24c --- firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.c (.../ModeGenPermeateDefeatured.c) (revision 3e1af7cc2576e347ab8bdf2f400196b2301def07) +++ firmware/App/Modes/FPModes/ModeGenPermeateDefeatured.c (.../ModeGenPermeateDefeatured.c) (revision 65fc5c36624e283aca69aae3f35542ecfec0f24c) @@ -63,7 +63,7 @@ *************************************************************************/ void initGenPermeateDefeaturedMode( void ) { - genPermeateDefState = FP_GENP_DEF_PAUSED; + genPermeateDefState = FP_GENP_DEF_SUPPLY_WATER; genPermeateDefDataPublishInterval.data = PRE_GEN_DEF_PERMEATE_DATA_PUBLISH_INTERVAL; genPermeateDefDataPublishInterval.ovData = PRE_GEN_DEF_PERMEATE_DATA_PUBLISH_INTERVAL; genPermeateDefDataPublishInterval.ovInitData = 0; @@ -237,6 +237,7 @@ result = TRUE; pendingStartGenDefRequest = TRUE; requestNewFPOperationMode( FP_MODE_DEGP ); + setModeGenPDefTransition( genPermeateDefState ); return result; } Index: firmware/App/Modes/FPModes/StateFlushFilterDefeatured.c =================================================================== diff -u -r70a0840cbf7c2455cb6b814cba1241c253f0e9e3 -r65fc5c36624e283aca69aae3f35542ecfec0f24c --- firmware/App/Modes/FPModes/StateFlushFilterDefeatured.c (.../StateFlushFilterDefeatured.c) (revision 70a0840cbf7c2455cb6b814cba1241c253f0e9e3) +++ firmware/App/Modes/FPModes/StateFlushFilterDefeatured.c (.../StateFlushFilterDefeatured.c) (revision 65fc5c36624e283aca69aae3f35542ecfec0f24c) @@ -255,25 +255,32 @@ // check for inlet pressure (M3) within range 5 -10 if ( TRUE == didTimeout( filterFlushDefStaticPressureTimer, FILTER_FLUSH_STATIC_PRESSURE_CHECK_TIMEOUT ) ) { - if ( ( m3Pressure >= minThreshold ) && ( m3Pressure <= maxThreshold ) ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_FP_SKIP_PRE_GEN_FLUSH ) ) { isFlushDefComplete = TRUE; - state = FILTER_FLUSH_DEF_PAUSED; } - // when inlet pressure is < 5 - else if ( m3Pressure <= minThreshold ) + else { - // Trigger alarm if M3 pressure is not within range - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, m3Pressure, minThreshold ); - state = FILTER_FLUSH_DEF_PAUSED; + if ( ( m3Pressure >= minThreshold ) && ( m3Pressure <= maxThreshold ) ) + { + isFlushDefComplete = TRUE; + state = FILTER_FLUSH_DEF_PAUSED; + } + // when inlet pressure is < 5 + else if ( m3Pressure <= minThreshold ) + { + // Trigger alarm if M3 pressure is not within range + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, m3Pressure, minThreshold ); + state = FILTER_FLUSH_DEF_PAUSED; + } + // when inlet pressure is > 10 + else if ( m3Pressure >= maxThreshold ) + { + // Trigger alarm if M3 pressure is not within range + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, m3Pressure, maxThreshold ); + state = FILTER_FLUSH_DEF_PAUSED; + } } - // when inlet pressure is > 10 - else if ( m3Pressure >= maxThreshold ) - { - // Trigger alarm if M3 pressure is not within range - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, m3Pressure, maxThreshold ); - state = FILTER_FLUSH_DEF_PAUSED; - } } return state; Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r6d0bd19fb192dcd272fa773e8833862cc8a8f750 -r65fc5c36624e283aca69aae3f35542ecfec0f24c --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 6d0bd19fb192dcd272fa773e8833862cc8a8f750) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 65fc5c36624e283aca69aae3f35542ecfec0f24c) @@ -169,7 +169,7 @@ if ( TRUE == pendingStartDDPreGenRequest ) { // wait for IOFP GENP mode and when IOFP manual control is not set - if ( ( FP_MODE_GENP == fpMode ) && ( getTestConfigStatus( TEST_CONFIG_DD_RUN_SOLO ) == FALSE ) ) + if ( ( ( FP_MODE_GENP == fpMode ) || ( FP_MODE_DEGP == fpMode ) ) && ( getTestConfigStatus( TEST_CONFIG_DD_RUN_SOLO ) == FALSE ) ) { pendingStartDDPreGenRequest = FALSE; requestNewOperationMode( DD_MODE_PREG );