/************************************************************************** * * Copyright (c) 2024-2026 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 Conductivity.h * * @author (last) Michael Garthwaite * @date (last) 12-Mar-2026 * * @author (original) Vinayakam Mani * @date (original) 13-Sep-2024 * ***************************************************************************/ #ifndef __CONDUCTIVITY_H__ #define __CONDUCTIVITY_H__ #include "DDCommon.h" #include "DDDefs.h" #include "ConductivityTeensy.h" #include "ConductivitySensors.h" /** * @defgroup Conductivity Conductivity * @brief Conductivity Sensors monitor module. Monitors and filters conductivity sensor readings. * * * * @addtogroup Conductivity * @{ */ // ********** public definitions ********** #define RO_REJECTION_RATIO_OUT_OF_RANGE_VALUE 100.0F ///< Out of range value for RO rejection ratio when CPi conductivity is zero. #pragma pack(push, 1) /// Conductivity data struct. typedef struct { F32 d17Cond; ///< D17 conductivity sensor value F32 d27Cond; ///< D27 conductivity sensor value F32 d29Cond; ///< D29 conductivity sensor value F32 d43Cond; ///< D43 conductivity sensor value F32 d74Cond; ///< D74 conductivity sensor value } DD_CONDUCTIVITY_DATA_T; /// Conductivity data struct. typedef struct { F32 p9Conductivity; ///< P9 conductivity sensor value F32 p18Conductivity; ///< P18 conductivity sensor value } FP_CONDUCTIVITY_DATA_T; /// RO rejection ratio data struct. typedef struct { F32 rawRORejectionRatio; ///< RO rejection ratio during tank full and fill state F32 rawRORejectionRatioTankFill; ///< RO rejection ratio during tank fill state F32 avgRORejectionRatio; ///< RO rejection ratio average during tank full and fill state F32 avgRORejectionRatioTankFill; ///< RO rejection ratio average during tank fill state U32 genPermeateState; ///< Permeate tank state } RO_REJECTION_RATIO_DATA_T; typedef struct { F32 d17CondResist; ///< D17 raw resistance value from conductivity F32 d27CondResist; ///< D27 raw resistance value from conductivity F32 d29CondResist; ///< D29 raw resistance value from conductivity F32 d43CondResist; ///< D43 raw resistance value from conductivity F32 d74CondResist; ///< D74 raw resistance value from conductivity F32 p9CondResist; ///< P9 raw resistance value from conductivity F32 p18CondResist; ///< P18 raw resistance value from conductivity F32 d17RTDResist; ///< D17 raw resistance value from RTD F32 d27RTDResist; ///< D27 raw resistance value from RTD F32 d29RTDResist; ///< D29 raw resistance value from RTD F32 d43RTDResist; ///< D43 raw resistance value from RTD F32 d74RTDResist; ///< D74 raw resistance value from RTD F32 p9RTDResist; ///< P9 raw resistance value from RTD F32 p18RTDResist; ///< P18 raw resistance value from RTD } CONDUCTIVITY_RESISTANCE_DATA_T; #pragma pack(pop) // ********** public function prototypes ********** void initConductivity( void ); void execConductivity( void ); F32 getFilteredConductivity( CONDUCTIVITY_SENSORS_T sensor ); F32 getFilteredConductivitySensorTemperature( CONDUCTIVITY_SENSORS_T sensor ); F32 getRORejectonRatio( void ); F32 getTankFillRORejectionRatio( void ); F32 getRORRAverage( void ); F32 getTankFillRORRAverage( void ); BOOL testDDConductivitySensorDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testDDConductivitySensorFilteredReadingsOverride( MESSAGE_T *message ); BOOL testDDConductivitySensorFilteredTemperatureReadingsOverride( MESSAGE_T *message ); BOOL testFPConductivitySensorDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testFPConductivitySensorFilteredReadingsOverride( MESSAGE_T *message ); BOOL testFPConductivitySensorFilteredTemperatureReadingsOverride( MESSAGE_T *message ); BOOL testRORejectionRatioDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testRORejectionRatioFilteredOverride( MESSAGE_T *message ); BOOL testConductivitySensorReadingsOverride( MESSAGE_T *message ); BOOL testConductivitySensorTemperatureOverride( MESSAGE_T *message ); /**@}*/ #endif