Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -re5e75b8c211cf7f26fa5a8adf9290ea0b5d1afbc -rb5409fe2cdc66d0ee781d94ce33a33040e2edf41 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision e5e75b8c211cf7f26fa5a8adf9290ea0b5d1afbc) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision b5409fe2cdc66d0ee781d94ce33a33040e2edf41) @@ -14,44 +14,44 @@ * @date (original) 15-Jan-2020 * ***************************************************************************/ - + #include "PresOccl.h" -#include "AirPump.h" +#include "AirPump.h" #include "AlarmMgmt.h" -#include "BloodFlow.h" +#include "BloodFlow.h" #include "FPGA.h" #include "ModeTreatment.h" #include "ModeTreatmentParams.h" -#include "NVDataMgmt.h" +#include "NVDataMgmt.h" #include "OperationModes.h" -#include "PersistentAlarm.h" +#include "PersistentAlarm.h" #include "SystemCommMessages.h" -#include "SelfTests.h" +#include "SelfTests.h" #include "TaskGeneral.h" -#include "Temperatures.h" +#include "Temperatures.h" #include "Timers.h" -#include "Valves.h" - -/** - * @addtogroup PressureOcclusion - * @{ - */ - -// ********** private definitions ********** - -/// Default publication interval for pressure and occlusion data. +#include "Valves.h" + +/** + * @addtogroup PressureOcclusion + * @{ + */ + +// ********** private definitions ********** + +/// Default publication interval for pressure and occlusion data. #define PRES_OCCL_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the pressure/occlusion data is published on the CAN bus. -#define PRES_LIMIT_STABILIZATION_TIME_MS ( 60 * MS_PER_SECOND ) ///< Duration of pressure limit stabilization period (in ms). +#define PRES_LIMIT_STABILIZATION_TIME_MS ( 60 * MS_PER_SECOND ) ///< Duration of pressure limit stabilization period (in ms). #define PRES_LIMIT_RESTABILIZE_TIME_MS ( 30 * SEC_PER_MIN * MS_PER_SECOND ) ///< Duration of pressure limit re-stabilize period (in ms). -#define ARTERIAL_PRESSURE_CONVERSION_OFFSET 0x800000 ///< Arterial pressure conversion coefficient. -#define ARTERIAL_PRESSURE_V_BIAS ( 3.0F ) ///< Bias voltage for arterial pressure sensor. -#define ARTERIAL_PRESSURE_SENSITIVITY ( 0.000005F ) ///< Sensitivity for arterial pressure sensor is 5 uV / mmHg +#define ARTERIAL_PRESSURE_CONVERSION_OFFSET 0x800000 ///< Arterial pressure conversion coefficient. +#define ARTERIAL_PRESSURE_V_BIAS ( 3.0F ) ///< Bias voltage for arterial pressure sensor. +#define ARTERIAL_PRESSURE_SENSITIVITY ( 0.000005F ) ///< Sensitivity for arterial pressure sensor is 5 uV / mmHg #define ARTERIAL_PRESSURE_V_PER_BIT ( ARTERIAL_PRESSURE_V_BIAS / \ - (F32)ARTERIAL_PRESSURE_CONVERSION_OFFSET ) ///< Volts per bit in 24-bit arterial pressure sensor reading. - -#define VENOUS_PRESSURE_OFFSET ( 1638 ) ///< Offset for 14-bit venous pressure sensor reading. + (F32)ARTERIAL_PRESSURE_CONVERSION_OFFSET ) ///< Volts per bit in 24-bit arterial pressure sensor reading. + +#define VENOUS_PRESSURE_OFFSET ( 1638 ) ///< Offset for 14-bit venous pressure sensor reading. #define VENOUS_PRESSURE_SCALE ( 14745 - VENOUS_PRESSURE_OFFSET ) ///< Scale for venous pressure sensor. #define VENOUS_PRESSURE_MIN_PSI ( -30.0F ) ///< Minimum of scale for venous pressure sensor reading (in PSI). #define VENOUS_PRESSURE_MAX_PSI ( 30.0F ) ///< Maximum of scale for venous pressure sensor reading (in PSI). @@ -105,7 +105,7 @@ #define PRES_ALARM_PERSISTENCE ( 1 * MS_PER_SECOND ) ///< Alarm persistence period for pressure alarms. #define PRES_OCCL_ALARM_PERSISTENCE ( 3 * MS_PER_SECOND ) ///< Alarm persistence period for occlusion alarms #define VEN_OCCL_ALARM_PERSISTENCE 100 ///< Alarm persistence period for venous occlusion alarm. -#define AIR_PUMP_TOLERANCE_TIMEOUT_MS (1 * MS_PER_SECOND ) ///< Time to allow increased maximum venous high limit +#define AIR_PUMP_TOLERANCE_TIMEOUT_MS (1 * MS_PER_SECOND ) ///< Time to allow increased maximum venous high limit /// Measured arterial pressure is filtered w/ 10 second moving average for pressure compensation of flow. #define SIZE_OF_LONG_ART_ROLLING_AVG ( ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) * 10 ) @@ -123,34 +123,34 @@ #ifndef _RELEASE_ #define MIN_OCCLUSION_COUNTS_V3 1500 ///< Minimum occlusion count for v3 hardware -#endif -/// Defined states for the pressure and occlusion monitor state machine. -typedef enum PresOccl_States -{ - PRESSURE_WAIT_FOR_POST_STATE = 0, ///< Wait for POST state. - PRESSURE_CONTINUOUS_READ_STATE, ///< Continuous read sensors state. - NUM_OF_PRESSURE_STATES ///< Number of pressure/occlusion monitor states. -} PRESSURE_STATE_T; - -/// Defined states for the pressure and occlusion self-test state machine. -typedef enum PresOccl_Self_Test_States -{ - PRESSURE_SELF_TEST_STATE_START = 0, ///< Self test start state. - PRESSURE_TEST_STATE_IN_PROGRESS, ///< Self test in progress state. - PRESSURE_TEST_STATE_COMPLETE, ///< Self test completed state. - NUM_OF_PRESSURE_SELF_TEST_STATES ///< Number of pressure/occlusion self-test states. -} PRESSURE_SELF_TEST_STATE_T; - -// ********** private data ********** - -static PRESSURE_STATE_T presOcclState; ///< Current state of pressure monitor state machine. +#endif +/// Defined states for the pressure and occlusion monitor state machine. +typedef enum PresOccl_States +{ + PRESSURE_WAIT_FOR_POST_STATE = 0, ///< Wait for POST state. + PRESSURE_CONTINUOUS_READ_STATE, ///< Continuous read sensors state. + NUM_OF_PRESSURE_STATES ///< Number of pressure/occlusion monitor states. +} PRESSURE_STATE_T; + +/// Defined states for the pressure and occlusion self-test state machine. +typedef enum PresOccl_Self_Test_States +{ + PRESSURE_SELF_TEST_STATE_START = 0, ///< Self test start state. + PRESSURE_TEST_STATE_IN_PROGRESS, ///< Self test in progress state. + PRESSURE_TEST_STATE_COMPLETE, ///< Self test completed state. + NUM_OF_PRESSURE_SELF_TEST_STATES ///< Number of pressure/occlusion self-test states. +} PRESSURE_SELF_TEST_STATE_T; + +// ********** private data ********** + +static PRESSURE_STATE_T presOcclState; ///< Current state of pressure monitor state machine. static U32 presOcclDataPublicationTimerCounter = 0; ///< Used to schedule pressure data publication to CAN bus. -static U32 venLowPresExemptAfterAirTrapFillTimerCtr; ///< Exempt low ven pressure limit alarm for a time following an air trap fill. - +static U32 venLowPresExemptAfterAirTrapFillTimerCtr; ///< Exempt low ven pressure limit alarm for a time following an air trap fill. + /// Interval (in ms) at which to publish pressure/occlusion data to CAN bus. -static OVERRIDE_U32_T presOcclDataPublishInterval = { PRES_OCCL_DATA_PUB_INTERVAL, PRES_OCCL_DATA_PUB_INTERVAL, 0, 0 }; +static OVERRIDE_U32_T presOcclDataPublishInterval = { PRES_OCCL_DATA_PUB_INTERVAL, PRES_OCCL_DATA_PUB_INTERVAL, 0, 0 }; static OVERRIDE_F32_T arterialPressure = {0.0, 0.0, 0.0, 0 }; ///< Measured arterial pressure. -static OVERRIDE_F32_T venousPressure = {0.0, 0.0, 0.0, 0 }; ///< Measured venous pressure. +static OVERRIDE_F32_T venousPressure = {0.0, 0.0, 0.0, 0 }; ///< Measured venous pressure. static OVERRIDE_U32_T bloodPumpOcclusion = {0, 0, 0, 0 }; ///< Measured blood pump occlusion pressure. static PRESSURE_LIMITS_STATES_T currPresLimitsState; ///< Current pressure limits state. static S32 stableArterialPressure; ///< Arterial pressure that limit window is based on (in mmHg). @@ -160,13 +160,13 @@ static S32 currentVenousMaxLimit; ///< Maximum venous pressure limit (in mmHg). static S32 currentVenousMinLimit; ///< Minimum venous pressure limit (in mmHg). static BOOL pressureLimitsActive; ///< Flag indicates whether arterial and venous pressure alarm limits are active. -static U32 stabilizationStartTimeMs; ///< Timestamp taken when pressure limit stabilization began (ms). +static U32 stabilizationStartTimeMs; ///< Timestamp taken when pressure limit stabilization began (ms). static F32 longFilteredArterialPressure; ///< Measured arterial pressure after long (10 s) filter. static F32 shortFilteredArterialPressure; ///< Measured arterial pressure after short (1 s) filter. static F32 longFilteredVenousPressure; ///< Measured venous pressure after long (10 s) filter. static F32 shortFilteredVenousPressure; ///< Measured venous pressure after short (1 s) filter. -static U32 bloodPumpOcclusionAfterCartridgeInstall; ///< Measured blood pump occlusion reading taken after cartridge install. +static U32 bloodPumpOcclusionAfterCartridgeInstall; ///< Measured blood pump occlusion reading taken after cartridge install. static U32 emptySalineBagCtr = 0; ///< Timer counter for empty bag detection. @@ -194,29 +194,29 @@ static HD_PRESSURE_SENSORS_CAL_RECORD_T pressureSensorsCalRecord; ///< Pressure sensors calibration record. static HD_OCCLUSION_SENSORS_CAL_RECORD_T occlusionSensorsCalRecord; ///< Occlusion sensors calibration record. -// ********** private function prototypes ********** +// ********** private function prototypes ********** -static PRESSURE_STATE_T handlePresOcclWaitForPOSTState( void ); +static PRESSURE_STATE_T handlePresOcclWaitForPOSTState( void ); static PRESSURE_STATE_T handlePresOcclContReadState( void ); static void execPressureLimits( void ); static void convertInlinePressures( void ); static void convertOcclusionPressures( void ); static void checkArterialPressureInRange( void ); -static void checkVenousPressureInRange( void ); -static void checkOcclusions( void ); -static void publishPresOcclData( void ); +static void checkVenousPressureInRange( void ); +static void checkOcclusions( void ); +static void publishPresOcclData( void ); static void determineArtVenPressureLimits( void ); static void filterInlinePressureReadings( F32 artPres, F32 venPres ); - -/*********************************************************************//** - * @brief - * The initPresOccl function initializes the PresOccl module. - * @details Inputs: none - * @details Outputs: PresOccl module initialized. - * @return none - *************************************************************************/ -void initPresOccl( void ) -{ + +/*********************************************************************//** + * @brief + * The initPresOccl function initializes the PresOccl module. + * @details Inputs: none + * @details Outputs: PresOccl module initialized. + * @return none + *************************************************************************/ +void initPresOccl( void ) +{ // Initialize persistent pressure alarms initPersistentAlarm( ALARM_ID_HD_ARTERIAL_PRESSURE_LOW, 0, PRES_ALARM_PERSISTENCE ); initPersistentAlarm( ALARM_ID_HD_ARTERIAL_PRESSURE_HIGH, 0, PRES_ALARM_PERSISTENCE ); @@ -251,8 +251,8 @@ presOcclState = PRESSURE_WAIT_FOR_POST_STATE; presOcclPostState = PRESSURE_SELF_TEST_STATE_START; bloodPumpOcclusionAfterCartridgeInstall = 0; -} - +} + /*********************************************************************//** * @brief * The isCartridgeLoaded function determines whether a cartridge has been @@ -439,33 +439,33 @@ pressureLimitsActive = ( currPresLimitsState > PRESSURE_LIMITS_STATE_IDLE ? TRUE : FALSE ); } -/*********************************************************************//** - * @brief - * The execPresOccl function executes the pressure and occlusion monitor. - * @details Inputs: presOcclState - * @details Outputs: presOcclState - * @return none - *************************************************************************/ -void execPresOccl( void ) -{ - // State machine - switch ( presOcclState ) - { - case PRESSURE_WAIT_FOR_POST_STATE: - presOcclState = handlePresOcclWaitForPOSTState(); - break; - - case PRESSURE_CONTINUOUS_READ_STATE: - presOcclState = handlePresOcclContReadState(); - break; - - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PRES_OCCL_INVALID_STATE, presOcclState ) - break; - } - - // Publish pressure/occlusion data on interval - publishPresOcclData(); +/*********************************************************************//** + * @brief + * The execPresOccl function executes the pressure and occlusion monitor. + * @details Inputs: presOcclState + * @details Outputs: presOcclState + * @return none + *************************************************************************/ +void execPresOccl( void ) +{ + // State machine + switch ( presOcclState ) + { + case PRESSURE_WAIT_FOR_POST_STATE: + presOcclState = handlePresOcclWaitForPOSTState(); + break; + + case PRESSURE_CONTINUOUS_READ_STATE: + presOcclState = handlePresOcclContReadState(); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PRES_OCCL_INVALID_STATE, presOcclState ) + break; + } + + // Publish pressure/occlusion data on interval + publishPresOcclData(); } /*********************************************************************//** @@ -486,18 +486,18 @@ } return result; -} - -/*********************************************************************//** - * @brief - * The handlePresOcclContReadState function handles the continuous read state - * of the pressure/occlusion monitor state machine. - * @details Inputs: FPGA pressure/occlusion readings - * @details Outputs: pressure sensor values updated - * @return next state - *************************************************************************/ -static PRESSURE_STATE_T handlePresOcclContReadState( void ) -{ +} + +/*********************************************************************//** + * @brief + * The handlePresOcclContReadState function handles the continuous read state + * of the pressure/occlusion monitor state machine. + * @details Inputs: FPGA pressure/occlusion readings + * @details Outputs: pressure sensor values updated + * @return next state + *************************************************************************/ +static PRESSURE_STATE_T handlePresOcclContReadState( void ) +{ PRESSURE_STATE_T result = PRESSURE_CONTINUOUS_READ_STATE; // Read latest in-line (arterial and venous) pressures @@ -514,12 +514,12 @@ // Check in-line pressures are in range checkArterialPressureInRange(); - checkVenousPressureInRange(); + checkVenousPressureInRange(); - // Check for occlusions + // Check for occlusions checkOcclusions(); - return result; + return result; } /*********************************************************************//** @@ -605,7 +605,7 @@ SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PRES_LIMITS_INVALID_STATE, currPresLimitsState ) break; } -} +} /*********************************************************************//** * @brief @@ -788,16 +788,16 @@ } } -/*********************************************************************//** - * @brief - * The checkPressureLimits function gets the pressure/occlusion data - * publication interval. - * @details Inputs: occlusion pressures for the pumps - * @details Outputs: Alarm if occlusion limit exceeded - * @return none - *************************************************************************/ -static void checkOcclusions( void ) -{ +/*********************************************************************//** + * @brief + * The checkPressureLimits function gets the pressure/occlusion data + * publication interval. + * @details Inputs: occlusion pressures for the pumps + * @details Outputs: Alarm if occlusion limit exceeded + * @return none + *************************************************************************/ +static void checkOcclusions( void ) +{ U32 bpOccl = getMeasuredBloodPumpOcclusion(); BOOL outOfRange = ( bpOccl < MIN_OCCLUSION_COUNTS ? TRUE : FALSE ); @@ -831,11 +831,11 @@ if ( ( TRUE == isBloodPumpRunning() ) && ( getPreTreatmentSubState() > HD_PRE_TREATMENT_CART_INSTALL_STATE ) && ( getDrySelfTestsState() > DRY_SELF_TESTS_START_STATE ) ) { - // Check for occlusion - if ( bpOccl > ( OCCLUSION_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) + // Check for occlusion + if ( bpOccl > ( OCCLUSION_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) { - signalBloodPumpHardStop(); // Stop pump immediately - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_OCCLUSION_BLOOD_PUMP, bpOccl, OCCLUSION_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) + signalBloodPumpHardStop(); // Stop pump immediately + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_OCCLUSION_BLOOD_PUMP, bpOccl, OCCLUSION_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) } } } @@ -884,16 +884,16 @@ isPersistentAlarmTriggered( ALARM_ID_HD_VENOUS_LINE_OCCLUSION, FALSE ); } } - } -} - -/*********************************************************************//** - * @brief - * The getMeasuredArterialPressure function gets the current arterial pressure. - * @details Inputs: arterialPressure - * @details Outputs: none - * @return the current arterial pressure (in mmHg). - *************************************************************************/ + } +} + +/*********************************************************************//** + * @brief + * The getMeasuredArterialPressure function gets the current arterial pressure. + * @details Inputs: arterialPressure + * @details Outputs: none + * @return the current arterial pressure (in mmHg). + *************************************************************************/ F32 getMeasuredArterialPressure( void ) { F32 result = arterialPressure.data; @@ -929,14 +929,14 @@ { return longFilteredArterialPressure; } - -/*********************************************************************//** - * @brief - * The getMeasuredVenousPressure function gets the measured venous pressure. - * @details Inputs: venousPressure - * @details Outputs: none - * @return the current venous pressure (in mmHg). - *************************************************************************/ + +/*********************************************************************//** + * @brief + * The getMeasuredVenousPressure function gets the measured venous pressure. + * @details Inputs: venousPressure + * @details Outputs: none + * @return the current venous pressure (in mmHg). + *************************************************************************/ F32 getMeasuredVenousPressure( void ) { F32 result = venousPressure.data; @@ -973,15 +973,15 @@ { return longFilteredVenousPressure; } - -/*********************************************************************//** - * @brief - * The getMeasuredBloodPumpOcclusion function gets the measured blood pump - * occlusion pressure. - * @details Inputs: bloodPumpOcclusion - * @details Outputs: none - * @return the current blood pump occlusion pressure (in mmHg). - *************************************************************************/ + +/*********************************************************************//** + * @brief + * The getMeasuredBloodPumpOcclusion function gets the measured blood pump + * occlusion pressure. + * @details Inputs: bloodPumpOcclusion + * @details Outputs: none + * @return the current blood pump occlusion pressure (in mmHg). + *************************************************************************/ U32 getMeasuredBloodPumpOcclusion( void ) { U32 result = bloodPumpOcclusion.data; @@ -993,7 +993,7 @@ return result; } - + /*********************************************************************//** * @brief * The filterInlinePressureReadings function adds a new arterial and venous @@ -1053,51 +1053,51 @@ venPressureReadingsShortCount = INC_CAP( artPressureReadingsShortCount, SIZE_OF_SHORT_VEN_ROLLING_AVG ); shortFilteredVenousPressure = venPressureReadingsShortTotal / (F32)venPressureReadingsShortCount; } - -/*********************************************************************//** - * @brief - * The publishPresOcclData function publishes pressure/occlusion data at the - * set interval. - * @details Inputs: latest pressure and occlusion readings - * @details Outputs: Pressure/occlusion data are published to CAN bus. - * @return none - *************************************************************************/ -static void publishPresOcclData( void ) -{ - // Publish pressure/occlusion data on interval - if ( ++presOcclDataPublicationTimerCounter >= getU32OverrideValue( &presOcclDataPublishInterval ) ) + +/*********************************************************************//** + * @brief + * The publishPresOcclData function publishes pressure/occlusion data at the + * set interval. + * @details Inputs: latest pressure and occlusion readings + * @details Outputs: Pressure/occlusion data are published to CAN bus. + * @return none + *************************************************************************/ +static void publishPresOcclData( void ) +{ + // Publish pressure/occlusion data on interval + if ( ++presOcclDataPublicationTimerCounter >= getU32OverrideValue( &presOcclDataPublishInterval ) ) { PRESSURE_OCCLUSION_DATA_T data; - - data.arterialPressure = shortFilteredArterialPressure; - data.venousPressure = shortFilteredVenousPressure; + + data.arterialPressure = shortFilteredArterialPressure; + data.venousPressure = shortFilteredVenousPressure; data.bldPumpOcclusion = getMeasuredBloodPumpOcclusion(); data.presLimitState = currPresLimitsState; data.artMinLimit = currentArterialMinLimit; data.artMaxLimit = currentArterialMaxLimit; data.venMinLimit = currentVenousMinLimit; data.venMaxLimit = currentVenousMaxLimit; data.arterialLongFilterPres = longFilteredArterialPressure; - data.venousLongFilterPres = longFilteredVenousPressure; - + data.venousLongFilterPres = longFilteredVenousPressure; + broadcastData( MSG_ID_PRESSURE_OCCLUSION_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( PRESSURE_OCCLUSION_DATA_T ) ); - presOcclDataPublicationTimerCounter = 0; - } -} - -/*********************************************************************//** - * @brief - * The execPresOcclTest function executes the PresOccl self-test. - * @details Inputs: none - * @details Outputs: Triggers fault when test case fails - * @return none - *************************************************************************/ -void execPresOcclTest( void ) + presOcclDataPublicationTimerCounter = 0; + } +} + +/*********************************************************************//** + * @brief + * The execPresOcclTest function executes the PresOccl self-test. + * @details Inputs: none + * @details Outputs: Triggers fault when test case fails + * @return none + *************************************************************************/ +void execPresOcclTest( void ) { #ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_PRESSURE_CHECKS ) != SW_CONFIG_ENABLE_VALUE ) #endif - { + { U32 bpPressure = getMeasuredBloodPumpOcclusion(); F32 arterialPressure = getFilteredArterialPressure(); F32 venousPressure = getFilteredVenousPressure(); @@ -1117,7 +1117,7 @@ SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_VENOUS_PRESSURE_SELF_TEST_FAILURE, venousPressure ); } } -} +} /*********************************************************************//** * @brief @@ -1177,194 +1177,194 @@ } return result; -} +} - -/************************************************************************* - * TEST SUPPORT FUNCTIONS - *************************************************************************/ - - -/*********************************************************************//** - * @brief - * The testSetPresOcclDataPublishIntervalOverride function overrides the - * pressure and occlusion data publish interval. - * @details Inputs: none - * @details Outputs: presOcclDataPublishInterval - * @param value override pressure and occlusion data publish interval with (in ms) - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testSetPresOcclDataPublishIntervalOverride( U32 value ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - U32 intvl = value / TASK_GENERAL_INTERVAL; - - result = TRUE; - presOcclDataPublishInterval.ovData = intvl; - presOcclDataPublishInterval.override = OVERRIDE_KEY; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testResetPresOcclDataPublishIntervalOverride function resets the override - * of the pressure and occlusion data publish interval. - * @details Inputs: none - * @details Outputs: presOcclDataPublishInterval - * @return TRUE if override reset successful, FALSE if not - *************************************************************************/ -BOOL testResetPresOcclDataPublishIntervalOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - presOcclDataPublishInterval.override = OVERRIDE_RESET; - presOcclDataPublishInterval.ovData = presOcclDataPublishInterval.ovInitData; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testSetArterialPressureOverride function overrides the measured arterial - * pressure. - * @details Inputs: none - * @details Outputs: arterialPressure - * @param value override arterial pressure (in mmHg) - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testSetArterialPressureOverride( F32 value ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - arterialPressure.ovData = value; - arterialPressure.override = OVERRIDE_KEY; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testResetArterialPressureOverride function resets the override of the - * arterial pressure. - * @details Inputs: none - * @details Outputs: arterialPressure - * @return TRUE if reset successful, FALSE if not - *************************************************************************/ -BOOL testResetArterialPressureOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - arterialPressure.override = OVERRIDE_RESET; - arterialPressure.ovData = arterialPressure.ovInitData; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testSetVenousPressureOverride function overrides the measured venous - * pressure. - * @details Inputs: none - * @details Outputs: venousPressure - * @param value override measured venous pressure with (in mmHg) - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testSetVenousPressureOverride( F32 value ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - venousPressure.ovData = value; - venousPressure.override = OVERRIDE_KEY; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testResetVenousPressureOverride function resets the override of the - * venous pressure. - * @details Inputs: none - * @details Outputs: venousPressure - * @return TRUE if reset successful, FALSE if not - *************************************************************************/ -BOOL testResetVenousPressureOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - venousPressure.override = OVERRIDE_RESET; - venousPressure.ovData = venousPressure.ovInitData; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testSetBloodPumpOcclusionOverride function overrides the measured - * blood pump occlusion pressure. - * @details Inputs: none - * @details Outputs: bloodPumpOcclusion - * @param value override measured blood pump occlusion pressure with - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testSetBloodPumpOcclusionOverride( U32 value ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - bloodPumpOcclusion.ovData = value; - bloodPumpOcclusion.override = OVERRIDE_KEY; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testResetBloodPumpOcclusionOverride function resets the override of the - * measured blood pump occlusion pressure. - * @details Inputs: none - * @details Outputs: bloodPumpOcclusion - * @return TRUE if reset successful, FALSE if not - *************************************************************************/ -BOOL testResetBloodPumpOcclusionOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - bloodPumpOcclusion.override = OVERRIDE_RESET; - bloodPumpOcclusion.ovData = bloodPumpOcclusion.ovInitData; - } - - return result; + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetPresOcclDataPublishIntervalOverride function overrides the + * pressure and occlusion data publish interval. + * @details Inputs: none + * @details Outputs: presOcclDataPublishInterval + * @param value override pressure and occlusion data publish interval with (in ms) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetPresOcclDataPublishIntervalOverride( U32 value ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + U32 intvl = value / TASK_GENERAL_INTERVAL; + + result = TRUE; + presOcclDataPublishInterval.ovData = intvl; + presOcclDataPublishInterval.override = OVERRIDE_KEY; + } + + return result; } -/**@}*/ +/*********************************************************************//** + * @brief + * The testResetPresOcclDataPublishIntervalOverride function resets the override + * of the pressure and occlusion data publish interval. + * @details Inputs: none + * @details Outputs: presOcclDataPublishInterval + * @return TRUE if override reset successful, FALSE if not + *************************************************************************/ +BOOL testResetPresOcclDataPublishIntervalOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + presOcclDataPublishInterval.override = OVERRIDE_RESET; + presOcclDataPublishInterval.ovData = presOcclDataPublishInterval.ovInitData; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSetArterialPressureOverride function overrides the measured arterial + * pressure. + * @details Inputs: none + * @details Outputs: arterialPressure + * @param value override arterial pressure (in mmHg) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetArterialPressureOverride( F32 value ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + arterialPressure.ovData = value; + arterialPressure.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetArterialPressureOverride function resets the override of the + * arterial pressure. + * @details Inputs: none + * @details Outputs: arterialPressure + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testResetArterialPressureOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + arterialPressure.override = OVERRIDE_RESET; + arterialPressure.ovData = arterialPressure.ovInitData; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSetVenousPressureOverride function overrides the measured venous + * pressure. + * @details Inputs: none + * @details Outputs: venousPressure + * @param value override measured venous pressure with (in mmHg) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetVenousPressureOverride( F32 value ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + venousPressure.ovData = value; + venousPressure.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetVenousPressureOverride function resets the override of the + * venous pressure. + * @details Inputs: none + * @details Outputs: venousPressure + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testResetVenousPressureOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + venousPressure.override = OVERRIDE_RESET; + venousPressure.ovData = venousPressure.ovInitData; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testSetBloodPumpOcclusionOverride function overrides the measured + * blood pump occlusion pressure. + * @details Inputs: none + * @details Outputs: bloodPumpOcclusion + * @param value override measured blood pump occlusion pressure with + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetBloodPumpOcclusionOverride( U32 value ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + bloodPumpOcclusion.ovData = value; + bloodPumpOcclusion.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetBloodPumpOcclusionOverride function resets the override of the + * measured blood pump occlusion pressure. + * @details Inputs: none + * @details Outputs: bloodPumpOcclusion + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testResetBloodPumpOcclusionOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + bloodPumpOcclusion.override = OVERRIDE_RESET; + bloodPumpOcclusion.ovData = bloodPumpOcclusion.ovInitData; + } + + return result; +} + +/**@}*/