Index: firmware/App/Modes/ModeTreatment.h =================================================================== diff -u -re0e66d4c302c2aa43951ca316689ed4debbff1fb -r8e7158d8231435496fcf1d5649e51babf859ccc7 --- firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision e0e66d4c302c2aa43951ca316689ed4debbff1fb) +++ firmware/App/Modes/ModeTreatment.h (.../ModeTreatment.h) (revision 8e7158d8231435496fcf1d5649e51babf859ccc7) @@ -1,63 +1,96 @@ -/**********************************************************************//** - * - * 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 - * - * @date 19-Sep-2019 - * @author S. Nash - * - * @brief Header file for Treatment Mode. - * - **************************************************************************/ +/************************************************************************** +* +* Copyright (c) 2019-2021 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) 01-Dec-2020 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ #ifndef __MODE_TREATMENT_H__ #define __MODE_TREATMENT_H__ #include "HDCommon.h" +#include "HDDefs.h" #include "Dialysis.h" /** - * @defgroup TreatmentMode TreatmentMode + * @defgroup HDTreatmentMode HDTreatmentMode * @brief TreatmentMode module. * - * @addtogroup TreatmentMode + * @addtogroup HDTreatmentMode * @{ */ // ********** public definitions ********** -/// Sub-mode states while in treatment mode -typedef enum Treatment_States +/// Payload record structure for a treatment time status message. +typedef struct { - TREATMENT_START_STATE = 0, ///< Start treatment, prime blood side with gradual ramp for 1 min. while dialyzer is bypassed. No dialysis or UF taking place. - TREATMENT_DIALYSIS_STATE, ///< Perform dialysis. Deliver Heparin as prescribed. Deliver UF as prescribed. Handle saline boluses as requested. - TREATMENT_STOP_STATE, ///< Treatment stopped. All pumps off. Dializer bypassed. - TREATMENT_RINSEBACK_STATE, ///< Perform rinseback with saline. Dialyzer bypassed. Dialysate recirculating. - TREATMENT_RINSEBACK_PAUSE_STATE, ///< Rinseback paused. Blood pump off. Dialyzer bypassed. Dialysate recirculating. - TREATMENT_RECIRC_SETUP_STATE, ///< Rinseback complete. Blood pump off. Blood lines closed. User to disconnect and shunt blood lines. - TREATMENT_RECIRC_STATE, ///< Recirculate saline and dialysate while patient disconnected. Blood lines open and shunted. Dialyzer is bypassed. - TREATMENT_RECIRC_PAUSE_STATE, ///< Recirculate paused. Blood pump off. Blood lines closed and shunted. Dialyzer is bypassed. - TREATMENT_RECIRC_STOP_STATE, ///< Recirculate stopped. Blood pump off. Blood lines open. Waiting for patient to unshunt and connect and resume treatment. - TREATMENT_DIALYSIS_END_STATE, ///< Dialysis has ended. Blood pump slowed. Dialyzer is bypassed. Dialysate is recirculated. User can rinseback. - TREATMENT_END_STATE, ///< Treatment has ended. All pumps off. Dialyzer is bypassed. Blood lines are closed. User to disconnect. - NUM_OF_TREATMENT_STATES ///< Number of treatment states (sub-modes). -} TREATMENT_STATE_T; + 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; +} 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; + // ********** private function prototypes ********** 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) +U32 execTreatmentMode( void ); // execute the treatment mode state machine (call from OperationModes) TREATMENT_STATE_T getTreatmentState( void ); +BOOL userRequestEndTreatment( void ); +void broadcastTreatmentTimeAndState( void ); + BOOL verifyTreatmentDurationSettingChange( U32 treatmentTime ); -BOOL verifyUFSettingsChange( F32 uFVolume, UF_ADJ_T adjustment ); -BOOL verifyUFSettingsConfirmation( BOOL confirmed, F32 uFVolume, U32 treatmentTime, F32 uFRate ); +BOOL verifyUFSettingsChange( F32 uFVolume ); +BOOL verifyUFSettingsConfirmation( F32 uFVolume, U32 adjustment ); +BOOL verifyBloodAndDialysateRateSettingsChange( U32 bloodRate, U32 dialRate ); +BOOL verifyPressureLimitsChange( PRESSURE_LIMIT_CHANGE_REQUEST_T *data ); /**@}*/