Index: firmware/App/Drivers/RotaryValve.c =================================================================== diff -u -r8de3c971a08a5e2d822a6a1d1d1c477b6d4cbd5b -r9d11c51da60da3f8d2917433938a583f8a105318 --- firmware/App/Drivers/RotaryValve.c (.../RotaryValve.c) (revision 8de3c971a08a5e2d822a6a1d1d1c477b6d4cbd5b) +++ firmware/App/Drivers/RotaryValve.c (.../RotaryValve.c) (revision 9d11c51da60da3f8d2917433938a583f8a105318) @@ -213,7 +213,125 @@ return result; } +/*********************************************************************//** + * @brief + * The resetValve function resets the valve. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid valve given. + * @details \b Inputs: valveStatus[] + * @details \b Outputs: none + * @param valve ID of valve to get status for + * @return none + *************************************************************************/ +void resetValve( VALVE_T valve ) +{ + U08 resetValve = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_ENABLE_ENCODER | FPGA_PINCH_VALVES_DISABLE | + FPGA_PINCH_VALVES_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; + switch ( valve ) + { + case H1_VALV: + setH1Control( resetValve ); + break; + + case H19_VALV: + setH19Control( resetValve ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_RESET_REQ, (U32)valve ) + break; + } +} + +/*********************************************************************//** + * @brief + * The resetValveEncoder function resets the valve's encoder. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid valve given. + * @details \b Inputs: valveStatus[] + * @details \b Outputs: none + * @param valve ID of valve to get status for + * @return none + *************************************************************************/ +void resetValveEncoder( VALVE_T valve ) +{ + U08 resetEnc = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_RESET_ENCODER | FPGA_PINCH_VALVES_DISABLE | + FPGA_PINCH_VALVES_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; + + switch ( valve ) + { + case H1_VALV: + setH1Control( resetEnc ); + break; + + case H19_VALV: + setH19Control( resetEnc ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_RESET_ENCODER_REQ, (U32)valve ) + break; + } +} + +/*********************************************************************//** + * @brief + * The enableValve function enables the valve. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid valve given. + * @details \b Inputs: valveStatus[] + * @details \b Outputs: none + * @param valve ID of valve to get status for + * @return none + *************************************************************************/ +void enableValve( VALVE_T valve ) +{ + U08 enableValve = FPGA_PINCH_VALVES_1_8_STEP | FPGA_PINCH_VALVES_ENABLE_ENCODER | FPAG_PINCH_VALVES_ENABLE | + FPGA_PINCH_VALVES_NOT_RESET | FPGA_PINCH_VALVES_NOT_SLEEP; + + switch ( valve ) + { + case H1_VALV: + setH1Control( enableValve ); + break; + + case H19_VALV: + setH19Control( enableValve ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ENABLE_REQ, (U32)valve ) + break; + } +} + +/*********************************************************************//** + * @brief + * The setValveZeroEncoderPosition function zeros the valve's encoders position. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid valve given. + * @details \b Inputs: valveStatus[] + * @details \b Outputs: none + * @param valve ID of valve to get status for + * @return none + *************************************************************************/ +void setValveZeroEncoderPosition( VALVE_T valve ) +{ + // First enable the valve and then set the position to 0 to clear the FPGA command registers + switch ( valve ) + { + case H1_VALV: + setH1Position( 0 ); + break; + + case H19_VALV: + setH19Position( 0 ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ENCODER_REQ, (U32)valve ) + break; + } +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/