Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -rd73a1020427b4c9becb65c91dd69dde3318584f5 -r145fd716a856f864f39fb0f9884865f6e45b9256 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision d73a1020427b4c9becb65c91dd69dde3318584f5) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 145fd716a856f864f39fb0f9884865f6e45b9256) @@ -8,7 +8,7 @@ * @file ModeGenDialysate.c * * @author (last) Sameer Kalliadan Poyil -* @date (last) 23-Apr-2026 +* @date (last) 15-Jun-2026 * * @author (original) Vinayakam Mani * @date (original) 06-Nov-2024 @@ -257,7 +257,7 @@ setValveState( D85_VALV, VALVE_STATE_CLOSED ); setValveState( D31_VALV, VALVE_STATE_CLOSED ); - if ( getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRY_BICARB ) == FALSE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) { setValveState( D80_VALV, VALVE_STATE_OPEN ); // Bicarb valve setValveState( D64_VALV, VALVE_STATE_CLOSED ); @@ -342,7 +342,7 @@ setValveState( D35_VALV, VALVE_STATE_OPEN ); // VDI setValveState( D40_VALV, VALVE_STATE_OPEN ); // VDO - if ( getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRY_BICARB ) == FALSE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) { setValveState( D80_VALV, VALVE_STATE_OPEN ); // Bicarb valve setValveState( D64_VALV, VALVE_STATE_CLOSED ); @@ -365,7 +365,7 @@ setValveState( D53_VALV, VALVE_STATE_OPEN ); // Drain valve setValveState( D34_VALV, VALVE_STATE_OPEN ); // Bypass valve - if ( getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRY_BICARB ) == FALSE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) { setValveState( D80_VALV, VALVE_STATE_OPEN ); // Bicarb valve setValveState( D64_VALV, VALVE_STATE_CLOSED ); @@ -412,7 +412,7 @@ setValveState( D53_VALV, VALVE_STATE_OPEN ); // Drain valve setValveState( D34_VALV, VALVE_STATE_OPEN ); // Bypass valve - if ( getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRY_BICARB ) == FALSE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) { setValveState( D80_VALV, VALVE_STATE_OPEN ); // Bicarb valve setValveState( D64_VALV, VALVE_STATE_OPEN ); // Bicarb chamber purge valve @@ -470,7 +470,7 @@ setValveState( D34_VALV, VALVE_STATE_OPEN ); setValveState( D53_VALV, VALVE_STATE_OPEN ); - if ( getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRY_BICARB ) == FALSE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_DISABLE_DRY_BICARB ) ) { setValveState( D80_VALV, VALVE_STATE_OPEN ); setValveState( D64_VALV, VALVE_STATE_CLOSED ); @@ -656,15 +656,14 @@ /*********************************************************************//** * @brief - * The getCalculatedD48PumpSpeedForBCFill function returns the D48 pump speed - * calculated from dialysate flow rate (Qd) for continuous delivery. - * @details \b Inputs: Qd from TD, test config TEST_CONFIG_DD_ENABLE_DIENER_1000_PUMP. + * The getD48PumpSpeed function returns the ceiled D48 pump speed. + * @details \b Inputs: Active flow rate(Qd), pump test config. * @details \b Outputs: none - * @return Calculated D48 pump speed in RPM (Diener 1000 or 2000 formula per test config). + * @return Ceiled D48 pump speed in RPM . *************************************************************************/ -U32 getCalculatedD48PumpSpeedForBCFill( void ) +U32 getD48PumpSpeed( void ) { - F32 dialFlowrate = getTDDialysateFlowrate(); + F32 dialFlowrate = getBalChamberActiveDialysateFlowrate(); F32 slope; F32 intercept; F32 calculatedSpeed; @@ -681,10 +680,8 @@ intercept = PUMP_SPEED_INTERCEPT_FACTOR_DIENER_1000; } - // Calculate nominal speed from Qd. calculatedSpeed = ( slope * dialFlowrate ) + intercept; - // Prevent negative before converting to unsigned and round up using ceilf. if ( calculatedSpeed < 0.0F ) { calculatedSpeed = 0.0F; @@ -697,6 +694,30 @@ /*********************************************************************//** * @brief + * The getCalculatedD48PumpSpeedForBCFill function returns the D48 pump speed + * for balancing chamber fill after applying the low-speed clamp. + * @details \b Inputs: Active BC Qd (or TD Qd before BC period init), pump test config. + * @details \b Outputs: none + * @return D48 pump speed in RPM for BC fill (Diener formula with low-speed floor). + *************************************************************************/ +U32 getCalculatedD48PumpSpeedForBCFill( void ) +{ + U32 rpm; + U32 nominalRpm; + + nominalRpm = getD48PumpSpeed(); + rpm = nominalRpm; + + if ( nominalRpm <= BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM ) + { + rpm = BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM; + } + + return rpm; +} + +/*********************************************************************//** + * @brief * The handleGenDDialysateIsolatedUFState function performs the * Isolated ultrafiltration operations. * @details \b Inputs: none. @@ -1001,8 +1022,6 @@ // Get the target temperature from TD //targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); calculateTargetDialysateTemp(); - //Reset flag - signaltoResetPrimaryHeaterAdjustedTargetTemp(); // Update the target temperature for heater control setHeaterTargetTemperature( D5_HEAT, getGenDialysateTargetTemperature() );