Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -r387ea33c2e45705550905bc1a97e13db1cc95bf8 -r325e67dab10f6666702bf0f1256015b31e58de4f --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 387ea33c2e45705550905bc1a97e13db1cc95bf8) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 325e67dab10f6666702bf0f1256015b31e58de4f) @@ -17,10 +17,13 @@ #include "BalancingChamber.h" #include "ConductivitySensors.h" +#include "Conductivity.h" +#include "Flow.h" #include "Messaging.h" #include "MessageSupport.h" #include "OperationModes.h" #include "PersistentAlarm.h" +#include "Pressure.h" #include "Temperature.h" #include "Timers.h" #include "TaskPriority.h" @@ -33,6 +36,7 @@ */ // ********** private definitions ********** + #define ADC_FPGA_READ_DELAY 30U ///< Delay in ms before reading the ADC values from FPGA. #define TEMP_SENSORS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Temperature sensors publish data time interval. @@ -95,9 +99,10 @@ static U32 d50TempSamplesNextIndex; ///< D50 temperature sample next index number. static U32 d50TempCount; ///< D50 Number of samples in average buffer. -static U32 dataPublicationTimerCounter; ///< Temperature sensors data publish timer counter. -static OVERRIDE_U32_T tempSensorsPublishInterval = { TEMP_SENSORS_DATA_PUBLISH_INTERVAL, - TEMP_SENSORS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Temperature sensors publish time interval override. +static U32 ddTempDataPublicationTimerCounter; ///< DD Temperature sensors data publish timer counter. +static U32 fpTempDataPublicationTimerCounter; ///< FP Temperature sensors data publish timer counter. +static OVERRIDE_U32_T ddTempSensorsPublishInterval; ///< DD Temperature sensors publish time interval override. +static OVERRIDE_U32_T fpTempSensorsPublishInterval; ///< FP Temperature sensors publish time interval override. // ********** private function prototypes ********** @@ -117,24 +122,34 @@ *************************************************************************/ void initTemperature( void ) { - startTime = 0; - tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; - dataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - d4TempRunningSumC = 0.0F; - d4TempAvgC = 0.0F; - d4TempSamplesNextIndex = 0; - d4TempCount = 0; - d50TempRunningSumC = 0.0F; - d50TempAvgC = 0.0F; - d50TempSamplesNextIndex = 0; - d50TempCount = 0; - d4TempSampleIntervalCounter = 0; - tempDataColTimeInterval = 0; - tempDriftEventCheck = FALSE; + startTime = 0; + tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; + ddTempDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; + fpTempDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; + d4TempRunningSumC = 0.0F; + d4TempAvgC = 0.0F; + d4TempSamplesNextIndex = 0; + d4TempCount = 0; + d50TempRunningSumC = 0.0F; + d50TempAvgC = 0.0F; + d50TempSamplesNextIndex = 0; + d50TempCount = 0; + d4TempSampleIntervalCounter = 0; + tempDataColTimeInterval = 0; + tempDriftEventCheck = FALSE; dialTempMovingAvgData[ DIAL_TEMP_D28 ].dialTempColHasTimerBeenSet = FALSE; dialTempMovingAvgData[ DIAL_TEMP_D30 ].dialTempColHasTimerBeenSet = FALSE; + ddTempSensorsPublishInterval.data = TEMP_SENSORS_DATA_PUBLISH_INTERVAL; + ddTempSensorsPublishInterval.ovData = TEMP_SENSORS_DATA_PUBLISH_INTERVAL; + ddTempSensorsPublishInterval.ovInitData = 0; + ddTempSensorsPublishInterval.override = OVERRIDE_RESET; + + fpTempSensorsPublishInterval.data = TEMP_SENSORS_DATA_PUBLISH_INTERVAL; + fpTempSensorsPublishInterval.ovData = TEMP_SENSORS_DATA_PUBLISH_INTERVAL; + fpTempSensorsPublishInterval.ovInitData = 0; + fpTempSensorsPublishInterval.override = OVERRIDE_RESET; // Initialize the temperature sensors initTemperatureSensors(); @@ -154,6 +169,7 @@ { SELF_TEST_STATUS_T result = SELF_TEST_STATUS_IN_PROGRESS; + //TODO: Uncomment below once Non volatile record is implemented. //BOOL calStatus = getNVRecord2Driver( GET_CAL_TEMP_SENSORS, (U08*)&tempSensorCalRecord, sizeof( DD_TEMP_SENSORS_CAL_RECORD_T ), // NUM_OF_CAL_DATA_TEMP_SENSORS, ALARM_ID_DD_TEMPERATURE_SENSORS_INVALID_CAL_RECORD ); BOOL calStatus = TRUE; @@ -224,7 +240,7 @@ * The handleExecStart function waits for a period of time and switches to * the state that reads the ADC values from FPGA. * @details \b Inputs: startTime - * @details \b Outputs: startTime, baroCoeffsWaitToRcvStartTime + * @details \b Outputs: startTime * @return the next state of the state machine *************************************************************************/ static TEMPSENSORS_EXEC_STATES_T handleExecStart( void ) @@ -239,7 +255,6 @@ else if ( TRUE == didTimeout( startTime, ADC_FPGA_READ_DELAY ) ) { startTime = 0; - setBaroSensorCoefficientReadStartTime(); state = TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES; } @@ -428,26 +443,30 @@ /*********************************************************************//** * @brief - * The publishTemperatureSensorsData function broadcasts the temperature - * sensors data at the publication interval. - * @details \b Inputs: dataPublicationTimerCounter and publish interval time. - * @details \b Outputs: dataPublicationTimerCounter - * @details \b Message \b Sent: MSG_ID_DD_TEMPERATURE_DATA publishes the temperature - * data in a periodic interval. + * The publishTemperatureSensorsData function broadcasts the + * temperature sensors data at the publication interval. + * @details \b Inputs: ddTempDataPublicationTimerCounter + * fpTempDataPublicationTimerCounter and publish interval time. + * @details \b Outputs: ddTempDataPublicationTimerCounter, fpTempDataPublicationTimerCounter + * @details \b Message \b Sent: MSG_ID_DD_TEMPERATURE_DATA, MSG_ID_FP_TEMPERATURE_DATA + * publishes the temperature data in a periodic interval. * @return none *************************************************************************/ static void publishTemperatureSensorsData( void ) { - if ( ++dataPublicationTimerCounter >= getU32OverrideValue( &tempSensorsPublishInterval ) ) + // publish DD temperature data on interval + if ( ++ddTempDataPublicationTimerCounter >= getU32OverrideValue( &ddTempSensorsPublishInterval ) ) { - TEMPERATURE_SENSORS_DATA_T data; + TEMPERATURE_SENSORS_DD_DATA_T data; data.d1Temp = getTemperatureValue( D1_TEMP ); - data.x6Temp = getTemperatureValue( X6_TEMP ); + data.d78Temp = getTemperatureValue( D78_TEMP ); data.d4Temp = getTemperatureValue( D4_TEMP ); data.d50Temp = getTemperatureValue( D50_TEMP ); data.boardTemp = getTemperatureValue( BRD_TEMP ); - data.baroTemp = getTemperatureValue( BARO_TEMP ); + // TODO: update the following lines after Baro Sensor data is read from TD + data.baroTemp = 0.0F; +// data.baroTemp = getTemperatureValue( BARO_TEMP ); data.d16CondTemp = getConductivityTemperatureValue( D17_COND ); data.d28CondTemp = getConductivityTemperatureValue( D27_COND ); data.d30CondTemp = getConductivityTemperatureValue( D29_COND ); @@ -457,10 +476,33 @@ data.d50AvgTemp = getD50AverageTemperature(); data.d28AvgTemp = dialTempMovingAvgData[ DIAL_TEMP_D28 ].dialTempAvgC; data.d30AvgTemp = dialTempMovingAvgData[ DIAL_TEMP_D30 ].dialTempAvgC; + data.d9PresTemp = getFilteredPressureSensorTemperature( D9_PRES ); + data.d66PresTemp = getFilteredPressureSensorTemperature( D66_PRES ); + data.d51PresTemp = getFilteredPressureSensorTemperature( D51_PRES ); + data.d18PresTemp = getFilteredPressureSensorTemperature( D18_PRES ); + data.d41PresTemp = getFilteredPressureSensorTemperature( D41_PRES ); - broadcastData( MSG_ID_DD_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); - dataPublicationTimerCounter = 0; + broadcastData( MSG_ID_DD_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_DD_DATA_T ) ); + ddTempDataPublicationTimerCounter = 0; } + // publish FP temperature data on interval + if ( ++fpTempDataPublicationTimerCounter >= getU32OverrideValue( &fpTempSensorsPublishInterval ) ) + { + TEMPERATURE_SENSORS_FP_DATA_T data; + + data.m1Temp = getFilteredPressureSensorTemperature( M1_PRES ); + data.m3Temp = getFilteredPressureSensorTemperature( M3_PRES ); + data.p10Temp = getFilteredConductivitySensorTemperature( P9_COND ); + data.p19Temp = getFilteredConductivitySensorTemperature( P18_COND ); + data.p8Temp = getFilteredPressureSensorTemperature( P8_PRES ); + data.p13Temp = getFilteredPressureSensorTemperature( P13_PRES ); + data.p17Temp = getFilteredPressureSensorTemperature( P17_PRES ); + data.p7Temp = getFilteredFlowSensorTemperature( P7_FLOW ); + data.p16Temp = getFilteredFlowSensorTemperature( P16_FLOW ); + + broadcastData( MSG_ID_FP_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_FP_DATA_T ) ); + fpTempDataPublicationTimerCounter = 0; + } } @@ -471,20 +513,36 @@ /*********************************************************************//** * @brief - * The testTemperatureSensorsDataPublishIntervalOverride function overrides the - * temperature sensor data publish interval. + * The testDDTemperatureSensorsDataPublishIntervalOverride function + * overrides the DD temperature sensor data publish interval. * @details \b Inputs: none - * @details \b Outputs: tempSensorsPublishInterval + * @details \b Outputs: ddTempSensorsPublishInterval * @param Override message from Dialin which includes the interval - * (in ms) to override the temperature sensor data broadcast interval to. + * (in ms) to override the DD temperature sensor data broadcast interval to. * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ) +BOOL testDDTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ) { - BOOL result = u32BroadcastIntervalOverride( message, &tempSensorsPublishInterval, TASK_PRIORITY_INTERVAL ); + BOOL result = u32BroadcastIntervalOverride( message, &ddTempSensorsPublishInterval, TASK_PRIORITY_INTERVAL ); return result; } +/*********************************************************************//** + * @brief + * The testIOFPTemperatureSensorsDataPublishIntervalOverride function + * overrides the IOFP temperature sensors data publish interval. + * @details \b Inputs: none + * @details \b Outputs: fpTempSensorsPublishInterval + * @param Override message from Dialin which includes the interval + * (in ms) to override the IOFP temperature sensor data broadcast interval to. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testIOFPTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ) +{ + BOOL result = u32BroadcastIntervalOverride( message, &fpTempSensorsPublishInterval, TASK_PRIORITY_INTERVAL ); + return result; +} + /**@}*/