Index: firmware/App/Controllers/AlarmAudio.c =================================================================== diff -u -r9d755b0734315e11c8fef5768815697d3bd50287 -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Controllers/AlarmAudio.c (.../AlarmAudio.c) (revision 9d755b0734315e11c8fef5768815697d3bd50287) +++ firmware/App/Controllers/AlarmAudio.c (.../AlarmAudio.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -81,6 +81,7 @@ static BOOL alarmAudioTestToneRequested; ///< Flag indicates whether alarm audio test tone should be output. // ********** private function prototypes ********** + /*********************************************************************//** Index: firmware/App/Controllers/AlarmAudio.h =================================================================== diff -u -r9d755b0734315e11c8fef5768815697d3bd50287 -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Controllers/AlarmAudio.h (.../AlarmAudio.h) (revision 9d755b0734315e11c8fef5768815697d3bd50287) +++ firmware/App/Controllers/AlarmAudio.h (.../AlarmAudio.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -45,6 +45,7 @@ void setAlarmAudioVolume( U32 volumeLevel ); U32 getAlarmAudioVolume( void ); + F32 getAlarmAudioPrimaryHighGainCurrent( void ); F32 getAlarmAudioPrimaryLowGainCurrent( void ); F32 getAlarmAudioBackupCurrent( void ); Index: firmware/App/Controllers/AlarmLamp.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Controllers/AlarmLamp.c (.../AlarmLamp.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Controllers/AlarmLamp.c (.../AlarmLamp.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -71,13 +71,13 @@ /// Two step alarm lamp patterns (repeating). const struct LampPatterns LAMP_PATTERNS[ NUM_OF_LAMP_PATTERNS ] = { - { { 500, 500 }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF } }, // LAMP_PATTERN_OFF - { { 500, 500 }, { LAMP_STATE_ON, LAMP_STATE_ON }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF } }, // LAMP_PATTERN_OK - { { 250, 250 }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_ON, LAMP_STATE_OFF } }, // LAMP_PATTERN_FAULT - { { 250, 250 }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_ON, LAMP_STATE_OFF } }, // LAMP_PATTERN_HIGH_ALARM - { { 1000, 1000 }, { LAMP_STATE_ON, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_ON, LAMP_STATE_OFF } }, // LAMP_PATTERN_MED_ALARM - { { 500, 500 }, { LAMP_STATE_ON, LAMP_STATE_ON }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_ON, LAMP_STATE_ON } }, // LAMP_PATTERN_LOW_ALARM - { { 0, 0 }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF } } // LAMP_PATTERN_MANUAL + { { 500, 500 }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF } }, // LAMP_PATTERN_OFF + { { 500, 500 }, { LAMP_STATE_ON, LAMP_STATE_ON }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF } }, // LAMP_PATTERN_OK + { { 250, 250 }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_ON, LAMP_STATE_OFF } }, // LAMP_PATTERN_FAULT + { { 250, 250 }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_ON, LAMP_STATE_OFF } }, // LAMP_PATTERN_HIGH_ALARM + { { 1000, 1000 }, { LAMP_STATE_ON, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_ON, LAMP_STATE_OFF } }, // LAMP_PATTERN_MED_ALARM + { { 500, 500 }, { LAMP_STATE_ON, LAMP_STATE_ON }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_ON, LAMP_STATE_ON } }, // LAMP_PATTERN_LOW_ALARM + { { 0, 0 }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF }, { LAMP_STATE_OFF, LAMP_STATE_OFF } } // LAMP_PATTERN_MANUAL }; static ALARM_LAMP_SELF_TEST_STATE_T alarmLampSelfTestState = ALARM_LAMP_SELF_TEST_STATE_START; ///< Current alarm lamp self-test state. Index: firmware/App/Controllers/AlarmLamp.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Controllers/AlarmLamp.h (.../AlarmLamp.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Controllers/AlarmLamp.h (.../AlarmLamp.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -52,6 +52,7 @@ void requestAlarmLampPattern( LAMP_PATTERN_T lampPattern ); LAMP_PATTERN_T getCurrentAlarmLampPattern( void ); + BOOL getAlarmLampOn( void ); SELF_TEST_STATUS_T execAlarmLampTest( void ); Index: firmware/App/Drivers/GPIO.c =================================================================== diff -u -re8654d6ebf2c76c6bae8e1b465cc1382d205832a -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Drivers/GPIO.c (.../GPIO.c) (revision e8654d6ebf2c76c6bae8e1b465cc1382d205832a) +++ firmware/App/Drivers/GPIO.c (.../GPIO.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -40,20 +40,20 @@ #define SAFETY_POST_NO_24V_RESTORE 2 ///< Safety shutdown POST failed because 24V was not restored when safety line reset. // 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 +#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. +#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. +#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. @@ -76,12 +76,11 @@ #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 ) +#define SET_SAFETY_SHUTDOWN() gioSetBit( gioPORTB, SAFETY_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) ///< Macro to set safety shutdown signal state high. +#define CLR_SAFETY_SHUTDOWN() gioSetBit( gioPORTB, SAFETY_GIO_PORT_PIN, PIN_SIGNAL_LOW ) ///< Macro to set safety shutdown signal state low. -/// Pin SPI3-CS0 - re-purposed as output GPIO for backup alarm audio enable. -#define BACKUP_AUDIO_ENABLE_SPI3_PORT_MASK 0x00000001 // Backup alarm audio enable/disable macros +#define BACKUP_AUDIO_ENABLE_SPI3_PORT_MASK 0x00000001 ///< Pin SPI3-CS0 - re-purposed as output GPIO for backup alarm audio enable. #define SET_BACKUP_AUDIO_ENABLE() {mibspiREG3->PC3 |= BACKUP_AUDIO_ENABLE_SPI3_PORT_MASK;} ///< Macro to enable backup alarm audio. #define CLR_BACKUP_AUDIO_ENABLE() {mibspiREG3->PC3 &= ~BACKUP_AUDIO_ENABLE_SPI3_PORT_MASK;} ///< Macro to disable backup alarm audio. Index: firmware/App/Drivers/GPIO.h =================================================================== diff -u -re8654d6ebf2c76c6bae8e1b465cc1382d205832a -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Drivers/GPIO.h (.../GPIO.h) (revision e8654d6ebf2c76c6bae8e1b465cc1382d205832a) +++ firmware/App/Drivers/GPIO.h (.../GPIO.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -43,6 +43,7 @@ void setAlarmLampGreenSignal( void ); void setAlarmLampBlueSignal( void ); void setAlarmLampRedSignal( void ); + void clrAlarmLampGreenSignal( void ); void clrAlarmLampBlueSignal( void ); void clrAlarmLampRedSignal( void ); Index: firmware/App/Drivers/InternalADC.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -26,9 +26,9 @@ // ********** private definitions ********** -#define MAX_ADC_CHANNELS 24 ///< ADC supports up to 24 channels. -#define SIZE_OF_ROLLING_AVG 8 ///< Samples in rolling average calculations. -#define ROLLING_AVG_SHIFT_DIVIDER 3 ///< Rolling average shift divider. +#define MAX_ADC_CHANNELS 24 ///< ADC supports up to 24 channels. +#define SIZE_OF_ROLLING_AVG 8 ///< Samples in rolling average calculations. +#define ROLLING_AVG_SHIFT_DIVIDER 3 ///< Rolling average shift divider. /// Mapping from enumerated used ADC channel to processor channel ID. const INT_ADC_CHANNEL_T ADC_CHANNEL_NUM_TO_CHANNEL_ID[ MAX_ADC_CHANNELS ] = Index: firmware/App/Drivers/InternalADC.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Drivers/InternalADC.h (.../InternalADC.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Drivers/InternalADC.h (.../InternalADC.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -66,7 +66,8 @@ // ********** public function prototypes ********** void initInternalADC( void ); -void execInternalADC( void ); +void execInternalADC( void ); + U16 getIntADCReading( INT_ADC_CHANNEL_T channel ); F32 getIntADCVoltageConverted( INT_ADC_CHANNEL_T channel ); Index: firmware/App/Drivers/PAL.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Drivers/PAL.c (.../PAL.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Drivers/PAL.c (.../PAL.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file PAL.c * * @author (last) Sean -* @date (last) 07-Aug-2024 +* @date (last) 08-Aug-2024 * * @author (original) Sean -* @date (original) 07-Aug-2024 +* @date (original) 08-Aug-2024 * ***************************************************************************/ Index: firmware/App/Drivers/PAL.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Drivers/PAL.h (.../PAL.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Drivers/PAL.h (.../PAL.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file PAL.h * * @author (last) Sean -* @date (last) 07-Aug-2024 +* @date (last) 08-Aug-2024 * * @author (original) Sean -* @date (original) 07-Aug-2024 +* @date (original) 08-Aug-2024 * ***************************************************************************/ Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -rdb56d5a680ef1137cbeaad239e558f04e0be5b8d -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision db56d5a680ef1137cbeaad239e558f04e0be5b8d) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -16,6 +16,7 @@ ***************************************************************************/ #include "FpgaTD.h" +#include "PersistentAlarm.h" #include "PressureCommon.h" #include "PressureSensor.h" @@ -26,11 +27,14 @@ // ********** private definitions ********** +#define PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Pressure sensors read and error count timeout in milliseconds. // ********** private data ********** static OVERRIDE_F32_T currentPressureReadings[ NUM_OF_PRESSURE_SENSORS ]; ///< Current pressure sensor pressure readings (overrideable). static OVERRIDE_F32_T currentPresTempReadings[ NUM_OF_PRESSURE_SENSORS ]; ///< Current pressure sensor temperature readings (overrideable). +static OVERRIDE_U32_T lastPressureReadCounter[ NUM_OF_PRESSURE_SENSORS ]; ///< Last pressure sensor read count (Overrideable). +static OVERRIDE_U32_T lastPressureErrorCounter[ NUM_OF_PRESSURE_SENSORS ]; ///< Last pressure sensor error count (Overrideable). // ********** private function prototypes ********** @@ -45,21 +49,45 @@ *************************************************************************/ void initPressureSensor( void ) { - currentPressureReadings[ PRESSURE_SENSOR_ARTERIAL ].data = 0; - currentPressureReadings[ PRESSURE_SENSOR_ARTERIAL ].ovData = 0; - currentPressureReadings[ PRESSURE_SENSOR_ARTERIAL ].ovInitData = 0; - currentPressureReadings[ PRESSURE_SENSOR_ARTERIAL ].override = OVERRIDE_RESET; + U32 i; - currentPressureReadings[ PRESSURE_SENSOR_VENOUS ].data = 0; - currentPressureReadings[ PRESSURE_SENSOR_VENOUS ].ovData = 0; - currentPressureReadings[ PRESSURE_SENSOR_VENOUS ].ovInitData = 0; - currentPressureReadings[ PRESSURE_SENSOR_VENOUS ].override = OVERRIDE_RESET; + // Initialize override structures for each pressure sensor + for ( i = 0; i < (U32)NUM_OF_PRESSURE_SENSORS; i++ ) + { + currentPressureReadings[ i ].data = 0.0F; + currentPressureReadings[ i ].ovData = 0.0F; + currentPressureReadings[ i ].ovInitData = 0.0F; + currentPressureReadings[ i ].override = OVERRIDE_RESET; + + currentPresTempReadings[ i ].data = 0.0F; + currentPresTempReadings[ i ].ovData = 0.0F; + currentPresTempReadings[ i ].ovInitData = 0.0F; + currentPresTempReadings[ i ].override = OVERRIDE_RESET; + + lastPressureReadCounter[ i ].data = 0; + lastPressureReadCounter[ i ].ovData = 0; + lastPressureReadCounter[ i ].ovInitData = 0; + lastPressureReadCounter[ i ].override = OVERRIDE_RESET; + + lastPressureErrorCounter[ i ].data = 0; + lastPressureErrorCounter[ i ].ovData = 0; + lastPressureErrorCounter[ i ].ovInitData = 0; + lastPressureErrorCounter[ i ].override = OVERRIDE_RESET; + } + + // Initialize the FPGA persistent alarms + initFPGAPersistentAlarm( FPGA_PERS_ERROR_ARTERIAL_PRESSURE_SENSOR, ALARM_ID_TD_ARTERIAL_SENSOR_TIMEOUT_FAULT, + PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); + initFPGAPersistentAlarm( FPGA_PERS_ERROR_VENOUS_PRESSURE_SESNOR, ALARM_ID_TD_VENOUS_SENSOR_TIMEOUT_FAULT, + PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS, PRES_SENSORS_COUNT_ERROR_TIMEOUT_MS ); } /*********************************************************************//** * @brief * The readPressureSensors function gets the current pressure reading - * for a all pressure sensors from the FPGA. + * for a all pressure sensors from the FPGA and also reads the freshness + * and error counters to verify that the pressure sensors are being read + * by the FPGA without issue. * @note This function should be called periodically to maintain fresh * sensor readings for all pressure sensors. * @details \b Inputs: FPGA @@ -68,23 +96,42 @@ *************************************************************************/ void readPressureSensors( void ) { - // Convert raw pressures to mmHg + // Update and convert raw pressures to mmHg currentPressureReadings[ PRESSURE_SENSOR_ARTERIAL ].data = convertPressureReading2mmHg( getPBAPressure() );; currentPressureReadings[ PRESSURE_SENSOR_VENOUS ].data = convertPressureReading2mmHg( getPBOPressure() ); - // Convert raw pressure sensor temperatures to deg C + // Update and convert raw pressure sensor temperatures to deg C currentPresTempReadings[ PRESSURE_SENSOR_ARTERIAL ].data = convertPressureTempReading2DegC( getPBATemperature() ); currentPresTempReadings[ PRESSURE_SENSOR_VENOUS ].data = convertPressureTempReading2DegC( getPBOTemperature() ); + // Update read and error counters for each pressure sensor + lastPressureReadCounter[ PRESSURE_SENSOR_ARTERIAL ].data = (U32)getPBAReadCounter(); + lastPressureReadCounter[ PRESSURE_SENSOR_VENOUS ].data = (U32)getPBOReadCounter(); + lastPressureErrorCounter[ PRESSURE_SENSOR_ARTERIAL ].data = (U32)getPBAErrorCounter(); + lastPressureErrorCounter[ PRESSURE_SENSOR_VENOUS ].data = (U32)getPBAErrorCounter(); + // Monitor pressure sensor health checkPressureSensors(); } -// TODO a function that gets and checks read and error counters for both pressure sensors +/*********************************************************************//** + * @brief + * The getPressure function gets the current pressure (in mmHg) for a given + * pressure sensor. + * @details \b Alarm: ALARM_ID_TD_ARTERIAL_SENSOR_TIMEOUT_FAULT if the + * arterial pressure sensor is not able to be read. + * @details \b Alarm: ALARM_ID_TD_VENOUS_SENSOR_TIMEOUT_FAULT if the + * venous pressure sensor is not able to be read. + * @details \b Inputs: lastPressureReadCounter, lastPressureErrorCounter + * @details \b Outputs: none + * @return none + *************************************************************************/ static void checkPressureSensors( void ) { - //U08 getPBAReadCounter( void ); - //U08 getPBAErrorCounter( void ); + checkFPGAPersistentAlarms( FPGA_PERS_ERROR_ARTERIAL_PRESSURE_SENSOR, getPressureSensorReadCount( PRESSURE_SENSOR_ARTERIAL ) ); + checkFPGAPersistentAlarms( FPGA_PERS_ERROR_VENOUS_PRESSURE_SESNOR, getPressureSensorReadCount( PRESSURE_SENSOR_VENOUS ) ); + checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_ARTERIAL_PRESSURE_SENSOR, getPressureSensorErrorCount( PRESSURE_SENSOR_ARTERIAL ) ); + checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_VENOUS_PRESSURE_SESNOR, getPressureSensorErrorCount( PRESSURE_SENSOR_VENOUS ) ); } /*********************************************************************//** @@ -145,6 +192,66 @@ } return result; -} +} + +/*********************************************************************//** + * @brief + * The getPressureSensorReadCount function gets the current pressure sensor + * read count for a given pressure sensor. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Inputs: lastPressureReadCounter + * @details \b Outputs: none + * @param sensor ID of pressure sensor to get read count for. + * @return The current pressure sensor read count of a given pressure sensor. + *************************************************************************/ +U32 getPressureSensorReadCount( PRESSURE_SENSORS_T sensor ) +{ + U08 result = 0; + + if ( sensor < NUM_OF_PRESSURE_SENSORS ) + { + result = lastPressureReadCounter[ sensor ].data; + if ( OVERRIDE_KEY == lastPressureReadCounter[ sensor ].override ) + { + result = lastPressureReadCounter[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR3, sensor ) + } + + return result; +} + +/*********************************************************************//** + * @brief + * The getPressureSensorErrorCount function gets the current pressure sensor + * error count for a given pressure sensor. + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Inputs: lastPressureErrorCounter + * @details \b Outputs: none + * @param sensor ID of pressure sensor to get error count for. + * @return The current pressure sensor error count of a given pressure sensor. + *************************************************************************/ +U32 getPressureSensorErrorCount( PRESSURE_SENSORS_T sensor ) +{ + U08 result = 0; + + if ( sensor < NUM_OF_PRESSURE_SENSORS ) + { + result = lastPressureErrorCounter[ sensor ].data; + if ( OVERRIDE_KEY == lastPressureErrorCounter[ sensor ].override ) + { + result = lastPressureErrorCounter[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR4, sensor ) + } + + return result; +} /**@}*/ Index: firmware/App/Drivers/PressureSensor.h =================================================================== diff -u -rdb56d5a680ef1137cbeaad239e558f04e0be5b8d -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision db56d5a680ef1137cbeaad239e558f04e0be5b8d) +++ firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -45,6 +45,8 @@ void readPressureSensors( void ); F32 getPressure( PRESSURE_SENSORS_T sensor ); F32 getPressureSensorTemperature( PRESSURE_SENSORS_T sensor ); +U32 getPressureSensorReadCount( PRESSURE_SENSORS_T sensor ); +U32 getPressureSensorErrorCount( PRESSURE_SENSORS_T sensor ); /**@}*/ Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -27,8 +27,8 @@ // ********** private data ********** -static HD_FAULT_STATE_T faultState; ///< Currently active fault state. -static SELF_TEST_STATUS_T faultPOSTSelfTestResult; ///< Fault POST self test result. +static HD_FAULT_STATE_T faultState; ///< Currently active fault state. +static SELF_TEST_STATUS_T faultPOSTSelfTestResult; ///< Fault POST self test result. // ********** private function prototypes ********** Index: firmware/App/Modes/ModeFault.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/ModeFault.h (.../ModeFault.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/ModeFault.h (.../ModeFault.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -18,7 +18,7 @@ #ifndef __MODE_FAULT_H__ #define __MODE_FAULT_H__ -#include "../TDCommon.h" +#include "TDCommon.h" #include "TDDefs.h" /** Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -32,7 +32,6 @@ #include "OperationModes.h" #include "PAL.h" //#include "Pressures.h" -//#include "SyringePump.h" #include "SystemCommTD.h" #include "TaskGeneral.h" //#include "Temperatures.h" Index: firmware/App/Modes/ModeInitPOST.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file ModeInitPOST.h * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/ Index: firmware/App/Modes/ModeService.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/ModeService.c (.../ModeService.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/ModeService.c (.../ModeService.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -24,7 +24,6 @@ //#include "NVDataMgmt.h" #include "OperationModes.h" //#include "Switches.h" -//#include "SyringePump.h" //#include "Valves.h" /** Index: firmware/App/Modes/ModeService.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/ModeService.h (.../ModeService.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/ModeService.h (.../ModeService.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -18,7 +18,7 @@ #ifndef __MODE_SERVICE_H__ #define __MODE_SERVICE_H__ -#include "../TDCommon.h" +#include "TDCommon.h" #include "TDDefs.h" /** Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -15,7 +15,6 @@ * ***************************************************************************/ - #include "DDInterface.h" #include "Messaging.h" #include "ModeStandby.h" Index: firmware/App/Modes/ModeStandby.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -23,7 +23,8 @@ /** * @defgroup TDStandbyMode TDStandbyMode - * @brief StandbyMode unit. + * @brief Standby mode unit. Manages the Standby mode functions via a state + * machine. * * @addtogroup TDStandbyMode * @{ Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -15,10 +15,9 @@ * ***************************************************************************/ -#include -#include #include "gio.h" +#include "Messaging.h" #include "ModeInitPOST.h" #include "ModeService.h" #include "ModeFault.h" Index: firmware/App/Modes/OperationModes.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -31,13 +31,13 @@ // ********** public definitions ********** -#define NO_SUB_STATE 0xFF ///< value for when submode does not have specific substates and is not applicable. +#define NO_SUB_STATE 0xFF ///< value for when submode does not have specific substates and is not applicable. /// Payload record structure for op mode broadcast message typedef struct { - U32 opMode; ///< Current operating mode - U32 subMode; ///< Current sub-mode of current operating mode + U32 opMode; ///< Current operating mode + U32 subMode; ///< Current sub-mode of current operating mode } OP_MODE_PAYLOAD_T; // ********** public function prototypes ********** Fisheye: Tag 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 refers to a dead (removed) revision in file `firmware/App/Monitors/FluidLeak.c'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 refers to a dead (removed) revision in file `firmware/App/Monitors/FluidLeak.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r61456322255a686365146e88f79ffc61d00edb6c -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 61456322255a686365146e88f79ffc61d00edb6c) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -107,6 +107,8 @@ SW_FAULT_ID_BUBBLE_DETECTOR_INVALID_SENSOR = 76, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR1 = 77, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR2 = 78, + SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR3 = 79, + SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR4 = 80, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/AlarmMgmtTD.c =================================================================== diff -u -re8654d6ebf2c76c6bae8e1b465cc1382d205832a -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/AlarmMgmtTD.c (.../AlarmMgmtTD.c) (revision e8654d6ebf2c76c6bae8e1b465cc1382d205832a) +++ firmware/App/Services/AlarmMgmtTD.c (.../AlarmMgmtTD.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -37,17 +37,17 @@ /// Interval (ms/task time) at which the alarm information is published on the CAN bus. #define ALARM_INFO_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) -#define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. +#define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. /// Interval (ms/task time) Alarms are blocked after the return of AC power. #define ALARM_BLOCKED_COUNT_AFTER_AC_RETURN ( 10*MS_PER_SECOND / TASK_GENERAL_INTERVAL ) -#define ALARM_SILENCE_EXPIRES_IN_SECS (60) ///< Alarm silence expiration time in seconds. +#define ALARM_SILENCE_EXPIRES_IN_SECS (60) ///< Alarm silence expiration time in seconds. -#define LOWEST_ALARM_SUB_RANK 999 ///< Lowest alarm sub-rank that can be set. -#define ALARM_NOT_BLOCKED 0 ///< Alarm blocked timer value that indicates no alarm block +#define LOWEST_ALARM_SUB_RANK 999 ///< Lowest alarm sub-rank that can be set. +#define ALARM_NOT_BLOCKED 0 ///< Alarm blocked timer value that indicates no alarm block -#define MIN_TIME_BETWEEN_ALARM_ACTIONS_MS MS_PER_SECOND ///< Minimum time between user alarm actions (in ms). +#define MIN_TIME_BETWEEN_ALARM_ACTIONS_MS MS_PER_SECOND ///< Minimum time between user alarm actions (in ms). /// A blank alarm data record for alarms that do not include alarm data when triggered. const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; Index: firmware/App/Services/AlarmMgmtTD.h =================================================================== diff -u -re8654d6ebf2c76c6bae8e1b465cc1382d205832a -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/AlarmMgmtTD.h (.../AlarmMgmtTD.h) (revision e8654d6ebf2c76c6bae8e1b465cc1382d205832a) +++ firmware/App/Services/AlarmMgmtTD.h (.../AlarmMgmtTD.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -35,8 +35,7 @@ * @{ */ -/// Interval (in ms) at which alarm lamp and audio control will be executed. -#define ALARM_LAMP_AND_AUDIO_CONTROL_INTERVAL_MS 250 +#define ALARM_LAMP_AND_AUDIO_CONTROL_INTERVAL_MS 250 ///< Interval (in ms) at which alarm lamp and audio control will be executed. #define MAX_ALARM_LIST_SIZE 10 ///< Maximum number of active alarms inside alarm list. Index: firmware/App/Services/CommBuffers.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -37,7 +37,8 @@ static volatile U32 commBufferByteCount[ NUM_OF_COMM_BUFFERS ][ DOUBLE_BUFFERS ]; ///< For each buffer, how many bytes does it contain? (also index to next available) static volatile U32 activeDoubleBuffer[ NUM_OF_COMM_BUFFERS ]; ///< For each buffer, which double buffer is being fed right now? -static U08 commBuffers[ NUM_OF_COMM_BUFFERS ][ DOUBLE_BUFFERS ][ COMM_BUFFER_LENGTH ]; ///< Each is double buffered to avoid thread contention +static U08 commBuffers[ NUM_OF_COMM_BUFFERS ][ DOUBLE_BUFFERS ][ COMM_BUFFER_LENGTH ]; ///< Each is double buffered to avoid thread contention + static U32 firstBufferOverflowTimeStamp = 0; ///< Time stamp of a prior overflow event - allows for an overflow persistence check // ********** private function prototypes ********** Index: firmware/App/Services/CommBuffers.h =================================================================== diff -u -re8654d6ebf2c76c6bae8e1b465cc1382d205832a -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/CommBuffers.h (.../CommBuffers.h) (revision e8654d6ebf2c76c6bae8e1b465cc1382d205832a) +++ firmware/App/Services/CommBuffers.h (.../CommBuffers.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -33,22 +33,22 @@ /// Enumeration of CAN communication buffers. Buffers are ordered by priority. typedef enum Comm_Buffers { - COMM_BUFFER_NOT_USED = 0, ///< CAN message boxes start at 1 so we will not use this buffer - COMM_BUFFER_OUT_CAN_TD_ALARM, ///< Buffer for outgoing TD alarm messages - COMM_BUFFER_IN_CAN_DD_ALARM, ///< Buffer for incoming DD alarm messages - COMM_BUFFER_IN_CAN_RO_ALARM, ///< Buffer for incoming RO alarm messages - COMM_BUFFER_IN_CAN_UI_ALARM, ///< Buffer for incoming UI alarm messages - COMM_BUFFER_OUT_CAN_TD_2_DD, ///< Buffer for outgoing TD to DD messages - COMM_BUFFER_IN_CAN_DD_2_TD, ///< Buffer for incoming DD to HD messages - COMM_BUFFER_OUT_CAN_TD_2_UI, ///< Buffer for outgoing TD to UI messages - COMM_BUFFER_IN_CAN_UI_2_TD, ///< Buffer for incoming UI to TD messages - COMM_BUFFER_OUT_CAN_TD_BROADCAST, ///< Buffer for outgoing TD broadcast messages - COMM_BUFFER_IN_CAN_DD_BROADCAST, ///< Buffer for incoming DD broadcast messages - COMM_BUFFER_IN_CAN_RO_BROADCAST, ///< Buffer for incoming RO broadcast messages - COMM_BUFFER_IN_CAN_UI_BROADCAST, ///< Buffer for incoming UI broadcast messages - COMM_BUFFER_IN_CAN_PC, ///< Buffer for incoming PC to TD messages - COMM_BUFFER_OUT_CAN_PC, ///< Buffer for outgoing TD to PC messages - NUM_OF_COMM_BUFFERS ///< Number of CAN communication buffers + COMM_BUFFER_NOT_USED = 0, ///< CAN message boxes start at 1 so we will not use this buffer + COMM_BUFFER_OUT_CAN_TD_ALARM, ///< Buffer for outgoing TD alarm messages + COMM_BUFFER_IN_CAN_DD_ALARM, ///< Buffer for incoming DD alarm messages + COMM_BUFFER_IN_CAN_RO_ALARM, ///< Buffer for incoming RO alarm messages + COMM_BUFFER_IN_CAN_UI_ALARM, ///< Buffer for incoming UI alarm messages + COMM_BUFFER_OUT_CAN_TD_2_DD, ///< Buffer for outgoing TD to DD messages + COMM_BUFFER_IN_CAN_DD_2_TD, ///< Buffer for incoming DD to HD messages + COMM_BUFFER_OUT_CAN_TD_2_UI, ///< Buffer for outgoing TD to UI messages + COMM_BUFFER_IN_CAN_UI_2_TD, ///< Buffer for incoming UI to TD messages + COMM_BUFFER_OUT_CAN_TD_BROADCAST, ///< Buffer for outgoing TD broadcast messages + COMM_BUFFER_IN_CAN_DD_BROADCAST, ///< Buffer for incoming DD broadcast messages + COMM_BUFFER_IN_CAN_RO_BROADCAST, ///< Buffer for incoming RO broadcast messages + COMM_BUFFER_IN_CAN_UI_BROADCAST, ///< Buffer for incoming UI broadcast messages + COMM_BUFFER_IN_CAN_PC, ///< Buffer for incoming PC to TD messages + COMM_BUFFER_OUT_CAN_PC, ///< Buffer for outgoing TD to PC messages + NUM_OF_COMM_BUFFERS ///< Number of CAN communication buffers } COMM_BUFFER_T; /**@}*/ Index: firmware/App/Services/CpldInterface.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/CpldInterface.c (.../CpldInterface.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/CpldInterface.c (.../CpldInterface.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -35,6 +35,7 @@ #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. Index: firmware/App/Services/CpldInterface.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/CpldInterface.h (.../CpldInterface.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/CpldInterface.h (.../CpldInterface.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -34,7 +34,7 @@ /// Safety shutdown broadcast data typedef struct { - U32 isSafetyShutdownActivated; ///< Is safety shutdown active boolean flag + U32 isSafetyShutdownActivated; ///< Is safety shutdown active boolean flag } TD_SAFETY_SHUTDOWN_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Services/DDInterface.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -15,8 +15,6 @@ * ***************************************************************************/ -#include // To check for NaN - #include "DDDefs.h" #include "DDInterface.h" #include "Messaging.h" Index: firmware/App/Services/DDInterface.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/DDInterface.h (.../DDInterface.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/DDInterface.h (.../DDInterface.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -47,8 +47,7 @@ void execDDInterfaceMonitor( void ); DD_OP_MODE_T getDDOpMode( void ); -U32 getDDSubMode( void ); - +U32 getDDSubMode( void ); void setDDOpMode( U32 opMode, U32 subMode ); void handleDDCommandResponse( DD_CMD_RESPONSE_T *ddCmdRespPtr ); Index: firmware/App/Services/Interrupts.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -55,6 +55,7 @@ // ********** private function prototypes ********** + /*********************************************************************//** * @brief * The initInterrupts function initializes the Interrupts unit. Index: firmware/App/Services/Interrupts.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/Interrupts.h (.../Interrupts.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/Interrupts.h (.../Interrupts.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -33,7 +33,6 @@ // ********** public function prototypes ********** void initInterrupts( void ); - BOOL getSci2FEOEError( void ); /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -15,13 +15,13 @@ * ***************************************************************************/ -#include #include // For memcpy() #include "Compatible.h" #include "Messaging.h" #include "OperationModes.h" #include "PAL.h" +#include "SystemCommTD.h" #include "Utilities.h" /** Index: firmware/App/Services/Messaging.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/Messaging.h (.../Messaging.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/Messaging.h (.../Messaging.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -34,8 +34,8 @@ // ********** public definitions ********** -#define ACK_REQUIRED TRUE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. -#define ACK_NOT_REQUIRED FALSE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. +#define ACK_REQUIRED TRUE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. +#define ACK_NOT_REQUIRED FALSE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. #pragma pack(push, 1) /// Payload record structure for ACK response. Index: firmware/App/Services/MsgQueues.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/MsgQueues.c (.../MsgQueues.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/MsgQueues.c (.../MsgQueues.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -24,14 +24,14 @@ // ********** private definitions ********** -#define MAX_MSG_QUEUE_SIZE 100 ///< Number of messages a queue can hold. +#define MAX_MSG_QUEUE_SIZE 100 ///< Number of messages a queue can hold. // ********** private data ********** -static U32 msgQueueCounts[ NUM_OF_MSG_QUEUES ]; ///< Number of messages in each queue. -static U32 msgQueueStarts[ NUM_OF_MSG_QUEUES ]; ///< Starting index for each queue. -static U32 msgQueueNexts[ NUM_OF_MSG_QUEUES ]; ///< Next index for each queue. -static MESSAGE_WRAPPER_T msgQueues[ NUM_OF_MSG_QUEUES ][ MAX_MSG_QUEUE_SIZE ]; ///< The messages in each queue. +static U32 msgQueueCounts[ NUM_OF_MSG_QUEUES ]; ///< Number of messages in each queue. +static U32 msgQueueStarts[ NUM_OF_MSG_QUEUES ]; ///< Starting index for each queue. +static U32 msgQueueNexts[ NUM_OF_MSG_QUEUES ]; ///< Next index for each queue. +static MESSAGE_WRAPPER_T msgQueues[ NUM_OF_MSG_QUEUES ][ MAX_MSG_QUEUE_SIZE ]; ///< The messages in each queue. // ********** private function prototypes ********** Index: firmware/App/Services/MsgQueues.h =================================================================== diff -u -re8654d6ebf2c76c6bae8e1b465cc1382d205832a -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/MsgQueues.h (.../MsgQueues.h) (revision e8654d6ebf2c76c6bae8e1b465cc1382d205832a) +++ firmware/App/Services/MsgQueues.h (.../MsgQueues.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -19,6 +19,7 @@ #define __MSG_QUEUES_H__ #include "TDCommon.h" + #include "CommBuffers.h" #include "MessageSupport.h" Index: firmware/App/Services/SystemCommTD.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/SystemCommTD.c (.../SystemCommTD.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/SystemCommTD.c (.../SystemCommTD.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -36,15 +36,15 @@ // ********** private definitions ********** -#define UI_COMM_TIMEOUT_IN_MS 7500 ///< Maximum time (in ms) that UI is allowed to wait before checking in with HD. -#define UI_COMM_SERVICE_MODE_TIMEOUT_IN_MS (2 * SEC_PER_MIN * MS_PER_SECOND) ///< Maximum time (in ms) that UI is allowed to wait before checking in with HD when in service mode. -#define DG_COMM_TIMEOUT_IN_MS 1000 ///< DG has not checked in for this much time +#define UI_COMM_TIMEOUT_IN_MS 7500 ///< Maximum time (in ms) that UI is allowed to wait before checking in with HD. +#define UI_COMM_SERVICE_MODE_TIMEOUT_IN_MS (2 * SEC_PER_MIN * MS_PER_SECOND) ///< Maximum time (in ms) that UI is allowed to wait before checking in with HD when in service mode. +#define DG_COMM_TIMEOUT_IN_MS 1000 ///< DG has not checked in for this much time -#define MAX_COMM_CRC_FAILURES 5 ///< Maximum number of CRC errors within window period before alarm -#define MAX_COMM_CRC_FAILURE_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< CRC error window +#define MAX_COMM_CRC_FAILURES 5 ///< Maximum number of CRC errors within window period before alarm +#define MAX_COMM_CRC_FAILURE_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< CRC error window -#define MAX_FPGA_CLOCK_SPEED_ERRORS 3 ///< maximum number of FPGA clock speed errors within window period before alarm -#define MAX_FPGA_CLOCK_SPEED_ERROR_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< FPGA clock speed error window +#define MAX_FPGA_CLOCK_SPEED_ERRORS 3 ///< maximum number of FPGA clock speed errors within window period before alarm +#define MAX_FPGA_CLOCK_SPEED_ERROR_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< FPGA clock speed error window /// Array of out-going CAN buffers. const COMM_BUFFER_T CAN_OUT_BUFFERS[ NUM_OF_CAN_OUT_BUFFERS ] = Index: firmware/App/Services/SystemCommTD.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Services/SystemCommTD.h (.../SystemCommTD.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Services/SystemCommTD.h (.../SystemCommTD.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file SystemCommTD.h * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/ Index: firmware/App/TDCommon.h =================================================================== diff -u -r73d8423edc56daed591bc0b3f7baee5540aea423 -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/TDCommon.h (.../TDCommon.h) (revision 73d8423edc56daed591bc0b3f7baee5540aea423) +++ firmware/App/TDCommon.h (.../TDCommon.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file TDCommon.h * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/ Index: firmware/App/Tasks/TaskBG.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Tasks/TaskBG.c (.../TaskBG.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Tasks/TaskBG.c (.../TaskBG.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file TaskBG.c * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/ Index: firmware/App/Tasks/TaskBG.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Tasks/TaskBG.h (.../TaskBG.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Tasks/TaskBG.h (.../TaskBG.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file TaskBG.h * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/ Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -27,8 +27,9 @@ * @{ */ -// ********** private data ********** +// ********** private data ********** + /*********************************************************************//** * @brief * The taskGeneral function handles the scheduled General Task interrupt. Index: firmware/App/Tasks/TaskGeneral.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Tasks/TaskGeneral.h (.../TaskGeneral.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Tasks/TaskGeneral.h (.../TaskGeneral.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -18,7 +18,7 @@ #ifndef __TASK_GENERAL_H__ #define __TASK_GENERAL_H__ -#include "../TDCommon.h" +#include "TDCommon.h" /** * @defgroup TaskGeneral TaskGeneral Index: firmware/App/Tasks/TaskPriority.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,14 +8,13 @@ * @file TaskPriority.c * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/ -#include "FluidLeak.h" #include "FPGA.h" #include "SystemCommTD.h" #include "TaskPriority.h" @@ -70,9 +69,6 @@ // Monitor blood pump and flow // execBloodFlowMonitor(); - // Monitor fluid leak detector - execFluidLeak(); - // Monitor air bubble detector // execBubble(); Index: firmware/App/Tasks/TaskPriority.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Tasks/TaskPriority.h (.../TaskPriority.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Tasks/TaskPriority.h (.../TaskPriority.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file TaskPriority.h * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/ Index: firmware/App/Tasks/TaskTimer.c =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Tasks/TaskTimer.c (.../TaskTimer.c) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Tasks/TaskTimer.c (.../TaskTimer.c) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file TaskTimer.c * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/ Index: firmware/App/Tasks/TaskTimer.h =================================================================== diff -u -r3518e8a088c32e75c0c8960d5e629a7401095feb -r380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7 --- firmware/App/Tasks/TaskTimer.h (.../TaskTimer.h) (revision 3518e8a088c32e75c0c8960d5e629a7401095feb) +++ firmware/App/Tasks/TaskTimer.h (.../TaskTimer.h) (revision 380b0afc95467d0861ff3aa2cdcde5d5d7ac85e7) @@ -8,10 +8,10 @@ * @file TaskTimer.h * * @author (last) Sean -* @date (last) 30-Jul-2024 +* @date (last) 31-Jul-2024 * * @author (original) Sean -* @date (original) 30-Jul-2024 +* @date (original) 31-Jul-2024 * ***************************************************************************/