diff --git a/src/core/mac/sub_mac.cpp b/src/core/mac/sub_mac.cpp index 750c8d5fe..1c788de59 100644 --- a/src/core/mac/sub_mac.cpp +++ b/src/core/mac/sub_mac.cpp @@ -1058,18 +1058,19 @@ void SubMac::GetCslWindowEdges(uint32_t &ahead, uint32_t &after) { uint32_t semiPeriod = mCslPeriod * kUsPerTenSymbols / 2; uint64_t curTime = otPlatRadioGetNow(&GetInstance()); - uint32_t elapsed, semiWindow; + uint64_t elapsed; + uint32_t semiWindow; if (mCslLastSync.GetValue() > curTime) { - elapsed = static_cast(UINT64_MAX - mCslLastSync.GetValue() + curTime); + elapsed = UINT64_MAX - mCslLastSync.GetValue() + curTime; } else { - elapsed = static_cast(curTime - mCslLastSync.GetValue()); + elapsed = curTime - mCslLastSync.GetValue(); } - semiWindow = elapsed * (Get().GetCslAccuracy() + mCslParentDrift) / 1000000; + semiWindow = static_cast(elapsed * (Get().GetCslAccuracy() + mCslParentDrift) / 1000000); semiWindow += mCslParentUncert * kUsPerUncertUnit; ahead = (semiWindow + kCslReceiveTimeAhead > semiPeriod) ? semiPeriod : semiWindow + kCslReceiveTimeAhead;