Index: firmware/App/Drivers/CPLD.c =================================================================== diff -u -r0a4dcd288d4347b85baaa0b07da568b6add5eac7 -r7a34213f25ce25594311b77a3d003c1e65293a60 --- firmware/App/Drivers/CPLD.c (.../CPLD.c) (revision 0a4dcd288d4347b85baaa0b07da568b6add5eac7) +++ firmware/App/Drivers/CPLD.c (.../CPLD.c) (revision 7a34213f25ce25594311b77a3d003c1e65293a60) @@ -43,11 +43,13 @@ #define GREEN_SPI5_PORT_MASK 0x00000200 ///< (CLK - re-purposed as output GPIO) for green alarm lamp signal. #define BLUE_SPI5_PORT_MASK 0x00000400 ///< (SIMO[0] - re-purposed as output GPIO) for blue alarm lamp signal. #define RED_SPI5_PORT_MASK 0x00000800 ///< (SOMI[0] - re-purposed as output GPIO) for red alarm lamp signal. +#define AC_PRESENT_SPI5_PORT_MASK 0x00000001 ///< (SOMI[0] - re-purposed as output GPIO) for red alarm lamp signal. // CPLD pin I/O macros #define GET_OFF() (PIN_SIGNAL_STATE_T)(gioGetBit(gioPORTA, OFF_BUTTON_GIO_PORT_PIN)) ///< Macro to get off button signal state. #define GET_STOP() (PIN_SIGNAL_STATE_T)(gioGetBit(gioPORTA, STOP_BUTTON_GIO_PORT_PIN)) ///< Macro to get stop button signal state. -#define GET_WD_EXP() (PIN_SIGNAL_STATE_T)(gioGetBit(gioPORTB, WD_EXP_GIO_PORT_PIN)) ///< Macro to get watchdog expired signal state. +#define GET_WD_EXP() (PIN_SIGNAL_STATE_T)(gioGetBit(gioPORTB, WD_EXP_GIO_PORT_PIN)) ///< Macro to get watchdog expired signal state. +#define GET_AC_PRESENT() (PIN_SIGNAL_STATE_T)(mibspiREG5->PC2 & AC_PRESENT_SPI5_PORT_MASK) ///< Macro to get A/C power present signal state. #define TGL_WD_PET() gioToggleBit( gioPORTB, WD_PET_GIO_PORT_PIN ) ///< Macro to toggle watchdog pet signal state. #define TGL_OFF_REQ() gioToggleBit( gioPORTB, OFF_REQUEST_GIO_PORT_PIN) ///< Macro to toggle power off request signal state. @@ -110,6 +112,22 @@ PIN_SIGNAL_STATE_T level = GET_WD_EXP(); return level; +} + +/*********************************************************************//** + * @brief + * The getCPLDACPowerLossDetected function determines whether the CPLD is + * reporting A/C power has been lost. + * @details Inputs: Signal from CPLD on A/C presence pin. + * @details Outputs: none + * @return TRUE if A/C power loss is detected, FALSE if not + *************************************************************************/ +BOOL getCPLDACPowerLossDetected( void ) +{ + PIN_SIGNAL_STATE_T acLevel = GET_AC_PRESENT(); + BOOL acLost = ( PIN_SIGNAL_HIGH == acLevel ? FALSE : TRUE ); + + return acLost; } /*********************************************************************//**