Fisheye: Tag 772fdd144e4006fada12a2e91519378b29d54bae refers to a dead (removed) revision in file `firmware/App/Drivers/CpldIO.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Drivers/GPIO.c =================================================================== diff -u --- firmware/App/Drivers/GPIO.c (revision 0) +++ firmware/App/Drivers/GPIO.c (revision 772fdd144e4006fada12a2e91519378b29d54bae) @@ -0,0 +1,334 @@ +/************************************************************************** +* +* Copyright (c) 2024-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 GPIO.c +* +* @author (last) Sean +* @date (last) 07-Aug-2024 +* +* @author (original) Sean +* @date (original) 07-Aug-2024 +* +***************************************************************************/ + +#include "gio.h" +#include "mibspi.h" + +#include "GPIO.h" + +/** + * @addtogroup GPIO + * @{ + */ + +// ********** private definitions ********** + +#define SAFETY_SHUTDOWN_POST_TIMEOUT_MS 500 ///< Safety shutdown POST test timeout (in ms). +#define SAFETY_SHUTDOWN_RECOVERY_TIME_MS 500 ///< After safety shutdown POST test, wait this long (in ms) to recover before moving on. + +#define MAX_24V_LEVEL_ON_SAFETY_SHUTDOWN 5.0F ///< Maximum voltage on 24V line when safety shutdown asserted. +#define MIN_24V_LEVEL_ON_SAFETY_RECOVER 22.6F ///< Minimum voltage on 24V line when safety shutdown is recovered. +#define MIN_BACKUP_ALARM_CURRENT_MA 200.0F ///< Minimum backup alarm audio current (in mA) detected when safety shutdown asserted. +#define MAX_BACKUP_ALARM_CURRENT_MA 10.0F ///< Maximum backup alarm audio current (in mA) detected when safety shutdown is recovered. + +#define SAFETY_POST_24V_INITIAL 0 ///< Safety shutdown POST failed because 24V was out before safety line pulled. +#define SAFETY_POST_24V_NOT_CUT 1 ///< Safety shutdown POST failed because 24V was not cut when safety line pulled. +#define SAFETY_POST_NO_24V_RESTORE 2 ///< Safety shutdown POST failed because 24V was not restored when safety line reset. + +/// Enumeration of safety shutdown self-test states. +typedef enum Safety_Shutdown_Self_Test_States +{ + SAFETY_SHUTDOWN_SELF_TEST_STATE_START = 0, ///< Safety shutdown self-test start state + SAFETY_SHUTDOWN_SELF_TEST_STATE_IN_PROGRESS, ///< Safety shutdown self-test in progress state + SAFETY_SHUTDOWN_SELF_TEST_STATE_RECOVER, ///< Safety shutdown self-test recovery state + SAFETY_SHUTDOWN_SELF_TEST_STATE_COMPLETE, ///< Safety shutdown self-test completed state + NUM_OF_SAFETY_SHUTDOWN_SELF_TEST_STATES ///< Number of safety shutdown self-test states +} SAFETY_SHUTDOWN_SELF_TEST_STATE_T; + +// GIO port A pin assignments for pins connected to CPLD +#define OFF_BUTTON_GIO_PORT_PIN 0U ///< GPIO pin ID on port A for off button input signal. +#define STOP_BUTTON_GIO_PORT_PIN 1U ///< GPIO pin ID on port A for stop button input signal. +#define SAFETY_GIO_PORT_PIN 3U ///< GPIO pin ID on port A for safety shutdown output signal + +// GIO port B pin assignments for pins connected to CPLD +#define OFF_REQUEST_GIO_PORT_PIN 0U ///< GPIO pin ID on port B for power off request output signal. +#define WD_PET_GIO_PORT_PIN 1U ///< GPIO pin ID on port B for watchdog pet output signal. +#define SAFE_GIO_PORT_PIN 2U ///< GPIO pin ID on port B for safety shutdown input signal. + +// MIBSPI5 port pin assignments for pins connected to CPLD +#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_SAFETY() (PIN_SIGNAL_STATE_T)(gioGetBit(gioPORTB, SAFE_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. +#define SET_WD_PET() gioSetBit( gioPORTB, WD_PET_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) ///< Macro to set watchdog pet signal state high. +#define SET_OFF_REQ() gioSetBit( gioPORTB, OFF_REQUEST_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) ///< Macro to set power off request signal state high. +#define SET_GREEN() {mibspiREG5->PC3 |= GREEN_SPI5_PORT_MASK;} ///< Macro to set green alarm lamp signal state high. +#define SET_BLUE() {mibspiREG5->PC3 |= BLUE_SPI5_PORT_MASK;} ///< Macro to set blue alarm lamp signal state high. +#define SET_RED() {mibspiREG5->PC3 |= RED_SPI5_PORT_MASK;} ///< Macro to set red alarm lamp signal state high. + +#define CLR_WD_PET() gioSetBit( gioPORTB, WD_PET_GIO_PORT_PIN, PIN_SIGNAL_LOW ) ///< Macro to set watchdog pet signal state low. +#define CLR_OFF_REQ() gioSetBit( gioPORTB, OFF_REQUEST_GIO_PORT_PIN, PIN_SIGNAL_LOW ) ///< Macro to set power off request signal state low. +#define CLR_GREEN() {mibspiREG5->PC3 &= ~GREEN_SPI5_PORT_MASK;} ///< Macro to set green alarm lamp signal state low. +#define CLR_BLUE() {mibspiREG5->PC3 &= ~BLUE_SPI5_PORT_MASK;} ///< Macro to set blue alarm lamp signal state low. +#define CLR_RED() {mibspiREG5->PC3 &= ~RED_SPI5_PORT_MASK;} ///< Macro to set red alarm lamp signal state low. + +// CPLD pin I/O macros +#define SET_SAFETY_SHUTDOWN() gioSetBit( gioPORTB, SAFETY_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) +#define CLR_SAFETY_SHUTDOWN() gioSetBit( gioPORTB, SAFETY_GIO_PORT_PIN, PIN_SIGNAL_LOW ) + +/*********************************************************************//** + * @brief + * The toggleWatchdogPetSignal function toggles the watchdog pet output + * signal on its GPIO pin. + * @details Inputs: none + * @details Outputs: Watchdog pet output signal toggled + * @return none + *************************************************************************/ +void toggleWatchdogPetSignal( void ) +{ + TGL_WD_PET(); +} + +/*********************************************************************//** + * @brief + * The setWatchdogPetSignal function sets the watchdog pet output + * signal on its GPIO pin to HIGH. + * @details Inputs: none + * @details Outputs: Watchdog pet output signal set high + * @return none + *************************************************************************/ +void setWatchdogPetSignal( void ) +{ + SET_WD_PET(); +} + +/*********************************************************************//** + * @brief + * The clrWatchdogPetSignal function sets the watchdog pet output + * signal on its GPIO pin to LOW. + * @details Inputs: none + * @details Outputs: Watchdog pet output signal set low + * @return none + *************************************************************************/ +void clrWatchdogPetSignal( void ) +{ + CLR_WD_PET(); +} + +/*********************************************************************//** + * @brief + * The togglePowerOffRequestSignal function toggles the power off output + * signal on its GPIO pin. + * @details Inputs: none + * @details Outputs: Power off output signal toggled + * @return none + *************************************************************************/ +void togglePowerOffRequestSignal( void ) +{ + TGL_OFF_REQ(); +} + +/*********************************************************************//** + * @brief + * The setPowerOffRequestSignal function sets the power off output + * signal on its GPIO pin to HIGH. + * @details Inputs: none + * @details Outputs: Power off output signal set high + * @return none + *************************************************************************/ +void setPowerOffRequestSignal( void ) +{ + SET_OFF_REQ(); +} + +/*********************************************************************//** + * @brief + * The clrPowerOffRequestSignal function sets the power off output + * signal on its GPIO pin to LOW. + * @details Inputs: none + * @details Outputs: Power off output signal set low + * @return none + *************************************************************************/ +void clrPowerOffRequestSignal( void ) +{ + CLR_OFF_REQ(); +} + +/*********************************************************************//** + * @brief + * The getACPowerPresentSignal function gets the AC power present input + * signal currently seen on its GPIO pin. + * @details Inputs: AC power present input signal + * @details Outputs: none + * @return AC power present input signal + *************************************************************************/ +PIN_SIGNAL_STATE_T getACPowerPresentSignal( void ) +{ + PIN_SIGNAL_STATE_T signal = GET_AC_PRESENT(); + + return signal; +} + +/*********************************************************************//** + * @brief + * The setAlarmLampGreenSignal function sets the alarm lamp green output + * signal on its GPIO pin to HIGH. + * @details Inputs: none + * @details Outputs: Alarm lamp green output signal set high + * @return none + *************************************************************************/ +void setAlarmLampGreenSignal( void ) +{ + SET_GREEN(); +} + +/*********************************************************************//** + * @brief + * The setAlarmLampBlueSignal function sets the alarm lamp blue output + * signal on its GPIO pin to HIGH. + * @details Inputs: none + * @details Outputs: Alarm lamp blue output signal set high + * @return none + *************************************************************************/ +void setAlarmLampBlueSignal( void ) +{ + SET_BLUE(); +} + +/*********************************************************************//** + * @brief + * The setAlarmLampRedSignal function sets the alarm lamp red output + * signal on its GPIO pin to HIGH. + * @details Inputs: none + * @details Outputs: Alarm lamp red output signal set high + * @return none + *************************************************************************/ +void setAlarmLampRedSignal( void ) +{ + SET_RED(); +} + +/*********************************************************************//** + * @brief + * The clrAlarmLampGreenSignal function sets the alarm lamp green output + * signal on its GPIO pin to LOW. + * @details Inputs: none + * @details Outputs: Alarm lamp green output signal set low + * @return none + *************************************************************************/ +void clrAlarmLampGreenSignal( void ) +{ + CLR_GREEN(); +} + +/*********************************************************************//** + * @brief + * The clrAlarmLampBlueSignal function sets the alarm lamp blue output + * signal on its GPIO pin to LOW. + * @details Inputs: none + * @details Outputs: Alarm lamp blue output signal set low + * @return none + *************************************************************************/ +void clrAlarmLampBlueSignal( void ) +{ + CLR_BLUE(); +} + +/*********************************************************************//** + * @brief + * The clrAlarmLampRedSignal function sets the alarm lamp red output + * signal on its GPIO pin to LOW. + * @details Inputs: none + * @details Outputs: Alarm lamp red output signal set low + * @return none + *************************************************************************/ +void clrAlarmLampRedSignal( void ) +{ + CLR_RED(); +} + +/*********************************************************************//** + * @brief + * The setSafetyShutdownSignal function sets the safety shutdown output + * signal on its GPIO pin to HIGH. + * @details Inputs: none + * @details Outputs: Safety shutdown output signal set high + * @return none + *************************************************************************/ +void setSafetyShutdownSignal( void ) +{ + SET_SAFETY_SHUTDOWN(); +} + +/*********************************************************************//** + * @brief + * The clrSafetyShutdownSignal function sets the safety shutdown output + * signal on its GPIO pin to LOW. + * @details Inputs: none + * @details Outputs: Safety shutdown output signal set low + * @return none + *************************************************************************/ +void clrSafetyShutdownSignal( void ) +{ + CLR_SAFETY_SHUTDOWN(); +} + +/*********************************************************************//** + * @brief + * The getSafetySignal function gets the safety shutdown input signal + * currently seen on its GPIO pin. + * @details Inputs: Safety shutdown input signal + * @details Outputs: none + * @return Safety shutdown input signal + *************************************************************************/ +PIN_SIGNAL_STATE_T getSafetySignal( void ) +{ + PIN_SIGNAL_STATE_T signal = GET_SAFETY(); + + return signal; +} + +/*********************************************************************//** + * @brief + * The getOffButtonSignal function gets the off button input signal + * currently seen on its GPIO pin. + * @details Inputs: Off button input signal + * @details Outputs: none + * @return Off button input signal + *************************************************************************/ +PIN_SIGNAL_STATE_T getOffButtonSignal( void ) +{ + PIN_SIGNAL_STATE_T signal = GET_OFF(); + + return signal; +} + +/*********************************************************************//** + * @brief + * The getStopButtonSignal function gets the stop button input signal + * currently seen on its GPIO pin. + * @details Inputs: stop button input signal + * @details Outputs: none + * @return Stop button input signal + *************************************************************************/ +PIN_SIGNAL_STATE_T getStopButtonSignal( void ) +{ + PIN_SIGNAL_STATE_T signal = GET_STOP(); + + return signal; +} + +/**@}*/ Index: firmware/App/Drivers/GPIO.h =================================================================== diff -u --- firmware/App/Drivers/GPIO.h (revision 0) +++ firmware/App/Drivers/GPIO.h (revision 772fdd144e4006fada12a2e91519378b29d54bae) @@ -0,0 +1,59 @@ +/************************************************************************** +* +* Copyright (c) 2024-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 GPIO.h +* +* @author (last) Sean +* @date (last) 07-Aug-2024 +* +* @author (original) Sean +* @date (original) 07-Aug-2024 +* +***************************************************************************/ + +#ifndef __GPIO_H__ +#define __GPIO_H__ + +#include "TDCommon.h" + +/** + * @defgroup GPIO GPIO + * @brief The GPIO module provides definitions and GPIO pin access abstraction + * functions to provide low-level GPIO interface. + * + * @addtogroup GPIO + * @{ + */ + +// ********** public function prototypes ********** + +void toggleWatchdogPetSignal( void ); +void setWatchdogPetSignal( void ); +void clrWatchdogPetSignal( void ); + +void togglePowerOffRequestSignal( void ); +void setPowerOffRequestSignal( void ); +void clrPowerOffRequestSignal( void ); +PIN_SIGNAL_STATE_T getACPowerPresentSignal( void ); + +void setAlarmLampGreenSignal( void ); +void setAlarmLampBlueSignal( void ); +void setAlarmLampRedSignal( void ); +void clrAlarmLampGreenSignal( void ); +void clrAlarmLampBlueSignal( void ); +void clrAlarmLampRedSignal( void ); + +void setSafetyShutdownSignal( void ); +void clrSafetyShutdownSignal( void ); +PIN_SIGNAL_STATE_T getSafetySignal( void ); + +PIN_SIGNAL_STATE_T getOffButtonSignal( void ); +PIN_SIGNAL_STATE_T getStopButtonSignal( void ); + +/**@}*/ + +#endif Index: firmware/App/Services/CpldInterface.c =================================================================== diff -u -r766e65a173747dd60a9faae1cac228cd5f8a55a6 -r772fdd144e4006fada12a2e91519378b29d54bae --- firmware/App/Services/CpldInterface.c (.../CpldInterface.c) (revision 766e65a173747dd60a9faae1cac228cd5f8a55a6) +++ firmware/App/Services/CpldInterface.c (.../CpldInterface.c) (revision 772fdd144e4006fada12a2e91519378b29d54bae) @@ -18,8 +18,8 @@ #include "gio.h" #include "mibspi.h" -#include "CpldIO.h" #include "CpldInterface.h" +#include "GPIO.h" #include "Messaging.h" #include "Timers.h" @@ -71,18 +71,18 @@ void initCPLD( void ) { // Initialize watchdog pet output low (inactive) - CLR_WD_PET(); + clrWatchdogPetSignal(); // Initialize power off request output low (inactive) - CLR_OFF_REQ(); + clrPowerOffRequestSignal(); // Initialize alarm lamp color LED outputs low (off) - CLR_GREEN(); - CLR_RED(); - CLR_BLUE(); + clrAlarmLampGreenSignal(); + clrAlarmLampRedSignal(); + clrAlarmLampBlueSignal(); // Initialize safety shutdown - CLR_SAFETY_SHUTDOWN(); + clrSafetyShutdownSignal(); safetyShutdownActivated = FALSE; safetyShutdownOverrideResetState = FALSE; safetyShutdownSelfTestState = SAFETY_SHUTDOWN_SELF_TEST_STATE_START; @@ -99,7 +99,7 @@ *************************************************************************/ void toggleCPLDWatchdog( void ) { - TGL_WD_PET(); + toggleWatchdogPetSignal(); } /*********************************************************************//** @@ -112,7 +112,7 @@ *************************************************************************/ PIN_SIGNAL_STATE_T getCPLDWatchdogExpired( void ) { - PIN_SIGNAL_STATE_T level = GET_WD_EXP(); + PIN_SIGNAL_STATE_T level = getSafetySignal(); return level; } @@ -127,7 +127,7 @@ *************************************************************************/ BOOL getCPLDACPowerLossDetected( void ) { - PIN_SIGNAL_STATE_T acLevel = GET_AC_PRESENT(); + PIN_SIGNAL_STATE_T acLevel = getACPowerPresentSignal(); BOOL acLost = ( PIN_SIGNAL_HIGH == acLevel ? FALSE : TRUE ); return acLost; @@ -146,11 +146,11 @@ { if ( level == PIN_SIGNAL_HIGH ) { - SET_GREEN(); + setAlarmLampGreenSignal(); } else { - CLR_GREEN(); + clrAlarmLampGreenSignal(); } } @@ -167,11 +167,11 @@ { if ( level == PIN_SIGNAL_HIGH ) { - SET_BLUE(); + setAlarmLampBlueSignal(); } else { - CLR_BLUE(); + clrAlarmLampBlueSignal(); } } @@ -188,11 +188,11 @@ { if ( level == PIN_SIGNAL_HIGH ) { - SET_RED(); + setAlarmLampRedSignal(); } else { - CLR_RED(); + clrAlarmLampRedSignal(); } } @@ -208,7 +208,7 @@ *************************************************************************/ void toggleCPLDOffRequest( void ) { - TGL_OFF_REQ(); + togglePowerOffRequestSignal(); } /*********************************************************************//** @@ -221,7 +221,7 @@ *************************************************************************/ PIN_SIGNAL_STATE_T getCPLDOffButton( void ) { - PIN_SIGNAL_STATE_T level = GET_OFF(); + PIN_SIGNAL_STATE_T level = getOffButtonSignal(); return level; } @@ -236,7 +236,7 @@ *************************************************************************/ PIN_SIGNAL_STATE_T getCPLDStopButton( void ) { - PIN_SIGNAL_STATE_T level = GET_STOP(); + PIN_SIGNAL_STATE_T level = getStopButtonSignal(); return level; } @@ -251,7 +251,7 @@ void activateSafetyShutdown( void ) { safetyShutdownActivated = TRUE; - SET_SAFETY_SHUTDOWN(); + setSafetyShutdownSignal(); // SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SAFETY_LINE, 1, 0 ) } @@ -313,7 +313,7 @@ // safetyShutdownSelfTestStatus = SELF_TEST_STATUS_FAILED; // } safetyShutdownSelfTestTimerCount = getMSTimerCount(); - CLR_SAFETY_SHUTDOWN(); + clrSafetyShutdownSignal(); safetyShutdownActivated = FALSE; safetyShutdownSelfTestState = SAFETY_SHUTDOWN_SELF_TEST_STATE_RECOVER; } @@ -392,7 +392,7 @@ else { safetyShutdownActivated = FALSE; - CLR_SAFETY_SHUTDOWN(); + clrSafetyShutdownSignal(); } result = TRUE; } @@ -421,7 +421,7 @@ else { safetyShutdownActivated = FALSE; - CLR_SAFETY_SHUTDOWN(); + clrSafetyShutdownSignal(); } result = TRUE; } Index: firmware/App/Services/CpldInterface.h =================================================================== diff -u -r766e65a173747dd60a9faae1cac228cd5f8a55a6 -r772fdd144e4006fada12a2e91519378b29d54bae --- firmware/App/Services/CpldInterface.h (.../CpldInterface.h) (revision 766e65a173747dd60a9faae1cac228cd5f8a55a6) +++ firmware/App/Services/CpldInterface.h (.../CpldInterface.h) (revision 772fdd144e4006fada12a2e91519378b29d54bae) @@ -18,7 +18,7 @@ #ifndef __CPLD_H__ #define __CPLD_H__ -#include "TDCommon.h" +#include "TDCommon.h" /** * @defgroup CPLD_Interface CPLD_Interface Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r766e65a173747dd60a9faae1cac228cd5f8a55a6 -r772fdd144e4006fada12a2e91519378b29d54bae --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 766e65a173747dd60a9faae1cac228cd5f8a55a6) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 772fdd144e4006fada12a2e91519378b29d54bae) @@ -482,9 +482,7 @@ if ( 0 == message->hdr.payloadLen ) { // S/w reset of processor result = TRUE; // Reset will prevent this from getting transmitted though -#ifndef _VECTORCAST_ systemREG1->SYSECR = (0x2) << 14; // Reset processor -#endif } sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result );