/************************************************************************** * * 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 GLXferPump.c * * @author (last) Sean * @date (last) 17-Sep-2024 * * @author (original) Sean * @date (original) 17-Sep-2024 * ***************************************************************************/ #include "AlarmMgmtTD.h" #include "FpgaTD.h" #include "GLXferPump.h" #include "GPIO.h" #include "Messaging.h" /** * @addtogroup GLXferPump * @{ */ // ********** private definitions ********** #define AIR_PUMP_PWM_TIME 20 ///< Time (in 10ns increments) per PWM register count for the air pump = 20 kHz. // ********** private data ********** static U08 currentAirPumpMotorPowerLevel; ///< Current air pump motor state: 0=off, 1..255=power level. // ********** private function prototypes ********** /*********************************************************************//** * @brief * The initGasLiqXferPumpDriver function initializes the gas/liquid transfer * pump driver unit. * @details \b Inputs: none * @details \b Outputs: currentAirPumpMotorPowerLevel * @return none *************************************************************************/ void initGasLiqXferPumpDriver(void) { currentAirPumpMotorPowerLevel = AIR_PUMP_MOTOR_OFF; setH12AirPumpMotorPowerLevel( currentAirPumpMotorPowerLevel ); setH12AirPumpMotorPWMCntTime( AIR_PUMP_PWM_TIME ); } /*********************************************************************//** * @brief * The setAirPumpMotorPower function sets the air pump motor to the given * power level. * @details \b Message \b Sent: MSG_ID_TD_EVENT if changing air pump power level. * @details \b Inputs: none * @details \b Outputs: currentAirPumpMotorPowerLevel * @param power Power level for air pump (0=off, 1..255=lower to higher power level). * @return none. *************************************************************************/ void setAirPumpMotorPower( U08 power ) { // if state is changing, set the air pump to the given on/off state and send event if ( power != currentAirPumpMotorPowerLevel ) { SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_AIR_PUMP_ON_OFF, (U32)currentAirPumpMotorPowerLevel, (U32)power ); setH12AirPumpMotorPowerLevel( power ); currentAirPumpMotorPowerLevel = power; } } /*********************************************************************//** * @brief * The getAirPumpMotorState function gets the current set power level of the * air pump motor. * @details \b Inputs: currentAirPumpMotorPowerLevel * @details \b Outputs: none * @return Current set power level of the air pump motor. *************************************************************************/ U08 getAirPumpMotorPower( void ) { return currentAirPumpMotorPowerLevel; } /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ /**@}*/