mirror of
https://github.com/espressif/openthread.git
synced 2026-10-21 23:18:17 +00:00
[sub-mac] fix semiWindow overflow in GetCslWindowEdges() (#7549)
Prevent possible overflow in semiWindow calculation by converting it to uint64_t accuracy.
This commit is contained in:
@@ -1198,7 +1198,8 @@ void SubMac::GetCslWindowEdges(uint32_t &aAhead, uint32_t &aAfter)
|
|||||||
|
|
||||||
elapsed = curTime - mCslLastSync.GetValue();
|
elapsed = curTime - mCslLastSync.GetValue();
|
||||||
|
|
||||||
semiWindow = elapsed * (Get<Radio>().GetCslAccuracy() + mCslParentAccuracy) / 1000000;
|
semiWindow = static_cast<uint32_t>(static_cast<uint64_t>(elapsed) *
|
||||||
|
(Get<Radio>().GetCslAccuracy() + mCslParentAccuracy) / 1000000);
|
||||||
semiWindow += mCslParentUncert * kUsPerUncertUnit;
|
semiWindow += mCslParentUncert * kUsPerUncertUnit;
|
||||||
|
|
||||||
aAhead = (semiWindow + kCslReceiveTimeAhead > semiPeriod) ? semiPeriod : semiWindow + kCslReceiveTimeAhead;
|
aAhead = (semiWindow + kCslReceiveTimeAhead > semiPeriod) ? semiPeriod : semiWindow + kCslReceiveTimeAhead;
|
||||||
|
|||||||
Reference in New Issue
Block a user