Index: firmware/App/Modes/ModeTreatment.h =================================================================== diff -u -ra2bc96881a5fc3d8f779246b2abebf15a8de9384 -r24b2fe72608344e67ef37234085d15ad5e4fcc37 --- firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision a2bc96881a5fc3d8f779246b2abebf15a8de9384) +++ firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 24b2fe72608344e67ef37234085d15ad5e4fcc37) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 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.h +* @file ModeTreatment.h * -* @author (last) Sean Nash -* @date (last) 28-Aug-2020 +* @author (last) Dara Navaei +* @date (last) 12-Nov-2021 * -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 * ***************************************************************************/ @@ -24,7 +24,7 @@ /** * @defgroup HDTreatmentMode HDTreatmentMode - * @brief TreatmentMode module. + * @brief The HDTreatmentMode module manages the treatment mode state machine and treatment related commands and requests. * * @addtogroup HDTreatmentMode * @{ @@ -47,6 +47,12 @@ U32 uFState; U32 salineBolusState; U32 heparinState; + U32 rinsebackState; + U32 txRecircState; + U32 bldPrimeState; + U32 txEndState; + U32 txStopState; + U32 dialysisState; } TREATMENT_STATE_DATA_T; /// Payload record structure for an ultrafiltration volume change confirmation message. @@ -76,16 +82,46 @@ S32 venHighLimit; } PRESSURE_LIMIT_CHANGE_RESPONSE_T; -// ********** private function prototypes ********** +/// Payload record structure for the treatment log 30 minutes periodic data. +typedef struct +{ + F32 avgBloodFlowRate; + F32 avgDialysateFlowRate; + F32 avgUFRate; + F32 avgArterialPressure; + F32 avgVenousPressure; +} TREATMENT_LOG_DATA_PERIODIC_T; +// ********** public function prototypes ********** + void initTreatmentMode( void ); // Initialize this module -void transitionToTreatmentMode( void ); // Prepares for transition to treatment mode +U32 transitionToTreatmentMode( void ); // Prepares for transition to treatment mode U32 execTreatmentMode( void ); // Execute the treatment mode state machine (call from OperationModes) void signalAlarmActionToTreatmentMode( ALARM_ACTION_T action ); // Execute alarm action as appropriate for Treatment mode +void signalGoToTreatmentStopped( void ); // Rinseback or Re-circ sub-mode is signaling to return to treatment stopped sub-mode +void signalGoToRinseback( void ); // Requesting transition to rinseback sub-mode from other sub-mode +void signalEndTreatment( void ); // Requesting transition to post-treatment mode +void signalBloodPrimeToDialysis( void ); // Blood prime sub-mode is signaling to move on to dialysis sub-mode +void signalRinsebackToRecirc( void ); // Rinseback sub-mode is signaling to move on to re-circ sub-mode TREATMENT_STATE_T getTreatmentState( void ); // Determine the current treatment sub-mode (state) +BOOL isTreatmentCompleted( void ); // Determine whether the treatment has completed +U32 getTreatmentTimeRemainingSecs( void ); // Determine number of seconds remaining in the treatment +U32 getActualTreatmentTimeSecs( void ); // Determine the actual treatment duration in seconds +BOOL getRinsebackCompleted( void ); // Determine whether a rinseback has been completed +void setRinsebackIsCompleted( BOOL flag ); // Set whether a rinseback has been completed (T blocks rinseback option) +BOOL getBloodIsPrimed( void ); // Determine whether the blood-side circuit of the dialyzer has been primed with blood +void setBloodIsPrimed( BOOL flag ); // Set whether the blood-side circuit of the dialyzer has been primed with blood (F causes Tx start/resume to do blood prime first) -BOOL userRequestEndTreatment( void ); // User has requested to end the treatment +F32 getTreatmentAvgBloodFlowRate( void ); // Get the average blood flow rate during treatment +F32 getTreatmentAvgDialysateFlowRate( void ); // Get the average dialysate flow rate during treatment +F32 getTreatmentAvgDialysateTemp( void ); // Get the average dialysate temperature during treatment +F32 getTreatmentAvgArterialPressure( void ); // Get the average arterial pressure during treatment +F32 getTreatmentAvgVenousPressure( void ); // Get the average venous pressure during treatment + +U32 getTreatmentStartTimeStamp( void ); // Get the treatment start time stamp +U32 getTreatmentEndTimeStamp( void ); // Get the treatment end time stamp + void broadcastTreatmentTimeAndState( void ); // Broadcast the times and states of this treatment BOOL verifyTreatmentDurationSettingChange( U32 treatmentTime ); @@ -94,6 +130,14 @@ BOOL verifyBloodAndDialysateRateSettingsChange( U32 bloodRate, U32 dialRate ); BOOL verifyPressureLimitsChange( PRESSURE_LIMIT_CHANGE_REQUEST_T *data ); +BOOL testSetTreatmentTimeRemainingOverride( U32 value ); +BOOL testSetTreatmentTimePublishIntervalOverride( U32 ms ); +BOOL testResetTreatmentTimePublishIntervalOverride( void ); +BOOL testSetTreatmentStatePublishIntervalOverride( U32 ms ); +BOOL testResetTreatmentStatePublishIntervalOverride( void ); +BOOL testSetTreatmentParamRangesPublishIntervalOverride( U32 ms ); +BOOL testResetTreatmentParamRangesPublishIntervalOverride( void ); + /**@}*/ #endif