/************************************************************************** * * Copyright (c) 2024-2025 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 RotaryValve.h * * @author (last) Dara Navaei * @date (last) 09-Nov-2025 * * @author (original) Sean Nash * @date (original) 24-Oct-2024 * ***************************************************************************/ #ifndef __ROTARY_VALVE_H__ #define __ROTARY_VALVE_H__ // ********** public definitions ********** #include "TDCommon.h" /** * @defgroup RotaryValve RotaryValve * @brief Rotary valve driver unit. Provides low level functions * to control a rotary (driven/turned by DC motor) valve. * * @addtogroup RotaryValve * @{ */ // ********** public definitions ********** #define ROTARY_VALVE_MICROSTEP_FRACTION 8 ///< Rotary valve motors configured for 1/8 step microstepping. #define ROTARY_VALVE_GEAR_RATIO 3.7F ///< Rotary valve motor gear ratio is 3.7:1. #define ROTARY_VALVE_INIT_FULL_SWING_COUNTS 1880 ///< Rotary valve swing arm travel range is appx. micro steps. #define ROTARY_VALVE_ENERGIZED_EDGE_MAX_COUNTS 1900 ///< Rotary valve energized edge maximum allowed counts. #define ROTARY_VALVE_ENERGIZED_EDGE_MIN_COUNTS 1700 ///< Rotary valve energized edge minimum allowed counts. /// rotary pinch valve names typedef enum valveNames { H1_VALV = 0, ///< Arterial rotary pinch valve FIRST_VALVE = H1_VALV, ///< First valve H19_VALV, ///< Venous rotary pinch valve NUM_OF_VALVES ///< Number of valves } VALVE_T; // ********** public function prototypes ********** void initRotaryValvesDriver( void ); void readValves( void ); void setValveCmdChangePosition( VALVE_T valve, U16 mag, MOTOR_DIR_T dir ); S16 getValveEncoderPosition( VALVE_T valve ); void resetValve( VALVE_T valve ); void resetValveEncoder( VALVE_T valve ); void enableValve( VALVE_T valve ); void setValveZeroEncoderPosition( VALVE_T valve ); void setValveHomingEnableDisable( VALVE_T valve, BOOL enableHoming ); S16 getValveMaximumEncoderPosition( VALVE_T valve ); BOOL testValveEncoderPositionOverride( MESSAGE_T *message ); BOOL testValveStatusOverride( MESSAGE_T *message ); BOOL testSetValve( MESSAGE_T *message ); /**@}*/ #endif