Index: firmware/App/Controllers/Ejector.c =================================================================== diff -u -r9a8e1fc597eb4f681527e691fb6cb24e550d8b92 -r6283801f1d66951025e6743858121d164e227c2a --- firmware/App/Controllers/Ejector.c (.../Ejector.c) (revision 9a8e1fc597eb4f681527e691fb6cb24e550d8b92) +++ firmware/App/Controllers/Ejector.c (.../Ejector.c) (revision 6283801f1d66951025e6743858121d164e227c2a) @@ -17,6 +17,7 @@ #include "AlarmMgmtTD.h" #include "Ejector.h" +#include "FpgaTD.h" #include "Messaging.h" #include "OperationModes.h" #include "PersistentAlarm.h" @@ -410,7 +411,7 @@ { EJECTOR_STATE_T state = EJECTOR_STATE_RETRACTING; - if ( ++ejectorOperationTimerCounter >= EJECTOR_RETRACT_OP_TIME ) + if ( ( ++ejectorOperationTimerCounter >= EJECTOR_RETRACT_OP_TIME ) || ( FALSE == getFPGAEjectorRetractOpticalSensor() ) ) { ejectorOperationTimerCounter = 0; setEjectorSpeed( EJECTOR_OFF_MOTOR_SPEED_RPM ); @@ -476,7 +477,7 @@ { EJECTOR_STATE_T state = EJECTOR_STATE_EXTENDING; - if ( ++ejectorOperationTimerCounter >= EJECTOR_EXTEND_OP_TIME ) + if ( ( ++ejectorOperationTimerCounter >= EJECTOR_EXTEND_OP_TIME ) || ( FALSE == getFPGAEjectorEngageOpticalSensor() ) ) { ejectorOperationTimerCounter = 0; setEjectorSpeed( EJECTOR_OFF_MOTOR_SPEED_RPM ); Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -r0eb4b76d5209ff2adf583a9ab6ec8f87a5aa011b -r6283801f1d66951025e6743858121d164e227c2a --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 0eb4b76d5209ff2adf583a9ab6ec8f87a5aa011b) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 6283801f1d66951025e6743858121d164e227c2a) @@ -62,6 +62,8 @@ #define FPGA_BACKUP_ALARM_AUDIO_CONVERT 0.4F ///< Converts backup (piezo) alarm audio ADC volts to amps. #define H9_SWITCH_MASK 0x0001 ///< Front door switch bit mask. Bit 0 of the GPIO register. +#define EJECTOR_OPTICAL_SNSR_RET_MASK 0x0010 ///< Ejector optical sensor retract bit mask. Bit 4 of the GPIO register. +#define EJECTOR_OPTICAL_SNSR_ENG_MASK 0x0020 ///< Ejectro optical sensor engage bit mask. Bit 5 of the GPIO register. #define FPGA_AIRTRAP_LEVEL_LOW_H17_MASK 0x0008 ///< Bit mask for air trap lower level sensor. #define FPGA_AIRTRAP_LEVEL_HIGH_H16_MASK 0x0004 ///< Bit mask for air trap upper level sensor. @@ -1182,6 +1184,36 @@ } /*********************************************************************//** + * The getFPGAEjectorRetractOpticalSensor function returns the FPGA ejector + * optical sensor retract status bit 4. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return TRUE if retract is inactive, FALSE if not. + *************************************************************************/ +BOOL getFPGAEjectorRetractOpticalSensor( void ) +{ + U16 ejectorOpticalRetract = fpgaSensorReadings.GPIOReg & EJECTOR_OPTICAL_SNSR_RET_MASK; + BOOL status = ( ejectorOpticalRetract != 0 ? FALSE : TRUE ); + + return status; +} + +/*********************************************************************//** + * The getFPGAEjectorEngageOpticalSensor function returns the FPGA ejector + * optical sensor engage status bit 5. + * @details \b Inputs: fpgaSensorReadings + * @details \b Outputs: none + * @return TRUE if engage is inactive, FALSE if not. + *************************************************************************/ +BOOL getFPGAEjectorEngageOpticalSensor( void ) +{ + U16 ejectorOpticalEngage = fpgaSensorReadings.GPIOReg & EJECTOR_OPTICAL_SNSR_ENG_MASK; + BOOL status = ( ejectorOpticalEngage != 0 ? FALSE : TRUE ); + + return status; +} + +/*********************************************************************//** * @brief * The getFPGAPBAADCTemperature function returns the PBA ADC temperature. * @details \b Inputs: fpgaSensorReadings Index: firmware/App/Services/FpgaTD.h =================================================================== diff -u -r87d45fcfcfdfa6d7638834181fd07bed56a3af67 -r6283801f1d66951025e6743858121d164e227c2a --- firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 87d45fcfcfdfa6d7638834181fd07bed56a3af67) +++ firmware/App/Services/FpgaTD.h (.../FpgaTD.h) (revision 6283801f1d66951025e6743858121d164e227c2a) @@ -144,6 +144,8 @@ U16 getFPGAInletFan1TogglePeriod( void ); BOOL getH9FrontDoorClosedStatus( void ); +BOOL getFPGAEjectorRetractOpticalSensor( void ); +BOOL getFPGAEjectorEngageOpticalSensor( void ); /**@}*/