Index: firmware/App/Monitors/Level.c =================================================================== diff -u -r322747d530c1b8205be257557e53dcfe9caad50a -r5126b79e4970ffe2ed9db4cccea18a1216c78570 --- firmware/App/Monitors/Level.c (.../Level.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision 5126b79e4970ffe2ed9db4cccea18a1216c78570) @@ -22,6 +22,11 @@ #include "TaskPriority.h" #include "Timers.h" +#ifdef __PUMPTEST__ +#include "gio.h" +#include "PistonPumpControl.h" +#endif + /** * @addtogroup Level * @{ @@ -40,6 +45,11 @@ #define LEVEL_DEBOUNCE_TIME_MS ( MS_PER_SECOND / 10 ) ///< Level debounce time in milliseconds. #define DATA_PUBLISH_COUNTER_START_COUNT 7 ///< Data publish counter start count. +#ifdef __PUMPTEST__ +#define DOSING_TRIGGER_GIO_PORT_PIN 6U ///< GPIO pin ID on port A for dosing trigger input signal. +#define GET_PUMP_DOSING_TRIGGER() (PIN_SIGNAL_STATE_T)(gioGetBit(gioPORTA, DOSING_TRIGGER_GIO_PORT_PIN)) ///< Macro to get dosing trigger state. +#endif + /// Level status structure typedef struct { @@ -120,6 +130,12 @@ currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); break; +#ifdef __PUMPTEST__ + case PUMP_TRIG_LEVEL: + currentLevelStatus = ( GET_PUMP_DOSING_TRIGGER() == 0 ? LEVEL_STATE_LOW : LEVEL_STATE_HIGH ); + break; +#endif + #ifndef _VECTORCAST_ default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_LEVEL_SELECTED, i ); @@ -151,6 +167,11 @@ case D46_LEVL: SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_D46_LEVL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; +#ifdef __PUMPTEST__ + case PUMP_TRIG_LEVEL: + // TODO: Will handle event later if required + break; +#endif #ifndef _VECTORCAST_ default: @@ -171,6 +192,10 @@ levelsStatus[i].priorRawLevel = currentLevelStatus; } +#ifdef __PUMPTEST__ + // Handle dosing trigger + processPistonPumpDosingTrigger(); +#endif publishLevelsData(); } @@ -283,7 +308,11 @@ data.d6Level = (U32)getLevelStatus( D6_LEVL ); data.d63Level = (U32)getLevelStatus( D63_LEVL ); +#ifndef __PUMPTEST__ data.d46Level = (U32)getLevelStatus( D46_LEVL ); +#else + data.d46Level = (U32)getLevelStatus( PUMP_TRIG_LEVEL ); +#endif levelsDataPublicationCounter = 0;