Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r2e6fa30976d3fd57cf43c7e4667d165c973c17b2 -r2f84c4894488f86b2a36c14184c80a1a6b1a7b48 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 2e6fa30976d3fd57cf43c7e4667d165c973c17b2) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 2f84c4894488f86b2a36c14184c80a1a6b1a7b48) @@ -556,7 +556,20 @@ } else { +<<<<<<< HEAD + if ( TRUE != getTestConfigStatus( TEST_CONFIG_DISABLE_DIENER_CONC_PUMP ) ) + { + pumpTargetRevCnt[ pumpId ].data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION_DIENER ); + } + else + { + //Restrict FMI pump speed to 48.0 ml/min. + targetSpeed_ml_min = ( targetSpeed_ml_min > CONCENTRATE_PUMP_MAX_SPEED_FMI ) ? CONCENTRATE_PUMP_MAX_SPEED_FMI : targetSpeed_ml_min; + pumpTargetRevCnt[ pumpId ].data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ); + } +======= pumpTargetRevCnt[ pumpId ].data = (U32)( targetVolume_ml * CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION_DIENER ); +>>>>>>> LDT-2198-beta-1.0-fw-integration---dd-im } if ( D11_PUMP == pumpId ) @@ -1055,7 +1068,18 @@ F32 timePerStep; F32 stepPeriodCounts; +<<<<<<< HEAD + if ( TRUE != getTestConfigStatus( TEST_CONFIG_DISABLE_DIENER_CONC_PUMP ) ) + { + timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATE_PUMP_STEP_PER_REV ); + } + else + { + timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATE_PUMP_STEP_PER_REV ); + } +======= timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATE_PUMP_STEP_PER_REV ); +>>>>>>> LDT-2198-beta-1.0-fw-integration---dd-im stepPeriodCounts = timePerStep / ( CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION * CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ); concentratePumps[ pumpId ].togglePeriodCount = (U16)( stepPeriodCounts + FLOAT_TO_INT_ROUNDUP_OFFSET ); } @@ -1130,7 +1154,18 @@ } else if ( FALSE == isPumpPulseWidthOut ) { +<<<<<<< HEAD + if ( TRUE != getTestConfigStatus( TEST_CONFIG_DISABLE_DIENER_CONC_PUMP ) ) + { + measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE_DIENER * SEC_PER_MIN; + } + else + { + measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE * SEC_PER_MIN; + } +======= measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE_DIENER * SEC_PER_MIN; +>>>>>>> LDT-2198-beta-1.0-fw-integration---dd-im } // If pulse width is out of range capture pump out of range, pumpId and pulse width Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r1b110e3b2462fda74aa8f2811aad9ce61cb80309 -r2f84c4894488f86b2a36c14184c80a1a6b1a7b48 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 1b110e3b2462fda74aa8f2811aad9ce61cb80309) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 2f84c4894488f86b2a36c14184c80a1a6b1a7b48) @@ -86,6 +86,7 @@ //Testing static U32 bypassStateDelayStartTimeMS; ///< Delay balancing chamber switching for a second to preapre pump steady state. static BOOL delayBypassStateFlag; ///< To indicate change in treatment parameters +static F32 dialysateToDialyzerFlowRate; ///< Current dialysate to dialyzer flow rate (ml/min) // ********** private function prototypes ********** @@ -98,6 +99,7 @@ static DD_GEND_MODE_STATE_T handleGenDIsolatedUFState( void ); static F32 getGenDialysateTargetTemperature( void ); static void calculateTargetDialysateTemp( void ); +static void updateDialysateToDialyzerFlowRate( void ); static void checkDialysateTemperature( void ); static void monitorChamberLevelStatus( void ); static void publishGenDialysateModeData( void ); @@ -137,6 +139,7 @@ //Testing bypassStateDelayStartTimeMS = 0; delayBypassStateFlag = TRUE; + dialysateToDialyzerFlowRate = 0.0F; //Initialize balancing chamber module initBalanceChamber(); @@ -373,6 +376,9 @@ checkDialysateTemperature(); #endif + // Update dialysate flow rate only when in the Dialysate Delivery state + updateDialysateToDialyzerFlowRate(); + //Check temperature drift between D30 and D28 checkDialysateTemperatureSensors(); @@ -825,6 +831,30 @@ /*********************************************************************//** * @brief + * The updateDialysateToDialyzerFlowRate function updates the current dialysate + * to dialyzer flow rate only when in the dialysate delivery state, otherwise + * the flow rate is set to zero + * @details \b Inputs: genDialysateState + * @details \b Outputs: dialysateToDialyzerFlowRate + * @return none + *************************************************************************/ +void updateDialysateToDialyzerFlowRate( void ) +{ + // Check the current Gen Dialysate Mode state + if ( DD_GEND_DIALYSATE_DELIVERY_STATE == genDialysateState ) + { + // Update the dialysate flow rate to the TD request + dialysateToDialyzerFlowRate = getTDDialysateFlowrate(); + } + else + { + // Set the dialysate flow rate to zero + dialysateToDialyzerFlowRate = 0.0F; + } +} + +/*********************************************************************//** + * @brief * The getDialGoodToDeliverStatus function gets the dialysate good to deliver * status. * @details \b Inputs: isDialysateGoodtoDeliver @@ -965,6 +995,7 @@ data.d18Pressure = getFilteredPressure( D18_PRES ); data.d51Pressure = getFilteredPressure( D51_PRES ); data.isDialysateGoodtoDeliver = (BOOL)getDialGoodToDeliverStatus(); + data.currentQd = dialysateToDialyzerFlowRate; broadcastData( MSG_ID_DD_GEN_DIALYSATE_MODE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( GEN_DIALYSATE_MODE_DATA_T ) );