You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The fix for #1349 (e5076e1) calculates the windows without first checking if the processing delay was longer the rx window delay.
This may causes a negative result to be passed to TimerSetValue as unsigned integer, resulting in an extremely very large timeout (close to 50 days).
CRITICAL_SECTION_BEGIN( );
uint32_toffset=TimerGetCurrentTime( ) -TxDoneParams.CurTime; // this could get larger than window delaysTimerSetValue( &MacCtx.RxWindowTimer1, MacCtx.RxWindow1Delay-offset ); // underflow can happen hereTimerStart( &MacCtx.RxWindowTimer1 );
TimerSetValue( &MacCtx.RxWindowTimer2, MacCtx.RxWindow2Delay-offset ); // underflow can happen hereTimerStart( &MacCtx.RxWindowTimer2 );
CRITICAL_SECTION_END( );
Of course this should not happen (as that means the window has been missed), but it can occur depending on processing priorities.
4.6.0 is not effected as the window delay was not calculated based on the offset.
The text was updated successfully, but these errors were encountered:
The fix for #1349 (e5076e1) calculates the windows without first checking if the processing delay was longer the rx window delay.
This may causes a negative result to be passed to TimerSetValue as unsigned integer, resulting in an extremely very large timeout (close to 50 days).
Of course this should not happen (as that means the window has been missed), but it can occur depending on processing priorities.
4.6.0 is not effected as the window delay was not calculated based on the offset.
The text was updated successfully, but these errors were encountered: