Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -rf0c16ca7223ad48b7bdb86b8f010b74b550c0051 -r6c8d2046582b6d2c4d0a8b4a97c51b89f80ecf7b --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision f0c16ca7223ad48b7bdb86b8f010b74b550c0051) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 6c8d2046582b6d2c4d0a8b4a97c51b89f80ecf7b) @@ -168,9 +168,9 @@ 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 F32 longFilteredArterialPressure; ///< Measured arterial pressure after long (10 s) filter. -static F32 shortFilteredArterialPressure; ///< Measured arterial pressure after short (1 s) filter. +static OVERRIDE_F32_T shortFilteredArterialPressure = { 0.0, 0.0, 0.0, 0 }; ///< 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 OVERRIDE_F32_T shortFilteredVenousPressure = { 0.0, 0.0, 0.0, 0 }; ///< Measured venous pressure after short (1 s) filter. static U32 bloodPumpOcclusionAfterCartridgeInstall; ///< Measured blood pump occlusion reading taken after cartridge install. @@ -251,9 +251,9 @@ venLowPresExemptAfterAirTrapFillTimerCtr = 0; resetArtVenPressureOffsets(); longFilteredArterialPressure = 0.0F; - shortFilteredArterialPressure = 0.0F; + shortFilteredArterialPressure.data = 0.0F; longFilteredVenousPressure = 0.0F; - shortFilteredVenousPressure = 0.0F; + shortFilteredVenousPressure.data = 0.0F; presOcclDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; presOcclState = PRESSURE_WAIT_FOR_POST_STATE; presOcclPostState = PRESSURE_SELF_TEST_STATE_START; @@ -964,7 +964,7 @@ *************************************************************************/ F32 getFilteredArterialPressure( void ) { - return shortFilteredArterialPressure; + return getU32OverrideValue( &shortFilteredArterialPressure ); } /*********************************************************************//** @@ -1007,7 +1007,7 @@ *************************************************************************/ F32 getFilteredVenousPressure( void ) { - return shortFilteredVenousPressure; + return getU32OverrideValue( &shortFilteredVenousPressure ); } /*********************************************************************//** @@ -1078,7 +1078,7 @@ artPressureReadingsShortTotal += artPres; artPressureReadingsShortIdx = INC_WRAP( artPressureReadingsShortIdx, 0, SIZE_OF_SHORT_ART_ROLLING_AVG - 1 ); artPressureReadingsShortCount = INC_CAP( artPressureReadingsShortCount, SIZE_OF_SHORT_ART_ROLLING_AVG ); - shortFilteredArterialPressure = artPressureReadingsShortTotal / (F32)artPressureReadingsShortCount; + shortFilteredArterialPressure.data = artPressureReadingsShortTotal / (F32)artPressureReadingsShortCount; // Long filter for venous pressure. if ( venPressureReadingsLongCount >= SIZE_OF_LONG_VEN_ROLLING_AVG ) @@ -1100,7 +1100,7 @@ venPressureReadingsShortTotal += venPres; venPressureReadingsShortIdx = INC_WRAP( venPressureReadingsShortIdx, 0, SIZE_OF_SHORT_VEN_ROLLING_AVG - 1 ); venPressureReadingsShortCount = INC_CAP( artPressureReadingsShortCount, SIZE_OF_SHORT_VEN_ROLLING_AVG ); - shortFilteredVenousPressure = venPressureReadingsShortTotal / (F32)venPressureReadingsShortCount; + shortFilteredVenousPressure.data = venPressureReadingsShortTotal / (F32)venPressureReadingsShortCount; } /*********************************************************************//** @@ -1118,8 +1118,8 @@ { PRESSURE_OCCLUSION_DATA_T data; - data.arterialPressure = shortFilteredArterialPressure; - data.venousPressure = shortFilteredVenousPressure; + data.arterialPressure = getFilteredArterialPressure(); + data.venousPressure = getFilteredVenousPressure(); data.bldPumpOcclusion = getMeasuredBloodPumpOcclusion(); data.presLimitState = currPresLimitsState; data.artMinLimit = currentArterialMinLimit; @@ -1286,19 +1286,28 @@ * The testSetArterialPressureOverride function overrides the measured arterial * pressure. * @details Inputs: none - * @details Outputs: arterialPressure + * @details Outputs: arterialPressure, shortFilteredArterialPressure * @param value override arterial pressure (in mmHg) + * @param filtered override filtered value or raw value * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetArterialPressureOverride( F32 value ) +BOOL testSetArterialPressureOverride( F32 value, BOOL filtered ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { result = TRUE; - arterialPressure.ovData = value; - arterialPressure.override = OVERRIDE_KEY; + if ( FALSE == filtered ) + { + arterialPressure.ovData = value; + arterialPressure.override = OVERRIDE_KEY; + } + else + { + shortFilteredArterialPressure.ovData = value; + shortFilteredArterialPressure.override = OVERRIDE_KEY; + } } return result; @@ -1309,18 +1318,26 @@ * The testResetArterialPressureOverride function resets the override of the * arterial pressure. * @details Inputs: none - * @details Outputs: arterialPressure + * @details Outputs: arterialPressure, shortFilteredArterialPressure * @return TRUE if reset successful, FALSE if not *************************************************************************/ -BOOL testResetArterialPressureOverride( void ) +BOOL testResetArterialPressureOverride( BOOL filtered ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { result = TRUE; - arterialPressure.override = OVERRIDE_RESET; - arterialPressure.ovData = arterialPressure.ovInitData; + if ( FALSE == filtered ) + { + arterialPressure.override = OVERRIDE_RESET; + arterialPressure.ovData = arterialPressure.ovInitData; + } + else + { + shortFilteredArterialPressure.override = OVERRIDE_RESET; + shortFilteredArterialPressure.ovData = shortFilteredArterialPressure.ovInitData; + } } return result; @@ -1331,19 +1348,28 @@ * The testSetVenousPressureOverride function overrides the measured venous * pressure. * @details Inputs: none - * @details Outputs: venousPressure + * @details Outputs: venousPressure, shortFilteredVenousPressure * @param value override measured venous pressure with (in mmHg) + * @param filtered override filtered value or raw value * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetVenousPressureOverride( F32 value ) +BOOL testSetVenousPressureOverride( F32 value, BOOL filtered ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { result = TRUE; - venousPressure.ovData = value; - venousPressure.override = OVERRIDE_KEY; + if ( FALSE == filtered ) + { + venousPressure.ovData = value; + venousPressure.override = OVERRIDE_KEY; + } + else + { + shortFilteredVenousPressure.ovData = value; + shortFilteredVenousPressure.override = OVERRIDE_KEY; + } } return result; @@ -1354,18 +1380,26 @@ * The testResetVenousPressureOverride function resets the override of the * venous pressure. * @details Inputs: none - * @details Outputs: venousPressure + * @details Outputs: venousPressure, shortFilteredVenousPressure * @return TRUE if reset successful, FALSE if not *************************************************************************/ -BOOL testResetVenousPressureOverride( void ) +BOOL testResetVenousPressureOverride( BOOL filtered ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { result = TRUE; - venousPressure.override = OVERRIDE_RESET; - venousPressure.ovData = venousPressure.ovInitData; + if ( FALSE == filtered ) + { + venousPressure.override = OVERRIDE_RESET; + venousPressure.ovData = venousPressure.ovInitData; + } + else + { + shortFilteredVenousPressure.override = OVERRIDE_RESET; + shortFilteredVenousPressure.ovData = shortFilteredVenousPressure.ovInitData; + } } return result; Index: firmware/App/Controllers/PresOccl.h =================================================================== diff -u -r9353792f6dbd624a1d55cf1e87fa848e8fbaea71 -r6c8d2046582b6d2c4d0a8b4a97c51b89f80ecf7b --- firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision 9353792f6dbd624a1d55cf1e87fa848e8fbaea71) +++ firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision 6c8d2046582b6d2c4d0a8b4a97c51b89f80ecf7b) @@ -107,10 +107,10 @@ BOOL testSetPresOcclDataPublishIntervalOverride( U32 value ); BOOL testResetPresOcclDataPublishIntervalOverride( void ); -BOOL testSetArterialPressureOverride( F32 value ); -BOOL testResetArterialPressureOverride( void ); -BOOL testSetVenousPressureOverride( F32 value ); -BOOL testResetVenousPressureOverride( void ); +BOOL testSetArterialPressureOverride( F32 value, BOOL filtered ); +BOOL testResetArterialPressureOverride( BOOL filtered ); +BOOL testSetVenousPressureOverride( F32 value, BOOL filtered ); +BOOL testResetVenousPressureOverride( BOOL filtered ); BOOL testSetBloodPumpOcclusionOverride( U32 value ); BOOL testResetBloodPumpOcclusionOverride( void ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rd1734c851c8beeba934d0e1f4727eefb797ee2e2 -r6c8d2046582b6d2c4d0a8b4a97c51b89f80ecf7b --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision d1734c851c8beeba934d0e1f4727eefb797ee2e2) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6c8d2046582b6d2c4d0a8b4a97c51b89f80ecf7b) @@ -4381,20 +4381,20 @@ *************************************************************************/ void handleTestArterialPressureOverrideRequest( MESSAGE_T *message ) { - TEST_OVERRIDE_PAYLOAD_T payload; + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; BOOL result = FALSE; // Verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { - result = testSetArterialPressureOverride( payload.state.f32 ); + result = testSetArterialPressureOverride( payload.state.f32, payload.index ); } else { - result = testResetArterialPressureOverride(); + result = testResetArterialPressureOverride( payload.index ); } } @@ -4413,20 +4413,20 @@ *************************************************************************/ void handleTestVenousPressureOverrideRequest( MESSAGE_T *message ) { - TEST_OVERRIDE_PAYLOAD_T payload; + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; BOOL result = FALSE; // Verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { - result = testSetVenousPressureOverride( payload.state.f32 ); + result = testSetVenousPressureOverride( payload.state.f32, payload.index ); } else { - result = testResetVenousPressureOverride(); + result = testResetVenousPressureOverride( payload.index ); } }