Index: firmware/App/Controllers/DrainPump.h =================================================================== diff -u -r482f4465ccdb813922de506bf780e29f4fb2f84b -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 --- firmware/App/Controllers/DrainPump.h (.../DrainPump.h) (revision 482f4465ccdb813922de506bf780e29f4fb2f84b) +++ firmware/App/Controllers/DrainPump.h (.../DrainPump.h) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) @@ -1,56 +1,100 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2020-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 DrainPump.h +* @file DrainPump.h * -* @author (last) Sean -* @date (last) 24-Apr-2020 +* @author (last) Dara Navaei +* @date (last) 17-Apr-2023 * -* @author (original) Sean -* @date (original) 08-Apr-2020 +* @author (original) Sean +* @date (original) 08-Apr-2020 * ***************************************************************************/ - -#ifndef __DRAIN_PUMP_H__ -#define __DRAIN_PUMP_H__ - -#include "DGCommon.h" - -/** - * @defgroup DrainPump DrainPump - * @brief Drain Pump monitor/controller module. Controls and monitors the drain pump. - * - * @addtogroup DrainPump - * @{ - */ - -// ********** public definitions ********** - -#define MAX_DRAIN_PUMP_RPM_TARGET 3000 ///< Maximum RPM target for drain pump. -#define MIN_DRAIN_PUMP_RPM_TARGET 300 ///< Minimum RPM target for drain pump (though zero is allowed if turning pump off). - -// ********** public function prototypes ********** - -void initDrainPump( void ); -void execDrainPumpMonitor( void ); -void execDrainPumpController( void ); - -BOOL setDrainPumpTargetSpeed( U32 rpm ); -void signalDrainPumpHardStop( void ); - -SELF_TEST_STATUS_T execDrainPumpTest( void ); - -U32 getTargetDrainPumpSpeed( void ); - -BOOL testSetDrainPumpDataPublishIntervalOverride( U32 value ); -BOOL testResetDrainPumpDataPublishIntervalOverride( void ); -BOOL testSetTargetDrainPumpSpeedOverride( U32 value ); -BOOL testResetTargetDrainPumpSpeedOverride( void ); - -/**@}*/ - -#endif + +#ifndef __DRAIN_PUMP_H__ +#define __DRAIN_PUMP_H__ + +#include "DGCommon.h" + +/** + * @defgroup DrainPump DrainPump + * @brief Drain Pump monitor/controller module. Controls and monitors the drain pump. + * Drain pump manufacturer: Diener, PN: 01006-PM-0 Rev A. + * The pump shall produce flow rates of 100-2000 ml/min at 1 bar differential pressure. + * The motor used shall be either Diener part number MA0250 or MA0297. + * + * @addtogroup DrainPump + * @{ + */ + +// ********** public definitions ********** + +#define MIN_DRAIN_PUMP_RPM 300 ///< Minimum RPM target for drain pump (though zero is allowed if turning pump off). +#define MAX_DRAIN_PUMP_RPM 3000 ///< Maximum RPM target for drain pump. + +/// Enumeration of drain pump speed feedbacks +typedef enum DrainPump_Speed_Feedbacks +{ + DRAIN_PUMP_HALL_SNSR_FB = 0, ///< Drain pump hall sensor feedback. + DRAIN_PUMP_MAXON_SNSR_FB, ///< Drain pump Maxon sensor feedback. + NUM_OF_DRAIN_PUMP_SNSR_FB ///< Number of drain pump sensor feedbacks. +} DRAIN_PUMP_SPEED_FB_SNSR_T; + +/// Drain pump data publish +typedef struct +{ + U32 rpmSetPoint; ///< Drain pump speed set point (for open loop). + U32 pumpDACSet; ///< Drain pump DAC set value. + U32 drainPumpState; ///< Drain pump state machine state. + U32 drainPumpHallRPM; ///< Drain pump current RPM from Hall sensor. + F32 trgtOutletFlowLPM; ///< Drain pump target outlet flow in L/min. + F32 drainPumpCurrentA; ///< Drain pump current in amps. + U32 drainPumpDirection; ///< Drain pump direction. + U32 drainPumpMaxonRPM; ///< Drain pump current RPM from Maxon board. +} DRAIN_PUMP_DATA_T; + +// ********** public function prototypes ********** + +void initDrainPump( void ); +void execDrainPumpMonitor( void ); +void execDrainPumpController( void ); + +SELF_TEST_STATUS_T execDrainPumpSelfTest( void ); + +BOOL setDrainPumpTargetRPM( U32 rpm ); +BOOL setDrainPumpTargetRPMDelayed( U32 rpm, U32 delayMs ); + +BOOL setDrainPumpTargetOutletFlowLPM( F32 flow ); +F32 getDrainPumpTargetOutletFlowLPM( void ); + +void signalDrainPumpHardStop( void ); + +U32 getDrainPumpTargetRPM( void ); +U32 getDrainPumpMeasuredRPM( DRAIN_PUMP_SPEED_FB_SNSR_T sensor ); + +BOOL isDrainPumpOn( void ); + +F32 getFlushLineVolumeL( void ); + +BOOL testSetDrainPumpDataPublishIntervalOverride( U32 value ); +BOOL testResetDrainPumpDataPublishIntervalOverride( void ); + +BOOL testSetTargetDrainPumpRPM( U32 value ); +BOOL testSetTargetDrainPumpOutletFlowLPM( F32 value ); + +BOOL testSetDrainPumpMeasuredRPMOverride( U32 sensor, U32 value ); +BOOL testResetDrainPumpMeasuredRPMOverride( U32 sensor ); + +BOOL testSetDrainPumpMeasuredCurrentOverride( F32 value ); +BOOL testResetDrainPumpMeasuredCurrentOverride( void ); + +BOOL testSetDrainPumpMeasuredDirectionOverride( U32 value ); +BOOL testResetDrainPumpMeasuredDirectionOverride( void ); + +/**@}*/ + +#endif