Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r1240b612f790f931825aba86ec37f37eccce9336 -re64816def7cd98e7dcb6d133b3a56c9fea835af3 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 1240b612f790f931825aba86ec37f37eccce9336) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision e64816def7cd98e7dcb6d133b3a56c9fea835af3) @@ -15,7 +15,7 @@ * ***************************************************************************/ -#include +#include // Using fabs() function #include "AirTrap.h" #include "BloodFlow.h" @@ -285,7 +285,8 @@ maxUFVolumeML = maxUFVol; setUFRate = uFRate; - if ( TREATMENT_DIALYSIS_STATE == getTreatmentState() ) + // Make rate changes in real time if currently performing dialysis. + if ( ( TREATMENT_DIALYSIS_STATE == getTreatmentState() ) && ( getDialysisState() != DIALYSIS_SALINE_BOLUS_STATE ) ) { #ifndef RUN_PUMPS_OPEN_LOOP setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); @@ -442,22 +443,20 @@ * @brief * The getUltrafiltrationVolumeCollected function gets the current ultrafiltration * volume collected so far for current treatment. - * @details Inputs: measUFVolume, measUFVolumeFromPriorReservoirs + * @details Inputs: measUFVolume * @details Outputs: none * @return measUFVolume *************************************************************************/ F32 getUltrafiltrationVolumeCollected( void ) { - F32 result = measUFVolume; - - return result; + return measUFVolume; } /*********************************************************************//** * @brief * The getUltrafiltrationReferenceVolume function gets the current ultrafiltration * reference volume. - * @details Inputs: measUFVolume, measUFVolumeFromPriorReservoirs + * @details Inputs: refUFVolume * @details Outputs: none * @return refUFVolume *************************************************************************/ @@ -468,6 +467,19 @@ /*********************************************************************//** * @brief + * The getTotalSalineBolusVolumeDelivered function gets the current total + * saline volume delivered. + * @details Inputs: totalSalineVolumeDelivered + * @details Outputs: none + * @return totalSalineVolumeDelivered + *************************************************************************/ +F32 getTotalSalineBolusVolumeDelivered( void ) +{ + return totalSalineVolumeDelivered; +} + +/*********************************************************************//** + * @brief * The pauseUF function pauses ultrafiltration. * @details Inputs: currentDialysisState, currentUFState * @details Outputs: currentUFState, outlet pump set point @@ -488,6 +500,7 @@ setDialOutPumpTargetRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); // Go to UF paused state currentUFState = UF_PAUSED_STATE; + sendTreatmentLogEventData( UF_PAUSE_RESUME_EVENT, UF_RUNNING_STATE, UF_PAUSED_STATE ); } else { @@ -534,11 +547,12 @@ { result = TRUE; // Set outlet pump to dialysate rate + set UF rate - setDialOutPumpTargetRate( setDialysateFlowRate + FLOAT_TO_INT_WITH_ROUND( setUFRate ), MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + setDialOutPumpTargetRate( setDialysateFlowRate + (S32)setUFRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); // Restart UF time accumulation for reference volume calculation lastUFTimeStamp = getMSTimerCount(); // Go to UF running state currentUFState = UF_RUNNING_STATE; + sendTreatmentLogEventData( UF_PAUSE_RESUME_EVENT, UF_PAUSED_STATE, UF_RUNNING_STATE ); } else { @@ -950,9 +964,10 @@ signalBloodPumpHardStop(); signalDialInPumpHardStop(); // Send last saline bolus data - bolusSalineVolumeDelivered = 0.0; salineBolusBroadcastTimerCtr = SALINE_BOLUS_DATA_PUB_INTERVAL; publishSalineBolusData(); + sendTreatmentLogEventData( SALINE_BOLUSES_CHANGE_EVENT, bolusSalineVolumeDelivered, totalSalineVolumeDelivered ); + bolusSalineVolumeDelivered = 0.0; // Dialysis back to UF state *dialysisState = DIALYSIS_UF_STATE; // End dialyzer bypass and resume dialysis if no alarms triggered