Index: firmware/App/Drivers/CPLD.c =================================================================== diff -u -r30f049651877229042e3f8700c8596e5b9a1e0f4 -rcd5be724d5a3ba7457e761191d82f278654d7f5c --- firmware/App/Drivers/CPLD.c (.../CPLD.c) (revision 30f049651877229042e3f8700c8596e5b9a1e0f4) +++ firmware/App/Drivers/CPLD.c (.../CPLD.c) (revision cd5be724d5a3ba7457e761191d82f278654d7f5c) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * -* @file CPLD.c +* @file CPLD.c * -* @author (last) Sean Nash -* @date (last) 24-Sep-2020 +* @author (last) Sean Nash +* @date (last) 03-Apr-2023 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -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; } /*********************************************************************//**