Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -r337136fc77fe5628fa727aac6252a06238561a10 -r6dd382e3988fac2f9ee041b4738d67305e17a6a2 --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 337136fc77fe5628fa727aac6252a06238561a10) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 6dd382e3988fac2f9ee041b4738d67305e17a6a2) @@ -15,8 +15,11 @@ * ***************************************************************************/ +#include "Conductivity.h" +#include "Flow.h" #include "Messaging.h" #include "MessageSupport.h" +#include "Pressure.h" #include "Temperature.h" #include "TaskPriority.h" #include "Utilities.h" @@ -28,11 +31,18 @@ // ********** private definitions ********** +#define TEMP_SENSORS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Temperature sensors publish data time interval. +#define DATA_PUBLISH_COUNTER_START_COUNT 30 ///< Data publish counter start count. + // ********** private data ********** +static OVERRIDE_U32_T tempSensorsPublishInterval; ///< Temperature sensor data publication counter. +static U32 dataPublicationTimerCounter; ///< Timer counter used to schedule temp sensor data publication to CAN bus. // ********** private function prototypes ********** +static void publishTemperatureSensorsData( void ); + /*********************************************************************//** * @brief * The initTemperature function initializes the temperature unit. @@ -57,13 +67,68 @@ *************************************************************************/ void execTemperatureSensors( void ) { - return; + publishTemperatureSensorsData(); } +/*********************************************************************//** + * @brief + * The publishTemperatureSensorsData function broadcasts the temperature + * sensors data at the publication interval. + * @details \b Inputs: dataPublicationTimerCounter, tempSensorsPublishInterval + * @details \b Outputs: dataPublicationTimerCounter + * @details \b Message \b Sent: MSG_ID_FP_TEMPERATURE_DATA publishes the temperature + * data in a periodic interval. + * @return none + *************************************************************************/ +static void publishTemperatureSensorsData( void ) +{ + if ( ++dataPublicationTimerCounter >= getU32OverrideValue( &tempSensorsPublishInterval ) ) + { + TEMPERATURE_SENSORS_DATA_T data; + data.p10Temp = getFilteredConductivitySensorTemperature( P9_COND ); + data.p19Temp = getFilteredConductivitySensorTemperature( P18_COND ); + data.m1Temp = getFilteredPressureSensorTemperature( M1_PRES ); + data.m3Temp = getFilteredPressureSensorTemperature( M3_PRES ); + data.p8Temp = getFilteredPressureSensorTemperature( P8_PRES ); + data.p13Temp = getFilteredPressureSensorTemperature( P13_PRES ); + data.p17Temp = getFilteredPressureSensorTemperature( P17_PRES ); + data.x1Temp = getFilteredPressureSensorTemperature( X1_PRES ); + data.x2Temp = getFilteredPressureSensorTemperature( X2_PRES ); + data.x3Temp = getFilteredPressureSensorTemperature( X3_PRES ); + data.x4Temp = getFilteredPressureSensorTemperature( X4_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_DATA_T ) ); + dataPublicationTimerCounter = 0; + } +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testTemperatureSensorsDataPublishIntervalOverride function overrides the + * temperature sensors data publish interval. + * @details \b Inputs: none + * @details \b Outputs: tempSensorsPublishInterval + * @param Override message from Dialin which includes the interval + * (in ms) to override the temperature sensor data broadcast interval to. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ) +{ + BOOL result = u32BroadcastIntervalOverride( message, &tempSensorsPublishInterval, TASK_PRIORITY_INTERVAL ); + + return result; +} + + /**@}*/