Index: firmware/App/Modes/ModeTreatment.h =================================================================== diff -u -reb877ae36c28eb83553ee11ccccf42e2c4a5b4d2 -r3d5431d5aebe0c88c38a8732455a6dcf004fe6c2 --- firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision eb877ae36c28eb83553ee11ccccf42e2c4a5b4d2) +++ firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 3d5431d5aebe0c88c38a8732455a6dcf004fe6c2) @@ -1,26 +1,131 @@ /************************************************************************** - * - * Copyright (c) 2019-2019 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 - * - * @date 19-Sep-2019 - * @author S. Nash - * - * @brief Header file for Treatment Mode. - * - **************************************************************************/ +* +* Copyright (c) 2019-2020 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 +* +* @author (last) Sean Nash +* @date (last) 28-Aug-2020 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ #ifndef __MODE_TREATMENT_H__ #define __MODE_TREATMENT_H__ -// ********** private function prototypes ********** +#include "HDCommon.h" +#include "HDDefs.h" +#include "Dialysis.h" -void initTreatmentMode( void ); // initialize this module -void transitionToTreatmentMode( void ); // prepares for transition to treatment mode -void execTreatmentMode( void ); // execute the treatment mode state machine (call from OperationModes) +/** + * @defgroup HDTreatmentMode HDTreatmentMode + * @brief The HDTreatmentMode module manages the treatment mode state machine and treatment related commands and requests. + * + * @addtogroup HDTreatmentMode + * @{ + */ +// ********** public definitions ********** + +/// Payload record structure for a treatment time status message. +typedef struct +{ + U32 treatmentTimePrescribedinSec; + U32 treatmentTimeElapsedinSec; + U32 treatmentTimeRemaininginSec; +} TREATMENT_TIME_DATA_T; + +/// Payload record structure for a treatment state message. +typedef struct +{ + U32 treatmentSubMode; + U32 uFState; + U32 salineBolusState; + U32 heparinState; + U32 rinsebackState; + U32 txRecircState; + U32 bldPrimeState; + U32 txEndState; + U32 txStopState; +} TREATMENT_STATE_DATA_T; + +/// Payload record structure for an ultrafiltration volume change confirmation message. +typedef struct +{ + F32 volume_mL; + U32 adjustType; +} UF_SETTINGS_CHANGE_CONFIRMATION_PAYLOAD_T; + +/// Payload record structure for the in-line pressure limits change request. +typedef struct +{ + S32 artLowLimit; + S32 artHighLimit; + S32 venLowLimit; + S32 venHighLimit; +} PRESSURE_LIMIT_CHANGE_REQUEST_T; + +/// Payload record structure for the in-line pressure limits change response. +typedef struct +{ + BOOL accepted; + U32 rejReasonCode; + S32 artLowLimit; + S32 artHighLimit; + S32 venLowLimit; + S32 venHighLimit; +} PRESSURE_LIMIT_CHANGE_RESPONSE_T; + +/// 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 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 getActualTreatmentTimeMins( void ); // Determine the actual treatment duration in minutes +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) +F32 getTreatmentAvgBloodFlowRate( void ); // Get the treatment average blood flow rate during treatment +F32 getTreatmentAvgDialysateFlowRate( void ); // Get the treatment average dialysate flow rate during treatment +F32 getTreatmentAvgDialysateTemp( void ); // Get the treatment average dialysate temperature during treatment +U32 getTreatmentStartTimeStamp( void ); // Get the treatment start time stamp + +void broadcastTreatmentTimeAndState( void ); // Broadcast the times and states of this treatment + +BOOL verifyTreatmentDurationSettingChange( U32 treatmentTime ); +BOOL verifyUFSettingsChange( F32 uFVolume ); +BOOL verifyUFSettingsConfirmation( F32 uFVolume, U32 adjustment ); +BOOL verifyBloodAndDialysateRateSettingsChange( U32 bloodRate, U32 dialRate ); +BOOL verifyPressureLimitsChange( PRESSURE_LIMIT_CHANGE_REQUEST_T *data ); + +BOOL testSetTreatmentTimeRemainingOverride( U32 value ); + +/**@}*/ + #endif