Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -r13bfd2e759fbe5753ba8bcefc3227563c09ff055 -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 13bfd2e759fbe5753ba8bcefc3227563c09ff055) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -7,8 +7,8 @@ * * @file BalancingChamber.c * -* @author (last) Vinayakam Mani -* @date (last) 06-Apr-2026 +* @author (last) Jashwant Gantyada +* @date (last) 10-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 28-Jan-2025 @@ -95,13 +95,14 @@ static U32 balChamberFillTimeoutCount; ///< Timeout count (in task interval) to detect BC fill timeout. static S32 diffSpentFillCompleteCount; ///< Difference between spent target fill to actual fill count static BOOL isSpentFillComplete; ///< Flag indicating spent side fill complete. -static BOOL isBalChamberSwitchingActive; ///< Flag indicating balancing chamber switching is active or not. -static BOOL isBalChamberSwitchingOnRequested; ///< Flag indicating that a request was made to activate balancing chamber switching. -static BOOL isBalChamberSwitchingOffRequested; ///< Flag indicating that a request was made to deactivate balancing chamber switching. static F32 lastPrevSpentDialPressure; ///< Low-Qd slope: spent pressure last sample of dosing (tick before VALVES_CLOSE); then n-2 in VC. static F32 prevSpentDialPressure; ///< Spent pressure previous sample (n-1) during VALVES_CLOSE for low-Qd slope detection. static U32 spentFillRiseHitCount; ///< Low-Qd slope: counted rise hits (only incremented when in timing window). static U32 spentFillRiseMissCounter; ///< Missed samples after a rise hit before resetting hit count. +static BOOL isBalChamberSwitchingActive; ///< Flag indicating balancing chamber switching is active or not. +static BOOL isBalChamberSwitchingOnRequested; ///< Flag indicating that a request was made to activate balancing chamber switching. +static BOOL isBalChamberSwitchingOffRequested; ///< Flag indicating that a request was made to deactivate balancing chamber switching. + //TODO: remove later once level sensor working static U32 bicarbChamberPeriodicFillCounter; @@ -539,12 +540,12 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { //Set Trimmer heater Target temp every BC cycle to catch up fresh dialysate temp - setHeaterTargetTemperature( D45_HEAT, getD4AverageTemperature() ); + setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D4_TEMP ) ); } else { //Set Trimmer heater Target temp every BC cycle to catch up fresh dialysate temp - setHeaterTargetTemperature( D45_HEAT, getD99AverageTemperature() ); + setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D99_TEMP ) ); } // Check fresh dialysate pressure in range or BC switch only flag set or BC pressure alarms are disabled @@ -744,7 +745,6 @@ // Move to the idle state state = BAL_CHAMBER_STATE_IDLE; - } else { @@ -843,12 +843,12 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { //Set Trimmer heater Target temp every BC cycle to catch up fresh dialysate temp - setHeaterTargetTemperature( D45_HEAT, getD4AverageTemperature() ); + setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D4_TEMP ) ); } else { //Set Trimmer heater Target temp every BC cycle to catch up fresh dialysate temp - setHeaterTargetTemperature( D45_HEAT, getD99AverageTemperature() ); + setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D99_TEMP ) ); } // Check fresh dialysate pressure in range @@ -922,7 +922,6 @@ // Move to the idle state state = BAL_CHAMBER_STATE_IDLE; - } // Spent side of balancing chamber fill is complete or not @@ -1086,7 +1085,7 @@ } // Keep Clearing the off request flag in case an off request was made while we were already in the idle state - isBalChamberSwitchingOffRequested = FALSE; + isBalChamberSwitchingOffRequested = FALSE; // Clear flag to indicate that balancing chamber switching is inactive isBalChamberSwitchingActive = FALSE; @@ -1255,14 +1254,15 @@ d48SpeedPostRangeCheck = RANGE( spentDialPumpSpeed, minD48Speed, maxD48Speed ); - // Do not turn on the pump if the switching only is enabled in the standby mode. - if ( FALSE == getBalChamberSwitchingOnlyStatus() ) - { - // Update the D48 pump speed - setD48PumpSpeedForBCFill( d48SpeedPostRangeCheck ); + + // Do not turn on the pump if the switching only is enabled in the standby mode. + if ( FALSE == getBalChamberSwitchingOnlyStatus() ) + { + // Update the D48 pump speed + setD48PumpSpeedForBCFill( d48SpeedPostRangeCheck ); + } } } - } //Update spent fill is complete isSpentFillComplete = TRUE; Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r938ebb5c798d4f4a5a7ebf664e7f443f18d2237c -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 938ebb5c798d4f4a5a7ebf664e7f443f18d2237c) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -7,8 +7,8 @@ * * @file Heaters.c * -* @author (last) Vinayakam Mani -* @date (last) 03-Mar-2026 +* @author (last) Michael Garthwaite +* @date (last) 30-Mar-2026 * * @author (original) Vinayakam Mani * @date (original) 11-Oct-2024 @@ -60,10 +60,8 @@ #define D5_HEAT_TX_P_COEFFICIENT 0.05F ///< P Term for AC primary heater control during treatment mode. #define D5_HEAT_TX_I_COEFFICIENT 0.001F ///< I Term for AC primary heater control during treatment mode. -//#define D45_HEAT_P_COEFFICIENT 0.20F ///< P Term for trimmer heater control. -//#define D45_HEAT_I_COEFFICIENT 0.05F ///< I Term for trimmer heater control. -#define D45_HEAT_P_COEFFICIENT 0.05F ///< P Term for trimmer heater control. -#define D45_HEAT_I_COEFFICIENT 0.02F ///< I Term for trimmer heater control. +#define D45_HEAT_P_COEFFICIENT 0.01F ///< P Term for trimmer heater control. +#define D45_HEAT_I_COEFFICIENT 0.005F ///< I Term for trimmer heater control. #define D45_HEAT_TX_INIT_FEED_FORWARD 0.0F ///< Initial Feed forward term for heater control #define HEATERS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Heaters data publish interval. @@ -84,7 +82,7 @@ //#define D5_HEAT_CONTROL_INTERVAL_MS 30000 /// Primary heater control interval in milli seconds #define D5_HEAT_CONTROL_INTERVAL_MS 3000 /// Primary heater control interval in milli seconds #define D5_HEAT_CONTROL_INTERVAL_COUNT ( D5_HEAT_CONTROL_INTERVAL_MS / TASK_GENERAL_INTERVAL ) ///< Primary heater control interval count. -#define D45_HEAT_CONTROL_INTERVAL_MS ( 1 * MS_PER_SECOND ) ///< Trimmer heater control interval in milli seconds +#define D45_HEAT_CONTROL_INTERVAL_MS ( 3 * MS_PER_SECOND ) ///< Trimmer heater control interval in milli seconds #define D45_HEAT_CONTROL_INTERVAL_COUNT ( D45_HEAT_CONTROL_INTERVAL_MS / TASK_GENERAL_INTERVAL ) ///< Trimmer heater control interval count. #define D5_TARGET_TEMP_ADJUST_LOW_QD_INTERVAL ( 3 * SEC_PER_MIN * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Adjust primary target temperature - outer loop control interval for low Qd. #define D5_TARGET_TEMP_ADJUST_HIGH_QD_INTERVAL ( 1 * SEC_PER_MIN * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Adjust primary target temperature - outer loop control interval for high Qd. @@ -800,7 +798,7 @@ if ( D5_HEAT == heater ) { - measuredTemperature = getD4AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D4_TEMP ); if ( DD_MODE_HEAT != opMode ) { @@ -830,7 +828,7 @@ } else { - measuredTemperature = getD50AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D50_TEMP ); if ( DD_MODE_HEAT != opMode ) { @@ -893,7 +891,7 @@ if ( D5_HEAT == heater ) { // Inlet temperature post heat exchanger - F32 inletTemperature = getD78AverageTemperature(); + F32 inletTemperature = getFilteredTemperatureValue( D78_TEMP ); F32 deltaTempC = targetTemperature - inletTemperature; F32 capDeltaTempC = MAX( deltaTempC, HEATERS_ZERO_DELTA_TEMP_C ); F32 flowrate = ( getTDDialysateFlowrate() + RINSE_PUMP_EST_FLOWRATE ) / LITER_IN_ML ; @@ -914,7 +912,7 @@ targetTemperature = adjustedPrimaryTargetTemp; } #if 1 - measuredTemperature = getD4AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D4_TEMP ); deltaTempC = fabs( targetTemperature - measuredTemperature ); if ( deltaTempC >= D5_HEATER_DEADBAND_CONTROL ) @@ -923,7 +921,7 @@ control[ heater ].data = ctrl; } #else - measuredTemperature = getD4AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D4_TEMP ); deltaTempC = targetTemperature - measuredTemperature; capDeltaTempC = fabs(deltaTempC); d5_p_gain = ( D5_HEATER_PWM_ADJ_SLOPE_FACTOR * getTDDialysateFlowrate() ) + D5_HEATER_PWM_INTERCEPT_FACTOR; @@ -964,7 +962,7 @@ } else { - measuredTemperature = getD50AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D50_TEMP ); ctrl = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); control[ heater ].data = ctrl; Index: firmware/App/Controllers/Ultrafiltration.c =================================================================== diff -u -r25371dc5442fafdc0b138b4afe034b2f31ca3d1e -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Controllers/Ultrafiltration.c (.../Ultrafiltration.c) (revision 25371dc5442fafdc0b138b4afe034b2f31ca3d1e) +++ firmware/App/Controllers/Ultrafiltration.c (.../Ultrafiltration.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -249,13 +249,13 @@ // Fresh side dialysate density if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { - freshDensity = ( COMP_SLOPE * getD4AverageTemperature() ) + COMP_INTERCEPT; + freshDensity = ( COMP_SLOPE * getFilteredTemperatureValue( D4_TEMP ) ) + COMP_INTERCEPT; } else { - freshDensity = ( COMP_SLOPE * getD99AverageTemperature() ) + COMP_INTERCEPT; + freshDensity = ( COMP_SLOPE * getFilteredTemperatureValue( D99_TEMP ) ) + COMP_INTERCEPT; } - spentDensity = ( COMP_SLOPE * getD50AverageTemperature() ) + COMP_INTERCEPT; // spent side dialysate density + spentDensity = ( COMP_SLOPE * getFilteredTemperatureValue( D50_TEMP ) ) + COMP_INTERCEPT; // spent side dialysate density compFreshFlowrate = getTDDialysateFlowrate() * freshDensity; // Qd * fresh density compSpentFlowrate = getTDDialysateFlowrate() * spentDensity; // Qd * spent density balancingError = compFreshFlowrate - compSpentFlowrate; // Error in g/min Index: firmware/App/DDCommon.h =================================================================== diff -u -reb901537a68b4b0e507420a615dd748e9767ec01 -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/DDCommon.h (.../DDCommon.h) (revision eb901537a68b4b0e507420a615dd748e9767ec01) +++ firmware/App/DDCommon.h (.../DDCommon.h) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -7,8 +7,8 @@ * * @file DDCommon.h * -* @author (last) Jashwant Gantyada -* @date (last) 13-Mar-2026 +* @author (last) Michael Garthwaite +* @date (last) 14-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 07-Aug-2024 Index: firmware/App/Drivers/ConductivitySensors.c =================================================================== diff -u -rca391ad263e9e2cd9554c11c8c101d59f133f560 -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision ca391ad263e9e2cd9554c11c8c101d59f133f560) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -7,8 +7,8 @@ * * @file ConductivitySensors.c * -* @author (last) Vinayakam Mani -* @date (last) 18-Sep-2025 +* @author (last) Michael Garthwaite +* @date (last) 14-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 13-Sep-2024 @@ -63,18 +63,18 @@ /// Defined states for the conductivity write transaction. typedef enum Conductvity_States { - CONDUCTIVITY_INIT_STATE = 0, ///< Conductivity sensor write initiate state. - CONDUCTIVITY_READ_DATA_STATE, ///< Conductivity sensor write complete state. + CONDUCTIVITY_INIT_STATE = 0, ///< Conductivity sensor initiate state. + CONDUCTIVITY_READ_DATA_STATE, ///< Conductivity sensor read data state. NUM_OF_CONDUCTIVITY_STATES ///< Number of conductivity write states. } CONDUCTIVITY_STATE_T; /// Conductivity Sensor Status group typedef struct { - F32 rawTemperature; ///< raw Temperature in C from the conductivity sensor. - F32 rawResistance; ///< raw Resistance in Ohms from the conductivity sensor. - F32 calculatedTemperature; - F32 calculatedResistance; + F32 rawTemperature; ///< Raw Temperature in C from the conductivity sensor. + F32 rawResistance; ///< Raw Resistance in kOhms from the conductivity sensor. + F32 calculatedTemperature; ///< Calculated temperature in C. + F32 calculatedResistance; ///< Calculated resistance in Ohms U08 condReadCount; ///< Last conductivity read count. U08 condErrorCount; ///< Last conductivity error count. U08 tempReadCount; ///< Last temperature read count. @@ -109,8 +109,8 @@ static U32 getConductivitySensorErrorCount( CONDUCTIVITY_SENSORS_T sensor ); static U32 getTemperatureSensorReadCount( CONDUCTIVITY_SENSORS_T sensor ); static U32 getTemperatureSensorErrorCount( CONDUCTIVITY_SENSORS_T sensor ); -static BOOL monitorCalDataReads( U32 sensorId ); -static BOOL checkConductivityCoefficientRanges( U32 sensorId ); +static BOOL monitorCalDataReads( CONDUCTIVITY_SENSORS_T sensorId ); +static BOOL checkConductivityCoefficientRanges( CONDUCTIVITY_SENSORS_T sensorId ); static void calculateConductivityUpdatedStandard( CONDUCTIVITY_SENSORS_T sensorNum, BOOL isFPSensor ); static void calculateTemperature( CONDUCTIVITY_SENSORS_T sensorNum ); static void calculateResistance( CONDUCTIVITY_SENSORS_T sensorNum, BOOL isFPSensor ); @@ -124,8 +124,7 @@ *************************************************************************/ void initConductivitySensors( void ) { - /// TODO: Revert back to init state. - currentConductivityState = CONDUCTIVITY_READ_DATA_STATE; + currentConductivityState = CONDUCTIVITY_INIT_STATE; CONDUCTIVITY_SENSORS_T sensor; // Initialize override structures for each conductivity sensor @@ -168,48 +167,19 @@ conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead = FALSE; memset( conductivitySensorStatus[ sensor ].hasCalSlotBeenRead, 0 ,sizeof( conductivitySensorStatus[ sensor ].hasCalSlotBeenRead ) ); - // TODO: Remove temp values. Sensors do not have calibrated values. - conductivitySensorCoefficients[ sensor ].K_high = 4.1F; - conductivitySensorCoefficients[ sensor ].alpha_high = 0.02F; - conductivitySensorCoefficients[ sensor ].eta_high = 1.0F; -// conductivitySensorCoefficients[ sensor ].zeta_high = 0.0F; - conductivitySensorCoefficients[ sensor ].K_low = 4.1F; - conductivitySensorCoefficients[ sensor ].alpha_low = 0.02F; - conductivitySensorCoefficients[ sensor ].eta_low = 1.0F; - conductivitySensorCoefficients[ sensor ].zeta_low = -76.4F; - conductivitySensorCoefficients[ sensor ].beta = 0.25F; - conductivitySensorCoefficients[ sensor ].delta = -250.0F; + conductivitySensorCoefficients[ sensor ].K_high = 0.0F; + conductivitySensorCoefficients[ sensor ].alpha_high = 0.0F; + conductivitySensorCoefficients[ sensor ].eta_high = 0.0F; + conductivitySensorCoefficients[ sensor ].zeta_high = 0.0F; + conductivitySensorCoefficients[ sensor ].K_low = 0.0F; + conductivitySensorCoefficients[ sensor ].alpha_low = 0.0F; + conductivitySensorCoefficients[ sensor ].eta_low = 0.0F; + conductivitySensorCoefficients[ sensor ].zeta_low = 0.0F; + conductivitySensorCoefficients[ sensor ].beta = 0.0F; + conductivitySensorCoefficients[ sensor ].delta = 0.0F; conductivitySensorCoefficients[ sensor ].reserved1 = 0.0F; conductivitySensorCoefficients[ sensor ].reserved2 = 0.0F; - // Beta 2 - Unit 04 -// if ( ( P9_COND == sensor ) || ( P18_COND == sensor ) || ( D74_COND == sensor ) ) -// { -// conductivitySensorCoefficients[ sensor ].zeta_high = -6.42F; -// } -// else if ( ( D17_COND == sensor ) || ( D27_COND == sensor ) || ( D29_COND == sensor ) ) -// { -// conductivitySensorCoefficients[ sensor ].zeta_high = -14.4F; -// } -// else -// { -// conductivitySensorCoefficients[ sensor ].zeta_high = -6.65F; -// } - - // Beta 2 - Unit 05 - if ( ( P9_COND == sensor ) || ( P18_COND == sensor ) || ( D74_COND == sensor ) ) - { - conductivitySensorCoefficients[ sensor ].zeta_high = -28.6F; - } - else if ( ( D17_COND == sensor ) || ( D27_COND == sensor ) || ( D29_COND == sensor ) ) - { - conductivitySensorCoefficients[ sensor ].zeta_high = -38.35F; - } - else - { - conductivitySensorCoefficients[ sensor ].zeta_high = -6.65F; - } - memset( conductivitySensorRevisions[ sensor ].swRev, 0, sizeof( U08 ) * CONDUCTIVITY_CAL_CHAR_LENGTH ); memset( conductivitySensorRevisions[ sensor ].hwRev, 0, sizeof( U08 ) * CONDUCTIVITY_CAL_CHAR_LENGTH ); memset( conductivitySensorRevisions[ sensor ].hwSerial, 0, sizeof( U08 ) * CONDUCTIVITY_CAL_CHAR_LENGTH ); @@ -222,6 +192,9 @@ initFPGAPersistentAlarm( FPGA_PERS_ERROR_D29_COND_SENSOR, ALARM_ID_DD_D29_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); initFPGAPersistentAlarm( FPGA_PERS_ERROR_D43_COND_SENSOR, ALARM_ID_DD_D43_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); initFPGAPersistentAlarm( FPGA_PERS_ERROR_D74_COND_SENSOR, ALARM_ID_DD_D74_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); + initFPGAPersistentAlarm( FPGA_PERS_ERROR_P9_COND_SENSOR, ALARM_ID_FP_P9_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); + initFPGAPersistentAlarm( FPGA_PERS_ERROR_P18_COND_SENSOR, ALARM_ID_FP_P18_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); + } /*********************************************************************//** @@ -383,57 +356,57 @@ // Check which counter, assign it, and assign read bool to TRUE per sensor for ( sensor = FIRST_DD_COND_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) { - if ( FALSE == conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead ) + if ( FALSE == conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead ) { switch( conductivitySensorStatus[ sensor ].calMemCount ) { case CAL_DATA_1: - conductivitySensorCoefficients[ sensor ].K_high = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].K_high, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_1 ] = TRUE; break; case CAL_DATA_2: - conductivitySensorCoefficients[ sensor ].alpha_high = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].alpha_high, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_2 ] = TRUE; break; case CAL_DATA_3: - conductivitySensorCoefficients[ sensor ].eta_high = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].eta_high, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_3 ] = TRUE; break; case CAL_DATA_4: - conductivitySensorCoefficients[ sensor ].zeta_high = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].zeta_high, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_4 ] = TRUE; break; case CAL_DATA_5: - conductivitySensorCoefficients[ sensor ].K_low = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].K_low, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_5 ] = TRUE; break; case CAL_DATA_6: - conductivitySensorCoefficients[ sensor ].alpha_low = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].alpha_low, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_6 ] = TRUE; break; case CAL_DATA_7: - conductivitySensorCoefficients[ sensor ].eta_low = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].eta_low, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_7 ] = TRUE; break; case CAL_DATA_8: - conductivitySensorCoefficients[ sensor ].zeta_low = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].zeta_low, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_8 ] = TRUE; break; case CAL_DATA_9: - conductivitySensorCoefficients[ sensor ].beta = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].beta, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_9 ] = TRUE; break; case CAL_DATA_10: - conductivitySensorCoefficients[ sensor ].delta = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].delta, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_10 ] = TRUE; break; case CAL_DATA_11: - conductivitySensorCoefficients[ sensor ].reserved1 = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].reserved1, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_11 ] = TRUE; break; case CAL_DATA_12: - conductivitySensorCoefficients[ sensor ].reserved2 = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].reserved2, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_12 ] = TRUE; break; case SW_REV_LOWER_WORD: @@ -472,6 +445,10 @@ memcpy( ( conductivitySensorRevisions[ sensor ].hwRev + ( LOWER_WORD_SIZE + MID_WORD_SIZE ) ), &conductivitySensorStatus[ sensor ].calData, sizeof( U32 ) ); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ HW_SERIAL_UPPER_WORD ] = TRUE; break; + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CONDUCTIVITY_SENSOR_CAL_CHECK, sensor ) + break; + } // check if we have finished reading all values. conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead = monitorCalDataReads( sensor ); @@ -480,28 +457,43 @@ else { - if ( ( getTestConfigStatus( TEST_CONFIG_FP_DISABLE_CONDUCTIVITY_ALARMS ) == TRUE ) && - ( getTestConfigStatus( TEST_CONFIG_DD_DISABLE_CONDUCTIVITY_ALARMS ) == TRUE ) ) + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_DISABLE_CONDUCTIVITY_SENSOR_CHECKS ) == TRUE ) { conductivitySensorStatus[ sensor ].calReadComplete = TRUE; } else { conductivitySensorStatus[ sensor ].calReadComplete = checkConductivityCoefficientRanges( sensor ); - } - if ( TRUE == conductivitySensorStatus[ sensor ].calReadComplete ) - { - calResult = TRUE; + // TODO: this retry should be changed to an alarm or fault once we change the functionality of + // BETA 2.0 test config. This is meant to handle the in-between state of FPGA transitioning + // between 2.0 and non-2.0 data structures. + if ( FALSE == conductivitySensorStatus[ sensor ].calReadComplete ) + { + conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead = FALSE; + memset( conductivitySensorStatus[ sensor ].hasCalSlotBeenRead, 0 ,sizeof( conductivitySensorStatus[ sensor ].hasCalSlotBeenRead ) ); + } } } + + // calResult determines if we are done reading calibration data from all sensors. + // each sensor can re-assign it back to false if it is not completely done reading. + if ( TRUE == conductivitySensorStatus[ sensor ].calReadComplete ) + { + calResult = TRUE; + } + else + { + calResult = FALSE; + } } if ( TRUE == calResult ) { // All cal data has been assigned and checks. state = CONDUCTIVITY_READ_DATA_STATE; } + return state; } @@ -536,6 +528,7 @@ calculateConductivityUpdatedStandard( sensor, isFPSensor ); } + return state; } @@ -595,7 +588,7 @@ * @param sensor ID of the conductivity sensor. * @return True if all cal data has been read, false if not. *************************************************************************/ -static BOOL monitorCalDataReads( U32 sensorId ) +static BOOL monitorCalDataReads( CONDUCTIVITY_SENSORS_T sensorId ) { BOOL result = TRUE; CONDUCTIVITY_CAL_IDX_T calIdx; @@ -607,6 +600,7 @@ result = FALSE; } } + return result; } @@ -619,76 +613,76 @@ * @param sensor ID of the conductivity sensor. * @return True if all cal data is in range, false if not. *************************************************************************/ -static BOOL checkConductivityCoefficientRanges( U32 sensorId ) +static BOOL checkConductivityCoefficientRanges( CONDUCTIVITY_SENSORS_T sensorId ) { BOOL result = TRUE; CONDUCTIVITY_CAL_IDX_T idx = CAL_DATA_1; // Check data for high and low ranges. - if( ( conductivitySensorCoefficients[ sensorId ].K_high <= CELL_COEFF_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].K_high >= CELL_COEFF_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].K_high > CELL_COEFF_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].K_high < CELL_COEFF_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_1; } - if( ( conductivitySensorCoefficients[ sensorId ].K_low <= CELL_COEFF_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].K_low >= CELL_COEFF_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].K_low > CELL_COEFF_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].K_low < CELL_COEFF_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_2; } - if( ( conductivitySensorCoefficients[ sensorId ].alpha_high <= TEMPERATURE_CORRECTION_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].alpha_high >= TEMPERATURE_CORRECTION_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].alpha_high > TEMPERATURE_CORRECTION_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].alpha_high < TEMPERATURE_CORRECTION_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_3; } - if( ( conductivitySensorCoefficients[ sensorId ].alpha_low <= TEMPERATURE_CORRECTION_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].alpha_low >= TEMPERATURE_CORRECTION_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].alpha_low > TEMPERATURE_CORRECTION_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].alpha_low < TEMPERATURE_CORRECTION_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_4; } - if( ( conductivitySensorCoefficients[ sensorId ].eta_high <= RESISTANCE_SCALE_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].eta_high >= RESISTANCE_SCALE_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].eta_high > RESISTANCE_SCALE_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].eta_high < RESISTANCE_SCALE_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_5; } - if( ( conductivitySensorCoefficients[ sensorId ].eta_low <= RESISTANCE_SCALE_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].eta_low >= RESISTANCE_SCALE_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].eta_low > RESISTANCE_SCALE_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].eta_low < RESISTANCE_SCALE_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_6; } - if( ( conductivitySensorCoefficients[ sensorId ].zeta_high <= RESISTANCE_OFFSET_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].zeta_high >= RESISTANCE_OFFSET_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].zeta_high > RESISTANCE_OFFSET_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].zeta_high < RESISTANCE_OFFSET_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_7; } - if( ( conductivitySensorCoefficients[ sensorId ].zeta_low <= RESISTANCE_OFFSET_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].zeta_low >= RESISTANCE_OFFSET_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].zeta_low > RESISTANCE_OFFSET_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].zeta_low < RESISTANCE_OFFSET_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_8; } - if( ( conductivitySensorCoefficients[ sensorId ].beta <= TEMPERATURE_SCALE_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].beta >= TEMPERATURE_SCALE_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].beta > TEMPERATURE_SCALE_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].beta < TEMPERATURE_SCALE_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_9; } - if( ( conductivitySensorCoefficients[ sensorId ].delta <= TEMPERATURE_OFFSET_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].delta >= TEMPERATURE_OFFSET_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].delta > TEMPERATURE_OFFSET_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].delta < TEMPERATURE_OFFSET_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_10; @@ -699,6 +693,7 @@ { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, sensorId, ( U32 )idx ) } + return result; } /*********************************************************************//** @@ -907,6 +902,7 @@ alpha = conductivitySensorCoefficients[ sensorNum ].alpha_high; k = conductivitySensorCoefficients[ sensorNum ].K_high; } + calculateResistance( sensorNum, isFPSensor ); calculateTemperature( sensorNum ); @@ -1050,5 +1046,47 @@ return result; } +/*********************************************************************//** + * @brief + * The testHandleConductivitySensorVersionRequest function sends + * the conductivity sensor version response + * @details \b Inputs: conductivitySensorRevisions[] + * @details \b Outputs: none + * @param message Override message from Dialin which includes an sensor + * ID. + * @return TRUE if response is successful, FALSE if not + *************************************************************************/ +BOOL testHandleConductivitySensorVersionRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + U32 condSensorId = 0; + U32 msgId = 0; + U32 channelId = 0; + if ( message->hdr.payloadLen == sizeof( U32 ) ) + { + CONDUCTIVITY_REVISIONS_T CondVersionRecord; + + memcpy( &condSensorId, &message->payload, sizeof( U32 ) ); + + // Build conductivity version record + if ( condSensorId < LAST_DD_COND_SENSOR ) + { + msgId = MSG_ID_DD_CONDUCTIVITY_SENSOR_VERSION_RESPONSE; + channelId = COMM_BUFFER_OUT_CAN_DD_BROADCAST; + memcpy( &CondVersionRecord, &conductivitySensorRevisions[ condSensorId ], sizeof( CONDUCTIVITY_REVISIONS_T ) ); + } + else + { + msgId = MSG_ID_FP_CONDUCTIVITY_SENSOR_VERSION_RESPONSE; + channelId = COMM_BUFFER_OUT_CAN_FP_BROADCAST; + memcpy( &CondVersionRecord, &conductivitySensorRevisions[ condSensorId ], sizeof( CONDUCTIVITY_REVISIONS_T ) ); + } + result = sendMessage( (MSG_ID_T)msgId, (COMM_BUFFER_T)channelId, (U08*)&CondVersionRecord, sizeof( CONDUCTIVITY_REVISIONS_T ) ); + } + + return result; +} + + /**@}*/ Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r13bfd2e759fbe5753ba8bcefc3227563c09ff055 -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 13bfd2e759fbe5753ba8bcefc3227563c09ff055) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -7,13 +7,14 @@ * * @file ModeGenDialysate.c * -* @author (last) Vinayakam Mani -* @date (last) 06-Apr-2026 +* @author (last) Jashwant Gantyada +* @date (last) 10-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 06-Nov-2024 * ***************************************************************************/ + #include // For ceilf #include "BalancingChamber.h" @@ -270,11 +271,11 @@ //Turn on Trimmer heater if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { - setHeaterTargetTemperature( D45_HEAT, getD4AverageTemperature() ); + setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D4_TEMP ) ); } else { - setHeaterTargetTemperature( D45_HEAT, getD99AverageTemperature() ); + setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D99_TEMP ) ); } startHeater( D45_HEAT ); @@ -319,11 +320,11 @@ //Turn on Trimmer heater if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { - setHeaterTargetTemperature( D45_HEAT, getD4AverageTemperature() ); + setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D4_TEMP ) ); } else { - setHeaterTargetTemperature( D45_HEAT, getD99AverageTemperature() ); + setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D99_TEMP ) ); } startHeater( D45_HEAT ); Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -re6de057461dd170e037e94f55d8e4b1c5a4b6db5 -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision e6de057461dd170e037e94f55d8e4b1c5a4b6db5) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -8,7 +8,7 @@ * @file Conductivity.c * * @author (last) Michael Garthwaite -* @date (last) 06-Mar-2026 +* @date (last) 09-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 13-Sep-2024 @@ -252,12 +252,20 @@ if ( ++condSampleIntervalCounter >= condDataCollectionTimeInterval ) { + for ( sensor = FIRST_DD_COND_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) { if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) { - calculatedConductivity = getTeensyConductivityValue( sensor ); + if ( sensor != D74_COND ) + { + calculatedConductivity = getTeensyConductivityValue( sensor ); + } + else + { + calculatedConductivity = getConductivity( sensor ); + } } else { @@ -276,7 +284,9 @@ filteredConductivityReadings[ sensor ].conductivityReadingsCount = INC_CAP( filteredConductivityReadings[ sensor ].conductivityReadingsCount, SIZE_OF_COND_ROLLING_AVG ); filteredcurrentConductivityReadings[ sensor ].data = filteredConductivityReadings[ sensor ].conductivityReadingsTotal / (F32)filteredConductivityReadings[ sensor ].conductivityReadingsCount; } + condSampleIntervalCounter = 0; + } } @@ -326,6 +336,7 @@ if ( ++condtempSampleIntervalCounter >= condtempDataCollectionTimeInterval ) { + for ( sensor = FIRST_DD_COND_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) { // Filter conductivity temp @@ -352,6 +363,7 @@ } condtempSampleIntervalCounter = 0; + } } Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rdeba34e5074da9ac97d8bcbe995f554eec5c70ed -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision deba34e5074da9ac97d8bcbe995f554eec5c70ed) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -7,8 +7,8 @@ * * @file AlarmMgmtSWFaults.h * -* @author (last) Raghu Kallala -* @date (last) 23-Feb-2026 +* @author (last) Michael Garthwaite +* @date (last) 07-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 07-Aug-2024 @@ -120,7 +120,7 @@ SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE = 89, SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER = 90, SW_FAULT_ID_PI_CTRL_INVALID_SIGNAL = 91, - SW_FAULT_ID_PI_CTRL_INVALID_STEP_LIMIT = 92, + SW_FAULT_ID_AVAILABALE_1 = 92, SW_FAULT_ID_DIALYSATE_PUMP_INVALID_RPM_SELECTED = 93, SW_FAULT_ID_DIALYSATE_PUMP_EXEC_INVALID_STATE = 94, SW_FAULT_ID_DIALYSATE_PUMP_INVALID_PUMP_ID = 95, @@ -153,8 +153,10 @@ SW_FAULT_ID_BICARB_CHAMBER_FILL_INVALID_EXEC_STATE = 122, SW_FAULT_ID_DRY_BICART_DRAIN_INVALID_EXEC_STATE = 123, SW_FAULT_ID_INVALID_RINSE_PUMP = 124, - SW_FAULT_ID_PI_CTRL_INVALID_FEED_FORWARD_LIMIT = 125, - SW_FAULT_ID_DIALYSATE_DOSE_EXEC_INVALID_STATE = 126, + SW_FAULT_ID_CONDUCTIVITY_SENSOR_CAL_CHECK = 125, + SW_FAULT_ID_PI_CTRL_INVALID_FEED_FORWARD_LIMIT = 126, + SW_FAULT_ID_INVALID_TEMPERATURE_SENSOR_SELECTED3 = 127, + SW_FAULT_ID_DIALYSATE_DOSE_EXEC_INVALID_STATE = 128, NUM_OF_SW_FAULT_IDS } DD_SW_FAULT_ID_T; Index: firmware/App/Services/FpgaDD.c =================================================================== diff -u -r99e5d1b4d1e3627576d680318887ac23cd1f34ce -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 99e5d1b4d1e3627576d680318887ac23cd1f34ce) +++ firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -8,8 +8,8 @@ * * @file FpgaDD.c * -* @author (last) Jashwant Gantyada -* @date (last) 17-Mar-2026 +* @author (last) Michael Garthwaite +* @date (last) 07-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 26-Aug-2024 @@ -643,7 +643,7 @@ *************************************************************************/ void initFPGADD( void ) { - // Initialize fpga driver + // Initialize fpga driver for beta 2 hardware initFPGA( (U08*)&fpgaHeader, (U08*)&fpgaBeta19SensorReadings, (U08*)&fpgaBeta19ActuatorSetPoints, sizeof(FPGA_HEADER_T), sizeof(DD_FPGA_SENSORS_BETA_1_9_T), sizeof(FPGA_ACTUATORS_BETA_1_9_T) ); Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r154aaca90372b2335275ec9118e602185d244f23 -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 154aaca90372b2335275ec9118e602185d244f23) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -7,8 +7,8 @@ * * @file Messaging.c * -* @author (last) Raghu Kallala -* @date (last) 06-Apr-2026 +* @author (last) Michael Garthwaite +* @date (last) 07-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 07-Aug-2024 @@ -129,7 +129,6 @@ { MSG_ID_DD_PRESSURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testDDPressureSensorDataPublishIntervalOverride }, { MSG_ID_DD_PRESSURE_SENSOR_FILTER_READINGS_OVERRIDE_REQUEST, &testDDPressureSensorFilteredReadingsOverride }, { MSG_ID_DD_PRESSURE_SENSOR_FILTER_TEMPERATURE_OVERRIDE_REQUEST, &testDDPressureSensorFilteredTemperatureReadingsOverride }, - { MSG_ID_DD_CONDUCTIVITY_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testDDConductivitySensorDataPublishIntervalOverride }, { MSG_ID_FP_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFPConductivitySensorDataPublishIntervalOverride }, { MSG_ID_DD_CONDUCTIVITY_SENSOR_READINGS_OVERRIDE_REQUEST, &testConductivitySensorReadingsOverride }, @@ -143,7 +142,6 @@ { MSG_ID_DD_CONDUCTIVITY_SENSOR_CONDUCTIVITY_ERROR_COUNTER_OVERRIDE_REQUEST, &testConductivitySensorConductivityErrorCounterOverride }, { MSG_ID_FP_CONDUCTIVITY_SENSOR_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST, &testConductivitySensorConductivityReadCounterOverride }, { MSG_ID_FP_CONDUCTIVITY_SENSOR_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST, &testConductivitySensorConductivityErrorCounterOverride }, - { MSG_ID_DD_CONCENTRATE_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testConcentratePumpDataPublishIntervalOverride }, { MSG_ID_DD_CONCENTRATE_PUMP_TARGET_SPEED_OVERRIDE_REQUEST, &testConcentratePumpTargetSpeedOverride }, { MSG_ID_DD_CONCENTRATE_PUMP_MEASURED_SPEED_OVERRIDE_REQUEST, &testConcentratePumpMeasuredSpeedOverride }, @@ -286,6 +284,9 @@ { MSG_ID_FP_SET_OPERATION_SUB_MODE_REQUEST, &testSetFPOperationSubMode }, { MSG_ID_DD_FILTERED_TEMPERATURE_SENSOR_OVERRIDE_REQUEST, &testDDTemperatureSensorFilteredReadingsOverride }, { MSG_ID_FP_BOOST_PUMP_INSTALL_STATUS_REQUEST, &testGetFPBoostPumpInstallStatus }, + { MSG_ID_DD_CONDUCTIVITY_SENSOR_VERSION_REQUEST, &testHandleConductivitySensorVersionRequest }, + { MSG_ID_FP_CONDUCTIVITY_SENSOR_VERSION_REQUEST, &testHandleConductivitySensorVersionRequest }, + { MSG_ID_DD_TEMPERATURE_SENSOR_FILTERED_TEMP_OVERRIDE_REQUEST, &testDDTemperatureSensorFilteredReadingsOverride }, }; /// Calculation for number of entries in the incoming message function handler look-up table.