Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r46617afb446c35270b59e21085b270433d13d113 -r8cebc7f282f403c99f712d422454c15414b6fc73 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 46617afb446c35270b59e21085b270433d13d113) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 8cebc7f282f403c99f712d422454c15414b6fc73) @@ -110,7 +110,8 @@ /// 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_F32_T arterialPressure = {0.0, 0.0, 0.0, 0 }; ///< Measured arterial pressure. +static OVERRIDE_F32_T arterialPressure = {0.0, 0.0, 0.0, 0 }; ///< Measured arterial pressure. +static OVERRIDE_F32_T arterialPressureOffset = {0.0, 0.0, 0.0, 0 }; ///< Calculated arterial pressure offset. 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 F32 longFilteredArterialPressure; ///< Measured arterial pressure after long (10 s) filter. @@ -362,7 +363,7 @@ // Check for stale arterial pressure reading if ( FALSE == isPersistentAlarmTriggered( ALARM_ID_HD_VENOUS_PRESSURE_READ_TIMEOUT_ERROR, ( lastArterialPressureReadCtr == artReadCtr || artErrorCtr > 0 ) ) ) { - arterialPressure.data = ARTERIAL_PRESSURE_V_PER_BIT * ( (F32)(artPres) / ( ARTERIAL_PRESSURE_SENSITIVITY * ARTERIAL_PRESSURE_V_BIAS ) ); + arterialPressure.data = ARTERIAL_PRESSURE_V_PER_BIT * ( (F32)(artPres) / ( ARTERIAL_PRESSURE_SENSITIVITY * ARTERIAL_PRESSURE_V_BIAS ) ) + getF32OverrideValue( &arterialPressureOffset ); } else { @@ -985,6 +986,51 @@ } return result; -} +} + +/*********************************************************************//** + * @brief + * The testSetBloodPumpOcclusionOverride function overrides the arterial + * pressure offset. + * @details Inputs: none + * @details Outputs: arterialPressureOffset + * @param value override arterial pressure offset with + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetArterialPressureOffsetOverride( F32 value ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + arterialPressureOffset.ovData = value; + arterialPressureOffset.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetArterialPressureOffsetOverride function resets the override of the + * arterial pressure offset. + * @details Inputs: none + * @details Outputs: arterialPressureOffset + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testResetArterialPressureOffsetOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + arterialPressureOffset.override = OVERRIDE_RESET; + arterialPressureOffset.ovData = arterialPressureOffset.ovInitData; + } + + return result; +} /**@}*/