Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -r39fbf9fd993d5e735092cf4ad802d58d0f92f7b1 -r71c51efd08a5140276e78f090fee5f1698f5b5f1 --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 39fbf9fd993d5e735092cf4ad802d58d0f92f7b1) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 71c51efd08a5140276e78f090fee5f1698f5b5f1) @@ -8,7 +8,7 @@ * @file Conductivity.c * * @author (last) Michael Garthwaite -* @date (last) 04-Jun-2026 +* @date (last) 16-Jun-2026 * * @author (original) Vinayakam Mani * @date (original) 13-Sep-2024 @@ -34,7 +34,10 @@ #define COND_SENSOR_REPORT_PERIOD ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Broadcast conductivity values message every second. #define COND_SENSOR_UPDATE_INTERVAL ( 700 / TASK_PRIORITY_INTERVAL ) ///< Time in task intervals for new sensor data -#define DATA_PUBLISH_COUNTER_START_COUNT 40 ///< Data publish counter start count. +#define DD_CONDUCTIVITY_DATA_PUBLISH_COUNTER_START_COUNT 40 ///< DD Conductivity data publish counter start count. +#define FP_CONDUCTIVITY_DATA_PUBLISH_COUNTER_START_COUNT 41 ///< FP Conductivity data publish counter start count. +#define RO_DATA_PUBLISH_COUNTER_START_COUNT 42 ///< FP RO Data publish counter start count. +#define RESISTANCE_DATA_PUBLISH_COUNTER_START_COUNT 43 ///< DD Resistance data publish counter start count. #define CONDUCTIVITY_SAMPLE_FILTER_MS ( 210 ) ///< Filter conductivity data for given time. Currently set to have 5 samples over 3.5s ( 700ms sample rate ) #define CONDUCTIVITY_TEMP_SAMPLE_FILTER_MS ( 30 ) ///< Filter conductivity temperature data for given time. Currently set to have 5 samples over 3.5s ( 700ms sample rate ) #define SIZE_OF_COND_ROLLING_AVG ( CONDUCTIVITY_SAMPLE_FILTER_MS / TASK_PRIORITY_INTERVAL ) ///< Filtered conductivity moving average sample count. @@ -53,7 +56,7 @@ } FILTER_CONDUCTIVITY_READINGS_T; /// Filter conductivity sensor temperature readings record. -typedef struct +typedef struct publishConductivitySensorsData { F32 conductivityTempReadings[ SIZE_OF_COND_TEMP_ROLLING_AVG ]; ///< Holds conductivity sample rolling average. U32 conductivityTempReadingsIdx; ///< Index for next sample in rolling average array. @@ -84,6 +87,8 @@ static U32 roRRCount; ///< RO rejection ratio Number of samples in average buffer. static F32 roRRTankFillAvg; ///< Average RO rejection ratio during permeate tank fill state. static U32 roRRSampleIntervalCounter; ///< RO rejection ratio sample collection timer counter. +static U32 conductivityResistancePublishTimerCounter; ///< DD and FP Conductivity data publication counter. +static OVERRIDE_U32_T conductivityResistanceDataPublishInterval; ///< DD and FP Conductivity sensors publish time interval override. // ********** private function prototypes ********** @@ -93,6 +98,7 @@ static void filterConductivitySensorTemperatureReadings( void ); static void calcRORejectionRatio( void ); static void filterRORejectionRatioReadings( void ); +static void broadcastResistanceData( void ); /*********************************************************************//** * @brief @@ -108,20 +114,21 @@ initConductivityTeensy(); initConductivitySensors(); - ddConductivityPublishTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - fpConductivityPublishTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - roRRPublishTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - roRejectionRatio = 0.0F; - roRejectionRatioTankFill = 0.0F; - roRRRunningSum = 0.0F; - roRRSamplesNextIndex = 0; - roRRCount = 0; - roRRTankFillAvg = 0.0F; - roRRAvg.data = 0.0F; - roRRAvg.ovData = 0.0F; - roRRAvg.ovInitData = 0.0F; - roRRAvg.override = OVERRIDE_RESET; - roRRSampleIntervalCounter = 0; + ddConductivityPublishTimerCounter = DD_CONDUCTIVITY_DATA_PUBLISH_COUNTER_START_COUNT; + fpConductivityPublishTimerCounter = FP_CONDUCTIVITY_DATA_PUBLISH_COUNTER_START_COUNT; + roRRPublishTimerCounter = RO_DATA_PUBLISH_COUNTER_START_COUNT; + conductivityResistancePublishTimerCounter = RESISTANCE_DATA_PUBLISH_COUNTER_START_COUNT; + roRejectionRatio = 0.0F; + roRejectionRatioTankFill = 0.0F; + roRRRunningSum = 0.0F; + roRRSamplesNextIndex = 0; + roRRCount = 0; + roRRTankFillAvg = 0.0F; + roRRAvg.data = 0.0F; + roRRAvg.ovData = 0.0F; + roRRAvg.ovInitData = 0.0F; + roRRAvg.override = OVERRIDE_RESET; + roRRSampleIntervalCounter = 0; memset( &roRRSamples, 0, sizeof( roRRSamples ) ); @@ -150,20 +157,26 @@ condTempPrevReadCount[ sensor ] = 0; } - ddConductivityDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; - ddConductivityDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; - ddConductivityDataPublishInterval.ovInitData = 0; - ddConductivityDataPublishInterval.override = OVERRIDE_RESET; + ddConductivityDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; + ddConductivityDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; + ddConductivityDataPublishInterval.ovInitData = 0; + ddConductivityDataPublishInterval.override = OVERRIDE_RESET; - fpConductivityDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; - fpConductivityDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; - fpConductivityDataPublishInterval.ovInitData = 0; - fpConductivityDataPublishInterval.override = OVERRIDE_RESET; + fpConductivityDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; + fpConductivityDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; + fpConductivityDataPublishInterval.ovInitData = 0; + fpConductivityDataPublishInterval.override = OVERRIDE_RESET; - roRRDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; - roRRDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; - roRRDataPublishInterval.ovInitData = 0; - roRRDataPublishInterval.override = OVERRIDE_RESET; + roRRDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; + roRRDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; + roRRDataPublishInterval.ovInitData = 0; + roRRDataPublishInterval.override = OVERRIDE_RESET; + + conductivityResistanceDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; + conductivityResistanceDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; + conductivityResistanceDataPublishInterval.ovInitData = 0; + conductivityResistanceDataPublishInterval.override = OVERRIDE_RESET; + } /*********************************************************************//** @@ -501,6 +514,7 @@ * roRRPublishTimerCounter, DD, FP, RO data broadcast message sent * @details \b Message \b Sent: MSG_ID_DD_CONDUCTIVITY_DATA to publish DD conductivity data. * @details \b Message \b Sent: MSG_ID_FP_CONDUCTIVITY_DATA to publish FP conductivity data. + * @details \b Message \b Sent: MSG_ID_FP_RO_REJECTION_RATIO_DATA to publish FP RO data. * @return none *************************************************************************/ static void publishConductivitySensorsData( void ) @@ -546,9 +560,50 @@ broadcastData( MSG_ID_FP_RO_REJECTION_RATIO_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( RO_REJECTION_RATIO_DATA_T ) ); } + + if ( FALSE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) ) + { + // publish conductivity resistance data on interval + if ( ++conductivityResistancePublishTimerCounter >= getU32OverrideValue( &conductivityResistanceDataPublishInterval ) ) + { + broadcastResistanceData(); + } + } } +/*********************************************************************//** + * @brief + * The broadcastResistanceData function publishes DD resistance data. + * @details \b Inputs: conductivityResistancePublishTimerCounter + * @details \b Outputs: resistance data + * roRRPublishTimerCounter, DD & FP resistance data is sent + * @details \b Message \b Sent: MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_DATA to publish DD resistance data. + * @return none + *************************************************************************/ +static void broadcastResistanceData( void ) +{ + CONDUCTIVITY_RESISTANCE_DATA_T data; + data.d17CondResist = getConductivityRawResistance( D17_COND ); + data.d27CondResist = getConductivityRawResistance( D27_COND ); + data.d29CondResist = getConductivityRawResistance( D29_COND ); + data.d43CondResist = getConductivityRawResistance( D43_COND ); + data.d74CondResist = getConductivityRawResistance( D74_COND ); + data.p9CondResist = getConductivityRawResistance( P9_COND ); + data.p18CondResist = getConductivityRawResistance( P18_COND ); + data.d17RTDResist = getConductivityRawRTD( D17_COND ); + data.d27RTDResist = getConductivityRawRTD( D27_COND ); + data.d29RTDResist = getConductivityRawRTD( D29_COND ); + data.d43RTDResist = getConductivityRawRTD( D43_COND ); + data.d74RTDResist = getConductivityRawRTD( D74_COND ); + data.p9RTDResist = getConductivityRawRTD( P9_COND ); + data.p18RTDResist = getConductivityRawRTD( P18_COND ); + conductivityResistancePublishTimerCounter = 0; + + broadcastData( MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( CONDUCTIVITY_RESISTANCE_DATA_T ) ); + +} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r84b54a6a2e4478c49853f461b8e1ba560441f147 -r71c51efd08a5140276e78f090fee5f1698f5b5f1 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 84b54a6a2e4478c49853f461b8e1ba560441f147) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 71c51efd08a5140276e78f090fee5f1698f5b5f1) @@ -8,7 +8,7 @@ * @file Messaging.c * * @author (last) Michael Garthwaite -* @date (last) 11-Jun-2026 +* @date (last) 15-Jun-2026 * * @author (original) Vinayakam Mani * @date (original) 07-Aug-2024 @@ -294,7 +294,9 @@ { MSG_ID_FP_SET_RECOVERY_VALVES_REQUEST, &testIOFPSetValveRecoveryConfig }, { MSG_ID_DD_SUBSTITUTION_PUMP_START_STOP_OVERRIDE_REQUEST, &testSubstitutionPumpStartStopOverride }, { MSG_ID_DD_SUBSTITUTION_PUMP_BROADCAST_INTERVAL_OVERRIDE_REQUEST, &testSubstitutionPumpDataPublishIntervalOverride }, - { MSG_ID_DD_SUBSTITUTION_PUMP_TARGET_RATE_OVERRIDE_REQUEST, &testSubstitutionPumpTargetRateOverride }, + { MSG_ID_DD_SUBSTITUTION_PUMP_TARGET_RATE_OVERRIDE_REQUEST, &testSubstitutionPumpTargetRateOverride }, + { MSG_ID_DD_CONDUCTIVITY_SENSOR_CAL_REQUEST, &testHandleConductivitySensorCalRequest }, + { MSG_ID_FP_CONDUCTIVITY_SENSOR_CAL_REQUEST, &testHandleConductivitySensorCalRequest }, }; /// Calculation for number of entries in the incoming message function handler look-up table.