Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -r8348015aa77e1ee2c4c20e9f8e2c45b59bcf3f17 -recba518e47db27ce66d40db425f765ed676be173 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 8348015aa77e1ee2c4c20e9f8e2c45b59bcf3f17) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision ecba518e47db27ce66d40db425f765ed676be173) @@ -104,9 +104,9 @@ 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 pendingTdDialysateFlowrate; ///< Pending TD dialysate flow rate to apply after dosing completes for the active half-cycle. -static BOOL isBalChamberSwitchingPeriodUpdatePending; ///< Flag indicating a BC switching period update is waiting for apply after dosing completes. -static U32 firstCycleRelaxHalfSwitchesRemaining; ///< Valve-close halves remaining before first-cycle relaxations end after a Qd timing apply. +static F32 pendingTdDialysateFlowrate; ///< Pending TD dialysate flow rate; applied at FillEnd after a BC switch completes. +static BOOL isBalChamberSwitchingPeriodUpdatePending; ///< BC switching period update pending apply at fill end. +static U32 bcSwitchingBasedOnClosedPeriodCounter; ///< Valve-close segments remaining before first-cycle relaxations clear after Qd timing apply. //TODO: remove later once level sensor working static U32 bicarbChamberPeriodicFillCounter; @@ -126,7 +126,6 @@ static void checkSpentFillComplete( F32 spentDialPressure ); static BOOL isSpentFillCompleteByPressure( F32 spentDialPressure, F32 qdMlpm, F32 spentFillCompletePresPsig ); static void applyBalChamberSwitchingPeriod( F32 tdDialysateFlowrate ); -static void applyPendingBalChamberSwitchingPeriod( void ); static BOOL isBalChamberTimeBasedSwitching( void ); static void scheduleFirstCycleRelaxAfterQdApply( void ); @@ -186,7 +185,7 @@ isBalChamberSwitchingOffRequested = FALSE; pendingTdDialysateFlowrate = 0.0F; isBalChamberSwitchingPeriodUpdatePending = FALSE; - firstCycleRelaxHalfSwitchesRemaining = 0U; + bcSwitchingBasedOnClosedPeriodCounter = 0; //TODO:remove once level sensor working bicarbChamberPeriodicFillCounter = 0; } @@ -219,14 +218,18 @@ if ( lastTdDialysateFlowrate != tdDialysateFlowrate ) { + // Defer Qd timing update to FillEnd at end of the current BC switch if ( ( TRUE == isBalChamberSwitchingActive ) && ( BAL_CHAMBER_STATE_IDLE != balChamberExecState ) ) { pendingTdDialysateFlowrate = tdDialysateFlowrate; isBalChamberSwitchingPeriodUpdatePending = TRUE; } + // Apply immediately when BC is inactive or still idle else { - applyBalChamberSwitchingPeriod( tdDialysateFlowrate ); + pendingTdDialysateFlowrate = tdDialysateFlowrate; + isBalChamberSwitchingPeriodUpdatePending = TRUE; + applyBalChamberSwitchingPeriod( pendingTdDialysateFlowrate ); scheduleFirstCycleRelaxAfterQdApply(); } } @@ -247,81 +250,64 @@ *************************************************************************/ static void applyBalChamberSwitchingPeriod( F32 tdDialysateFlowrate ) { - U32 initialPumpSpeed; + if ( TRUE == isBalChamberSwitchingPeriodUpdatePending ) + { + U32 initialPumpSpeed = 0; - // update the balancing chamber switching frequency - balChamberSwitchingFreq.data = tdDialysateFlowrate / BAL_CHAMBER_FILL_VOLUME_ML; + // update the balancing chamber switching frequency + balChamberSwitchingFreq.data = tdDialysateFlowrate / BAL_CHAMBER_FILL_VOLUME_ML; - //update the switching period in task interval for balancing chamber fill timeout check - balChamberSwitchingPeriod = (U32)( (F32)SEC_PER_MIN / getBalChamberSwitchingFreq() * ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); + //update the switching period in task interval for balancing chamber fill timeout check + balChamberSwitchingPeriod = (U32)( (F32)SEC_PER_MIN / getBalChamberSwitchingFreq() * ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ); - // finish the balancing chamber fill 50 ms prior completing the regular cycle time. - balChamberSwitchingPeriod -= 1; + // finish the balancing chamber fill 50 ms prior completing the regular cycle time. + balChamberSwitchingPeriod -= 1; - //Update last td dialysate flow rate - lastTdDialysateFlowrate = tdDialysateFlowrate; + //Update last td dialysate flow rate + lastTdDialysateFlowrate = tdDialysateFlowrate; - // Update fill timeout count based on the switching period (e.g. 250% of period) - balChamberFillTimeoutCount = (U32)( (F32)balChamberSwitchingPeriod * BAL_CHAMBER_FILL_TIMEOUT_FACTOR ); + // Update fill timeout count based on the switching period (e.g. 250% of period) + balChamberFillTimeoutCount = (U32)( (F32)balChamberSwitchingPeriod * BAL_CHAMBER_FILL_TIMEOUT_FACTOR ); - //Reset the BC switching flag for new Qd. - isFirstCycleBCSwitchingCompleted = FALSE; + //Reset the BC switching flag for new Qd. + isFirstCycleBCSwitchingCompleted = FALSE; - //Update heater control on dialysate flow change - signalHeaterControlOnQDUpdate( D5_HEAT ); + //Update heater control on dialysate flow change + signalHeaterControlOnQDUpdate( D5_HEAT ); - //Testing - balChamberValveClosePeriod = balChamberSwitchingPeriod; - balChamberValveClosePeriod -= 1; // Close valves prior 50 msecond for testing + //Testing + balChamberValveClosePeriod = balChamberSwitchingPeriod; + balChamberValveClosePeriod -= 1; // Close valves prior 50 msecond for testing - currentBalChamberFillCounter = 0; - currentBalChamberSwitchingCounter = 0; - spentFillRiseHitCount = 0; - spentFillRiseMissCounter = 0; - isSpentFillComplete = FALSE; - spentDialPressure = getFilteredPressure( D51_PRES ); - lastPrevSpentDialPressure = spentDialPressure; - prevSpentDialPressure = spentDialPressure; + currentBalChamberFillCounter = 0; + currentBalChamberSwitchingCounter = 0; + spentFillRiseHitCount = 0; + spentFillRiseMissCounter = 0; + isSpentFillComplete = FALSE; + spentDialPressure = getFilteredPressure( D51_PRES ); + lastPrevSpentDialPressure = spentDialPressure; + prevSpentDialPressure = spentDialPressure; - initialPumpSpeed = getCalculatedD48PumpSpeedForBCFill(); - setD48PumpSpeedForBCFill( initialPumpSpeed ); - - if ( FALSE == getBalChamberSwitchingOnlyStatus() ) - { + initialPumpSpeed = getCalculatedD48PumpSpeedForBCFill(); + setD48PumpSpeedForBCFill( initialPumpSpeed ); setDialysatePumpTargetRPM( D48_PUMP, initialPumpSpeed, TRUE ); - } - pendingTdDialysateFlowrate = 0.0F; - isBalChamberSwitchingPeriodUpdatePending = FALSE; -} - -/*********************************************************************//** - * @brief - * The applyPendingBalChamberSwitchingPeriod function applies a pending Qd - * update after concentrate dosing completes (transition into VALVES_CLOSE). - * @details \b Inputs: pendingTdDialysateFlowrate - * @details \b Outputs: balChamberSwitchingFreq,balChamberSwitchingPeriod - * @return none - *************************************************************************/ -static void applyPendingBalChamberSwitchingPeriod( void ) -{ - if ( TRUE == isBalChamberSwitchingPeriodUpdatePending ) - { - applyBalChamberSwitchingPeriod( pendingTdDialysateFlowrate ); + pendingTdDialysateFlowrate = 0.0F; + isBalChamberSwitchingPeriodUpdatePending = FALSE; } } /*********************************************************************//** * @brief * The scheduleFirstCycleRelaxAfterQdApply function configures how many BC - * half-switches still use first-cycle relaxations after a Qd timing update. - * @details Require two valve-close halves under the new timing before clearing - * first-cycle relaxations (one full switching cycle from a dosing boundary). + * switches still use first-cycle relaxations after a Qd timing update. + * @details One full BC cycle is two switches require two + * valve-close segments under the new timing before clearing relaxations. * @return none *************************************************************************/ static void scheduleFirstCycleRelaxAfterQdApply( void ) { - firstCycleRelaxHalfSwitchesRemaining = 2U; + bcSwitchingBasedOnClosedPeriodCounter = 2; } /*********************************************************************//** @@ -336,7 +322,7 @@ static BOOL isBalChamberTimeBasedSwitching( void ) { BOOL state = FALSE; - state = ( getNominalD48PumpSpeedCeiledForBCFill() <= BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM ) ? TRUE : FALSE; + state = ( getD48PumpSpeed() <= BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM ) ? TRUE : FALSE; return state; } @@ -622,7 +608,6 @@ BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE1_FILL_START; balChamberSWState = BAL_CHAMBER_SW_STATE1; - // Preserve the Qd-based timeout so a stuck fill can fault. isBalChamberFillInProgress = FALSE; isPressureStabilizedDuringFill = FALSE; isPressureDroppedDuringFill = FALSE; @@ -707,7 +692,6 @@ static BAL_CHAMBER_EXEC_STATE_T handleBalChamberConcentrateControl( void ) { BAL_CHAMBER_EXEC_STATE_T state; - BOOL hadPendingQdUpdate; freshDialPressure = getFilteredPressure( D18_PRES ); spentDialPressure = getFilteredPressure( D51_PRES ); @@ -737,15 +721,6 @@ ( TRUE == isConcentratePumpDosingCompleted( D10_PUMP ) ) ) || ( TRUE == getBalChamberSwitchingOnlyStatus() ) ) { - hadPendingQdUpdate = isBalChamberSwitchingPeriodUpdatePending; - - applyPendingBalChamberSwitchingPeriod(); - - if ( TRUE == hadPendingQdUpdate ) - { - scheduleFirstCycleRelaxAfterQdApply(); - } - if ( BAL_CHAMBER_SW_STATE1 == balChamberSWState ) { // Low-Qd spent slope: baseline = spent pressure on last dosing tick (this task period) before VALVES_CLOSE. @@ -776,15 +751,12 @@ BOOL isBothFillsComplete = FALSE; BOOL isFirstCycleNotDone = FALSE; BOOL isFillCompleteOrFirstCycle = FALSE; - BOOL isTimeBasedSwitching = isBalChamberTimeBasedSwitching(); - BOOL isFillTimeoutEnabled = ( ( TRUE == isFirstCycleBCSwitchingCompleted ) && - ( FALSE == getBalChamberSwitchingOnlyStatus() ) ) ? TRUE : FALSE; freshDialPressure = getFilteredPressure( D18_PRES ); spentDialPressure = getFilteredPressure( D51_PRES ); // After the first BC cycle, fault if fill never completes at the Qd-based timeout. - if ( ( TRUE == isFillTimeoutEnabled ) && ( balChamberFillTimeoutCount > 0 ) && ( currentBalChamberFillCounter > balChamberFillTimeoutCount ) ) + if ( currentBalChamberFillCounter > balChamberFillTimeoutCount ) { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_BC_FILL_TIMEOUT_FAULT, currentBalChamberFillCounter, balChamberFillTimeoutCount ); @@ -801,22 +773,8 @@ isPressureStabilizedDuringFill = TRUE; } } - else if ( ( balChamberValveClosePeriod > 0 ) && ( currentBalChamberSwitchingCounter >= balChamberValveClosePeriod ) ) - { - // If pressure does not stabilize by the expected close time, allow the cycle to complete. - isPressureStabilizedDuringFill = TRUE; - } - if ( ( TRUE == isTimeBasedSwitching ) && ( currentBalChamberSwitchingCounter >= balChamberValveClosePeriod ) ) - { - isPressureStabilizedDuringFill = TRUE; - isSpentFillComplete = TRUE; - } - else - { - // Spent side of balancing chamber fill is complete or not - checkSpentFillComplete( spentDialPressure ); - } + checkSpentFillComplete( spentDialPressure ); // Check both spent and fresh side fill is complete isBothFillsComplete = ( ( TRUE == isSpentFillComplete ) && ( TRUE == isPressureStabilizedDuringFill ) ) ? TRUE : FALSE; @@ -838,12 +796,12 @@ setDialysatePumpTargetRPM( D48_PUMP, getD48PumpSpeedForBCFill(), TRUE ); } - if ( firstCycleRelaxHalfSwitchesRemaining > 0U ) + if ( bcSwitchingBasedOnClosedPeriodCounter > 0 ) { - firstCycleRelaxHalfSwitchesRemaining -= 1U; + bcSwitchingBasedOnClosedPeriodCounter -= 1; } - if ( ( FALSE == isFirstCycleBCSwitchingCompleted ) && ( 0U == firstCycleRelaxHalfSwitchesRemaining ) ) + if ( 0 == bcSwitchingBasedOnClosedPeriodCounter ) { isFirstCycleBCSwitchingCompleted = TRUE; } @@ -879,11 +837,13 @@ if ( TRUE != getBalChamberSwitchingOnlyStatus() ) { - if ( TRUE == isBalChamberTimeBasedSwitching() ) + if ( TRUE == isBalChamberSwitchingPeriodUpdatePending ) { - state = BAL_CHAMBER_STATE2_FILL_START; + applyBalChamberSwitchingPeriod( pendingTdDialysateFlowrate ); + scheduleFirstCycleRelaxAfterQdApply(); } - else if ( getTestConfigStatus( TEST_CONFIG_DD_DISABLE_BC_PRESSURE_ALARMS ) != TRUE ) + + if ( getTestConfigStatus( TEST_CONFIG_DD_DISABLE_BC_PRESSURE_ALARMS ) != TRUE ) { if ( ( TRUE != isPressureDroppedDuringFill ) && ( TRUE == isFirstCycleBCSwitchingCompleted ) ) { @@ -893,7 +853,7 @@ // Move to the idle state state = BAL_CHAMBER_STATE_IDLE; } - else if ( TRUE != isPressureStabilizedDuringFill ) + else if ( ( TRUE != isPressureStabilizedDuringFill ) && ( TRUE != isSpentFillComplete ) ) { // Alarm when switching time expired, but still pressure not in range which indicates fill is not yet completed. SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_BC_STATE1_FILL_END_PRESSURE_OUT_OF_RANGE, freshDialPressure, spentDialPressure ); @@ -1056,9 +1016,6 @@ BOOL isBothFillsComplete = FALSE; BOOL isFirstCycleNotDone = FALSE; BOOL isFillCompleteOrFirstCycle = FALSE; - BOOL isTimeBasedSwitching = isBalChamberTimeBasedSwitching(); - BOOL isFillTimeoutEnabled = ( ( TRUE == isFirstCycleBCSwitchingCompleted ) && - ( FALSE == getBalChamberSwitchingOnlyStatus() ) ) ? TRUE : FALSE; freshDialPressure = getFilteredPressure( D18_PRES ); spentDialPressure = getFilteredPressure( D51_PRES ); @@ -1072,32 +1029,28 @@ isPressureStabilizedDuringFill = TRUE; } } - else if ( ( balChamberValveClosePeriod > 0 ) && ( currentBalChamberSwitchingCounter >= balChamberValveClosePeriod ) ) - { - // If pressure does not stabilize by the expected close time, allow the cycle to complete. - isPressureStabilizedDuringFill = TRUE; - } // After the first BC cycle, fault if fill never completes at the Qd-based timeout. - if ( ( TRUE == isFillTimeoutEnabled ) && ( balChamberFillTimeoutCount > 0 ) && ( currentBalChamberFillCounter > balChamberFillTimeoutCount ) ) + if ( currentBalChamberFillCounter > balChamberFillTimeoutCount ) { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_BC_FILL_TIMEOUT_FAULT, currentBalChamberFillCounter, balChamberFillTimeoutCount ); // Move to the idle state state = BAL_CHAMBER_STATE_IDLE; } - if ( ( TRUE == isTimeBasedSwitching ) && ( currentBalChamberSwitchingCounter >= balChamberValveClosePeriod ) ) + // Check fresh dialysate pressure back in range to indicate fill complete. + if ( ( freshDialPressure >= FRESH_DIAL_PRESSURE_MIN_PSIG ) && ( freshDialPressure <= FRESH_DIAL_PRESSURE_MAX_PSIG ) ) { - isPressureStabilizedDuringFill = TRUE; - isSpentFillComplete = TRUE; + if ( ++balChamberFillCompleteStablePressureCounter >= BAL_CHAMBER_FILL_COMPLETE_MS ) + { + // stabilized pressure indicating fresh side fill is complete + isPressureStabilizedDuringFill = TRUE; + } } - else - { - // Spent side of balancing chamber fill is complete or not - checkSpentFillComplete( spentDialPressure ); - } + checkSpentFillComplete( spentDialPressure ); + // Check switching cycle time or pressure check for valve closure isBothFillsComplete = ( ( TRUE == isSpentFillComplete ) && ( TRUE == isPressureStabilizedDuringFill ) ) ? TRUE : FALSE; isFirstCycleNotDone = ( ( FALSE == isFirstCycleBCSwitchingCompleted ) && ( currentBalChamberSwitchingCounter >= balChamberValveClosePeriod ) ); @@ -1118,12 +1071,12 @@ setDialysatePumpTargetRPM( D48_PUMP, getD48PumpSpeedForBCFill(), TRUE ); } - if ( firstCycleRelaxHalfSwitchesRemaining > 0U ) + if ( bcSwitchingBasedOnClosedPeriodCounter > 0 ) { - firstCycleRelaxHalfSwitchesRemaining -= 1U; + bcSwitchingBasedOnClosedPeriodCounter -= 1; } - if ( ( FALSE == isFirstCycleBCSwitchingCompleted ) && ( 0U == firstCycleRelaxHalfSwitchesRemaining ) ) + if ( 0 == bcSwitchingBasedOnClosedPeriodCounter ) { isFirstCycleBCSwitchingCompleted = TRUE; } @@ -1157,51 +1110,44 @@ balChamberFillPressureDropCounter = 0; balChamberFillCompleteStablePressureCounter = 0; - // Pressure alarm check - if ( TRUE != getBalChamberSwitchingOnlyStatus() ) + if ( TRUE != getBalChamberSwitchingOnlyStatus() ) + { + if ( TRUE == isBalChamberSwitchingPeriodUpdatePending ) { - if ( TRUE == isBalChamberTimeBasedSwitching() ) + applyBalChamberSwitchingPeriod( pendingTdDialysateFlowrate ); + scheduleFirstCycleRelaxAfterQdApply(); + } + + if ( getTestConfigStatus( TEST_CONFIG_DD_DISABLE_BC_PRESSURE_ALARMS ) != TRUE ) + { + if ( ( TRUE != isPressureDroppedDuringFill ) && ( TRUE == isFirstCycleBCSwitchingCompleted ) ) { - state = BAL_CHAMBER_STATE1_FILL_START; + // When fill initiated, pressure is not dropped to the expected range, possible valve failures. + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_BC_STATE2_FILL_PRESSURE_DROP_OUT_OF_RANGE, freshDialPressure, spentDialPressure ); + + // Move to the idle state + state = BAL_CHAMBER_STATE_IDLE; } - else if ( getTestConfigStatus( TEST_CONFIG_DD_DISABLE_BC_PRESSURE_ALARMS ) != TRUE ) + else if ( ( TRUE != isPressureStabilizedDuringFill ) && ( TRUE != isSpentFillComplete ) ) { - if ( ( TRUE != isPressureDroppedDuringFill ) && ( TRUE == isFirstCycleBCSwitchingCompleted ) ) - { - // When fill initiated, pressure is not dropped to the expected range, possible valve failures. - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_BC_STATE2_FILL_PRESSURE_DROP_OUT_OF_RANGE, freshDialPressure, spentDialPressure ); + // Alarm when switching time expired, but still pressure not in range which indicates fill is not completed. + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_BC_STATE2_FILL_END_PRESSURE_OUT_OF_RANGE, freshDialPressure, spentDialPressure ); - // Move to the idle state - state = BAL_CHAMBER_STATE_IDLE; - } - else if ( TRUE != isPressureStabilizedDuringFill ) - { - // Alarm when switching time expired, but still pressure not in range which indicates fill is not completed. - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_BC_STATE2_FILL_END_PRESSURE_OUT_OF_RANGE, freshDialPressure, spentDialPressure ); - - // Move to the idle state - state = BAL_CHAMBER_STATE_IDLE; - } - else - { - // Move to next state when pressure is in range. - state = BAL_CHAMBER_STATE1_FILL_START; - } + // Move to the idle state + state = BAL_CHAMBER_STATE_IDLE; } else { - // Allow to proceed next state even though pressure is not stabilized. + // Move to next state when pressure is in range. state = BAL_CHAMBER_STATE1_FILL_START; } } else { - // For Balancing Chamber Switch Only command, change state as per the switching period - if ( currentBalChamberSwitchingCounter >= balChamberSwitchingPeriod ) - { - state = BAL_CHAMBER_STATE1_FILL_START; - } + // Allow to proceed next state even though pressure is not stabilized. + state = BAL_CHAMBER_STATE1_FILL_START; } + } // Clear the switching only on request flag. balanceChamberSwitchingOnlyOnRequested = FALSE; @@ -1445,7 +1391,6 @@ d48SpeedPostRangeCheck = RANGE( spentDialPumpSpeed, minD48Speed, maxD48Speed ); - // Do not turn on the pump if the switching only is enabled in the standby mode. if ( FALSE == getBalChamberSwitchingOnlyStatus() ) { Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r83801fb34ea084512961215be50b3558794ec88b -recba518e47db27ce66d40db425f765ed676be173 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 83801fb34ea084512961215be50b3558794ec88b) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision ecba518e47db27ce66d40db425f765ed676be173) @@ -656,13 +656,12 @@ /*********************************************************************//** * @brief - * The getNominalD48PumpSpeedCeiledForBCFill function returns the ceiled D48 - * pump speed from the Diener formula before any low-speed clamp. - * @details \b Inputs: Active BC Qd (or TD Qd before BC period init), pump test config. + * The getD48PumpSpeed function returns the ceiled D48 pump speed. + * @details \b Inputs: Active flow rate(Qd), pump test config. * @details \b Outputs: none - * @return Nominal D48 pump speed in RPM (ceil of formula output). + * @return Ceiled D48 pump speed in RPM . *************************************************************************/ -U32 getNominalD48PumpSpeedCeiledForBCFill( void ) +U32 getD48PumpSpeed( void ) { F32 dialFlowrate = getBalChamberActiveDialysateFlowrate(); F32 slope; @@ -711,7 +710,7 @@ U32 rpm; U32 nominalRpm; - nominalRpm = getNominalD48PumpSpeedCeiledForBCFill(); + nominalRpm = getD48PumpSpeed(); rpm = nominalRpm; if ( nominalRpm <= BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM ) Index: firmware/App/Modes/ModeGenDialysate.h =================================================================== diff -u -r83801fb34ea084512961215be50b3558794ec88b -recba518e47db27ce66d40db425f765ed676be173 --- firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision 83801fb34ea084512961215be50b3558794ec88b) +++ firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision ecba518e47db27ce66d40db425f765ed676be173) @@ -53,7 +53,7 @@ BOOL requestDDGenDialyasteStop( void ); // Stop generate dialysate U32 getD48PumpSpeedForBCFill( void ); // Get D48 pump speed void setD48PumpSpeedForBCFill( U32 pumpSpeed ); // Set D48 pump speed -U32 getNominalD48PumpSpeedCeiledForBCFill( void ); // Ceiled Diener RPM before low-speed clamp (BC mode / time-based decision) +U32 getD48PumpSpeed( void ); // Ceiled Diener RPM U32 getCalculatedD48PumpSpeedForBCFill( void ); // D48 RPM for BC fill (Diener with low-speed floor) BOOL testDDGenDialysateDataPublishIntervalOverride( MESSAGE_T *message ); // GenD Mode data publish interval override