Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -r1edea1b3b13b1e0f69a7209363ae6886cb89f89c -r1abc0349c736a70fb56db6895947abfbba0eee22 --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 1edea1b3b13b1e0f69a7209363ae6886cb89f89c) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 1abc0349c736a70fb56db6895947abfbba0eee22) @@ -7,15 +7,15 @@ * * @file BloodFlow.c * -* @author (last) Jashwant Gantyada -* @date (last) 21-Apr-2026 +* @author (last) Sean Nash +* @date (last) 01-May-2026 * * @author (original) Sean Nash * @date (original) 24-Oct-2024 * ***************************************************************************/ -#include // Used for fabs() functions +#include // Used for abs(), fabs() functions #include // Used for memset() #include "BloodFlow.h" @@ -967,31 +967,20 @@ U32 absFlowU32 = 0; F32 tFilterSec = 0.0F; F32 windowSamplesF = 0.0F; - U32 windowSamples = 0; + U32 windowSamples = BP_SPEED_FILTER_DEFAULT_SAMPLES; - if ( 0 != targetBloodFlowRate ) + absFlowU32 = abs( targetBloodFlowRate ); + if ( absFlowU32 != 0 ) { - absFlowU32 = ( targetBloodFlowRate >= 0 ) ? (U32)targetBloodFlowRate : (U32)( -targetBloodFlowRate ); - if ( 0 != absFlowU32 ) + if ( absFlowU32 > (U32)MAX_SETTABLE_BLOOD_FLOW_RATE ) { - if ( absFlowU32 > (U32)MAX_SETTABLE_BLOOD_FLOW_RATE ) - { - absFlowU32 = (U32)MAX_SETTABLE_BLOOD_FLOW_RATE; - } - - tFilterSec = (F32)BP_SPEED_FILTER_TIME_FLOW_PRODUCT / (F32)absFlowU32; - windowSamplesF = ( tFilterSec * (F32)MS_PER_SECOND / (F32)TASK_GENERAL_INTERVAL ) + 0.5F; - windowSamples = (U32)windowSamplesF; - - if ( windowSamples < BP_SPEED_FILTER_DEFAULT_SAMPLES ) - { - windowSamples = BP_SPEED_FILTER_DEFAULT_SAMPLES; - } - if ( windowSamples > (U32)MAX_BP_SPEED_FILTER_SAMPLES ) - { - windowSamples = (U32)MAX_BP_SPEED_FILTER_SAMPLES; - } + absFlowU32 = (U32)MAX_SETTABLE_BLOOD_FLOW_RATE; } + + tFilterSec = (F32)BP_SPEED_FILTER_TIME_FLOW_PRODUCT / (F32)absFlowU32; + windowSamplesF = ( tFilterSec * (F32)MS_PER_SECOND / (F32)TASK_GENERAL_INTERVAL ) + 0.5F; + windowSamples = (U32)windowSamplesF; + windowSamples = RANGE( windowSamples, BP_SPEED_FILTER_DEFAULT_SAMPLES, MAX_BP_SPEED_FILTER_SAMPLES ); } return windowSamples;