Index: firmware/App/Drivers/GLXferPump.c =================================================================== diff -u -r3a8cf075eb6f0d255f516ac26bac7fbaacfde14a -r395522dffef1348e176564925656012f529c1910 --- firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision 3a8cf075eb6f0d255f516ac26bac7fbaacfde14a) +++ firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision 395522dffef1348e176564925656012f529c1910) @@ -1,21 +1,22 @@ /************************************************************************** * -* Copyright (c) 2024-2024 Diality Inc. - All Rights Reserved. +* Copyright (c) 2024-2026 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 (last) Dara Navaei +* @date (last) 03-Sep-2025 * -* @author (original) Sean -* @date (original) 17-Sep-2024 +* @author (original) Sean Nash +* @date (original) 19-Sep-2024 * ***************************************************************************/ #include "AlarmMgmtTD.h" +#include "FpgaTD.h" #include "GLXferPump.h" #include "GPIO.h" #include "Messaging.h" @@ -27,9 +28,11 @@ // ********** 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 AIR_PUMP_MOTOR_STATE_T currentAirPumpMotorState; ///< Current air pump motor state (on/off). +static U08 currentAirPumpMotorPowerLevel; ///< Current air pump motor state: 0=off, 1..255=power level. // ********** private function prototypes ********** @@ -38,53 +41,48 @@ * The initGasLiqXferPumpDriver function initializes the gas/liquid transfer * pump driver unit. * @details \b Inputs: none - * @details \b Outputs: currentAirPumpMotorState + * @details \b Outputs: currentAirPumpMotorPowerLevel * @return none *************************************************************************/ void initGasLiqXferPumpDriver(void) { - currentAirPumpMotorState = AIR_PUMP_MOTOR_OFF; - setAirPumpMotorSignal( (PIN_SIGNAL_STATE_T)currentAirPumpMotorState ); + currentAirPumpMotorPowerLevel = AIR_PUMP_MOTOR_OFF; + setH12AirPumpMotorPowerLevel( currentAirPumpMotorPowerLevel ); + setH12AirPumpMotorPWMCntTime( AIR_PUMP_PWM_TIME ); } /*********************************************************************//** * @brief - * The setAirPumpMotorState function sets the air pump motor state to on or off. - * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if invalid state given. + * 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: currentAirPumpMotorState - * @param state State to set the air pump motor (on/off). + * @details \b Outputs: currentAirPumpMotorPowerLevel + * @param power Power level for air pump (0=off, 1..255=lower to higher power level). * @return none. *************************************************************************/ -void setAirPumpMotorState( AIR_PUMP_MOTOR_STATE_T state ) +void setAirPumpMotorPower( U08 power ) { - if ( state < NUM_OF_AIR_PUMP_MOTOR_STATES ) + // if state is changing, set the air pump to the given on/off state and send event + if ( power != currentAirPumpMotorPowerLevel ) { - // if state is changing, set the air pump to the given on/off state and send event - if ( state != currentAirPumpMotorState ) - { - SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_AIR_PUMP_ON_OFF, (U32)currentAirPumpMotorState, (U32)state ); - setAirPumpMotorSignal( (PIN_SIGNAL_STATE_T)state ); - currentAirPumpMotorState = state; - } + SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_AIR_PUMP_ON_OFF, (U32)currentAirPumpMotorPowerLevel, (U32)power ); + setH12AirPumpMotorPowerLevel( power ); + currentAirPumpMotorPowerLevel = power; } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_AIR_PUMP_INVALID_MOTOR_STATE_SELECTED, (U32)state ) - } } /*********************************************************************//** * @brief - * The getAirPumpMotorState function gets the current state of the air pump - * motor. - * @details \b Inputs: currentAirPumpMotorState + * The getAirPumpMotorState function gets the current set power level of the + * air pump motor. + * @details \b Inputs: currentAirPumpMotorPowerLevel * @details \b Outputs: none - * @return Current on/off state of the air pump motor. + * @return Current set power level of the air pump motor. *************************************************************************/ -AIR_PUMP_MOTOR_STATE_T getAirPumpMotorState( void ) +U08 getAirPumpMotorPower( void ) { - return currentAirPumpMotorState; + return currentAirPumpMotorPowerLevel; } @@ -93,35 +91,5 @@ *************************************************************************/ -/*********************************************************************//** - * @brief - * The testSetAirPump function sets the air pump to a given state (on/off). - * @details \b Inputs: none - * @details \b Outputs: currentAirPumpState - * @param message set message from Dialin which includes the state to set - * the air pump to. - * @return TRUE if set request is successful, FALSE if not - *************************************************************************/ -BOOL testSetAirPump( MESSAGE_T *message ) -{ - BOOL result = FALSE; - - // Verify tester has logged in with TD and override type is valid - if ( TRUE == isTestingActivated() ) - { - U32 state; - - memcpy( &state, message->payload, sizeof(U32) ); - result = TRUE; - if ( state < NUM_OF_AIR_PUMP_MOTOR_STATES ) - { - setAirPumpMotorState( (AIR_PUMP_MOTOR_STATE_T)state ); - result = TRUE; - } - } - - return result; -} - /**@}*/