Index: firmware/App/Drivers/LevelSensors.c =================================================================== diff -u -r58c82eeb7e6113e610babd4e36b3968552b35260 -r395522dffef1348e176564925656012f529c1910 --- firmware/App/Drivers/LevelSensors.c (.../LevelSensors.c) (revision 58c82eeb7e6113e610babd4e36b3968552b35260) +++ firmware/App/Drivers/LevelSensors.c (.../LevelSensors.c) (revision 395522dffef1348e176564925656012f529c1910) @@ -1,50 +1,50 @@ /************************************************************************** * -* 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 LevelSensors.c * -* @author (last) Sean -* @date (last) 03-Oct-2024 +* @author (last) Sean Nash +* @date (last) 06-Jun-2025 * -* @author (original) Sean -* @date (original) 03-Oct-2024 +* @author (original) Sean Nash +* @date (original) 24-Oct-2024 * ***************************************************************************/ -#include "LevelSensors.h" +#include "LevelSensors.h" #include "FpgaTD.h" #include "Messaging.h" #include "TaskPriority.h" -#include "Timers.h" - +#include "Timers.h" + /** * @addtogroup LevelSensors * @{ */ -// ********** private definitions ********** - +// ********** private definitions ********** + #define AIR_TRAP_LEVEL_DEBOUNCE_TIME_MS ( 400 / TASK_PRIORITY_INTERVAL ) ///< Air trap level sensor debounce time (in priority task intervals). -// ********** private data ********** +// ********** private data ********** static OVERRIDE_U32_T rawLevelStates[ NUM_OF_AIR_TRAP_LEVEL_SENSORS ]; ///< Raw air trap level states before debounce (overrideable). static OVERRIDE_U32_T currentLevelStates[ NUM_OF_AIR_TRAP_LEVEL_SENSORS ]; ///< Current raw level sensor states (overrideable). static U32 airTrapLevelsDebounceTimerCtr[ NUM_OF_AIR_TRAP_LEVEL_SENSORS ]; ///< Debounce timer counter for air trap level sensors. - + // ********** private function prototypes ********** -/*********************************************************************//** - * @brief - * The initLevelSensors function initializes the Level Sensors unit. - * @details \b Inputs: none - * @details \b Outputs: Level Sensors unit is initialized. - * @return none - *************************************************************************/ +/*********************************************************************//** + * @brief + * The initLevelSensors function initializes the Level Sensors unit. + * @details \b Inputs: none + * @details \b Outputs: Level Sensors unit is initialized. + * @return none + *************************************************************************/ void initLevelSensors( void ) { AIR_TRAP_LEVEL_SENSORS_T airTrapLevelSensor; @@ -61,11 +61,11 @@ currentLevelStates[ airTrapLevelSensor ].ovInitData = AIR_TRAP_LEVEL_AIR; currentLevelStates[ airTrapLevelSensor ].override = OVERRIDE_RESET; } -} - +} + /*********************************************************************//** * @brief - * The readLevelSensors function gets the current level sensor state + * The readAirTrapLevelSensors function gets the current level sensor state * for a all level sensors from the FPGA. * @note This function should be called periodically to maintain fresh * sensor readings for all level sensors. @@ -74,15 +74,19 @@ * airTrapLevelsDebounceStartTime[] * @return none *************************************************************************/ -void readLevelSensors( void ) +void readAirTrapLevelSensors( void ) { BOOL lowAir, highAir; AIR_TRAP_LEVEL_SENSORS_T airTrapLevelSensor; // Get latest raw level sensor states from FPGA +#ifndef TEST_AIR_TRAP_ALPHA_TESTING getFPGAAirTrapLevels( &lowAir, &highAir ); - currentLevelStates[ AIR_TRAP_LEVEL_SENSOR_LOWER ].data = (U32)( FALSE == lowAir ? AIR_TRAP_LEVEL_FLUID : AIR_TRAP_LEVEL_AIR ); - currentLevelStates[ AIR_TRAP_LEVEL_SENSOR_UPPER ].data = (U32)( FALSE == highAir ? AIR_TRAP_LEVEL_FLUID : AIR_TRAP_LEVEL_AIR ); +#else + getFPGAAirTrapLevels( &highAir, &lowAir ); +#endif + rawLevelStates[ H17_LEVL ].data = (U32)( FALSE == lowAir ? AIR_TRAP_LEVEL_FLUID : AIR_TRAP_LEVEL_AIR ); + rawLevelStates[ H16_LEVL ].data = (U32)( FALSE == highAir ? AIR_TRAP_LEVEL_FLUID : AIR_TRAP_LEVEL_AIR ); // Debounce raw air trap level sensor readings for( airTrapLevelSensor = AIR_TRAP_LEVEL_FIRST; airTrapLevelSensor < NUM_OF_AIR_TRAP_LEVEL_SENSORS; airTrapLevelSensor++ ) @@ -104,34 +108,30 @@ } } -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The getLevelSensorState function gets the current debounced sensor state * for a given level sensor. - * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given sensor is invalid. - * @details \b Inputs: currentLevelStates[] - * @details \b Outputs: none - * @param sensor ID of level sensor to get state for. - * @return The current state of the given level sensor. - *************************************************************************/ + * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Inputs: currentLevelStates[] + * @details \b Outputs: none + * @param sensor ID of level sensor to get state for. + * @return The current state of the given level sensor. + *************************************************************************/ AIR_TRAP_LEVELS_T getLevelSensorState( AIR_TRAP_LEVEL_SENSORS_T sensor ) { AIR_TRAP_LEVELS_T result = AIR_TRAP_LEVEL_AIR; if ( sensor < NUM_OF_AIR_TRAP_LEVEL_SENSORS ) { - result = (AIR_TRAP_LEVELS_T)currentLevelStates[ sensor ].data; - if ( OVERRIDE_KEY == currentLevelStates[ sensor ].override ) - { - result = (AIR_TRAP_LEVELS_T)currentLevelStates[ sensor ].ovData; - } + result = (AIR_TRAP_LEVELS_T)getU32OverrideValue( ¤tLevelStates[ sensor ] ); } else { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_LEVEL_SENSOR_INVALID_SENSOR, sensor ) } - return result; + return result; } /*********************************************************************//** @@ -150,11 +150,7 @@ if ( sensor < NUM_OF_AIR_TRAP_LEVEL_SENSORS ) { - result = (AIR_TRAP_LEVELS_T)rawLevelStates[ sensor ].data; - if ( OVERRIDE_KEY == rawLevelStates[ sensor ].override ) - { - result = (AIR_TRAP_LEVELS_T)rawLevelStates[ sensor ].ovData; - } + result = (AIR_TRAP_LEVELS_T)getU32OverrideValue( &rawLevelStates[ sensor ] ); } else { @@ -203,5 +199,5 @@ return result; } - + /**@}*/