[timer] add template TimerMilliIn to simplify handler functions (#8221)

This class adds a template sub-classes of `TimerMilli/Micro` which
allows us to directly specify an `Owner` for timer along with handler
callback as a member method of `Owner`. This helps simplify the
use of `Timer` in core module.
This commit is contained in:
Abtin Keshavarzian
2022-09-30 11:32:56 -07:00
committed by GitHub
parent b3620ae51a
commit 7e8b482e3c
82 changed files with 409 additions and 549 deletions
+1 -6
View File
@@ -67,7 +67,7 @@ Manager::Manager(Instance &aInstance)
#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE
, mMulticastListenersTable(aInstance)
#endif
, mTimer(aInstance, Manager::HandleTimer)
, mTimer(aInstance)
, mBackboneTmfAgent(aInstance)
#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_DUA_NDPROXYING_ENABLE
@@ -138,11 +138,6 @@ void Manager::HandleNotifierEvents(Events aEvents)
}
}
void Manager::HandleTimer(Timer &aTimer)
{
aTimer.Get<Manager>().HandleTimer();
}
void Manager::HandleTimer(void)
{
#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE
+4 -3
View File
@@ -226,11 +226,12 @@ private:
#endif
void HandleNotifierEvents(Events aEvents);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
void LogError(const char *aText, Error aError) const;
using BbrTimer = TimerMilliIn<Manager, &Manager::HandleTimer>;
#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE
Coap::Resource mMulticastListenerRegistration;
#endif
@@ -244,7 +245,7 @@ private:
#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE
MulticastListenersTable mMulticastListenersTable;
#endif
TimerMilli mTimer;
BbrTimer mTimer;
BackboneTmfAgent mBackboneTmfAgent;
+6 -36
View File
@@ -75,8 +75,8 @@ RoutingManager::RoutingManager(Instance &aInstance)
, mNat64PrefixManager(aInstance)
#endif
, mRsSender(aInstance)
, mDiscoveredPrefixStaleTimer(aInstance, HandleDiscoveredPrefixStaleTimer)
, mRoutingPolicyTimer(aInstance, HandleRoutingPolicyTimer)
, mDiscoveredPrefixStaleTimer(aInstance)
, mRoutingPolicyTimer(aInstance)
{
mFavoredDiscoveredOnLinkPrefix.Clear();
@@ -913,22 +913,12 @@ void RoutingManager::HandleRsSenderFinished(TimeMilli aStartTime)
ScheduleRoutingPolicyEvaluation(kImmediately);
}
void RoutingManager::HandleDiscoveredPrefixStaleTimer(Timer &aTimer)
{
aTimer.Get<RoutingManager>().HandleDiscoveredPrefixStaleTimer();
}
void RoutingManager::HandleDiscoveredPrefixStaleTimer(void)
{
LogInfo("Stale On-Link or OMR Prefixes or RA messages are detected");
mRsSender.Start();
}
void RoutingManager::HandleRoutingPolicyTimer(Timer &aTimer)
{
aTimer.Get<RoutingManager>().EvaluateRoutingPolicy();
}
void RoutingManager::HandleRouterSolicit(const InfraIf::Icmp6Packet &aPacket, const Ip6::Address &aSrcAddress)
{
OT_UNUSED_VARIABLE(aPacket);
@@ -1166,7 +1156,7 @@ void RoutingManager::ResetDiscoveredPrefixStaleTimer(void)
RoutingManager::DiscoveredPrefixTable::DiscoveredPrefixTable(Instance &aInstance)
: InstanceLocator(aInstance)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
, mSignalTask(aInstance)
, mAllowDefaultRouteInNetData(false)
{
@@ -1634,11 +1624,6 @@ void RoutingManager::DiscoveredPrefixTable::UnpublishEntry(const Entry &aEntry)
Get<RoutingManager>().UnpublishExternalRoute(aEntry.GetPrefix());
}
void RoutingManager::DiscoveredPrefixTable::HandleTimer(Timer &aTimer)
{
aTimer.Get<RoutingManager>().mDiscoveredPrefixTable.HandleTimer();
}
void RoutingManager::DiscoveredPrefixTable::HandleTimer(void)
{
RemoveExpiredEntries();
@@ -1981,7 +1966,7 @@ exit:
RoutingManager::LocalOnLinkPrefix::LocalOnLinkPrefix(Instance &aInstance)
: InstanceLocator(aInstance)
, mState(kIdle)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
{
mPrefix.Clear();
mOldPrefix.Clear();
@@ -2160,11 +2145,6 @@ void RoutingManager::LocalOnLinkPrefix::HandleExtPanIdChange(void)
Generate();
}
void RoutingManager::LocalOnLinkPrefix::HandleTimer(Timer &aTimer)
{
aTimer.Get<RoutingManager>().mLocalOnLinkPrefix.HandleTimer();
}
void RoutingManager::LocalOnLinkPrefix::HandleTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
@@ -2247,7 +2227,7 @@ void RoutingManager::OnMeshPrefixArray::MarkAsDeleted(const OnMeshPrefix &aPrefi
RoutingManager::Nat64PrefixManager::Nat64PrefixManager(Instance &aInstance)
: InstanceLocator(aInstance)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
{
mInfraIfPrefix.Clear();
mLocalPrefix.Clear();
@@ -2347,11 +2327,6 @@ void RoutingManager::Nat64PrefixManager::Evaluate(void)
#endif
}
void RoutingManager::Nat64PrefixManager::HandleTimer(Timer &aTimer)
{
aTimer.Get<RoutingManager>().mNat64PrefixManager.HandleTimer();
}
void RoutingManager::Nat64PrefixManager::HandleTimer(void)
{
Discover();
@@ -2394,7 +2369,7 @@ void RoutingManager::Nat64PrefixManager::HandleDiscoverDone(const Ip6::Prefix &a
RoutingManager::RsSender::RsSender(Instance &aInstance)
: InstanceLocator(aInstance)
, mTxCount(0)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
{
}
@@ -2432,11 +2407,6 @@ Error RoutingManager::RsSender::SendRs(void)
return Get<RoutingManager>().mInfraIf.Send(packet, destAddress);
}
void RoutingManager::RsSender::HandleTimer(Timer &aTimer)
{
aTimer.Get<RoutingManager>().mRsSender.HandleTimer();
}
void RoutingManager::RsSender::HandleTimer(void)
{
Error error;
+47 -38
View File
@@ -376,6 +376,7 @@ private:
};
void HandleDiscoveredPrefixTableChanged(void); // Declare early so we can use in `mSignalTask`
void HandleDiscoveredPrefixTableTimer(void) { mDiscoveredPrefixTable.HandleTimer(); }
class DiscoveredPrefixTable : public InstanceLocator
{
@@ -426,6 +427,8 @@ private:
void InitIterator(PrefixTableIterator &aIterator) const;
Error GetNextEntry(PrefixTableIterator &aIterator, PrefixTableEntry &aEntry) const;
void HandleTimer(void);
private:
static constexpr uint16_t kMaxRouters = OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_ROUTERS;
static constexpr uint16_t kMaxEntries = OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_PREFIXES;
@@ -529,29 +532,28 @@ private:
void SetInitTime(void) { mData32 = TimerMilli::GetNow().GetValue(); }
};
void ProcessDefaultRoute(const Ip6::Nd::RouterAdvertMessage::Header &aRaHeader, Router &aRouter);
void ProcessPrefixInfoOption(const Ip6::Nd::PrefixInfoOption &aPio, Router &aRouter);
void ProcessRouteInfoOption(const Ip6::Nd::RouteInfoOption &aRio, Router &aRouter);
bool ContainsPrefix(const Entry::Matcher &aMatcher) const;
void RemovePrefix(const Entry::Matcher &aMatcher, NetDataMode aNetDataMode);
void RemoveRoutersWithNoEntries(void);
Entry * AllocateEntry(void) { return mEntryPool.Allocate(); }
void FreeEntry(Entry &aEntry) { mEntryPool.Free(aEntry); }
void FreeEntries(LinkedList<Entry> &aEntries);
void UpdateNetworkDataOnChangeTo(Entry &aEntry);
Entry * FindFavoredEntryToPublish(const Ip6::Prefix &aPrefix);
void PublishEntry(const Entry &aEntry);
void UnpublishEntry(const Entry &aEntry);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void RemoveExpiredEntries(void);
void SignalTableChanged(void);
void ProcessDefaultRoute(const Ip6::Nd::RouterAdvertMessage::Header &aRaHeader, Router &aRouter);
void ProcessPrefixInfoOption(const Ip6::Nd::PrefixInfoOption &aPio, Router &aRouter);
void ProcessRouteInfoOption(const Ip6::Nd::RouteInfoOption &aRio, Router &aRouter);
bool ContainsPrefix(const Entry::Matcher &aMatcher) const;
void RemovePrefix(const Entry::Matcher &aMatcher, NetDataMode aNetDataMode);
void RemoveRoutersWithNoEntries(void);
Entry *AllocateEntry(void) { return mEntryPool.Allocate(); }
void FreeEntry(Entry &aEntry) { mEntryPool.Free(aEntry); }
void FreeEntries(LinkedList<Entry> &aEntries);
void UpdateNetworkDataOnChangeTo(Entry &aEntry);
Entry *FindFavoredEntryToPublish(const Ip6::Prefix &aPrefix);
void PublishEntry(const Entry &aEntry);
void UnpublishEntry(const Entry &aEntry);
void RemoveExpiredEntries(void);
void SignalTableChanged(void);
using SignalTask = TaskletIn<RoutingManager, &RoutingManager::HandleDiscoveredPrefixTableChanged>;
using TableTimer = TimerMilliIn<RoutingManager, &RoutingManager::HandleDiscoveredPrefixTableTimer>;
Array<Router, kMaxRouters> mRouters;
Pool<Entry, kMaxEntries> mEntryPool;
TimerMilli mTimer;
TableTimer mTimer;
SignalTask mSignalTask;
bool mAllowDefaultRouteInNetData;
};
@@ -593,6 +595,8 @@ private:
bool mIsAddedInNetData;
};
void HandleLocalOnLinkPrefixTimer(void) { mLocalOnLinkPrefix.HandleTimer(); }
class LocalOnLinkPrefix : public InstanceLocator
{
public:
@@ -607,6 +611,7 @@ private:
const Ip6::Prefix &GetPrefix(void) const { return mPrefix; }
bool IsAdvertising(void) const { return (mState == kAdvertising); }
void HandleExtPanIdChange(void);
void HandleTimer(void);
private:
enum State : uint8_t
@@ -620,15 +625,14 @@ private:
void AppendOldPrefix(Ip6::Nd::RouterAdvertMessage &aRaMessage);
void Unpublish(const Ip6::Prefix &aPrefix);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
using ExpireTimer = TimerMilliIn<RoutingManager, &RoutingManager::HandleLocalOnLinkPrefixTimer>;
Ip6::Prefix mPrefix;
State mState;
TimeMilli mExpireTime;
Ip6::Prefix mOldPrefix;
TimeMilli mOldExpireTime;
TimerMilli mTimer;
ExpireTimer mTimer;
};
typedef Ip6::Prefix OnMeshPrefix;
@@ -641,6 +645,8 @@ private:
};
#if OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
void HandleNat64PrefixManagerTimer(void) { mNat64PrefixManager.HandleTimer(); }
class Nat64PrefixManager : public InstanceLocator
{
public:
@@ -659,16 +665,17 @@ private:
const Ip6::Prefix &GetFavoredPrefix(RoutePreference &aPreference) const;
void Evaluate(void);
void HandleDiscoverDone(const Ip6::Prefix &aPrefix);
void HandleTimer(void);
private:
void Discover(void);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void Discover(void);
using Nat64Timer = TimerMilliIn<RoutingManager, &RoutingManager::HandleNat64PrefixManagerTimer>;
Ip6::Prefix mInfraIfPrefix; // The latest NAT64 prefix discovered on the infrastructure interface.
Ip6::Prefix mLocalPrefix; // The local prefix (from BR ULA prefix).
Ip6::Prefix mPublishedPrefix; // The prefix published in Network Data (may be empty or local or from infra-if).
TimerMilli mTimer;
Nat64Timer mTimer;
};
#endif // OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
@@ -696,6 +703,8 @@ private:
TimeMilli mLastTxTime;
};
void HandleRsSenderTimer(void) { mRsSender.HandleTimer(); }
class RsSender : public InstanceLocator
{
public:
@@ -711,6 +720,7 @@ private:
bool IsInProgress(void) const { return mTimer.IsRunning(); }
void Start(void);
void Stop(void);
void HandleTimer(void);
private:
// All time intervals are in msec.
@@ -720,13 +730,13 @@ private:
static constexpr uint32_t kWaitOnLastAttempt = 1000; // Wait interval after last RS tx.
static constexpr uint8_t kMaxTxCount = 3; // Number of RS tx in one cycle.
Error SendRs(void);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
Error SendRs(void);
uint8_t mTxCount;
TimerMilli mTimer;
TimeMilli mStartTime;
using RsTimer = TimerMilliIn<RoutingManager, &RoutingManager::HandleRsSenderTimer>;
uint8_t mTxCount;
RsTimer mTimer;
TimeMilli mStartTime;
};
void EvaluateState(void);
@@ -747,11 +757,7 @@ private:
void HandleRsSenderFinished(TimeMilli aStartTime);
void SendRouterAdvertisement(RouterAdvTxMode aRaTxMode);
static void HandleDiscoveredPrefixInvalidTimer(Timer &aTimer);
void HandleDiscoveredPrefixInvalidTimer(void);
static void HandleDiscoveredPrefixStaleTimer(Timer &aTimer);
void HandleDiscoveredPrefixStaleTimer(void);
static void HandleRoutingPolicyTimer(Timer &aTimer);
void HandleDiscoveredPrefixStaleTimer(void);
void HandleRouterSolicit(const InfraIf::Icmp6Packet &aPacket, const Ip6::Address &aSrcAddress);
void HandleRouterAdvertisement(const InfraIf::Icmp6Packet &aPacket, const Ip6::Address &aSrcAddress);
@@ -767,6 +773,9 @@ private:
static bool IsValidOnLinkPrefix(const Ip6::Nd::PrefixInfoOption &aPio);
static bool IsValidOnLinkPrefix(const Ip6::Prefix &aOnLinkPrefix);
using RoutingPolicyTimer = TimerMilliIn<RoutingManager, &RoutingManager::EvaluateRoutingPolicy>;
using DiscoveredPrefixStaleTimer = TimerMilliIn<RoutingManager, &RoutingManager::HandleDiscoveredPrefixStaleTimer>;
// Indicates whether the Routing Manager is running (started).
bool mIsRunning;
@@ -804,8 +813,8 @@ private:
RaInfo mRaInfo;
RsSender mRsSender;
TimerMilli mDiscoveredPrefixStaleTimer;
TimerMilli mRoutingPolicyTimer;
DiscoveredPrefixStaleTimer mDiscoveredPrefixStaleTimer;
RoutingPolicyTimer mRoutingPolicyTimer;
};
} // namespace BorderRouter
+14
View File
@@ -56,6 +56,20 @@ void TaskletIn<Owner, HandleTaskletPtr>::HandleTasklet(Tasklet &aTasklet)
(aTasklet.Get<Owner>().*HandleTaskletPtr)();
}
template <typename Owner, void (Owner::*HandleTimertPtr)(void)>
void TimerMilliIn<Owner, HandleTimertPtr>::HandleTimer(Timer &aTimer)
{
(aTimer.Get<Owner>().*HandleTimertPtr)();
}
#if OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE
template <typename Owner, void (Owner::*HandleTimertPtr)(void)>
void TimerMicroIn<Owner, HandleTimertPtr>::HandleTimer(Timer &aTimer)
{
(aTimer.Get<Owner>().*HandleTimertPtr)();
}
#endif
} // namespace ot
#endif // LOCATOR_GETTERS_HPP_
+1 -6
View File
@@ -45,7 +45,7 @@ namespace ot {
TimeTicker::TimeTicker(Instance &aInstance)
: InstanceLocator(aInstance)
, mReceivers(0)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
{
}
@@ -69,11 +69,6 @@ void TimeTicker::UnregisterReceiver(Receiver aReceiver)
}
}
void TimeTicker::HandleTimer(Timer &aTimer)
{
aTimer.Get<TimeTicker>().HandleTimer();
}
void TimeTicker::HandleTimer(void)
{
mTimer.FireAt(mTimer.GetFireTime() + Random::NonCrypto::AddJitter(kTickInterval, kRestartJitter));
+5 -4
View File
@@ -115,11 +115,12 @@ private:
constexpr static uint32_t Mask(Receiver aReceiver) { return static_cast<uint32_t>(1U) << aReceiver; }
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
uint32_t mReceivers;
TimerMilli mTimer;
using TickerTimer = TimerMilliIn<TimeTicker, &TimeTicker::HandleTimer>;
uint32_t mReceivers;
TickerTimer mTimer;
static_assert(kNumReceivers < sizeof(mReceivers) * CHAR_BIT, "Too many `Receiver`s - does not fit in a bit mask");
};
+55
View File
@@ -246,6 +246,33 @@ protected:
static void RemoveAll(Instance &aInstance);
};
/**
* This template class defines a timer owned by a specific type and using a method on owner type as the callback.
*
* @tparam Owner The type of the owner of this timer.
* @tparam HandleTimerPtr A pointer to a non-static member method of `Owner` to use as timer handler.
*
* The `Owner` MUST be a type that is accessible using `InstanceLocator::Get<Owner>()`.
*
*/
template <typename Owner, void (Owner::*HandleTimerPtr)(void)> class TimerMilliIn : public TimerMilli
{
public:
/**
* This constructor initializes the timer.
*
* @param[in] aInstance The OpenThread instance.
*
*/
explicit TimerMilliIn(Instance &aInstance)
: TimerMilli(aInstance, HandleTimer)
{
}
private:
static void HandleTimer(Timer &aTimer); // Implemented in `locator_getters.hpp`
};
/**
* This class implements a millisecond timer that also maintains a user context pointer.
*
@@ -379,6 +406,34 @@ public:
protected:
static void RemoveAll(Instance &aInstance);
};
/**
* This template class defines a timer owned by a specific type and using a method on owner type as the callback.
*
* @tparam Owner The type of the owner of this timer.
* @tparam HandleTimerPtr A pointer to a non-static member method of `Owner` to use as timer handler.
*
* The `Owner` MUST be a type that is accessible using `InstanceLocator::Get<Owner>()`.
*
*/
template <typename Owner, void (Owner::*HandleTimerPtr)(void)> class TimerMicroIn : public TimerMicro
{
public:
/**
* This constructor initializes the timer.
*
* @param[in] aInstance The OpenThread instance.
*
*/
explicit TimerMicroIn(Instance &aInstance)
: TimerMicro(aInstance, HandleTimer)
{
}
private:
static void HandleTimer(Timer &aTimer); // Implemented in `locator_getters.hpp`
};
#endif // OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE
/**
+1 -6
View File
@@ -46,7 +46,7 @@ Uptime::Uptime(Instance &aInstance)
: InstanceLocator(aInstance)
, mStartTime(TimerMilli::GetNow())
, mOverflowCount(0)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
{
mTimer.FireAt(mStartTime + kTimerInterval);
}
@@ -88,11 +88,6 @@ void Uptime::GetUptime(char *aBuffer, uint16_t aSize) const
UptimeToString(GetUptime(), writer);
}
void Uptime::HandleTimer(Timer &aTimer)
{
aTimer.Get<Uptime>().HandleTimer();
}
void Uptime::HandleTimer(void)
{
if (mTimer.GetFireTime() == mStartTime)
+6 -5
View File
@@ -103,12 +103,13 @@ private:
static_assert(static_cast<uint32_t>(4 * kTimerInterval) == 0, "kTimerInterval is not correct");
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
TimeMilli mStartTime;
uint32_t mOverflowCount;
TimerMilli mTimer;
using UptimeTimer = TimerMilliIn<Uptime, &Uptime::HandleTimer>;
TimeMilli mStartTime;
uint32_t mOverflowCount;
UptimeTimer mTimer;
};
} // namespace ot
+1 -6
View File
@@ -55,7 +55,7 @@ DataPollSender::DataPollSender(Instance &aInstance)
, mPollPeriod(0)
, mExternalPollPeriod(0)
, mFastPollsUsers(0)
, mTimer(aInstance, DataPollSender::HandlePollTimer)
, mTimer(aInstance)
, mEnabled(false)
, mAttachMode(false)
, mRetxMode(false)
@@ -533,11 +533,6 @@ uint32_t DataPollSender::CalculatePollPeriod(void) const
return period;
}
void DataPollSender::HandlePollTimer(Timer &aTimer)
{
IgnoreError(aTimer.Get<DataPollSender>().SendDataPoll());
}
uint32_t DataPollSender::GetDefaultPollPeriod(void) const
{
uint32_t period = Time::SecToMsec(Get<Mle::MleRouter>().GetTimeout());
+4 -2
View File
@@ -276,19 +276,21 @@ private:
void ScheduleNextPoll(PollPeriodSelector aPollPeriodSelector);
uint32_t CalculatePollPeriod(void) const;
const Neighbor &GetParent(void) const;
static void HandlePollTimer(Timer &aTimer);
void HandlePollTimer(void) { IgnoreError(SendDataPoll()); }
#if OPENTHREAD_CONFIG_MULTI_RADIO
Error GetPollDestinationAddress(Mac::Address &aDest, Mac::RadioType &aRadioType) const;
#else
Error GetPollDestinationAddress(Mac::Address &aDest) const;
#endif
using PollTimer = TimerMilliIn<DataPollSender, &DataPollSender::HandlePollTimer>;
TimeMilli mTimerStartTime;
uint32_t mPollPeriod;
uint32_t mExternalPollPeriod : 26; // In milliseconds.
uint8_t mFastPollsUsers : 6; // Number of callers which request fast polls.
TimerMilli mTimer;
PollTimer mTimer;
bool mEnabled : 1; // Indicates whether data polling is enabled/started.
bool mAttachMode : 1; // Indicates whether in attach mode (to use attach poll period).
+1 -6
View File
@@ -101,7 +101,7 @@ Mac::Mac(Instance &aInstance)
, mScanHandlerContext(nullptr)
, mLinks(aInstance)
, mOperationTask(aInstance)
, mTimer(aInstance, Mac::HandleTimer)
, mTimer(aInstance)
, mKeyIdMode2FrameCounter(0)
, mCcaSampleCount(0)
#if OPENTHREAD_CONFIG_MULTI_RADIO
@@ -1448,11 +1448,6 @@ exit:
return;
}
void Mac::HandleTimer(Timer &aTimer)
{
aTimer.Get<Mac>().HandleTimer();
}
void Mac::HandleTimer(void)
{
switch (mOperation)
+3 -4
View File
@@ -759,9 +759,7 @@ private:
bool IsJoinable(void) const;
void BeginTransmit(void);
bool HandleMacCommand(RxFrame &aFrame);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
void Scan(Operation aScanOperation, uint32_t aScanChannels, uint16_t aScanDuration);
Error UpdateScanChannel(void);
@@ -788,6 +786,7 @@ private:
static const char *OperationToString(Operation aOperation);
using OperationTask = TaskletIn<Mac, &Mac::PerformNextOperation>;
using MacTimer = TimerMilliIn<Mac, &Mac::HandleTimer>;
static const otExtAddress sMode2ExtAddress;
@@ -836,7 +835,7 @@ private:
Links mLinks;
OperationTask mOperationTask;
TimerMilli mTimer;
MacTimer mTimer;
otMacCounters mCounters;
uint32_t mKeyIdMode2FrameCounter;
SuccessRateTracker mCcaSuccessRateTracker;
+1 -6
View File
@@ -59,7 +59,7 @@ SubMac::SubMac(Instance &aInstance)
, mCallbacks(aInstance)
, mPcapCallback(nullptr)
, mPcapCallbackContext(nullptr)
, mTimer(aInstance, SubMac::HandleTimer)
, mTimer(aInstance)
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
, mCslTimer(aInstance, SubMac::HandleCslTimer)
#endif
@@ -776,11 +776,6 @@ void SubMac::HandleEnergyScanDone(int8_t aMaxRssi)
mCallbacks.EnergyScanDone(aMaxRssi);
}
void SubMac::HandleTimer(Timer &aTimer)
{
aTimer.Get<SubMac>().HandleTimer();
}
void SubMac::HandleTimer(void)
{
switch (mState)
+9 -8
View File
@@ -602,13 +602,18 @@ private:
void HandleTransmitDone(TxFrame &aFrame, RxFrame *aAckFrame, Error aError);
void SignalFrameCounterUsedOnTxDone(const TxFrame &aFrame);
void HandleEnergyScanDone(int8_t aMaxRssi);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
void SetState(State aState);
static const char *StateToString(State aState);
using SubMacTimer =
#if OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE
TimerMicroIn<SubMac, &SubMac::HandleTimer>;
#else
TimerMilliIn<SubMac, &SubMac::HandleTimer>;
#endif
otRadioCaps mRadioCaps;
State mState;
uint8_t mCsmaBackoffs;
@@ -633,11 +638,7 @@ private:
#if OPENTHREAD_CONFIG_MAC_ADD_DELAY_ON_NO_ACK_ERROR_BEFORE_RETRY
uint8_t mRetxDelayBackOffExponent;
#endif
#if OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE
TimerMicro mTimer;
#else
TimerMilli mTimer;
#endif
SubMacTimer mTimer;
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
uint16_t mCslPeriod; // The CSL sample period, in units of 10 symbols (160 microseconds).
+1 -6
View File
@@ -291,7 +291,7 @@ BorderAgent::BorderAgent(Instance &aInstance)
, mPendingSet(UriPath::kPendingSet, BorderAgent::HandleRequest<&BorderAgent::mPendingSet>, this)
, mProxyTransmit(UriPath::kProxyTx, BorderAgent::HandleRequest<&BorderAgent::mProxyTransmit>, this)
, mUdpReceiver(BorderAgent::HandleUdpReceive, this)
, mTimer(aInstance, HandleTimeout)
, mTimer(aInstance)
, mState(kStateStopped)
, mUdpProxyPort(0)
{
@@ -605,11 +605,6 @@ exit:
}
}
void BorderAgent::HandleTimeout(Timer &aTimer)
{
aTimer.Get<BorderAgent>().HandleTimeout();
}
void BorderAgent::HandleTimeout(void)
{
if (Get<Coap::CoapSecure>().IsConnected())
+5 -3
View File
@@ -175,6 +175,8 @@ private:
static constexpr uint32_t kKeepAliveTimeout = 50 * 1000; // Timeout to reject a commissioner.
using TimeoutTimer = TimerMilliIn<BorderAgent, &BorderAgent::HandleTimeout>;
Ip6::MessageInfo mMessageInfo;
Coap::Resource mCommissionerPetition;
@@ -192,9 +194,9 @@ private:
Ip6::Udp::Receiver mUdpReceiver; ///< The UDP receiver to receive packets from external commissioner
Ip6::Netif::UnicastAddress mCommissionerAloc;
TimerMilli mTimer;
State mState;
uint16_t mUdpProxyPort;
TimeoutTimer mTimer;
State mState;
uint16_t mUdpProxyPort;
};
} // namespace MeshCoP
+2 -12
View File
@@ -64,8 +64,8 @@ Commissioner::Commissioner(Instance &aInstance)
, mJoinerRloc(0)
, mSessionId(0)
, mTransmitAttempts(0)
, mJoinerExpirationTimer(aInstance, HandleJoinerExpirationTimer)
, mTimer(aInstance, HandleTimer)
, mJoinerExpirationTimer(aInstance)
, mTimer(aInstance)
, mRelayReceive(UriPath::kRelayRx, &Commissioner::HandleRelayReceive, this)
, mDatasetChanged(UriPath::kDatasetChanged, &Commissioner::HandleDatasetChanged, this)
, mJoinerFinalize(UriPath::kJoinerFinalize, &Commissioner::HandleJoinerFinalize, this)
@@ -628,11 +628,6 @@ exit:
return error;
}
void Commissioner::HandleTimer(Timer &aTimer)
{
aTimer.Get<Commissioner>().HandleTimer();
}
void Commissioner::HandleTimer(void)
{
switch (mState)
@@ -650,11 +645,6 @@ void Commissioner::HandleTimer(void)
}
}
void Commissioner::HandleJoinerExpirationTimer(Timer &aTimer)
{
aTimer.Get<Commissioner>().HandleJoinerExpirationTimer();
}
void Commissioner::HandleJoinerExpirationTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
+7 -7
View File
@@ -542,11 +542,8 @@ private:
void AddCoapResources(void);
void RemoveCoapResources(void);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
static void HandleJoinerExpirationTimer(Timer &aTimer);
void HandleJoinerExpirationTimer(void);
void HandleTimer(void);
void HandleJoinerExpirationTimer(void);
void UpdateJoinerExpirationTimer(void);
@@ -604,6 +601,9 @@ private:
static const char *StateToString(State aState);
using JoinerExpirationTimer = TimerMilliIn<Commissioner, &Commissioner::HandleJoinerExpirationTimer>;
using CommissionerTimer = TimerMilliIn<Commissioner, &Commissioner::HandleTimer>;
Joiner mJoiners[OPENTHREAD_CONFIG_COMMISSIONER_MAX_JOINER_ENTRIES];
Joiner * mActiveJoiner;
@@ -612,8 +612,8 @@ private:
uint16_t mJoinerRloc;
uint16_t mSessionId;
uint8_t mTransmitAttempts;
TimerMilli mJoinerExpirationTimer;
TimerMilli mTimer;
JoinerExpirationTimer mJoinerExpirationTimer;
CommissionerTimer mTimer;
Coap::Resource mRelayReceive;
Coap::Resource mDatasetChanged;
+1 -6
View File
@@ -706,7 +706,7 @@ void ActiveDatasetManager::HandleTimer(Timer &aTimer)
PendingDatasetManager::PendingDatasetManager(Instance &aInstance)
: DatasetManager(aInstance, Dataset::kPending, PendingDatasetManager::HandleTimer)
, mDelayTimer(aInstance, PendingDatasetManager::HandleDelayTimer)
, mDelayTimer(aInstance)
, mResourceGet(UriPath::kPendingGet, &PendingDatasetManager::HandleGet, this)
#if OPENTHREAD_FTD
, mResourceSet(UriPath::kPendingSet, &PendingDatasetManager::HandleSet, this)
@@ -804,11 +804,6 @@ void PendingDatasetManager::StartDelayTimer(void)
}
}
void PendingDatasetManager::HandleDelayTimer(Timer &aTimer)
{
aTimer.Get<PendingDatasetManager>().HandleDelayTimer();
}
void PendingDatasetManager::HandleDelayTimer(void)
{
DelayTimerTlv *delayTimer;
+4 -3
View File
@@ -613,8 +613,7 @@ private:
static void HandleTimer(Timer &aTimer);
void HandleTimer(void) { DatasetManager::HandleTimer(); }
static void HandleDelayTimer(Timer &aTimer);
void HandleDelayTimer(void);
void HandleDelayTimer(void);
static void HandleGet(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
void HandleGet(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo) const;
@@ -624,7 +623,9 @@ private:
void HandleSet(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
#endif
TimerMilli mDelayTimer;
using DelayTimer = TimerMilliIn<PendingDatasetManager, &PendingDatasetManager::HandleDelayTimer>;
DelayTimer mDelayTimer;
Coap::Resource mResourceGet;
+1 -6
View File
@@ -50,7 +50,7 @@ DatasetUpdater::DatasetUpdater(Instance &aInstance)
: InstanceLocator(aInstance)
, mCallback(nullptr)
, mCallbackContext(nullptr)
, mTimer(aInstance, DatasetUpdater::HandleTimer)
, mTimer(aInstance)
, mDataset(nullptr)
{
}
@@ -94,11 +94,6 @@ exit:
return;
}
void DatasetUpdater::HandleTimer(Timer &aTimer)
{
aTimer.Get<DatasetUpdater>().HandleTimer();
}
void DatasetUpdater::HandleTimer(void)
{
PreparePendingDataset();
+10 -9
View File
@@ -118,16 +118,17 @@ private:
// Retry interval (in ms) when preparing and/or sending Pending Dataset fails.
static constexpr uint32_t kRetryInterval = 1000;
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void PreparePendingDataset(void);
void Finish(Error aError);
void HandleNotifierEvents(Events aEvents);
void HandleTimer(void);
void PreparePendingDataset(void);
void Finish(Error aError);
void HandleNotifierEvents(Events aEvents);
Callback mCallback;
void * mCallbackContext;
TimerMilli mTimer;
Message * mDataset;
using UpdaterTimer = TimerMilliIn<DatasetUpdater, &DatasetUpdater::HandleTimer>;
Callback mCallback;
void * mCallbackContext;
UpdaterTimer mTimer;
Message * mDataset;
};
} // namespace MeshCoP
+1 -6
View File
@@ -66,7 +66,7 @@ Joiner::Joiner(Instance &aInstance)
, mContext(nullptr)
, mJoinerRouterIndex(0)
, mFinalizeMessage(nullptr)
, mTimer(aInstance, Joiner::HandleTimer)
, mTimer(aInstance)
, mJoinerEntrust(UriPath::kJoinerEntrust, &Joiner::HandleJoinerEntrust, this)
{
SetIdFromIeeeEui64();
@@ -615,11 +615,6 @@ exit:
FreeMessageOnError(message, error);
}
void Joiner::HandleTimer(Timer &aTimer)
{
aTimer.Get<Joiner>().HandleTimer();
}
void Joiner::HandleTimer(void)
{
Error error = kErrorNone;
+4 -3
View File
@@ -208,8 +208,7 @@ private:
static void HandleJoinerEntrust(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
void HandleJoinerEntrust(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
void SetState(State aState);
void SetIdFromIeeeEui64(void);
@@ -232,6 +231,8 @@ private:
void LogCertMessage(const char *aText, const Coap::Message &aMessage) const;
#endif
using JoinerTimer = TimerMilliIn<Joiner, &Joiner::HandleTimer>;
Mac::ExtAddress mId;
JoinerDiscerner mDiscerner;
@@ -245,7 +246,7 @@ private:
Coap::Message *mFinalizeMessage;
TimerMilli mTimer;
JoinerTimer mTimer;
Coap::Resource mJoinerEntrust;
};
+1 -6
View File
@@ -58,7 +58,7 @@ JoinerRouter::JoinerRouter(Instance &aInstance)
: InstanceLocator(aInstance)
, mSocket(aInstance)
, mRelayTransmit(UriPath::kRelayTx, &JoinerRouter::HandleRelayTransmit, this)
, mTimer(aInstance, JoinerRouter::HandleTimer)
, mTimer(aInstance)
, mJoinerUdpPort(0)
, mIsJoinerPortConfigured(false)
{
@@ -242,11 +242,6 @@ exit:
LogError("schedule joiner entrust", error);
}
void JoinerRouter::HandleTimer(Timer &aTimer)
{
aTimer.Get<JoinerRouter>().HandleTimer();
}
void JoinerRouter::HandleTimer(void)
{
SendDelayedJoinerEntrust();
+5 -4
View File
@@ -110,8 +110,7 @@ private:
Error aResult);
void HandleJoinerEntrustResponse(Coap::Message *aMessage, const Ip6::MessageInfo *aMessageInfo, Error aResult);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
void Start(void);
void DelaySendingJoinerEntrust(const Ip6::MessageInfo &aMessageInfo, const Kek &aKek);
@@ -119,11 +118,13 @@ private:
Error SendJoinerEntrust(const Ip6::MessageInfo &aMessageInfo);
Coap::Message *PrepareJoinerEntrustMessage(void);
using JoinerRouterTimer = TimerMilliIn<JoinerRouter, &JoinerRouter::HandleTimer>;
Ip6::Udp::Socket mSocket;
Coap::Resource mRelayTransmit;
TimerMilli mTimer;
MessageQueue mDelayedJoinEnts;
JoinerRouterTimer mTimer;
MessageQueue mDelayedJoinEnts;
uint16_t mJoinerUdpPort;
+1 -6
View File
@@ -59,7 +59,7 @@ Leader::Leader(Instance &aInstance)
: InstanceLocator(aInstance)
, mPetition(UriPath::kLeaderPetition, Leader::HandlePetition, this)
, mKeepAlive(UriPath::kLeaderKeepAlive, Leader::HandleKeepAlive, this)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
, mDelayTimerMinimal(DelayTimerTlv::kDelayTimerMinimal)
, mSessionId(Random::NonCrypto::GetUint16())
{
@@ -258,11 +258,6 @@ uint32_t Leader::GetDelayTimerMinimal(void) const
return mDelayTimerMinimal;
}
void Leader::HandleTimer(Timer &aTimer)
{
aTimer.Get<Leader>().HandleTimer();
}
void Leader::HandleTimer(void)
{
VerifyOrExit(Get<Mle::MleRouter>().IsLeader());
+4 -3
View File
@@ -111,8 +111,7 @@ public:
private:
static constexpr uint32_t kTimeoutLeaderPetition = 50; // TIMEOUT_LEAD_PET (seconds)
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
static void HandlePetition(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
void HandlePetition(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
@@ -130,9 +129,11 @@ private:
void ResignCommissioner(void);
using LeaderTimer = TimerMilliIn<Leader, &Leader::HandleTimer>;
Coap::Resource mPetition;
Coap::Resource mKeepAlive;
TimerMilli mTimer;
LeaderTimer mTimer;
uint32_t mDelayTimerMinimal;
+1 -6
View File
@@ -530,7 +530,7 @@ const uint16_t *Client::kQuestionRecordTypes[] = {
Client::Client(Instance &aInstance)
: InstanceLocator(aInstance)
, mSocket(aInstance)
, mTimer(aInstance, Client::HandleTimer)
, mTimer(aInstance)
, mDefaultConfig(QueryConfig::kInitFromDefaults)
#if OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_ADDRESS_AUTO_SET_ENABLE
, mUserDidSetDefaultAddress(false)
@@ -1062,11 +1062,6 @@ exit:
return error;
}
void Client::HandleTimer(Timer &aTimer)
{
aTimer.Get<Client>().HandleTimer();
}
void Client::HandleTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
+3 -2
View File
@@ -743,7 +743,6 @@ private:
static void HandleUdpReceive(void *aContext, otMessage *aMessage, const otMessageInfo *aMsgInfo);
void ProcessResponse(const Message &aMessage);
Error ParseResponse(Response &aResponse, QueryType &aType, Error &aResponseError);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
#if OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE
Error CheckAddressResponse(Response &aResponse, Error aResponseError) const;
@@ -764,9 +763,11 @@ private:
static const uint16_t kServiceQueryRecordTypes[];
#endif
using RetryTimer = TimerMilliIn<Client, &Client::HandleTimer>;
Ip6::Udp::Socket mSocket;
QueryList mQueries;
TimerMilli mTimer;
RetryTimer mTimer;
QueryConfig mDefaultConfig;
#if OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_ADDRESS_AUTO_SET_ENABLE
bool mUserDidSetDefaultAddress;
+1 -6
View File
@@ -1449,7 +1449,7 @@ exit:
Dso::Dso(Instance &aInstance)
: InstanceLocator(aInstance)
, mAcceptHandler(nullptr)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
{
}
@@ -1488,11 +1488,6 @@ exit:
return connection;
}
void Dso::HandleTimer(Timer &aTimer)
{
aTimer.Get<Dso>().HandleTimer();
}
void Dso::HandleTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
+4 -3
View File
@@ -953,13 +953,14 @@ private:
Connection *AcceptConnection(const Ip6::SockAddr &aPeerSockAddr);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
using DsoTimer = TimerMilliIn<Dso, &Dso::HandleTimer>;
AcceptHandler mAcceptHandler;
LinkedList<Connection> mClientConnections;
LinkedList<Connection> mServerConnections;
TimerMilli mTimer;
DsoTimer mTimer;
};
} // namespace Dns
+1 -6
View File
@@ -63,7 +63,7 @@ Server::Server(Instance &aInstance)
, mQueryCallbackContext(nullptr)
, mQuerySubscribe(nullptr)
, mQueryUnsubscribe(nullptr)
, mTimer(aInstance, Server::HandleTimer)
, mTimer(aInstance)
{
mCounters.Clear();
}
@@ -1123,11 +1123,6 @@ exit:
return found;
}
void Server::HandleTimer(Timer &aTimer)
{
aTimer.Get<Server>().HandleTimer();
}
void Server::HandleTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
+8 -5
View File
@@ -405,23 +405,26 @@ private:
const Message &aMessage,
char (&aName)[Name::kMaxNameSize]);
static bool HasQuestion(const Header &aHeader, const Message &aMessage, const char *aName, uint16_t aQuestionType);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void ResetTimer(void);
void HandleTimer(void);
void ResetTimer(void);
void UpdateResponseCounters(Header::Response aResponseCode);
using ServerTimer = TimerMilliIn<Server, &Server::HandleTimer>;
static const char kDnssdProtocolUdp[];
static const char kDnssdProtocolTcp[];
static const char kDnssdSubTypeLabel[];
static const char kDefaultDomainName[];
Ip6::Udp::Socket mSocket;
Ip6::Udp::Socket mSocket;
QueryTransaction mQueryTransactions[kMaxConcurrentQueries];
void * mQueryCallbackContext;
otDnssdQuerySubscribeCallback mQuerySubscribe;
otDnssdQueryUnsubscribeCallback mQueryUnsubscribe;
TimerMilli mTimer;
ServerTimer mTimer;
Counters mCounters;
};
+2 -12
View File
@@ -47,11 +47,11 @@ namespace Ip6 {
Mpl::Mpl(Instance &aInstance)
: InstanceLocator(aInstance)
, mMatchingAddress(nullptr)
, mSeedSetTimer(aInstance, Mpl::HandleSeedSetTimer)
, mSeedSetTimer(aInstance)
, mSeedId(0)
, mSequence(0)
#if OPENTHREAD_FTD
, mRetransmissionTimer(aInstance, Mpl::HandleRetransmissionTimer)
, mRetransmissionTimer(aInstance)
, mTimerExpirations(0)
#endif
{
@@ -261,11 +261,6 @@ exit:
return error;
}
void Mpl::HandleSeedSetTimer(Timer &aTimer)
{
aTimer.Get<Mpl>().HandleSeedSetTimer();
}
void Mpl::HandleSeedSetTimer(void)
{
bool startTimer = false;
@@ -334,11 +329,6 @@ exit:
FreeMessageOnError(messageCopy, error);
}
void Mpl::HandleRetransmissionTimer(Timer &aTimer)
{
aTimer.Get<Mpl>().HandleRetransmissionTimer();
}
void Mpl::HandleRetransmissionTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
+8 -6
View File
@@ -286,14 +286,15 @@ private:
uint8_t mLifetime;
};
static void HandleSeedSetTimer(Timer &aTimer);
void HandleSeedSetTimer(void);
void HandleSeedSetTimer(void);
Error UpdateSeedSet(uint16_t aSeedId, uint8_t aSequence);
using SeedSetTimer = TimerMilliIn<Mpl, &Mpl::HandleSeedSetTimer>;
SeedEntry mSeedSet[kNumSeedEntries];
const Address *mMatchingAddress;
TimerMilli mSeedSetTimer;
SeedSetTimer mSeedSetTimer;
uint16_t mSeedId;
uint8_t mSequence;
@@ -313,13 +314,14 @@ private:
uint8_t mIntervalOffset;
};
static void HandleRetransmissionTimer(Timer &aTimer);
void HandleRetransmissionTimer(void);
void HandleRetransmissionTimer(void);
void AddBufferedMessage(Message &aMessage, uint16_t aSeedId, uint8_t aSequence, bool aIsOutbound);
using RetxTimer = TimerMilliIn<Mpl, &Mpl::HandleRetransmissionTimer>;
MessageQueue mBufferedMessageSet;
TimerMilli mRetransmissionTimer;
RetxTimer mRetransmissionTimer;
uint8_t mTimerExpirations;
#endif // OPENTHREAD_FTD
};
+5 -5
View File
@@ -50,13 +50,13 @@ RegisterLogModule("Nat64");
Translator::Translator(Instance &aInstance)
: InstanceLocator(aInstance)
, mMappingExpirer(aInstance, MappingExpirerHandler)
, mMappingExpirerTimer(aInstance)
{
Random::NonCrypto::FillBuffer(reinterpret_cast<uint8_t *>(&mNextMappingId), sizeof(mNextMappingId));
mNat64Prefix.Clear();
mIp4Cidr.Clear();
mMappingExpirer.Start(kAddressMappingIdleTimeoutMsec);
mMappingExpirerTimer.Start(kAddressMappingIdleTimeoutMsec);
}
Message *Translator::NewIp4Message(const Message::Settings &aSettings)
@@ -497,10 +497,10 @@ void Translator::SetNat64Prefix(const Ip6::Prefix &aNat64Prefix)
}
}
void Translator::MappingExpirerHandler(Timer &aTimer)
void Translator::HandleMappingExpirerTimer(void)
{
LogInfo("Released %d expired mappings", aTimer.Get<Translator>().ReleaseExpiredMappings());
aTimer.Get<Translator>().mMappingExpirer.Start(kAddressMappingIdleTimeoutMsec);
LogInfo("Released %d expired mappings", ReleaseExpiredMappings());
mMappingExpirerTimer.Start(kAddressMappingIdleTimeoutMsec);
}
void Translator::InitAddressMappingIterator(AddressMappingIterator &aIterator)
+4 -2
View File
@@ -331,7 +331,9 @@ private:
AddressMapping *FindOrAllocateMapping(const Ip6::Address &aIp6Addr);
AddressMapping *FindMapping(const Ip4::Address &aIp4Addr);
static void MappingExpirerHandler(Timer &aTimer);
void HandleMappingExpirerTimer(void);
using MappingTimer = TimerMilliIn<Translator, &Translator::HandleMappingExpirerTimer>;
uint64_t mNextMappingId;
@@ -342,7 +344,7 @@ private:
Ip6::Prefix mNat64Prefix;
Ip4::Cidr mIp4Cidr;
TimerMilli mMappingExpirer;
MappingTimer mMappingExpirerTimer;
ProtocolCounters mCounters;
ErrorCounters mErrorCounters;
+1 -6
View File
@@ -95,7 +95,7 @@ QueryMetadata::QueryMetadata(otSntpResponseHandler aHandler, void *aContext)
Client::Client(Instance &aInstance)
: mSocket(aInstance)
, mRetransmissionTimer(aInstance, Client::HandleRetransmissionTimer)
, mRetransmissionTimer(aInstance)
, mUnixEra(0)
{
}
@@ -269,11 +269,6 @@ void Client::FinalizeSntpTransaction(Message & aQuery,
}
}
void Client::HandleRetransmissionTimer(Timer &aTimer)
{
aTimer.Get<Client>().HandleRetransmissionTimer();
}
void Client::HandleRetransmissionTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
+4 -3
View File
@@ -524,16 +524,17 @@ private:
Message *FindRelatedQuery(const Header &aResponseHeader, QueryMetadata &aQueryMetadata);
void FinalizeSntpTransaction(Message &aQuery, const QueryMetadata &aQueryMetadata, uint64_t aTime, Error aResult);
static void HandleRetransmissionTimer(Timer &aTimer);
void HandleRetransmissionTimer(void);
void HandleRetransmissionTimer(void);
static void HandleUdpReceive(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
void HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
using RetxTimer = TimerMilliIn<Client, &Client::HandleRetransmissionTimer>;
Ip6::Udp::Socket mSocket;
MessageQueue mPendingQueries;
TimerMilli mRetransmissionTimer;
RetxTimer mRetransmissionTimer;
uint32_t mUnixEra;
};
+1 -6
View File
@@ -264,7 +264,7 @@ Client::Client(Instance &aInstance)
, mCallback(nullptr)
, mCallbackContext(nullptr)
, mDomainName(kDefaultDomainName)
, mTimer(aInstance, Client::HandleTimer)
, mTimer(aInstance)
{
mHostInfo.Init();
@@ -1757,11 +1757,6 @@ bool Client::ShouldRenewEarly(const Service &aService) const
return shouldRenew;
}
void Client::HandleTimer(Timer &aTimer)
{
aTimer.Get<Client>().HandleTimer();
}
void Client::HandleTimer(void)
{
switch (GetState())
+3 -2
View File
@@ -986,7 +986,6 @@ private:
void GrowRetryWaitInterval(void);
uint32_t GetBoundedLeaseInterval(uint32_t aInterval, uint32_t aDefaultInterval) const;
bool ShouldRenewEarly(const Service &aService) const;
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
#if OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE
void ProcessAutoStart(void);
@@ -1007,6 +1006,8 @@ private:
static_assert(kMaxTxFailureRetries < 16, "kMaxTxFailureRetries exceed the range of mTxFailureRetryCount (4-bit)");
using DelayTimer = TimerMilliIn<Client, &Client::HandleTimer>;
State mState;
uint8_t mTxFailureRetryCount : 4;
bool mShouldRemoveKeyLease : 1;
@@ -1032,7 +1033,7 @@ private:
HostInfo mHostInfo;
LinkedList<Service> mServices;
SingleServiceMode mSingleServiceMode;
TimerMilli mTimer;
DelayTimer mTimer;
#if OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE
AutoStart mAutoStart;
#endif
+2 -12
View File
@@ -88,8 +88,8 @@ Server::Server(Instance &aInstance)
, mSocket(aInstance)
, mServiceUpdateHandler(nullptr)
, mServiceUpdateHandlerContext(nullptr)
, mLeaseTimer(aInstance, HandleLeaseTimer)
, mOutstandingUpdatesTimer(aInstance, HandleOutstandingUpdatesTimer)
, mLeaseTimer(aInstance)
, mOutstandingUpdatesTimer(aInstance)
, mServiceUpdateId(Random::NonCrypto::GetUint32())
, mPort(kUdpPortMin)
, mState(kStateDisabled)
@@ -1528,11 +1528,6 @@ exit:
return error;
}
void Server::HandleLeaseTimer(Timer &aTimer)
{
aTimer.Get<Server>().HandleLeaseTimer();
}
void Server::HandleLeaseTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
@@ -1647,11 +1642,6 @@ void Server::HandleLeaseTimer(void)
}
}
void Server::HandleOutstandingUpdatesTimer(Timer &aTimer)
{
aTimer.Get<Server>().HandleOutstandingUpdatesTimer();
}
void Server::HandleOutstandingUpdatesTimer(void)
{
while (!mOutstandingUpdates.IsEmpty() && mOutstandingUpdates.GetTail()->GetExpireTime() <= TimerMilli::GetNow())
+5 -3
View File
@@ -1043,7 +1043,6 @@ private:
const Ip6::MessageInfo & aMessageInfo);
static void HandleUdpReceive(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
void HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
static void HandleLeaseTimer(Timer &aTimer);
void HandleLeaseTimer(void);
static void HandleOutstandingUpdatesTimer(Timer &aTimer);
void HandleOutstandingUpdatesTimer(void);
@@ -1054,6 +1053,9 @@ private:
void UpdateResponseCounters(Dns::Header::Response aResponseCode);
using LeaseTimer = TimerMilliIn<Server, &Server::HandleLeaseTimer>;
using UpdateTimer = TimerMilliIn<Server, &Server::HandleOutstandingUpdatesTimer>;
Ip6::Udp::Socket mSocket;
otSrpServerServiceUpdateHandler mServiceUpdateHandler;
void * mServiceUpdateHandlerContext;
@@ -1064,9 +1066,9 @@ private:
LeaseConfig mLeaseConfig;
LinkedList<Host> mHosts;
TimerMilli mLeaseTimer;
LeaseTimer mLeaseTimer;
TimerMilli mOutstandingUpdatesTimer;
UpdateTimer mOutstandingUpdatesTimer;
LinkedList<UpdateMetadata> mOutstandingUpdates;
ServiceUpdateId mServiceUpdateId;
+3 -10
View File
@@ -72,7 +72,7 @@ static_assert(offsetof(Tcp::Listener, mTcbListen) == 0, "mTcbListen field in otT
Tcp::Tcp(Instance &aInstance)
: InstanceLocator(aInstance)
, mTimer(aInstance, Tcp::HandleTimer)
, mTimer(aInstance)
, mTasklet(aInstance)
, mEphemeralPort(kDynamicPortMin)
{
@@ -849,20 +849,13 @@ exit:
return success;
}
void Tcp::HandleTimer(Timer &aTimer)
{
OT_ASSERT(&aTimer == &aTimer.Get<Tcp>().mTimer);
LogDebg("Main TCP timer expired");
aTimer.Get<Tcp>().ProcessTimers();
}
void Tcp::ProcessTimers(void)
void Tcp::HandleTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
bool pendingTimer;
TimeMilli earliestPendingTimerExpiry;
OT_ASSERT(!mTimer.IsRunning());
LogDebg("Main TCP timer expired");
/*
* The timer callbacks could potentially set/reset/cancel timers.
+3 -3
View File
@@ -686,14 +686,14 @@ private:
static Error BsdErrorToOtError(int aBsdError);
bool CanBind(const SockAddr &aSockName);
static void HandleTimer(Timer &aTimer);
void ProcessTimers(void);
void HandleTimer(void);
void ProcessCallbacks(void);
using TcpTasklet = TaskletIn<Tcp, &Tcp::ProcessCallbacks>;
using TcpTimer = TimerMilliIn<Tcp, &Tcp::HandleTimer>;
TimerMilli mTimer;
TcpTimer mTimer;
TcpTasklet mTasklet;
LinkedList<Endpoint> mEndpoints;
+1 -6
View File
@@ -52,7 +52,7 @@ Link::Link(Instance &aInstance)
, mPanId(Mac::kPanIdBroadcast)
, mTxPacketNumber(0)
, mTxTasklet(aInstance)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
, mInterface(aInstance)
{
memset(&mTxFrame, 0, sizeof(mTxFrame));
@@ -261,11 +261,6 @@ void Link::InvokeSendDone(Error aError, Mac::RxFrame *aAckFrame)
Get<Mac::Mac>().HandleTransmitDone(mTxFrame, aAckFrame, aError);
}
void Link::HandleTimer(Timer &aTimer)
{
aTimer.Get<Link>().HandleTimer();
}
void Link::HandleTimer(void)
{
mTimer.Start(kAckWaitWindow);
+4 -6
View File
@@ -173,22 +173,20 @@ private:
void ReportDeferredAckStatus(Neighbor &aNeighbor, Error aError);
void HandleTimer(Neighbor &aNeighbor);
void HandleNotifierEvents(Events aEvents);
void HandleTxTasklet(void);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
static const char *StateToString(State aState);
using TxTasklet = TaskletIn<Link, &Link::HandleTxTasklet>;
using TxTasklet = TaskletIn<Link, &Link::HandleTxTasklet>;
using TimeoutTimer = TimerMilliIn<Link, &Link::HandleTimer>;
State mState;
uint8_t mRxChannel;
Mac::PanId mPanId;
uint32_t mTxPacketNumber;
TxTasklet mTxTasklet;
TimerMilli mTimer;
TimeoutTimer mTimer;
Interface mInterface;
Mac::RxFrame mRxFrame;
Mac::TxFrame mTxFrame;
+1 -6
View File
@@ -49,8 +49,8 @@ DiscoverScanner::DiscoverScanner(Instance &aInstance)
: InstanceLocator(aInstance)
, mHandler(nullptr)
, mHandlerContext(nullptr)
, mTimer(aInstance, DiscoverScanner::HandleTimer)
, mScanDoneTask(aInstance)
, mTimer(aInstance)
, mFilterIndexes()
, mState(kStateIdle)
, mScanChannel(0)
@@ -266,11 +266,6 @@ void DiscoverScanner::HandleScanDoneTask(void)
}
}
void DiscoverScanner::HandleTimer(Timer &aTimer)
{
aTimer.Get<DiscoverScanner>().HandleTimer();
}
void DiscoverScanner::HandleTimer(void)
{
VerifyOrExit(mState == kStateScanning);
+3 -4
View File
@@ -172,16 +172,15 @@ private:
void HandleDiscoverComplete(void);
void HandleScanDoneTask(void);
void HandleTimer(void);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
using ScanTimer = TimerMilliIn<DiscoverScanner, &DiscoverScanner::HandleTimer>;
using ScanDoneTask = TaskletIn<DiscoverScanner, &DiscoverScanner::HandleScanDoneTask>;
Handler mHandler;
void * mHandlerContext;
TimerMilli mTimer;
ScanDoneTask mScanDoneTask;
ScanTimer mTimer;
FilterIndexes mFilterIndexes;
Mac::ChannelMask mScanChannels;
State mState;
+1 -6
View File
@@ -58,7 +58,7 @@ EnergyScanServer::EnergyScanServer(Instance &aInstance)
, mCount(0)
, mActive(false)
, mScanResultsLength(0)
, mTimer(aInstance, EnergyScanServer::HandleTimer)
, mTimer(aInstance)
, mEnergyScan(UriPath::kEnergyScan, &EnergyScanServer::HandleRequest, this)
{
Get<Tmf::Agent>().AddResource(mEnergyScan);
@@ -106,11 +106,6 @@ exit:
return;
}
void EnergyScanServer::HandleTimer(Timer &aTimer)
{
aTimer.Get<EnergyScanServer>().HandleTimer();
}
void EnergyScanServer::HandleTimer(void)
{
VerifyOrExit(mActive);
+4 -3
View File
@@ -72,13 +72,14 @@ private:
static void HandleScanResult(Mac::EnergyScanResult *aResult, void *aContext);
void HandleScanResult(Mac::EnergyScanResult *aResult);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
void HandleNotifierEvents(Events aEvents);
void SendReport(void);
using ScanTimer = TimerMilliIn<EnergyScanServer, &EnergyScanServer::HandleTimer>;
Ip6::Address mCommissioner;
uint32_t mChannelMask;
uint32_t mChannelMaskCurrent;
@@ -90,7 +91,7 @@ private:
int8_t mScanResults[OPENTHREAD_CONFIG_TMF_ENERGY_SCAN_MAX_RESULTS];
uint8_t mScanResultsLength;
TimerMilli mTimer;
ScanTimer mTimer;
Coap::Resource mEnergyScan;
};
+1 -6
View File
@@ -172,7 +172,7 @@ KeyManager::KeyManager(Instance &aInstance)
, mHoursSinceKeyRotation(0)
, mKeySwitchGuardTime(kDefaultKeySwitchGuardTime)
, mKeySwitchGuardEnabled(false)
, mKeyRotationTimer(aInstance, KeyManager::HandleKeyRotationTimer)
, mKeyRotationTimer(aInstance)
, mKekFrameCounter(0)
, mIsPskcSet(false)
{
@@ -497,11 +497,6 @@ void KeyManager::StartKeyRotationTimer(void)
mKeyRotationTimer.Start(kOneHourIntervalInMsec);
}
void KeyManager::HandleKeyRotationTimer(Timer &aTimer)
{
aTimer.Get<KeyManager>().HandleKeyRotationTimer();
}
void KeyManager::HandleKeyRotationTimer(void)
{
mHoursSinceKeyRotation++;
+8 -7
View File
@@ -575,9 +575,8 @@ private:
void ComputeTrelKey(uint32_t aKeySequence, Mac::Key &aKey);
#endif
void StartKeyRotationTimer(void);
static void HandleKeyRotationTimer(Timer &aTimer);
void HandleKeyRotationTimer(void);
void StartKeyRotationTimer(void);
void HandleKeyRotationTimer(void);
#if OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
void StoreNetworkKey(const NetworkKey &aNetworkKey, bool aOverWriteExisting);
@@ -586,6 +585,8 @@ private:
void ResetFrameCounters(void);
using RotationTimer = TimerMilliIn<KeyManager, &KeyManager::HandleKeyRotationTimer>;
static const uint8_t kThreadString[];
#if OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE
@@ -613,10 +614,10 @@ private:
uint32_t mStoredMacFrameCounter;
uint32_t mStoredMleFrameCounter;
uint32_t mHoursSinceKeyRotation;
uint32_t mKeySwitchGuardTime;
bool mKeySwitchGuardEnabled;
TimerMilli mKeyRotationTimer;
uint32_t mHoursSinceKeyRotation;
uint32_t mKeySwitchGuardTime;
bool mKeySwitchGuardEnabled;
RotationTimer mKeyRotationTimer;
#if OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
PskcRef mPskcRef;
+1 -6
View File
@@ -103,7 +103,7 @@ MeshForwarder::MeshForwarder(Instance &aInstance)
, mSendBusy(false)
#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE
, mDelayNextTx(false)
, mTxDelayTimer(aInstance, HandleTxDelayTimer)
, mTxDelayTimer(aInstance)
#endif
, mScheduleTransmissionTask(aInstance)
#if OPENTHREAD_FTD
@@ -247,11 +247,6 @@ void MeshForwarder::ResumeMessageTransmissions(void)
}
#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE
void MeshForwarder::HandleTxDelayTimer(Timer &aTimer)
{
aTimer.Get<MeshForwarder>().HandleTxDelayTimer();
}
void MeshForwarder::HandleTxDelayTimer(void)
{
mDelayNextTx = false;
+7 -4
View File
@@ -508,8 +508,7 @@ private:
void ResumeMessageTransmissions(void);
#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE
static void HandleTxDelayTimer(Timer &aTimer);
void HandleTxDelayTimer(void);
void HandleTxDelayTimer(void);
#endif
void LogMessage(MessageAction aAction,
@@ -556,6 +555,10 @@ private:
using TxTask = TaskletIn<MeshForwarder, &MeshForwarder::ScheduleTransmissionTask>;
#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE
using TxDelayTimer = TimerMilliIn<MeshForwarder, &MeshForwarder::HandleTxDelayTimer>;
#endif
PriorityQueue mSendQueue;
MessageQueue mReassemblyList;
uint16_t mFragTag;
@@ -571,8 +574,8 @@ private:
bool mTxPaused : 1;
bool mSendBusy : 1;
#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE
bool mDelayNextTx : 1;
TimerMilli mTxDelayTimer;
bool mDelayNextTx : 1;
TxDelayTimer mTxDelayTimer;
#endif
TxTask mScheduleTransmissionTask;
+4 -29
View File
@@ -80,9 +80,9 @@ Mle::Mle(Instance &aInstance)
, mReattachState(kReattachStop)
, mAttachCounter(0)
, mAnnounceDelay(kAnnounceTimeout)
, mAttachTimer(aInstance, Mle::HandleAttachTimer)
, mDelayedResponseTimer(aInstance, Mle::HandleDelayedResponseTimer)
, mMessageTransmissionTimer(aInstance, Mle::HandleMessageTransmissionTimer)
, mAttachTimer(aInstance)
, mDelayedResponseTimer(aInstance)
, mMessageTransmissionTimer(aInstance)
, mAttachMode(kAnyPartition)
, mChildUpdateAttempts(0)
, mChildUpdateRequestState(kChildUpdateRequestNone)
@@ -104,7 +104,7 @@ Mle::Mle(Instance &aInstance)
, mAlternateChannel(0)
, mAlternatePanId(Mac::kPanIdBroadcast)
, mAlternateTimestamp(0)
, mDetachGracefullyTimer(aInstance, Mle::HandleDetachGracefullyTimer)
, mDetachGracefullyTimer(aInstance)
, mDetachGracefullyCallback(nullptr)
, mDetachGracefullyContext(nullptr)
, mParentResponseCb(nullptr)
@@ -1276,11 +1276,6 @@ exit:
#endif // OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE
void Mle::HandleAttachTimer(Timer &aTimer)
{
aTimer.Get<Mle>().HandleAttachTimer();
}
Error Mle::DetermineParentRequestType(ParentRequestType &aType) const
{
// This method determines the Parent Request type to use during an
@@ -1578,11 +1573,6 @@ exit:
return delay;
}
void Mle::HandleDelayedResponseTimer(Timer &aTimer)
{
aTimer.Get<Mle>().HandleDelayedResponseTimer();
}
void Mle::HandleDelayedResponseTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
@@ -1909,11 +1899,6 @@ exit:
}
}
void Mle::HandleMessageTransmissionTimer(Timer &aTimer)
{
aTimer.Get<Mle>().HandleMessageTransmissionTimer();
}
void Mle::HandleMessageTransmissionTimer(void)
{
// The `mMessageTransmissionTimer` is used for:
@@ -3880,11 +3865,6 @@ exit:
#endif // OPENTHREAD_CONFIG_MLE_INFORM_PREVIOUS_PARENT_ON_REATTACH
#if OPENTHREAD_CONFIG_PARENT_SEARCH_ENABLE
void Mle::ParentSearch::HandleTimer(Timer &aTimer)
{
aTimer.Get<Mle>().mParentSearch.HandleTimer();
}
void Mle::ParentSearch::HandleTimer(void)
{
int8_t parentRss;
@@ -4349,11 +4329,6 @@ exit:
return error;
}
void Mle::HandleDetachGracefullyTimer(Timer &aTimer)
{
aTimer.Get<Mle>().HandleDetachGracefullyTimer();
}
void Mle::HandleDetachGracefullyTimer(void)
{
Stop();
+27 -18
View File
@@ -1678,6 +1678,17 @@ protected:
#endif
private:
// Declare early so we can use in as `TimerMilli` callbacks.
void HandleAttachTimer(void);
void HandleDelayedResponseTimer(void);
void HandleMessageTransmissionTimer(void);
protected:
using AttachTimer = TimerMilliIn<Mle, &Mle::HandleAttachTimer>;
using DelayTimer = TimerMilliIn<Mle, &Mle::HandleDelayedResponseTimer>;
using MsgTxTimer = TimerMilliIn<Mle, &Mle::HandleMessageTransmissionTimer>;
Ip6::Netif::UnicastAddress mLeaderAloc; ///< Leader anycast locator
LeaderData mLeaderData; ///< Last received Leader Data TLV.
@@ -1691,9 +1702,9 @@ protected:
ReattachState mReattachState; ///< Reattach state
uint16_t mAttachCounter; ///< Attach attempt counter.
uint16_t mAnnounceDelay; ///< Delay in between sending Announce messages during attach.
TimerMilli mAttachTimer; ///< The timer for driving the attach process.
TimerMilli mDelayedResponseTimer; ///< The timer to delay MLE responses.
TimerMilli mMessageTransmissionTimer; ///< The timer for (re-)sending of MLE messages (e.g. Child Update).
AttachTimer mAttachTimer; ///< The timer for driving the attach process.
DelayTimer mDelayedResponseTimer; ///< The timer to delay MLE responses.
MsgTxTimer mMessageTransmissionTimer; ///< The timer for (re-)sending of MLE messages (e.g. Child Update).
private:
static constexpr uint8_t kMleHopLimit = 255;
@@ -1837,6 +1848,8 @@ private:
#endif
#if OPENTHREAD_CONFIG_PARENT_SEARCH_ENABLE
void HandleParentSearchTimer(void) { mParentSearch.HandleTimer(); }
class ParentSearch : public InstanceLocator
{
public:
@@ -1846,13 +1859,14 @@ private:
, mBackoffWasCanceled(false)
, mRecentlyDetached(false)
, mBackoffCancelTime(0)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
{
}
void StartTimer(void);
void UpdateState(void);
void SetRecentlyDetached(void) { mRecentlyDetached = true; }
void HandleTimer(void);
private:
// All timer intervals are converted to milliseconds.
@@ -1861,27 +1875,20 @@ private:
static constexpr uint32_t kJitterInterval = (15 * 1000u);
static constexpr int8_t kRssThreadhold = OPENTHREAD_CONFIG_PARENT_SEARCH_RSS_THRESHOLD;
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
using SearchTimer = TimerMilliIn<Mle, &Mle::HandleParentSearchTimer>;
bool mIsInBackoff : 1;
bool mBackoffWasCanceled : 1;
bool mRecentlyDetached : 1;
TimeMilli mBackoffCancelTime;
TimerMilli mTimer;
bool mIsInBackoff : 1;
bool mBackoffWasCanceled : 1;
bool mRecentlyDetached : 1;
TimeMilli mBackoffCancelTime;
SearchTimer mTimer;
};
#endif // OPENTHREAD_CONFIG_PARENT_SEARCH_ENABLE
Error Start(StartMode aMode);
void Stop(StopMode aMode);
void HandleNotifierEvents(Events aEvents);
static void HandleAttachTimer(Timer &aTimer);
void HandleAttachTimer(void);
static void HandleDelayedResponseTimer(Timer &aTimer);
void HandleDelayedResponseTimer(void);
void SendDelayedResponse(TxMessage &aMessage, const DelayedResponseMetadata &aMetadata);
static void HandleMessageTransmissionTimer(Timer &aTimer);
void HandleMessageTransmissionTimer(void);
static void HandleUdpReceive(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
void HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
void ScheduleMessageTransmissionTimer(void);
@@ -1976,6 +1983,8 @@ private:
static const char *MessageTypeActionToSuffixString(MessageType aType, MessageAction aAction);
#endif
using DetachGracefullyTimer = TimerMilliIn<Mle, &Mle::HandleDetachGracefullyTimer>;
MessageQueue mDelayedResponses;
Challenge mParentRequestChallenge;
@@ -2024,7 +2033,7 @@ private:
Ip6::Netif::MulticastAddress mLinkLocalAllThreadNodes;
Ip6::Netif::MulticastAddress mRealmLocalAllThreadNodes;
TimerMilli mDetachGracefullyTimer;
DetachGracefullyTimer mDetachGracefullyTimer;
otDetachGracefullyCallback mDetachGracefullyCallback;
void * mDetachGracefullyContext;
+1 -6
View File
@@ -61,7 +61,7 @@ RegisterLogModule("NetworkData");
Leader::Leader(Instance &aInstance)
: LeaderBase(aInstance)
, mWaitingForNetDataSync(false)
, mTimer(aInstance, Leader::HandleTimer)
, mTimer(aInstance)
, mServerData(UriPath::kServerData, &Leader::HandleServerData, this)
, mCommissioningDataGet(UriPath::kCommissionerGet, &Leader::HandleCommissioningGet, this)
, mCommissioningDataSet(UriPath::kCommissionerSet, &Leader::HandleCommissioningSet, this)
@@ -1338,11 +1338,6 @@ void Leader::HandleNetworkDataRestoredAfterReset(void)
}
}
void Leader::HandleTimer(Timer &aTimer)
{
aTimer.Get<Leader>().HandleTimer();
}
void Leader::HandleTimer(void)
{
bool contextsWaiting = false;
+8 -7
View File
@@ -226,8 +226,7 @@ private:
static void HandleServerData(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
void HandleServerData(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
void RegisterNetworkData(uint16_t aRloc16, const NetworkData &aNetworkData);
@@ -308,17 +307,19 @@ private:
void IncrementVersions(bool aIncludeStable);
void IncrementVersions(const ChangedFlags &aFlags);
using UpdateTimer = TimerMilliIn<Leader, &Leader::HandleTimer>;
static constexpr uint8_t kMinContextId = 1; // Minimum Context ID (0 is used for Mesh Local)
static constexpr uint8_t kNumContextIds = 15; // Maximum Context ID
static constexpr uint32_t kContextIdReuseDelay = 48 * 60 * 60; // in seconds
static constexpr uint32_t kStateUpdatePeriod = 60 * 1000; // State update period in milliseconds
static constexpr uint32_t kMaxNetDataSyncWait = 60 * 1000; // Maximum time to wait for netdata sync.
bool mWaitingForNetDataSync;
uint16_t mContextUsed;
TimeMilli mContextLastUsed[kNumContextIds];
uint32_t mContextIdReuseDelay;
TimerMilli mTimer;
bool mWaitingForNetDataSync;
uint16_t mContextUsed;
TimeMilli mContextLastUsed[kNumContextIds];
uint32_t mContextIdReuseDelay;
UpdateTimer mTimer;
Coap::Resource mServerData;
+1 -6
View File
@@ -49,7 +49,7 @@ RegisterLogModule("NetworkData");
Notifier::Notifier(Instance &aInstance)
: InstanceLocator(aInstance)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
, mSynchronizeDataTask(aInstance)
, mNextDelay(0)
, mWaitingForResponse(false)
@@ -138,11 +138,6 @@ void Notifier::HandleNotifierEvents(Events aEvents)
}
}
void Notifier::HandleTimer(Timer &aTimer)
{
aTimer.Get<Notifier>().HandleTimer();
}
void Notifier::HandleTimer(void)
{
SynchronizeServerData();
+3 -3
View File
@@ -106,8 +106,7 @@ private:
void HandleNotifierEvents(Events aEvents);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
static void HandleCoapResponse(void * aContext,
otMessage * aMessage,
@@ -122,8 +121,9 @@ private:
#endif
using SynchronizeDataTask = TaskletIn<Notifier, &Notifier::SynchronizeServerData>;
using DelayTimer = TimerMilliIn<Notifier, &Notifier::HandleTimer>;
TimerMilli mTimer;
DelayTimer mTimer;
SynchronizeDataTask mSynchronizeDataTask;
uint32_t mNextDelay;
bool mWaitingForResponse : 1;
+1 -6
View File
@@ -63,7 +63,7 @@ Publisher::Publisher(Instance &aInstance)
, mPrefixCallback(nullptr)
, mPrefixCallbackContext(nullptr)
#endif
, mTimer(aInstance, Publisher::HandleTimer)
, mTimer(aInstance)
{
#if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE
// Since the `PrefixEntry` type is used in an array,
@@ -221,11 +221,6 @@ void Publisher::HandleNotifierEvents(Events aEvents)
#endif
}
void Publisher::HandleTimer(Timer &aTimer)
{
aTimer.Get<Publisher>().HandleTimer();
}
void Publisher::HandleTimer(void)
{
#if OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE
+3 -2
View File
@@ -460,9 +460,10 @@ private:
TimerMilli &GetTimer(void) { return mTimer; }
void HandleNotifierEvents(Events aEvents);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
using PublisherTimer = TimerMilliIn<Publisher, &Publisher::HandleTimer>;
#if OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE
DnsSrpServiceEntry mDnsSrpServiceEntry;
#endif
@@ -473,7 +474,7 @@ private:
void * mPrefixCallbackContext;
#endif
TimerMilli mTimer;
PublisherTimer mTimer;
};
} // namespace NetworkData
+1 -6
View File
@@ -53,7 +53,7 @@ PanIdQueryServer::PanIdQueryServer(Instance &aInstance)
: InstanceLocator(aInstance)
, mChannelMask(0)
, mPanId(Mac::kPanIdBroadcast)
, mTimer(aInstance, PanIdQueryServer::HandleTimer)
, mTimer(aInstance)
, mPanIdQuery(UriPath::kPanIdQuery, &PanIdQueryServer::HandleQuery, this)
{
Get<Tmf::Agent>().AddResource(mPanIdQuery);
@@ -137,11 +137,6 @@ exit:
MeshCoP::LogError("send panid conflict", error);
}
void PanIdQueryServer::HandleTimer(Timer &aTimer)
{
aTimer.Get<PanIdQueryServer>().HandleTimer();
}
void PanIdQueryServer::HandleTimer(void)
{
IgnoreError(Get<Mac::Mac>().ActiveScan(mChannelMask, 0, HandleScanResult, this));
+4 -3
View File
@@ -68,18 +68,19 @@ private:
static void HandleScanResult(Mac::ActiveScanResult *aScanResult, void *aContext);
void HandleScanResult(Mac::ActiveScanResult *aScanResult);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void HandleTimer(void);
static void HandleUdpReceive(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
void SendConflict(void);
using DelayTimer = TimerMilliIn<PanIdQueryServer, &PanIdQueryServer::HandleTimer>;
Ip6::Address mCommissioner;
uint32_t mChannelMask;
uint16_t mPanId;
TimerMilli mTimer;
DelayTimer mTimer;
Coap::Resource mPanIdQuery;
};
+1 -6
View File
@@ -64,7 +64,7 @@ TimeSync::TimeSync(Instance &aInstance)
, mNetworkTimeOffset(0)
, mTimeSyncCallback(nullptr)
, mTimeSyncCallbackContext(nullptr)
, mTimer(aInstance, HandleTimeout)
, mTimer(aInstance)
, mCurrentStatus(OT_NETWORK_TIME_UNSYNCHRONIZED)
{
CheckAndHandleChanges(false);
@@ -209,11 +209,6 @@ void TimeSync::HandleTimeout(void)
CheckAndHandleChanges(false);
}
void TimeSync::HandleTimeout(Timer &aTimer)
{
aTimer.Get<TimeSync>().HandleTimeout();
}
void TimeSync::CheckAndHandleChanges(bool aTimeUpdated)
{
otNetworkTimeStatus networkTimeStatus = OT_NETWORK_TIME_SYNCHRONIZED;
+3 -9
View File
@@ -170,14 +170,6 @@ private:
*/
void HandleNotifierEvents(Events aEvents);
/**
* Callback to be called when timer expires.
*
* @param[in] aTimer The corresponding timer.
*
*/
static void HandleTimeout(Timer &aTimer);
/**
* Check and handle any status change, and notify observers if applicable.
*
@@ -199,6 +191,8 @@ private:
*/
void NotifyTimeSyncCallback(void);
using SyncTimer = TimerMilliIn<TimeSync, &TimeSync::HandleTimeout>;
bool mTimeSyncRequired; ///< Indicate whether or not a time synchronization message is required.
uint8_t mTimeSyncSeq; ///< The time synchronization sequence.
uint16_t mTimeSyncPeriod; ///< The time synchronization period.
@@ -211,7 +205,7 @@ private:
otNetworkTimeSyncCallbackFn
mTimeSyncCallback; ///< The callback to be called when time sync is handled or status updated.
void * mTimeSyncCallbackContext; ///< The context to be passed to callback.
TimerMilli mTimer; ///< Timer for checking if a resync is required.
SyncTimer mTimer; ///< Timer for checking if a resync is required.
otNetworkTimeStatus mCurrentStatus; ///< Current network time status.
};
+1 -6
View File
@@ -57,7 +57,7 @@ ChannelManager::ChannelManager(Instance &aInstance)
, mDelay(kMinimumDelay)
, mChannel(0)
, mState(kStateIdle)
, mTimer(aInstance, ChannelManager::HandleTimer)
, mTimer(aInstance)
, mAutoSelectInterval(kDefaultAutoSelectInterval)
, mAutoSelectEnabled(false)
, mCcaFailureRateThreshold(kCcaFailureRateThreshold)
@@ -154,11 +154,6 @@ void ChannelManager::HandleDatasetUpdateDone(Error aError)
StartAutoSelectTimer();
}
void ChannelManager::HandleTimer(Timer &aTimer)
{
aTimer.Get<ChannelManager>().HandleTimer();
}
void ChannelManager::HandleTimer(void)
{
switch (mState)
+3 -2
View File
@@ -276,7 +276,6 @@ private:
void StartDatasetUpdate(void);
static void HandleDatasetUpdateDone(Error aError, void *aContext);
void HandleDatasetUpdateDone(Error aError);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void StartAutoSelectTimer(void);
@@ -285,12 +284,14 @@ private:
bool ShouldAttemptChannelChange(void);
#endif
using ManagerTimer = TimerMilliIn<ChannelManager, &ChannelManager::HandleTimer>;
Mac::ChannelMask mSupportedChannelMask;
Mac::ChannelMask mFavoredChannelMask;
uint16_t mDelay;
uint8_t mChannel;
State mState;
TimerMilli mTimer;
ManagerTimer mTimer;
uint32_t mAutoSelectInterval;
bool mAutoSelectEnabled;
uint16_t mCcaFailureRateThreshold;
+1 -6
View File
@@ -64,7 +64,7 @@ ChannelMonitor::ChannelMonitor(Instance &aInstance)
: InstanceLocator(aInstance)
, mChannelMaskIndex(0)
, mSampleCount(0)
, mTimer(aInstance, ChannelMonitor::HandleTimer)
, mTimer(aInstance)
{
memset(mChannelOccupancy, 0, sizeof(mChannelOccupancy));
}
@@ -114,11 +114,6 @@ exit:
return occupancy;
}
void ChannelMonitor::HandleTimer(Timer &aTimer)
{
aTimer.Get<ChannelMonitor>().HandleTimer();
}
void ChannelMonitor::HandleTimer(void)
{
IgnoreError(Get<Mac::Mac>().EnergyScan(mScanChannelMasks[mChannelMaskIndex], 0,
+6 -5
View File
@@ -193,18 +193,19 @@ private:
static constexpr uint16_t kMaxJitterInterval = 4096;
static constexpr uint32_t kMaxOccupancy = 0xffff;
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
static void HandleEnergyScanResult(Mac::EnergyScanResult *aResult, void *aContext);
void HandleEnergyScanResult(Mac::EnergyScanResult *aResult);
void LogResults(void);
using ScanTimer = TimerMilliIn<ChannelMonitor, &ChannelMonitor::HandleTimer>;
static const uint32_t mScanChannelMasks[kNumChannelMasks];
uint8_t mChannelMaskIndex : 3;
uint32_t mSampleCount : 29;
uint16_t mChannelOccupancy[kNumChannels];
TimerMilli mTimer;
uint8_t mChannelMaskIndex : 3;
uint32_t mSampleCount : 29;
uint16_t mChannelOccupancy[kNumChannels];
ScanTimer mTimer;
};
/**
+1 -6
View File
@@ -157,7 +157,7 @@ void ChildSupervisor::HandleNotifierEvents(Events aEvents)
SupervisionListener::SupervisionListener(Instance &aInstance)
: InstanceLocator(aInstance)
, mTimeout(0)
, mTimer(aInstance, SupervisionListener::HandleTimer)
, mTimer(aInstance)
{
SetTimeout(kDefaultTimeout);
}
@@ -206,11 +206,6 @@ void SupervisionListener::RestartTimer(void)
}
}
void SupervisionListener::HandleTimer(Timer &aTimer)
{
aTimer.Get<SupervisionListener>().HandleTimer();
}
void SupervisionListener::HandleTimer(void)
{
VerifyOrExit(Get<Mle::MleRouter>().IsChild() && !Get<MeshForwarder>().GetRxOnWhenIdle());
+6 -5
View File
@@ -233,12 +233,13 @@ public:
private:
static constexpr uint16_t kDefaultTimeout = OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT; // (seconds)
void RestartTimer(void);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void RestartTimer(void);
void HandleTimer(void);
uint16_t mTimeout;
TimerMilli mTimer;
using ListenerTimer = TimerMilliIn<SupervisionListener, &SupervisionListener::HandleTimer>;
uint16_t mTimeout;
ListenerTimer mTimer;
};
#endif // #if OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
+1 -6
View File
@@ -53,7 +53,7 @@ namespace Utils {
HistoryTracker::HistoryTracker(Instance &aInstance)
: InstanceLocator(aInstance)
, mTimer(aInstance, HandleTimer)
, mTimer(aInstance)
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_DATA
, mPreviousNetworkData(aInstance, mNetworkDataTlvBuffer, 0, sizeof(mNetworkDataTlvBuffer))
#endif
@@ -375,11 +375,6 @@ void HistoryTracker::HandleNotifierEvents(Events aEvents)
#endif
}
void HistoryTracker::HandleTimer(Timer &aTimer)
{
aTimer.Get<HistoryTracker>().HandleTimer();
}
void HistoryTracker::HandleTimer(void)
{
mNetInfoHistory.UpdateAgedEntries();
+12 -11
View File
@@ -378,22 +378,23 @@ private:
RecordMessage(aMessage, aMacDest, kTxMessage);
}
void RecordNetworkInfo(void);
void RecordMessage(const Message &aMessage, const Mac::Address &aMacAddress, MessageType aType);
void RecordNeighborEvent(NeighborTable::Event aEvent, const NeighborTable::EntryInfo &aInfo);
void RecordAddressEvent(Ip6::Netif::AddressEvent aEvent, const Ip6::Netif::UnicastAddress &aUnicastAddress);
void RecordAddressEvent(Ip6::Netif::AddressEvent aEvent,
const Ip6::Netif::MulticastAddress &aMulticastAddress,
Ip6::Netif::AddressOrigin aAddressOrigin);
void HandleNotifierEvents(Events aEvents);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void RecordNetworkInfo(void);
void RecordMessage(const Message &aMessage, const Mac::Address &aMacAddress, MessageType aType);
void RecordNeighborEvent(NeighborTable::Event aEvent, const NeighborTable::EntryInfo &aInfo);
void RecordAddressEvent(Ip6::Netif::AddressEvent aEvent, const Ip6::Netif::UnicastAddress &aUnicastAddress);
void RecordAddressEvent(Ip6::Netif::AddressEvent aEvent,
const Ip6::Netif::MulticastAddress &aMulticastAddress,
Ip6::Netif::AddressOrigin aAddressOrigin);
void HandleNotifierEvents(Events aEvents);
void HandleTimer(void);
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_DATA
void RecordNetworkDataChange(void);
void RecordOnMeshPrefixEvent(NetDataEvent aEvent, const NetworkData::OnMeshPrefixConfig &aPrefix);
void RecordExternalRouteEvent(NetDataEvent aEvent, const NetworkData::ExternalRouteConfig &aRoute);
#endif
using TrackerTimer = TimerMilliIn<HistoryTracker, &HistoryTracker::HandleTimer>;
EntryList<NetworkInfo, kNetInfoListSize> mNetInfoHistory;
EntryList<UnicastAddressInfo, kUnicastAddrListSize> mUnicastAddressHistory;
EntryList<MulticastAddressInfo, kMulticastAddrListSize> mMulticastAddressHistory;
@@ -403,7 +404,7 @@ private:
EntryList<OnMeshPrefixInfo, kOnMeshPrefixListSize> mOnMeshPrefixHistory;
EntryList<ExternalRouteInfo, kExternalRouteListSize> mExternalRouteHistory;
TimerMilli mTimer;
TrackerTimer mTimer;
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_DATA
NetworkData::MutableNetworkData mPreviousNetworkData;
+1 -6
View File
@@ -51,7 +51,7 @@ JamDetector::JamDetector(Instance &aInstance)
: InstanceLocator(aInstance)
, mHandler(nullptr)
, mContext(nullptr)
, mTimer(aInstance, JamDetector::HandleTimer)
, mTimer(aInstance)
, mHistoryBitmap(0)
, mCurSecondStartTime(0)
, mSampleInterval(0)
@@ -161,11 +161,6 @@ exit:
return error;
}
void JamDetector::HandleTimer(Timer &aTimer)
{
aTimer.Get<JamDetector>().HandleTimer();
}
void JamDetector::HandleTimer(void)
{
int8_t rssi;
+20 -19
View File
@@ -185,26 +185,27 @@ private:
static constexpr uint16_t kMinSampleInterval = 2; // in ms
static constexpr uint32_t kMaxRandomDelay = 4; // in ms
void CheckState(void);
void SetJamState(bool aNewState);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
void UpdateHistory(bool aDidExceedThreshold);
void UpdateJamState(void);
void HandleNotifierEvents(Events aEvents);
void CheckState(void);
void SetJamState(bool aNewState);
void HandleTimer(void);
void UpdateHistory(bool aDidExceedThreshold);
void UpdateJamState(void);
void HandleNotifierEvents(Events aEvents);
Handler mHandler; // Handler/callback to inform about jamming state
void * mContext; // Context for handler/callback
TimerMilli mTimer; // RSSI sample timer
uint64_t mHistoryBitmap; // History bitmap, each bit correspond to 1 sec interval
TimeMilli mCurSecondStartTime; // Start time for current 1 sec interval
uint16_t mSampleInterval; // Current sample interval
uint8_t mWindow : 6; // Window (in sec) to monitor jamming
uint8_t mBusyPeriod : 6; // BusyPeriod (in sec) with mWindow to alert jamming
bool mEnabled : 1; // If jam detection is enabled
bool mAlwaysAboveThreshold : 1; // State for current 1 sec interval
bool mJamState : 1; // Current jam state
int8_t mRssiThreshold; // RSSI threshold for jam detection
using SampleTimer = TimerMilliIn<JamDetector, &JamDetector::HandleTimer>;
Handler mHandler; // Handler/callback to inform about jamming state
void * mContext; // Context for handler/callback
SampleTimer mTimer; // RSSI sample timer
uint64_t mHistoryBitmap; // History bitmap, each bit correspond to 1 sec interval
TimeMilli mCurSecondStartTime; // Start time for current 1 sec interval
uint16_t mSampleInterval; // Current sample interval
uint8_t mWindow : 6; // Window (in sec) to monitor jamming
uint8_t mBusyPeriod : 6; // BusyPeriod (in sec) with mWindow to alert jamming
bool mEnabled : 1; // If jam detection is enabled
bool mAlwaysAboveThreshold : 1; // State for current 1 sec interval
bool mJamState : 1; // Current jam state
int8_t mRssiThreshold; // RSSI threshold for jam detection
};
/**
+1 -6
View File
@@ -91,7 +91,7 @@ PingSender::PingSender(Instance &aInstance)
: InstanceLocator(aInstance)
, mIdentifier(0)
, mTargetEchoSequence(0)
, mTimer(aInstance, PingSender::HandleTimer)
, mTimer(aInstance)
, mIcmpHandler(PingSender::HandleIcmpReceive, this)
{
IgnoreError(Get<Ip6::Icmp>().RegisterHandler(mIcmpHandler));
@@ -169,11 +169,6 @@ exit:
}
}
void PingSender::HandleTimer(Timer &aTimer)
{
aTimer.Get<PingSender>().HandleTimer();
}
void PingSender::HandleTimer(void)
{
if (mConfig.mCount > 0)
+3 -2
View File
@@ -166,7 +166,6 @@ public:
private:
void SendPing(void);
static void HandleTimer(Timer &aTimer);
void HandleTimer(void);
static void HandleIcmpReceive(void * aContext,
otMessage * aMessage,
@@ -176,11 +175,13 @@ private:
const Ip6::MessageInfo & aMessageInfo,
const Ip6::Icmp::Header &aIcmpHeader);
using PingTimer = TimerMilliIn<PingSender, &PingSender::HandleTimer>;
Config mConfig;
Statistics mStatistics;
uint16_t mIdentifier;
uint16_t mTargetEchoSequence;
TimerMilli mTimer;
PingTimer mTimer;
Ip6::Icmp::Handler mIcmpHandler;
};