/************************************************************************** * * 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 DGInterface.h * * @author (last) Sean Nash * @date (last) 05-Oct-2020 * * @author (original) Sean * @date (original) 08-Apr-2020 * ***************************************************************************/ #ifndef __DG_H__ #define __DG_H__ #include "HDCommon.h" #include "DGDefs.h" /** * @defgroup DGInterface DGInterface * @brief DG interface/monitor module. Interfaces with and monitors the * DG (dialysate generator) sub-system. * * @addtogroup DGInterface * @{ */ // ********** public definitions ********** #define DRAIN_RESERVOIR_TO_VOLUME_ML 0 ///< Drain reservoir to this volume (in mL) during treatment. #ifndef V1_5_SYSTEM #define FILL_RESERVOIR_TO_VOLUME_ML 1700 ///< Fill reservoir to this volume (in mL) during treatment. #else #define FILL_RESERVOIR_TO_VOLUME_ML 1300 ///< Fill reservoir to this volume (in mL) during treatment. #endif /// Enumeration of DG pressure sensors. typedef enum DG_PressureSensors { DG_PRESSURE_SENSOR_RO_PUMP_INLET = 0, ///< RO pump pressure sensor. DG_PRESSURE_SENSOR_RO_PUMP_OUTLET, ///< RO pump pressure sensor. DG_PRESSURE_SENSOR_DRAIN_PUMP_INLET, ///< Drain pump inlet pressure. DG_PRESSURE_SENSOR_DRAIN_PUMP_OUTLET, ///< Drain pump outlet pressure. NUM_OF_DG_PRESSURE_SENSORS ///< Number of pressure sensors. } DG_PRESSURE_SENSORS_T; /// Payload record structure for an RO pump data message. typedef struct { U32 setPtPSI; F32 measFlowRateMlMin; F32 setPWMDutyCyclePct; } DG_RO_PUMP_DATA_PAYLOAD_T; /// Payload record structure for a drain pump data message. typedef struct { U32 setPtRPM; F32 setDAC; } DG_DRAIN_PUMP_DATA_PAYLOAD_T; /// Payload record structure for a DG pressures data message. typedef struct { F32 roInPSI; F32 roOutPSI; F32 drainInPSI; F32 drainOutPSI; } DG_PRESSURES_DATA_PAYLOAD_T; /// Payload record structure for a reservoirs data message. typedef struct { U32 resID; U32 setFillToVolumeMl; U32 setDrainToVolumeMl; } DG_RESERVOIRS_DATA_PAYLOAD_T; /// Payload record structure for DG temperature sensors data message. typedef struct { F32 TPi; F32 TPo; F32 TD1; F32 TD2; F32 TRo; F32 TDi; F32 HtrPrimThermo; F32 HtrTrimThermo; F32 HtrPrimColdJunc; F32 HtrTrimColdJunc; F32 HtrPrimInternal; F32 HtrTrimInternal; } DG_TEMPERATURES_T; /// Payload record structure for a drain reservoir command message. typedef struct { U32 drainToVolumeML; BOOL tareLoadCells; } DRAIN_RESERVOIR_CMD_PAYLOAD_T; /// DG command response data record structure. typedef struct { U32 commandID; ///< The command DG is responding to BOOL rejected; ///< Flag indicates if the command has been rejected U32 rejectCode; ///< Reason code for rejecting the command } DG_CMD_RESPONSE_T; // ********** public function prototypes ********** void initDGInterface( void ); void execDGInterfaceMonitor( void ); void initTreatmentReservoirMgmt( void ); void execTreatmentReservoirMgmt( void ); DG_OP_MODE_T getDGOpMode( void ); U32 getDGSubMode( void ); DG_RESERVOIR_ID_T getDGActiveReservoir( void ); DG_RESERVOIR_ID_T getDGInactiveReservoir( void ); F32 getDGPressure( DG_PRESSURE_SENSORS_T sensorID ); U32 getDGROPumpPressureSetPt( void ); F32 getDGROPumpFlowRateMlMin( void ); U32 getDGDrainPumpRPMSetPt( void ); F32 getLoadCellWeightInGrams( LOAD_CELL_ID_T loadCellID ); F32 getReservoirWeightSmallFilter( DG_RESERVOIR_ID_T resID ); F32 getReservoirWeightLargeFilter( DG_RESERVOIR_ID_T resID ); void setDGOpMode( U32 opMode, U32 subMode ); void setDialysateTemperatureReadings( F32 temp1, F32 temp2 ); void setDGDialysateTemperatures( F32 primaryHtrTemp, F32 trimmerHtrTemp ); void setDGReservoirsData( DG_RESERVOIR_ID_T resID, U32 fillVol, U32 drainVol ); void setDGPressures( F32 roIn, F32 roOut, F32 drainIn, F32 drainOut ); void setDGROPumpData( U32 presSetPt, F32 flowRate ); void setDGDrainPumpData( U32 rpmSetPt ); void setNewLoadCellReadings( F32 res1Primary, F32 res1Backup, F32 res2Primary, F32 res2Backup ); void cmdSetDGDialysateTargetTemps( F32 primaryHtrTemp, F32 trimmerHtrTemp ); void cmdStartDG( void ); void cmdStopDG( void ); void cmdSetDGActiveReservoir( DG_RESERVOIR_ID_T resID ); void cmdChangeDGValveSetting( DG_VALVE_SETTING_ID_T valveSettingID ); void cmdStartDGFill( U32 fillToVolMl ); void cmdStopDGFill( void ); void cmdStartDGDrain( U32 drainToVolMl, BOOL tareLoadCell ); void cmdStartDGTrimmerHeater( void ); void cmdStopDGTrimmerHeater( void ); void cmdDGSampleWater( SAMPLE_WATER_CMD_T cmd ); void handleDGCommandResponse( DG_CMD_RESPONSE_T *dgCmdRespPtr ); BOOL getDGCommandResponse( U32 commandID, DG_CMD_RESPONSE_T *cmdRespPtr ); void checkDGRestart( void ); BOOL testSetDialOutLoadCellWeightOverride( U32 sensor, F32 value ); BOOL testResetDialOutLoadCellWeightOverride( U32 sensor ); /**@}*/ #endif