Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r83d899ff346f6266c9dec6386caa74f2c41b5d0c -r82264ecfb5d228c4156aa4a1690b34d0c7e3cc34 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 83d899ff346f6266c9dec6386caa74f2c41b5d0c) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 82264ecfb5d228c4156aa4a1690b34d0c7e3cc34) @@ -7,8 +7,8 @@ * * @file Valves.c * -* @author (last) Michael Garthwaite -* @date (last) 12-Dec-2025 +* @author (last) “Raghu +* @date (last) 04-Feb-2026 * * @author (original) Vinayakam Mani * @date (original) 26-Aug-2024 @@ -124,8 +124,9 @@ fpValveStatesPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; // reset valves states publication timer readCommandedValveStates(); + // TODO set FPGA PWM after finalizing the decision on valve strike and hold behavior // initially set valve PWM configuration and enable - //setFPGAPWMConfigurations(); +// setFPGAPWMConfigurations(); // initially set all valves to de-energized state via FPGA setFPGADDValveStates( commandedValvesStates ); @@ -331,7 +332,7 @@ ( D19_VALV == valveID ) || ( D25_VALV == valveID ) || ( D21_VALV == valveID ) || ( D24_VALV == valveID ) || ( D20_VALV == valveID ) || ( D26_VALV == valveID ) || ( D22_VALV == valveID ) || ( D80_VALV == valveID ) || ( D81_VALV == valveID ) || ( D79_PMP_VALV == valveID ) || ( P11_VALV == valveID ) || ( P33_VALV == valveID ) || ( P34_VALV == valveID ) || ( P37_VALV == valveID ) || ( P6_VALV == valveID ) || - ( M12_VALV == valveID ) || ( P39_VALV == valveID ) ) + ( M12_VALV == valveID ) || ( P39_VALV == valveID ) || ( D83_VALV == valveID ) || ( D91_VALV == valveID ) || ( D100_VALV == valveID ) || ( D85_VALV == valveID ) ) { result = TRUE; } @@ -523,6 +524,47 @@ /*********************************************************************//** * @brief + * The setRecoveryValvesConfig function sets all recovery valves per + * recovery configuration from institutional record. + * @details \b Inputs: none + * @details \b Outputs: P33, P34 and P37 recovery 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