Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r5d21baeb59273eb0f9fa54d8e4802fa31abbdbab -r4cb7ce68f0458ecca1ba1fbb596bc26a4bc39226 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 5d21baeb59273eb0f9fa54d8e4802fa31abbdbab) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 4cb7ce68f0458ecca1ba1fbb596bc26a4bc39226) @@ -456,11 +456,12 @@ if ( PRESSURE_LIMITS_STATE_STABILIZATION == currPresLimitsState ) { U32 currentTime = getMSTimerCount(); - U32 expiredTime = ( currentTime > stabilizationStartTimeMs ) ? ( currentTime - stabilizationStartTimeMs ) : - ( ( 0xFFFFFFFF - stabilizationStartTimeMs ) + currentTime + 1 ) ; - // if pressure is already stabilized enough, assign the short stabilize time for the recent event ( air pump on). else, - // leave the current/on going stabilization to expire due to long pending stable time to settle down the pressure. - if ( expiredTime > PRES_LIMIT_MIN_STABILIZATION_TIME_IN_MS ) + U32 expiredTime = u32DiffWithWrap( stabilizationStartTimeMs , currentTime ); + + // if pressure is already stabilized enough, assign the short stabilize time for the recent event ( air pump on). + // else,leave the current/on going stabilization to expire due to long pending stable time to settle down the pressure. + // allow Normal stabilization on a case when user updates flow rate or UF rate etc., + if ( expiredTime > PRES_LIMIT_MIN_STABILIZATION_TIME_IN_MS || useShort == FALSE ) { useShortStabilizeTime = useShort; stabilizationStartTimeMs = getMSTimerCount();