Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r9460533e74bff4880dcea0ee4eaba0650b4cebae -rf9b9bf3f04d5ec74b9f1604cb1eb9729de001705 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 9460533e74bff4880dcea0ee4eaba0650b4cebae) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision f9b9bf3f04d5ec74b9f1604cb1eb9729de001705) @@ -354,12 +354,9 @@ * stable pressures before windowed limits recalculated. * @details Inputs: none * @details Outputs: stableArterialPressure, stableVenousPressure - * @param artPresWin new arterial pressure limit window setting - * @param venPresWin new venous pressure limit window setting - * @param venPresAsym new venous pressure limit asymmetric setting * @return none *************************************************************************/ -void updatePressureLimitWindows( S32 artPresWin, S32 venPresWin, S32 venPresAsym ) +void updatePressureLimitWindows( void ) { F32 filtArt = getFilteredArterialPressure(); F32 filtVen = getFilteredVenousPressure(); @@ -413,18 +410,22 @@ S32 venMinOffset = getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); // Venous is asymmetric S32 venMaxOffset = getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ) - venMinOffset; - currentArterialMaxLimit = stableArterialPressure + artOffset; currentArterialMinLimit = stableArterialPressure - artOffset; - currentVenousMaxLimit = stableVenousPressure + venMaxOffset; + currentArterialMinLimit = MAX( currentArterialMinLimit, ARTERIAL_PRESSURE_LIMIT_MIN_MMHG ); + currentArterialMaxLimit = stableArterialPressure + artOffset; + currentArterialMaxLimit = MIN( currentArterialMaxLimit, ARTERIAL_PRESSURE_LIMIT_MAX_MMHG ); currentVenousMinLimit = stableVenousPressure - venMinOffset; + currentVenousMinLimit = MAX( currentVenousMinLimit, VENOUS_PRESSURE_LIMIT_MIN_MMHG ); + currentVenousMaxLimit = stableVenousPressure + venMaxOffset; + currentVenousMaxLimit = MIN( currentVenousMaxLimit, VENOUS_PRESSURE_LIMIT_MAX_MMHG ); } else { // apply outer limits when not stable setPressureLimitsToOuterBounds(); - - // set flag indicating whether pressure limits are active based on current current limits state - pressureLimitsActive = ( currPresLimitsState > PRESSURE_LIMITS_STATE_IDLE ? TRUE : FALSE ); } + + // set flag indicating whether pressure limits are active based on current current limits state + pressureLimitsActive = ( currPresLimitsState > PRESSURE_LIMITS_STATE_IDLE ? TRUE : FALSE ); } /*********************************************************************//** @@ -567,6 +568,7 @@ } else if ( TRUE == didTimeout( stabilizationStartTimeMs, PRES_LIMIT_STABILIZATION_TIME_MS ) ) { + updatePressureLimitWindows(); stabilizationStartTimeMs = getMSTimerCount(); currPresLimitsState = PRESSURE_LIMITS_STATE_STABLE; } Index: firmware/App/Controllers/PresOccl.h =================================================================== diff -u -r9460533e74bff4880dcea0ee4eaba0650b4cebae -rf9b9bf3f04d5ec74b9f1604cb1eb9729de001705 --- firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision 9460533e74bff4880dcea0ee4eaba0650b4cebae) +++ firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision f9b9bf3f04d5ec74b9f1604cb1eb9729de001705) @@ -83,7 +83,7 @@ SELF_TEST_STATUS_T execPresOcclSelfTest( void ); void setPressureLimitsToOuterBounds( void ); -void updatePressureLimitWindows( S32 artPresWin, S32 venPresWin, S32 venPresAsym ); +void updatePressureLimitWindows( void ); void signalUserRateChange( void ); F32 getMeasuredArterialPressure( void ); Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r9460533e74bff4880dcea0ee4eaba0650b4cebae -rf9b9bf3f04d5ec74b9f1604cb1eb9729de001705 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 9460533e74bff4880dcea0ee4eaba0650b4cebae) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision f9b9bf3f04d5ec74b9f1604cb1eb9729de001705) @@ -1372,9 +1372,6 @@ { sendTreatmentLogEventData( VENOUS_PRESSURE_LIMIT_ASYM_CHANGE_EVENT, (F32)venLimitAsymmetric, (F32)data->venPresLimitAsymmetricmmHg ); } - - // Update pressure driver with new settings - will apply windows to current pressures - updatePressureLimitWindows( data->artPresLimitWindowmmHg, data->venPresLimitWindowmmHg, data->venPresLimitAsymmetricmmHg ); } // Read back limits for transmit to UI.