Index: firmware/App/Controllers/PermeateTank.c =================================================================== diff -u -r937362196a40d7d55b1b61e33f88c382184fbf2f -r8d27c30384b9bce99420fc0751d359c4b3871ea4 --- firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision 937362196a40d7d55b1b61e33f88c382184fbf2f) +++ firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision 8d27c30384b9bce99420fc0751d359c4b3871ea4) @@ -301,21 +301,19 @@ setValveState( M12_VALV, VALVE_STATE_OPEN ); setValveState( P6_VALV, VALVE_STATE_CLOSED ); setValveState( P11_VALV, VALVE_STATE_OPEN ); - setValveState( P33_VALV, VALVE_STATE_OPEN ); // TODO - Change valves to handle RO rejection config - setValveState( P34_VALV, VALVE_STATE_CLOSED ); // Current set to Medium recovery for Beta1 HW and High recovery for Beta2 HW - setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_OPEN ); + // set P33, P34 and P37 per recovery configuration + setRecoveryValvesConfig(); break; case PERMEATE_TANK_FULL_STATE: setValveState( M4_VALV, VALVE_STATE_CLOSED ); setValveState( M12_VALV, VALVE_STATE_OPEN ); setValveState( P6_VALV, VALVE_STATE_OPEN ); setValveState( P11_VALV, VALVE_STATE_OPEN ); - setValveState( P33_VALV, VALVE_STATE_OPEN ); - setValveState( P34_VALV, VALVE_STATE_CLOSED ); - setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_CLOSED ); + // set P33, P34 and P37 per recovery configuration + setRecoveryValvesConfig(); break; default: Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r937362196a40d7d55b1b61e33f88c382184fbf2f -r8d27c30384b9bce99420fc0751d359c4b3871ea4 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 937362196a40d7d55b1b61e33f88c382184fbf2f) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 8d27c30384b9bce99420fc0751d359c4b3871ea4) @@ -524,6 +524,48 @@ /*********************************************************************//** * @brief + * The setRecoveryValvesConfig function sets all recovery valves per + * recovery configuration from institutional record. + * @details \b Inputs: none + * @details \b Outputs: valve states + * @return none. + *************************************************************************/ +void setRecoveryValvesConfig( void ) +{ + // TODO define hdInstitutionalRecord and get the NVData when it's ready +// RECOVERY_STATE_T recoveryState = (RECOVERY_STATE_T)hdInstitutionalRecord.recoveryConfig; + RECOVERY_STATE_T recoveryState = MAX_RECOVERY; + + // Set all P33, P34 and P37 valves per recovery configuration + switch( recoveryState ) + { + case NO_RECOVERY: + setValveState( P33_VALV, VALVE_STATE_CLOSED ); + setValveState( P34_VALV, VALVE_STATE_CLOSED ); + setValveState( P37_VALV, VALVE_STATE_CLOSED ); + break; + + case MEDIUM_RECOVERY: + setValveState( P33_VALV, VALVE_STATE_OPEN ); + setValveState( P34_VALV, VALVE_STATE_CLOSED ); + setValveState( P37_VALV, VALVE_STATE_OPEN ); + break; + + case MAX_RECOVERY: + setValveState( P33_VALV, VALVE_STATE_OPEN ); + setValveState( P34_VALV, VALVE_STATE_CLOSED ); + setValveState( P37_VALV, VALVE_STATE_CLOSED ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, FP_FAULT_ID_FP_INVALID_RECOVERY_VALVE_STATE, recoveryState ) + break; + } + +} + +/*********************************************************************//** + * @brief * The publishValvesStates function publishes DD valves states at the set interval. * @details \b Inputs: valvesStatesPublicationTimerCounter * @details \b Outputs: valvesStatesPublicationTimerCounter Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r8d27c30384b9bce99420fc0751d359c4b3871ea4 --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision 8d27c30384b9bce99420fc0751d359c4b3871ea4) @@ -37,6 +37,15 @@ NUM_OF_VALVE_STATES ///< number of valve states } VALVE_STATE_NAMES_T; +/// Enumerations for water recovery options +typedef enum recovery_States +{ + NO_RECOVERY = 0, ///< NO recovery + MEDIUM_RECOVERY, ///< Medium recovery + MAX_RECOVERY, ///< Maximum recovery + NUM_OF_RECOVERY_STATES ///< Number of recovery states +} RECOVERY_STATE_T; + #define NUM_OF_DD_VALVES ( ( LAST_DD_VALVE - FIRST_DD_VALVE ) + 1 ) #define NUM_OF_IOFP_VALVES ( ( LAST_FP_VALVE - FIRST_IO_VALVE ) + 1 ) #define NUM_OF_IO_VALVES ( ( LAST_IO_VALVE - FIRST_IO_VALVE ) + 1 ) @@ -76,6 +85,7 @@ BOOL setValveStateDelayed( DD_VALVES_T valve, VALVE_STATE_NAMES_T valveState, U32 delayMs ); VALVE_STATE_NAMES_T getValveStateName( DD_VALVES_T valveID ); void setHydValvesStatetoClosedState( void ); +void setRecoveryValvesConfig( void ); BOOL testValvesStatesPublishIntervalOverride( MESSAGE_T *message ); BOOL testValveStateOverride( MESSAGE_T *message ); Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -r973f790125e70115662d979f5f5631bb9df081f0 -r8d27c30384b9bce99420fc0751d359c4b3871ea4 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 973f790125e70115662d979f5f5631bb9df081f0) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 8d27c30384b9bce99420fc0751d359c4b3871ea4) @@ -193,10 +193,9 @@ setValveState( M12_VALV, VALVE_STATE_OPEN ); setValveState( P6_VALV, VALVE_STATE_CLOSED ); setValveState( P11_VALV, VALVE_STATE_OPEN ); - setValveState( P33_VALV, VALVE_STATE_OPEN ); // TODO - Change valves to handle RO rejection config - setValveState( P34_VALV, VALVE_STATE_CLOSED ); // Current set to Medium recovery for Beta1 HW and High recovery for Beta2 HW - setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_OPEN ); + // set P33, P34 and P37 per recovery configuration + setRecoveryValvesConfig(); startPermeateTankControl(); if ( TRUE == isBoostPumpInstalled() ) Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rbd896114f304304a7096b30b2a85067a64645e82 -r8d27c30384b9bce99420fc0751d359c4b3871ea4 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision bd896114f304304a7096b30b2a85067a64645e82) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 8d27c30384b9bce99420fc0751d359c4b3871ea4) @@ -280,6 +280,7 @@ FP_FAULT_ID_FP_INVALD_GENP_DEF_STATE = 122, FP_FAULT_ID_FP_INVALID_PERMEATE_TANK_STATE = 123, FP_FAULT_ID_FP_INVALID_INLET_PRESSURE_CHECK_STATE = 124, + FP_FAULT_ID_FP_INVALID_RECOVERY_VALVE_STATE = 125, NUM_OF_FP_FAULT_IDS } FP_SW_FAULT_ID_T;