Index: firmware/App/Controllers/Temperatures.c =================================================================== diff -u -r4a9872d81bae53492c124d0378028ece422f1b4d -r8bd1ae47aa13a843aa8abd6321ddc050deacb4a6 --- firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision 4a9872d81bae53492c124d0378028ece422f1b4d) +++ firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision 8bd1ae47aa13a843aa8abd6321ddc050deacb4a6) @@ -1,5 +1,20 @@ +/************************************************************************** +* +* Copyright (c) 2019-2021 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 Temperatures.c +* +* @author (last) Dara Navaei +* @date (last) 14-Oct-2021 +* +* @author (original) Dara Navaei +* @date (original) 01-Aug-2021 +* +***************************************************************************/ - #include // For temperature calculations #include "FPGA.h" @@ -28,7 +43,7 @@ #define ADC_BOARD_TEMP_SENSOR_CONVERSION_CONST_1 272.5 ///< ADC board temperature sensor conversion constant 1. #define ADC_BOARD_TEMP_SENSOR_CONVERSION_CONST_2 0x800000 ///< ADC board temperature sensor conversion constant 2. #define MIN_ALLOWED_TEMPERATURE 0.0 ///< Thermistors/sensors minimum allowed temperature reading. -#define MAX_ALLOWED_TEMPERATURE 120.0 ///< Thermistors/sensors maximum allowed temperature reading. +#define MAX_ALLOWED_TEMPERATURE 80.0 ///< Thermistors/sensors maximum allowed temperature reading. #define MAX_ALLOWED_TEMP_OUT_OF_RANGE_PERIOD ( 5 * MS_PER_SECOND ) ///< Thermistors/sensors maximum allowed temperature out of range period. /// Temperatures exec states @@ -250,23 +265,25 @@ static void monitorTemperatures( void ) { TEMPERATURES_T sensor; - BOOL isAlarmTriggered; - F32 temperature = 0.0; BOOL isTempOutOfRange = FALSE; + F32 temperature = 0.0; + U32 lastFaultSensor = 0; + F32 faultSensorTemp = 0.0; for ( sensor = THERMISTOR_ONBOARD_NTC; sensor < NUM_OF_TEMPERATURES; sensor++ ) { temperature = getTemperatureValue( sensor ); - isTempOutOfRange |= ( temperature > MAX_ALLOWED_TEMPERATURE ) || ( temperature < MIN_ALLOWED_TEMPERATURE ); + if ( ( temperature > MAX_ALLOWED_TEMPERATURE ) || ( temperature < MIN_ALLOWED_TEMPERATURE ) ) + { + isTempOutOfRange = TRUE; + lastFaultSensor = sensor; + faultSensorTemp = temperature; + } } - isAlarmTriggered = isPersistentAlarmTriggered( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, isTempOutOfRange ); - - if ( TRUE == isAlarmTriggered ) + if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, isTempOutOfRange ) ) { - ALARM_DATA_T alarmData; - alarmData.data.flt.data = temperature; - activateAlarm1Data( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, alarmData ); + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, lastFaultSensor, faultSensorTemp ); } } @@ -401,7 +418,7 @@ sensorsData.pbaADCTempSensor = getTemperatureValue( TEMPSENSOR_PBA_ADC_SENSOR ); // Broadcast the temperatures data - broadcastTemperaturesData( &sensorsData ); + broadcastData( MSG_ID_HD_TEMPERATURES_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&sensorsData, sizeof( TEMPERATURES_DATA_T ) ); // Reset the counter dataPublishCounter = 0;