Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r74be223d47ea7bb0ac7d814e74d3627d830a5fac -rbd241ef5231a9869adaf7bb5ed166135beb2c0fb --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 74be223d47ea7bb0ac7d814e74d3627d830a5fac) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision bd241ef5231a9869adaf7bb5ed166135beb2c0fb) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2022 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file ModeTreatment.c * -* @author (last) Quang Nguyen -* @date (last) 27-Aug-2021 +* @author (last) Dara Navaei +* @date (last) 12-Nov-2021 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -26,6 +26,7 @@ #include "ModeTreatment.h" #include "ModeTreatmentParams.h" #include "OperationModes.h" +#include "Reservoirs.h" #include "Rinseback.h" #include "RTC.h" #include "SystemCommMessages.h" @@ -191,6 +192,10 @@ treatmentStartTimeStamp = getRTCTimestamp(); treatmentEndTimeStamp = 0; + + initBloodFlow(); + initDialInFlow(); + initDialOutFlow(); } /*********************************************************************//** @@ -228,20 +233,22 @@ * The transitionToTreatmentMode function prepares for transition to treatment mode. * @details Inputs: none * @details Outputs: - * @return none + * @return initial state *************************************************************************/ -void transitionToTreatmentMode( void ) +U32 transitionToTreatmentMode( void ) { // Initialize treatment mode each time we transition to it initTreatmentMode(); - initTreatmentReservoirMgmt(); + initReservoirs(); // Initialize treatment sub-modes each time we transition to treatment mode initBloodPrime(); initDialysis(); initTreatmentStop(); initRinseback(); initTreatmentRecirc(); initTreatmentEnd(); + + return currentTreatmentState; } /*********************************************************************//** @@ -357,6 +364,19 @@ /*********************************************************************//** * @brief + * The getCurrentUFSetRate function returns the currently set target + * ultrafiltration rate. + * @details Inputs: presUFRate + * @details Outputs: none + * @return presUFRate + *************************************************************************/ +F32 getCurrentUFSetRate( void ) +{ + return presUFRate; +} + +/*********************************************************************//** + * @brief * The getTreatmentAvgBloodFlowRate function returns the average blood flow * rate collected through out the treatment. * @details Inputs: treatmentTimeMS, treatmentBloodFlowRateTotal_mL_min @@ -764,7 +784,7 @@ // Otherwise, execute state machine for treatment dialysis sub-mode else { - execTreatmentReservoirMgmt(); + execReservoirs(); execDialysis(); // Handle alarm stoppage if ( TRUE == doesAlarmStatusIndicateStop() ) @@ -822,7 +842,7 @@ // Otherwise execute state machine for treatment stop sub-mode else { - execTreatmentReservoirMgmt(); + execReservoirs(); execTreatmentStop(); } @@ -1011,6 +1031,7 @@ // Send response to request sendChangeTreatmentDurationResponse( result, rejectReason, presTreatmentTimeSecs / SEC_PER_MIN, presMaxUFVolumeML ); // Send new ranges for settings + treatmentParamsRangesBroadcastTimerCtr = getU32OverrideValue( &treatmentParamRangesPublishInterval ); broadcastTreatmentSettingsRanges(); // Send time/state data immediately for UI update broadcastTreatmentTimeAndState(); @@ -1180,6 +1201,7 @@ // Respond to UF settings change confirmation sendChangeUFSettingsOptionResponse( result, rejectReason, presMaxUFVolumeML, presTreatmentTimeSecs / SEC_PER_MIN, presUFRate ); // Send new ranges for settings + treatmentParamsRangesBroadcastTimerCtr = getU32OverrideValue( &treatmentParamRangesPublishInterval ); broadcastTreatmentSettingsRanges(); // Send time/state data immediately for UI update broadcastTreatmentTimeAndState(); @@ -1245,6 +1267,7 @@ sendChangeBloodDialysateRateChangeResponse( result, (U32)rejectReason, getTreatmentParameterU32( TREATMENT_PARAM_BLOOD_FLOW ), getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ) ); // Send new ranges for settings + treatmentParamsRangesBroadcastTimerCtr = getU32OverrideValue( &treatmentParamRangesPublishInterval ); broadcastTreatmentSettingsRanges(); return result;