Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r3fc7575057616cba1efb317d41ded824a8a74eb4 -re83f47ec5c3d458701a32069dba4fe81aae6fd67 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 3fc7575057616cba1efb317d41ded824a8a74eb4) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision e83f47ec5c3d458701a32069dba4fe81aae6fd67) @@ -146,7 +146,6 @@ *************************************************************************/ void initHeaters ( void ) { - heatersSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; heatersSelfTestState = HEATERS_SELF_TEST_START; primaryHeatersExecState = PRIMARY_HEATERS_EXEC_STATE_OFF; trimmerHeaterExecState = TRIMMER_HEATER_EXEC_STATE_OFF; @@ -795,7 +794,7 @@ { BOOL result = FALSE; - if ( TRUE == isTestingActivated() ) + if ( isTestingActivated() ) { result = TRUE; heatersDataPublishInterval.override = OVERRIDE_RESET; Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r3fc7575057616cba1efb317d41ded824a8a74eb4 -re83f47ec5c3d458701a32069dba4fe81aae6fd67 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 3fc7575057616cba1efb317d41ded824a8a74eb4) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision e83f47ec5c3d458701a32069dba4fe81aae6fd67) @@ -19,6 +19,7 @@ #include "FPGA.h" #include "SystemCommMessages.h" #include "Timers.h" +#include "TaskPriority.h" /** * @addtogroup TemperatureSensors @@ -79,9 +80,11 @@ #define HEATERS_INTERNAL_TEMPERTURE_CALCULATION_INTERVAL 20U ///< Time interval that is used to calculate the heaters internal temperature #define HEATERS_INTERNAL_ADC_TO_TEMP_CONVERSION_COEFF 0.25 ///< Heaters internal temperature sensors ADC to temperature conversion coefficient -#define HEATERS_COLD_JUNCTION_ADC_TO_TEMP_CONVERSION_COEFF 0.0625 +#define HEATERS_COLD_JUNCTION_ADC_TO_TEMP_CONVERSION_COEFF 0.0625 ///< Heaters cold junction temperatur sensors ADC to temperature conversion coefficient // todo ADD TO AE TO THE BOTTOM +#define TEMP_SENSORS_DATA_PUBLISH_INTERVAL (5000 / TASK_PRIORITY_INTERVAL) ///< Temperature sensors publish data time interval + #define K_THERMOCOUPLE_TEMP_2_MILLI_VOLT_CONVERSION_COEFF 0.041276 ///< K thermocouple temperature to millivolt conversion coefficient #define THERMOCOUPLE_POSITIVE_TEMP_C_0 (-0.176004136860 * pow(10,-1)) ///< K TC positive temperature C0 coefficient @@ -146,6 +149,10 @@ static OVERRIDE_F32_T temperatureValues [ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature values array static U32 elapsedTime; ///< Elapsed time variable static U32 internalHeatersConversionTimer; ///< Conversion timer variable to calculate the heaters internal temperature +static OVERRIDE_U32_T tempSensorsPublishInterval = { TEMP_SENSORS_DATA_PUBLISH_INTERVAL, + TEMP_SENSORS_DATA_PUBLISH_INTERVAL, 0, 0 }; //TODO add to AE +static U32 dataPublicationTimerCounter; // TODO add to AE +static F32 tempValuesForPublication [ NUM_OF_TEMPERATURE_SENSORS ]; //TODO add to AE // Private functions prototypes @@ -159,6 +166,8 @@ static F32 getADC2TempConversion ( F32 avgADC, U32 gain, U32 refResistance, U32 zeroDegResistance ); static void getHeaterInternalTemp ( U32 TCIndex, U32 CJIndex ); static void processADCRead ( U32 sensorIndex, U32 adc, U32 fpgaError, U32 fpgaCount ); +static void publishTemperatureSensorsData ( void ); //TODO add to AE +static DATA_GET_PROTOTYPE( U32, getPublishTemperatureSensorsDataInterval ); //TODO Add to AE // Public functions @@ -175,12 +184,12 @@ void initTemperatureSensors ( void ) { U08 i; - tempSensorsSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; tempSensorsSelfTestState = TEMPSENSORS_SELF_TEST_START; tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; sampleCount = 0; elapsedTime = 0; internalHeatersConversionTimer = 0; + dataPublicationTimerCounter = 0; // Initialize TPi and TPo constants for ( i = TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR; i < TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR; i++ ) @@ -714,10 +723,60 @@ internalHeatersConversionTimer++; } + publishTemperatureSensorsData(); + return state; } /************************************************************************* + * @brief + * The getPublishTemperatureSensorsDataInterval function returns the data + * publication interval either from the data or from the override + * @details + * Inputs : tempSensorsPublishInterval + * Outputs : none + * @param none + * @return result + *************************************************************************/ +U32 getPublishTemperatureSensorsDataInterval ( void ) +{ + U32 result = tempSensorsPublishInterval.data; + + if ( OVERRIDE_KEY == tempSensorsPublishInterval.override ) + { + result = tempSensorsPublishInterval.ovData; + } + + return result; +} + +/************************************************************************* + * @brief + * The publishTemperatureSensorsData function broadcasts the temperature + * sensors data at the publication interval + * @details + * Inputs : dataPublicationTimerCounter, tempValuesForPublication + * Outputs : dataPublicationTimerCounter, tempValuesForPublication + * @param none + * @return none + *************************************************************************/ +static void publishTemperatureSensorsData ( void ) +{ + if ( ++dataPublicationTimerCounter >= getPublishTemperatureSensorsDataInterval() ) + { + U08 i; + for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) + { + tempValuesForPublication [ i ] = getTemperatureValue ( i ); + } + + broadcastTemperatureSensorsData ( (U08*)&tempValuesForPublication, + sizeof(tempValuesForPublication) ); + + } +} + +/************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ @@ -776,4 +835,54 @@ return result; } +/************************************************************************* + * @brief + * The testSetTemperatureSensorsPublishIntervalOverride function overrides + * the temperature sensors publish data interval + * @details + * Inputs : tempSensorsPublishInterval + * Outputs : tempSensorsPublishInterval + * @param value + * @return result + *************************************************************************/ +BOOL testSetTemperatureSensorsPublishIntervalOverride ( U32 value ) +{ + BOOL result = FALSE; + + if ( isTestingActivated() ) + { + U32 interval = value / TASK_PRIORITY_INTERVAL; + + result = TRUE; + tempSensorsPublishInterval.ovData = interval; + tempSensorsPublishInterval.override = OVERRIDE_KEY; + } + + return result; +} + +/************************************************************************* + * @brief + * The testResetTemperatureSensorsPublishIntervalOverride function resets + * the override value of temperature sensors publish data interval + * @details + * Inputs : tempSensorsPublishInterval + * Outputs : tempSensorsPublishInterval + * @param none + * @return result + *************************************************************************/ +BOOL testResetTemperatureSensorsPublishIntervalOverride ( void ) +{ + BOOL result = FALSE; + + if ( isTestingActivated() ) + { + tempSensorsPublishInterval.override = OVERRIDE_RESET; + tempSensorsPublishInterval.ovData = tempSensorsPublishInterval.ovInitData; + } + + return result; + +} + /**@}*/ Index: firmware/App/Controllers/TemperatureSensors.h =================================================================== diff -u -r3fc7575057616cba1efb317d41ded824a8a74eb4 -re83f47ec5c3d458701a32069dba4fe81aae6fd67 --- firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision 3fc7575057616cba1efb317d41ded824a8a74eb4) +++ firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision e83f47ec5c3d458701a32069dba4fe81aae6fd67) @@ -57,4 +57,7 @@ BOOL testSetMeasuredTemperatureOverride ( U32 sensor, F32 temperature ); //Todo add to AE BOOL testResetMeasuredTemperatureOverride ( U32 sensor ); //TODO add to AE +BOOL testSetTemperatureSensorsPublishIntervalOverride ( U32 value ); //Todo add to AE +BOOL testResetTemperatureSensorsPublishIntervalOverride ( void ); //TODO add to AE + #endif Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r3fc7575057616cba1efb317d41ded824a8a74eb4 -re83f47ec5c3d458701a32069dba4fe81aae6fd67 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3fc7575057616cba1efb317d41ded824a8a74eb4) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision e83f47ec5c3d458701a32069dba4fe81aae6fd67) @@ -397,6 +397,34 @@ } /************************************************************************* + * @brief + * The broadcastTemperatureSensorsData function sends out DG temperature + * sensors data + * Inputs : heaters data + * Outputs : temperatur sensors data msg constructed and queued + * @param sensorsValue : sensors value array + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastTemperatureSensorsData ( U08 *sensorsValue, U32 byteLength ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_TEMPERATURE_DATA; + msg.hdr.payloadLen = byteLength; + + memcpy( payloadPtr, sensorsValue, byteLength ); + + // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_NOT_REQUIRED ); + + return result; +} + +/************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r3fc7575057616cba1efb317d41ded824a8a74eb4 -re83f47ec5c3d458701a32069dba4fe81aae6fd67 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 3fc7575057616cba1efb317d41ded824a8a74eb4) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision e83f47ec5c3d458701a32069dba4fe81aae6fd67) @@ -41,6 +41,9 @@ // MSG_ID_HEATERS_READINGS BOOL broadcastHeatersData ( U32 mainPrimaryDC, U32 smallPrimaryDC, U32 trimmerDC ); +// MSG_ID_TEMPERATURE_SENSORS_READINGS +BOOL broadcastTemperatureSensorsData ( U08 *sensorsValue, U32 byteLength ); + // *********** public test support message functions ********** #ifdef DEBUG_ENABLED