/************************************************************************** * * Copyright (c) 2025-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 Ejector.h * * @author (last) Sean * @date (last) 17-Sep-2024 * * @author (original) Sean * @date (original) 17-Sep-2024 * ***************************************************************************/ #ifndef __EJECTOR_H__ #define __EJECTOR_H__ // ********** public definitions ********** #include "TDCommon.h" #include "EjectorMotor.h" /** * @defgroup Ejector Ejector * @brief Ejector controller unit. Provides higher level control of the ejector. * * @addtogroup Ejector * @{ */ // ********** public definitions ********** #pragma pack(push, 1) /// Payload record structure for air pump data broadcast message typedef struct { U32 h5State; ///< Ejector state F32 h5SetSpeed; ///< Ejector motor set speed } EJECTOR_PAYLOAD_T; #pragma pack(pop) /// Enumeration of ejector states. typedef enum EjectorStates { EJECTOR_STATE_INIT = 0, ///< Ejector Initial (un-homed) state EJECTOR_STATE_HOMING, ///< Ejector Homing state EJECTOR_STATE_RETRACTED, ///< Ejector Retracted state EJECTOR_STATE_EXTENDED, ///< Ejector Extended state EJECTOR_STATE_RETRACTING, ///< Ejector Retracting state EJECTOR_STATE_EXTENDING, ///< Ejector Extending state EJECTOR_STATE_DIR_CHANGE_STOP, ///< Ejector Direction Change Stop state EJECTOR_STATE_RETRACT_BACKOFF, ///< Ejector Backing Off Retracted state EJECTOR_STATE_ABORT, ///< Ejector abort state NUM_OF_EJECTOR_STATES, ///< Number of ejector states } EJECTOR_STATE_T; // ********** public function prototypes ********** void initEjector(void); void execEjectorController(void); EJECTOR_STATE_T getEjectorState( void ); BOOL homeEjector( void ); BOOL retractEjector( void ); BOOL extendEjector( void ); void abortEjectorOperation( void ); BOOL testEjectorDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testEjectorCommand( MESSAGE_T *message ); /**@}*/ #endif