/************************************************************************** * * Copyright (c) 2024-2024 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 BloodFlow.h * * @author (last) Sean * @date (last) 25-Oct-2024 * * @author (original) Sean * @date (original) 25-Oct-2024 * ***************************************************************************/ #ifndef __BLOOD_FLOW_H__ #define __BLOOD_FLOW_H__ #include "TDCommon.h" #include "PeristalticPump.h" /** * @defgroup BloodFlow BloodFlow * @brief Blood Pump & Blood Flow controller/monitor module. Monitors and * controls the blood pump. * * @addtogroup BloodFlow * @{ */ // ********** public definitions ********** #define MAX_SET_BLOOD_FLOW_RATE 500 ///< Maximum prescribed blood flow rate (in mL/min). #define MIN_SET_BLOOD_FLOW_RATE 100 ///< Minimum prescribed blood flow rate (in mL/min). /// Payload record structure for a blood pump data message. typedef struct { S32 setFlowRate; ///< Set flow rate in mL/min. F32 measFlow; ///< Measured flow rate in mL/min. F32 measRotorSpd; ///< Measured rotor speed in RPM. F32 measPumpSpd; ///< Measured pump speed in RPM. F32 measCurr; ///< Measure motor current in Amps. F32 setRPM; ///< Set motor speed in RPM. U32 rotorCount; ///< Rotor count. U32 presFlow; ///< Prescribed blood flow in mL/min. U32 rotorHall; ///< Rotor hall state (1=home, 0=not home). } BLOOD_PUMP_STATUS_PAYLOAD_T; // ********** public function prototypes ********** void initBloodFlow( void ); void execBloodFlowMonitor( void ); void execBloodFlowController( void ); BOOL setBloodPumpTargetFlowRate( U32 flowRate, MOTOR_DIR_T dir, PUMP_CONTROL_MODE_T mode ); BOOL setBloodPumpTargetRPM( U32 rpm, MOTOR_DIR_T dir ); void signalBloodPumpHardStop( void ); void signalBloodPumpRotorHallSensor( void ); BOOL homeBloodPump( void ); BOOL isBloodPumpRunning( void ); BOOL isBloodPumpRampComplete( void ); void resetBloodPumpRotorCount( void ); SELF_TEST_STATUS_T execBloodFlowTest( void ); S32 getTargetBloodFlowRate( void ); F32 getMeasuredBloodFlowRate( void ); F32 getMeasuredBloodPumpRotorSpeed( void ); F32 getMeasuredBloodPumpSpeed( void ); BOOL testBloodFlowDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testSetTargetBloodFlowRateOverride( MESSAGE_T *message ); BOOL testSetBloodPumpSpeedOverride( MESSAGE_T *message ); BOOL testMeasuredBloodFlowRateOverride( MESSAGE_T *message ); BOOL testMeasuredBloodPumpRotorSpeedOverride( MESSAGE_T *message ); BOOL testMeasuredBloodPumpSpeedOverride( MESSAGE_T *message ); BOOL testBloodPumpRotorCountOverride( MESSAGE_T *message ); /**@}*/ #endif