diff --git a/src/core/backbone_router/local.cpp b/src/core/backbone_router/local.cpp index 1863a885e..18b692de3 100644 --- a/src/core/backbone_router/local.cpp +++ b/src/core/backbone_router/local.cpp @@ -121,7 +121,7 @@ void Local::Reset(void) { // Increase sequence number when changing from Primary to Secondary. mSequenceNumber++; - Get().Signal(OT_CHANGED_THREAD_BACKBONE_ROUTER_LOCAL); + Get().Signal(kEventThreadBackboneRouterLocalChanged); SetState(OT_BACKBONE_ROUTER_STATE_SECONDARY); } @@ -160,7 +160,7 @@ void Local::SetConfig(const BackboneRouterConfig &aConfig) if (update) { - Get().Signal(OT_CHANGED_THREAD_BACKBONE_ROUTER_LOCAL); + Get().Signal(kEventThreadBackboneRouterLocalChanged); if (AddService() == OT_ERROR_NONE) { @@ -244,7 +244,7 @@ void Local::SetState(BackboneRouterState aState) mState = aState; - Get().Signal(OT_CHANGED_THREAD_BACKBONE_ROUTER_STATE); + Get().Signal(kEventThreadBackboneRouterStateChanged); exit: return; @@ -281,7 +281,7 @@ void Local::UpdateBackboneRouterPrimary(Leader::State aState, const BackboneRout mSequenceNumber = aConfig.mSequenceNumber + 1; mReregistrationDelay = aConfig.mReregistrationDelay; mMlrTimeout = aConfig.mMlrTimeout; - Get().Signal(OT_CHANGED_THREAD_BACKBONE_ROUTER_LOCAL); + Get().Signal(kEventThreadBackboneRouterLocalChanged); if (AddService(true /* Force registration to refresh and restore Primary state */) == OT_ERROR_NONE) { Get().HandleServerDataUpdated(); diff --git a/src/core/common/notifier.cpp b/src/core/common/notifier.cpp index 35b7335cb..837ebe9ad 100644 --- a/src/core/common/notifier.cpp +++ b/src/core/common/notifier.cpp @@ -51,9 +51,9 @@ Notifier::Callback::Callback(Instance &aInstance, Handler aHandler, void *aOwner Notifier::Notifier(Instance &aInstance) : InstanceLocator(aInstance) - , mFlagsToSignal(0) - , mSignaledFlags(0) - , mTask(aInstance, &Notifier::HandleStateChanged, this) + , mEventsToSignal() + , mSignaledEvents() + , mTask(aInstance, &Notifier::EmitEvents, this) , mCallbacks() { for (unsigned int i = 0; i < kMaxExternalHandlers; i++) @@ -120,39 +120,43 @@ exit: return; } -void Notifier::Signal(otChangedFlags aFlags) +void Notifier::Signal(Event aEvent) { - mFlagsToSignal |= aFlags; - mSignaledFlags |= aFlags; + mEventsToSignal.Add(aEvent); + mSignaledEvents.Add(aEvent); mTask.Post(); } -void Notifier::SignalIfFirst(otChangedFlags aFlags) +void Notifier::SignalIfFirst(Event aEvent) { - if (!HasSignaled(aFlags)) + if (!HasSignaled(aEvent)) { - Signal(aFlags); + Signal(aEvent); } } -void Notifier::HandleStateChanged(Tasklet &aTasklet) +void Notifier::EmitEvents(Tasklet &aTasklet) { - aTasklet.GetOwner().HandleStateChanged(); + aTasklet.GetOwner().EmitEvents(); } -void Notifier::HandleStateChanged(void) +void Notifier::EmitEvents(void) { - otChangedFlags flags = mFlagsToSignal; + Events events; - VerifyOrExit(flags != 0, OT_NOOP); + VerifyOrExit(!mEventsToSignal.IsEmpty(), OT_NOOP); - mFlagsToSignal = 0; + // Note that the callbacks may signal new events, so we create a + // copy of `mEventsToSignal` and then clear it. - LogChangedFlags(flags); + events = mEventsToSignal; + mEventsToSignal.Clear(); + + LogEvents(events); for (Callback *callback = mCallbacks.GetHead(); callback != NULL; callback = callback->GetNext()) { - callback->Invoke(flags); + callback->Invoke(events); } for (unsigned int i = 0; i < kMaxExternalHandlers; i++) @@ -161,7 +165,7 @@ void Notifier::HandleStateChanged(void) if (callback.mHandler != NULL) { - callback.mHandler(flags, callback.mContext); + callback.mHandler(events.GetAsFlags(), callback.mContext); } } @@ -173,14 +177,14 @@ exit: #if (OPENTHREAD_CONFIG_LOG_LEVEL >= OT_LOG_LEVEL_INFO) && (OPENTHREAD_CONFIG_LOG_CORE == 1) -void Notifier::LogChangedFlags(otChangedFlags aFlags) const +void Notifier::LogEvents(Events aEvents) const { - otChangedFlags flags = aFlags; + Events::Flags flags = aEvents.GetAsFlags(); bool addSpace = false; bool didLog = false; String string; - for (uint8_t bit = 0; bit < sizeof(otChangedFlags) * CHAR_BIT; bit++) + for (uint8_t bit = 0; bit < sizeof(Events::Flags) * CHAR_BIT; bit++) { VerifyOrExit(flags != 0, OT_NOOP); @@ -188,14 +192,14 @@ void Notifier::LogChangedFlags(otChangedFlags aFlags) const { if (string.GetLength() >= kFlagsStringLineLimit) { - otLogInfoCore("Notifier: StateChanged (0x%08x) %s%s ...", aFlags, didLog ? "... " : "[", + otLogInfoCore("Notifier: StateChanged (0x%08x) %s%s ...", aEvents.GetAsFlags(), didLog ? "... " : "[", string.AsCString()); string.Clear(); didLog = true; addSpace = false; } - IgnoreError(string.Append("%s%s", addSpace ? " " : "", FlagToString(1 << bit))); + IgnoreError(string.Append("%s%s", addSpace ? " " : "", EventToString(static_cast(1 << bit)))); addSpace = true; flags ^= (1 << bit); @@ -203,10 +207,11 @@ void Notifier::LogChangedFlags(otChangedFlags aFlags) const } exit: - otLogInfoCore("Notifier: StateChanged (0x%08x) %s%s] ", aFlags, didLog ? "... " : "[", string.AsCString()); + otLogInfoCore("Notifier: StateChanged (0x%08x) %s%s] ", aEvents.GetAsFlags(), didLog ? "... " : "[", + string.AsCString()); } -const char *Notifier::FlagToString(otChangedFlags aFlag) const +const char *Notifier::EventToString(Event aEvent) const { const char *retval = "(unknown)"; @@ -214,124 +219,119 @@ const char *Notifier::FlagToString(otChangedFlags aFlag) const // strings from this method should have shorter length than // `kMaxFlagNameLength` value. - switch (aFlag) + switch (aEvent) { - case OT_CHANGED_IP6_ADDRESS_ADDED: + case kEventIp6AddressAdded: retval = "Ip6+"; break; - case OT_CHANGED_IP6_ADDRESS_REMOVED: + case kEventIp6AddressRemoved: retval = "Ip6-"; break; - case OT_CHANGED_THREAD_ROLE: + case kEventThreadRoleChanged: retval = "Role"; break; - case OT_CHANGED_THREAD_LL_ADDR: + case kEventThreadLinkLocalAddrChanged: retval = "LLAddr"; break; - case OT_CHANGED_THREAD_ML_ADDR: + case kEventThreadMeshLocalAddrChanged: retval = "MLAddr"; break; - case OT_CHANGED_THREAD_RLOC_ADDED: + case kEventThreadRlocAdded: retval = "Rloc+"; break; - case OT_CHANGED_THREAD_RLOC_REMOVED: + case kEventThreadRlocRemoved: retval = "Rloc-"; break; - case OT_CHANGED_THREAD_PARTITION_ID: + case kEventThreadPartitionIdChanged: retval = "PartitionId"; break; - case OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER: + case kEventThreadKeySeqCounterChanged: retval = "KeySeqCntr"; break; - case OT_CHANGED_THREAD_NETDATA: + case kEventThreadNetdataChanged: retval = "NetData"; break; - case OT_CHANGED_THREAD_CHILD_ADDED: + case kEventThreadChildAdded: retval = "Child+"; break; - case OT_CHANGED_THREAD_CHILD_REMOVED: + case kEventThreadChildRemoved: retval = "Child-"; break; - case OT_CHANGED_IP6_MULTICAST_SUBSCRIBED: + case kEventIp6MulticastSubscribed: retval = "Ip6Mult+"; break; - case OT_CHANGED_IP6_MULTICAST_UNSUBSCRIBED: + case kEventIp6MulticastUnsubscribed: retval = "Ip6Mult-"; break; - case OT_CHANGED_THREAD_CHANNEL: + case kEventThreadChannelChanged: retval = "Channel"; break; - case OT_CHANGED_THREAD_PANID: + case kEventThreadPanIdChanged: retval = "PanId"; break; - case OT_CHANGED_THREAD_NETWORK_NAME: + case kEventThreadNetworkNameChanged: retval = "NetName"; break; - case OT_CHANGED_THREAD_EXT_PANID: + case kEventThreadExtPanIdChanged: retval = "ExtPanId"; break; - case OT_CHANGED_MASTER_KEY: + case kEventMasterKeyChanged: retval = "MstrKey"; break; - case OT_CHANGED_PSKC: + case kEventPskcChanged: retval = "PSKc"; break; - case OT_CHANGED_SECURITY_POLICY: + case kEventSecurityPolicyChanged: retval = "SecPolicy"; break; - case OT_CHANGED_CHANNEL_MANAGER_NEW_CHANNEL: + case kEventChannelManagerNewChannelChanged: retval = "CMNewChan"; break; - case OT_CHANGED_SUPPORTED_CHANNEL_MASK: + case kEventSupportedChannelMaskChanged: retval = "ChanMask"; break; - case OT_CHANGED_COMMISSIONER_STATE: + case kEventCommissionerStateChanged: retval = "CommissionerState"; break; - case OT_CHANGED_THREAD_NETIF_STATE: + case kEventThreadNetifStateChanged: retval = "NetifState"; break; -#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE - case OT_CHANGED_THREAD_BACKBONE_ROUTER_STATE: + case kEventThreadBackboneRouterStateChanged: retval = "BbrState"; break; - case OT_CHANGED_THREAD_BACKBONE_ROUTER_LOCAL: + case kEventThreadBackboneRouterLocalChanged: retval = "BbrLocal"; break; -#endif - case OT_CHANGED_JOINER_STATE: + case kEventJoinerStateChanged: retval = "JoinerState"; break; - - default: - break; } return retval; @@ -339,11 +339,11 @@ const char *Notifier::FlagToString(otChangedFlags aFlag) const #else // #if (OPENTHREAD_CONFIG_LOG_LEVEL >= OT_LOG_LEVEL_INFO) && (OPENTHREAD_CONFIG_LOG_CORE == 1) -void Notifier::LogChangedFlags(otChangedFlags) const +void Notifier::LogEvents(Events) const { } -const char *Notifier::FlagToString(otChangedFlags) const +const char *Notifier::EventToString(Event) const { return ""; } diff --git a/src/core/common/notifier.hpp b/src/core/common/notifier.hpp index 6bbc6599a..c89611864 100644 --- a/src/core/common/notifier.hpp +++ b/src/core/common/notifier.hpp @@ -59,6 +59,128 @@ namespace ot { * */ +/** + * This enumeration type represents events emitted from OpenThread Notifier. + * + */ +enum Event +{ + kEventIp6AddressAdded = OT_CHANGED_IP6_ADDRESS_ADDED, ///< IPv6 address was added + kEventIp6AddressRemoved = OT_CHANGED_IP6_ADDRESS_REMOVED, ///< IPv6 address was removed + kEventThreadRoleChanged = OT_CHANGED_THREAD_ROLE, ///< Role changed + kEventThreadLinkLocalAddrChanged = OT_CHANGED_THREAD_LL_ADDR, ///< Link-local address changed + kEventThreadMeshLocalAddrChanged = OT_CHANGED_THREAD_ML_ADDR, ///< Mesh-local address changed + kEventThreadRlocAdded = OT_CHANGED_THREAD_RLOC_ADDED, ///< RLOC was added + kEventThreadRlocRemoved = OT_CHANGED_THREAD_RLOC_REMOVED, ///< RLOC was removed + kEventThreadPartitionIdChanged = OT_CHANGED_THREAD_PARTITION_ID, ///< Partition ID changed + kEventThreadKeySeqCounterChanged = OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER, ///< Key Sequence changed + kEventThreadNetdataChanged = OT_CHANGED_THREAD_NETDATA, ///< Network Data changed + kEventThreadChildAdded = OT_CHANGED_THREAD_CHILD_ADDED, ///< Child was added + kEventThreadChildRemoved = OT_CHANGED_THREAD_CHILD_REMOVED, ///< Child was removed + kEventIp6MulticastSubscribed = OT_CHANGED_IP6_MULTICAST_SUBSCRIBED, ///< Multicast address added + kEventIp6MulticastUnsubscribed = OT_CHANGED_IP6_MULTICAST_UNSUBSCRIBED, ///< Multicast address removed + kEventThreadChannelChanged = OT_CHANGED_THREAD_CHANNEL, ///< Network channel changed + kEventThreadPanIdChanged = OT_CHANGED_THREAD_PANID, ///< Network PAN ID changed + kEventThreadNetworkNameChanged = OT_CHANGED_THREAD_NETWORK_NAME, ///< Network name changed + kEventThreadExtPanIdChanged = OT_CHANGED_THREAD_EXT_PANID, ///< Extended PAN ID changed + kEventMasterKeyChanged = OT_CHANGED_MASTER_KEY, ///< Master Key changed + kEventPskcChanged = OT_CHANGED_PSKC, ///< PSKc changed + kEventSecurityPolicyChanged = OT_CHANGED_SECURITY_POLICY, ///< Security Policy changed + kEventChannelManagerNewChannelChanged = OT_CHANGED_CHANNEL_MANAGER_NEW_CHANNEL, ///< New Channel (channel-manager) + kEventSupportedChannelMaskChanged = OT_CHANGED_SUPPORTED_CHANNEL_MASK, ///< Channel mask changed + kEventCommissionerStateChanged = OT_CHANGED_COMMISSIONER_STATE, ///< Commissioner state changed + kEventThreadNetifStateChanged = OT_CHANGED_THREAD_NETIF_STATE, ///< Netif state changed + kEventThreadBackboneRouterStateChanged = OT_CHANGED_THREAD_BACKBONE_ROUTER_STATE, ///< Backbone Router state changed + kEventThreadBackboneRouterLocalChanged = OT_CHANGED_THREAD_BACKBONE_ROUTER_LOCAL, ///< Local Backbone Router changed + kEventJoinerStateChanged = OT_CHANGED_JOINER_STATE, ///< Joiner state changed +}; + +/** + * This type represents a list of events. + * + */ +class Events +{ +public: + /** + * This type represents a bit-field indicating a list of events (with values from `Event`) + * + */ + typedef otChangedFlags Flags; + + /** + * This constructor initializes the `Events` list (as empty). + * + */ + Events(void) + : mEventFlags(0) + { + } + + /** + * This method clears the `Events` list. + * + */ + void Clear(void) { mEventFlags = 0; } + + /** + * This method indicates whether the `Events` list contains a given event. + * + * @param[in] aEvent The event to check. + * + * @returns TRUE if the list contains the @p aEvent, FALSE otherwise. + * + */ + bool Contains(Event aEvent) const { return (mEventFlags & aEvent) != 0; } + + /** + * This method indicates whether the `Events` list contains any of a given set of events. + * + * @param[in] aEvents The events set to check (must be a collection of `Event` constants combined using `|`). + * + * @returns TRUE if the list contains any of the @p aEvents set, FALSE otherwise. + * + */ + bool ContainsAny(Flags aEvents) const { return (mEventFlags & aEvents) != 0; } + + /** + * This method indicates whether the `Events` list contains all of a given set of events. + * + * @param[in] aEvents The events set to check (must be collection of `Event` constants combined using `|`). + * + * @returns TRUE if the list contains all of the @p aEvents set, FALSE otherwise. + * + */ + bool ContainsAll(Flags aEvents) const { return (mEventFlags & aEvents) == aEvents; } + + /** + * This method adds a given event to the `Events` list. + * + * @param[in] aEvent The event to add. + * + */ + void Add(Event aEvent) { mEventFlags |= aEvent; } + + /** + * This method indicates whether the `Events` list is empty. + * + * @returns TRUE if the list is empty, FALSE otherwise. + * + */ + bool IsEmpty(void) const { return (mEventFlags == 0); } + + /** + * This method gets the `Events` list as bit-field `Flags` value. + * + * @returns The list as bit-field `Flags` value. + * + */ + Flags GetAsFlags(void) const { return mEventFlags; } + +private: + Flags mEventFlags; +}; + /** * This class implements the OpenThread Notifier. * @@ -88,13 +210,13 @@ public: public: /** - * This type defines the function pointer which is called to notify of state or configuration changes. + * This type defines the function pointer which is called to notify of events (state/configuration changes).. * * @param[in] aCallback A reference to callback instance. - * @param[in] aFlags A bit-field indicating specific state or configuration that has changed. + * @param[in] aEvents The list of events. * */ - typedef void (*Handler)(Callback &aCallback, otChangedFlags aFlags); + typedef void (*Handler)(Callback &aCallback, Events aEvents); /** * This constructor initializes a `Callback` instance and registers it with `Notifier`. @@ -107,7 +229,7 @@ public: Callback(Instance &aInstance, Handler aHandler, void *aOwner); private: - void Invoke(otChangedFlags aFlags) { mHandler(*this, aFlags); } + void Invoke(const Events aEvents) { mHandler(*this, aEvents); } Handler mHandler; Callback *mNext; @@ -144,70 +266,69 @@ public: void RemoveCallback(otStateChangedCallback aCallback, void *aContext); /** - * This method schedules signaling of changed flags. + * This method schedules signaling of an event. * - * @param[in] aFlags A bit-field indicating what configuration or state has changed. + * @param[in] aEvent The event to signal. * */ - void Signal(otChangedFlags aFlags); + void Signal(Event aEvent); /** - * This method schedules signaling of changed flags only if the set of flags has not been signaled before (first - * time signal). + * This method schedules signaling of am event only if the event has not been signaled before (first time signal). * - * @param[in] aFlags A bit-field indicating what configuration or state has changed. + * @param[in] aEvent The event to signal. * */ - void SignalIfFirst(otChangedFlags aFlags); + void SignalIfFirst(Event aFlags); /** - * This method indicates whether or not a changed callback is pending. + * This method indicates whether or not an event signal callback is pending/scheduled. * - * @returns TRUE if a state changed callback is pending, FALSE otherwise. + * @returns TRUE if a callback is pending, FALSE otherwise. * */ - bool IsPending(void) const { return (mFlagsToSignal != 0); } + bool IsPending(void) const { return !mEventsToSignal.IsEmpty(); } /** - * This method indicates whether or not a changed notification for a given set of flags has been signaled before. + * This method indicates whether or not an event has been signaled before. * - * @param[in] aFlags A bit-field containing the flag-bits to check. + * @param[in] aEvent The event to check. * - * @retval TRUE All flag bits in @p aFlags have been signaled before. - * @retval FALSE At least one flag bit in @p aFlags has not been signaled before. + * @retval TRUE The event @p aEvent have been signaled before. + * @retval FALSE The event @p aEvent has not been signaled before. * */ - bool HasSignaled(otChangedFlags aFlags) const { return (mSignaledFlags & aFlags) == aFlags; } + bool HasSignaled(Event aEvent) const { return mSignaledEvents.Contains(aEvent); } /** - * This template method updates a variable of a type `Type` with a new value and signals the given changed flags. + * This template method updates a variable of a type `Type` with a new value and signals the given event. * - * If the variable is already set to the same value, this method returns `OT_ERROR_ALREADY` and the changed flags - * is signaled using `SignalIfFirst()` (i.e. signal is scheduled only if the flag has not been signaled before). + * If the variable is already set to the same value, this method returns `OT_ERROR_ALREADY` and the event is + * signaled using `SignalIfFirst()` (i.e., signal is scheduled only if event has not been signaled before). * * The template `Type` should support comparison operator `==` and assignment operator `=`. * * @param[inout] aVariable A reference to the variable to update. * @param[in] aNewValue The new value. - * @param[in] aFlags The changed flags to signal. + * @param[in] aEvent The event to signal. * - * @retval OT_ERROR_NONE The variable was update successfully and @p aFlags was signaled. + * @retval OT_ERROR_NONE The variable was update successfully and @p aEvent was signaled. * @retval OT_ERROR_ALREADY The variable was already set to the same value. * */ - template otError Update(Type &aVariable, const Type &aNewValue, otChangedFlags aFlags) + template otError Update(Type &aVariable, const Type &aNewValue, Event aEvent) { otError error = OT_ERROR_NONE; if (aVariable == aNewValue) { - SignalIfFirst(aFlags); + SignalIfFirst(aEvent); error = OT_ERROR_ALREADY; } else { aVariable = aNewValue; - Signal(aFlags); + Signal(aEvent); } return error; @@ -229,14 +350,14 @@ private: }; void RegisterCallback(Callback &aCallback); - static void HandleStateChanged(Tasklet &aTasklet); - void HandleStateChanged(void); + static void EmitEvents(Tasklet &aTasklet); + void EmitEvents(void); - void LogChangedFlags(otChangedFlags aFlags) const; - const char *FlagToString(otChangedFlags aFlag) const; + void LogEvents(Events aEvents) const; + const char *EventToString(Event aEvent) const; - otChangedFlags mFlagsToSignal; - otChangedFlags mSignaledFlags; + Events mEventsToSignal; + Events mSignaledEvents; Tasklet mTask; LinkedList mCallbacks; ExternalCallback mExternalCallbacks[kMaxExternalHandlers]; diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index dcd849b36..7384fa6df 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -415,7 +415,7 @@ otError Mac::SetPanChannel(uint8_t aChannel) VerifyOrExit(mSupportedChannelMask.ContainsChannel(aChannel), error = OT_ERROR_INVALID_ARGS); - SuccessOrExit(Get().Update(mPanChannel, aChannel, OT_CHANGED_THREAD_CHANNEL)); + SuccessOrExit(Get().Update(mPanChannel, aChannel, kEventThreadChannelChanged)); mCcaSuccessRateTracker.Reset(); @@ -459,7 +459,7 @@ void Mac::SetSupportedChannelMask(const ChannelMask &aMask) ChannelMask newMask = aMask; newMask.Intersect(ChannelMask(Get().GetSupportedChannelMask())); - IgnoreError(Get().Update(mSupportedChannelMask, newMask, OT_CHANGED_SUPPORTED_CHANNEL_MASK)); + IgnoreError(Get().Update(mSupportedChannelMask, newMask, kEventSupportedChannelMaskChanged)); } otError Mac::SetNetworkName(const char *aNameString) @@ -483,13 +483,13 @@ otError Mac::SetNetworkName(const NameData &aNameData) if (error == OT_ERROR_ALREADY) { - Get().SignalIfFirst(OT_CHANGED_THREAD_NETWORK_NAME); + Get().SignalIfFirst(kEventThreadNetworkNameChanged); error = OT_ERROR_NONE; ExitNow(); } SuccessOrExit(error); - Get().Signal(OT_CHANGED_THREAD_NETWORK_NAME); + Get().Signal(kEventThreadNetworkNameChanged); exit: return error; @@ -526,7 +526,7 @@ otError Mac::SetDomainName(const NameData &aNameData) void Mac::SetPanId(PanId aPanId) { - SuccessOrExit(Get().Update(mPanId, aPanId, OT_CHANGED_THREAD_PANID)); + SuccessOrExit(Get().Update(mPanId, aPanId, kEventThreadPanIdChanged)); mSubMac.SetPanId(mPanId); exit: @@ -535,7 +535,7 @@ exit: void Mac::SetExtendedPanId(const ExtendedPanId &aExtendedPanId) { - IgnoreError(Get().Update(mExtendedPanId, aExtendedPanId, OT_CHANGED_THREAD_EXT_PANID)); + IgnoreError(Get().Update(mExtendedPanId, aExtendedPanId, kEventThreadExtPanIdChanged)); } void Mac::RequestDirectFrameTransmission(void) diff --git a/src/core/meshcop/border_agent.cpp b/src/core/meshcop/border_agent.cpp index 9d5070559..21d6248d1 100644 --- a/src/core/meshcop/border_agent.cpp +++ b/src/core/meshcop/border_agent.cpp @@ -351,7 +351,7 @@ BorderAgent::BorderAgent(Instance &aInstance) , mUdpReceiver(BorderAgent::HandleUdpReceive, this) , mTimer(aInstance, HandleTimeout, this) , mState(OT_BORDER_AGENT_STATE_STOPPED) - , mNotifierCallback(aInstance, &BorderAgent::HandleStateChanged, this) + , mNotifierCallback(aInstance, &BorderAgent::HandleNotifierEvents, this) { mCommissionerAloc.Clear(); mCommissionerAloc.mPrefixLength = 64; @@ -361,14 +361,14 @@ BorderAgent::BorderAgent(Instance &aInstance) mCommissionerAloc.mScopeOverrideValid = true; } -void BorderAgent::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void BorderAgent::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void BorderAgent::HandleStateChanged(otChangedFlags aFlags) +void BorderAgent::HandleNotifierEvents(Events aEvents) { - VerifyOrExit((aFlags & (OT_CHANGED_THREAD_ROLE | OT_CHANGED_COMMISSIONER_STATE)) != 0, OT_NOOP); + VerifyOrExit(aEvents.ContainsAny(kEventThreadRoleChanged | kEventCommissionerStateChanged), OT_NOOP); #if OPENTHREAD_CONFIG_COMMISSIONER_ENABLE && OPENTHREAD_FTD VerifyOrExit(Get().IsDisabled(), OT_NOOP); diff --git a/src/core/meshcop/border_agent.hpp b/src/core/meshcop/border_agent.hpp index 8ca9e8b93..2ef3e1895 100644 --- a/src/core/meshcop/border_agent.hpp +++ b/src/core/meshcop/border_agent.hpp @@ -93,8 +93,8 @@ public: void ApplyMeshLocalPrefix(void); private: - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); static void HandleConnected(bool aConnected, void *aContext) { diff --git a/src/core/meshcop/commissioner.cpp b/src/core/meshcop/commissioner.cpp index b05b394c6..0790d1825 100644 --- a/src/core/meshcop/commissioner.cpp +++ b/src/core/meshcop/commissioner.cpp @@ -92,7 +92,7 @@ void Commissioner::SetState(otCommissionerState aState) otCommissionerState oldState = mState; OT_UNUSED_VARIABLE(oldState); - SuccessOrExit(Get().Update(mState, aState, OT_CHANGED_COMMISSIONER_STATE)); + SuccessOrExit(Get().Update(mState, aState, kEventCommissionerStateChanged)); otLogInfoMeshCoP("CommissionerState: %s -> %s", StateToString(oldState), StateToString(aState)); diff --git a/src/core/meshcop/joiner.cpp b/src/core/meshcop/joiner.cpp index 84c6e3b3b..b6eb82caa 100644 --- a/src/core/meshcop/joiner.cpp +++ b/src/core/meshcop/joiner.cpp @@ -80,7 +80,7 @@ void Joiner::SetState(otJoinerState aState) otJoinerState oldState = mState; OT_UNUSED_VARIABLE(oldState); - SuccessOrExit(Get().Update(mState, aState, OT_CHANGED_JOINER_STATE)); + SuccessOrExit(Get().Update(mState, aState, kEventJoinerStateChanged)); otLogInfoMeshCoP("JoinerState: %s -> %s", JoinerStateToString(oldState), JoinerStateToString(aState)); exit: diff --git a/src/core/meshcop/joiner_router.cpp b/src/core/meshcop/joiner_router.cpp index 5a07f0b6c..75fbb23ad 100644 --- a/src/core/meshcop/joiner_router.cpp +++ b/src/core/meshcop/joiner_router.cpp @@ -58,7 +58,7 @@ JoinerRouter::JoinerRouter(Instance &aInstance) , mSocket(aInstance.Get()) , mRelayTransmit(OT_URI_PATH_RELAY_TX, &JoinerRouter::HandleRelayTransmit, this) , mTimer(aInstance, JoinerRouter::HandleTimer, this) - , mNotifierCallback(aInstance, &JoinerRouter::HandleStateChanged, this) + , mNotifierCallback(aInstance, &JoinerRouter::HandleNotifierEvents, this) , mJoinerUdpPort(0) , mIsJoinerPortConfigured(false) , mExpectJoinEntRsp(false) @@ -66,15 +66,22 @@ JoinerRouter::JoinerRouter(Instance &aInstance) Get().AddResource(mRelayTransmit); } -void JoinerRouter::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void JoinerRouter::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void JoinerRouter::HandleStateChanged(otChangedFlags aFlags) +void JoinerRouter::HandleNotifierEvents(Events aEvents) +{ + if (aEvents.Contains(kEventThreadNetdataChanged)) + { + Start(); + } +} + +void JoinerRouter::Start(void) { VerifyOrExit(Get().IsFullThreadDevice(), OT_NOOP); - VerifyOrExit(aFlags & OT_CHANGED_THREAD_NETDATA, OT_NOOP); if (Get().IsJoiningEnabled()) { @@ -123,7 +130,7 @@ void JoinerRouter::SetJoinerUdpPort(uint16_t aJoinerUdpPort) { mJoinerUdpPort = aJoinerUdpPort; mIsJoinerPortConfigured = true; - HandleStateChanged(OT_CHANGED_THREAD_NETDATA); + Start(); } void JoinerRouter::HandleUdpReceive(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo) diff --git a/src/core/meshcop/joiner_router.hpp b/src/core/meshcop/joiner_router.hpp index e97ed57aa..96fc71950 100644 --- a/src/core/meshcop/joiner_router.hpp +++ b/src/core/meshcop/joiner_router.hpp @@ -94,8 +94,8 @@ private: Kek mKek; // KEK used by MAC layer to encode this message. }; - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); static void HandleUdpReceive(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo); void HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageInfo); @@ -112,6 +112,7 @@ private: static void HandleTimer(Timer &aTimer); void HandleTimer(void); + void Start(void); void DelaySendingJoinerEntrust(const Ip6::MessageInfo &aMessageInfo, const Kek &aKek); void SendDelayedJoinerEntrust(void); otError SendJoinerEntrust(const Ip6::MessageInfo &aMessageInfo); diff --git a/src/core/net/netif.cpp b/src/core/net/netif.cpp index fa2ca18cc..ad230c1a6 100644 --- a/src/core/net/netif.cpp +++ b/src/core/net/netif.cpp @@ -140,7 +140,7 @@ void Netif::SubscribeAllNodesMulticast(void) tail->SetNext(&linkLocalAllNodesAddress); } - Get().Signal(OT_CHANGED_IP6_MULTICAST_SUBSCRIBED); + Get().Signal(kEventIp6MulticastSubscribed); VerifyOrExit(mAddressCallback != NULL, OT_NOOP); @@ -187,7 +187,7 @@ void Netif::UnsubscribeAllNodesMulticast(void) prev->SetNext(NULL); } - Get().Signal(OT_CHANGED_IP6_MULTICAST_UNSUBSCRIBED); + Get().Signal(kEventIp6MulticastUnsubscribed); VerifyOrExit(mAddressCallback != NULL, OT_NOOP); @@ -244,7 +244,7 @@ void Netif::SubscribeAllRoutersMulticast(void) prev->SetNext(&linkLocalAllRoutersAddress); } - Get().Signal(OT_CHANGED_IP6_MULTICAST_SUBSCRIBED); + Get().Signal(kEventIp6MulticastSubscribed); VerifyOrExit(mAddressCallback != NULL, OT_NOOP); @@ -287,7 +287,7 @@ void Netif::UnsubscribeAllRoutersMulticast(void) prev->SetNext(&linkLocalAllNodesAddress); } - Get().Signal(OT_CHANGED_IP6_MULTICAST_UNSUBSCRIBED); + Get().Signal(kEventIp6MulticastUnsubscribed); VerifyOrExit(mAddressCallback != NULL, OT_NOOP); @@ -305,7 +305,7 @@ void Netif::SubscribeMulticast(NetifMulticastAddress &aAddress) { SuccessOrExit(mMulticastAddresses.Add(aAddress)); - Get().Signal(OT_CHANGED_IP6_MULTICAST_SUBSCRIBED); + Get().Signal(kEventIp6MulticastSubscribed); VerifyOrExit(mAddressCallback != NULL, OT_NOOP); mAddressCallback(&aAddress.mAddress, kMulticastPrefixLength, /* IsAdded */ true, mAddressCallbackContext); @@ -318,7 +318,7 @@ void Netif::UnsubscribeMulticast(const NetifMulticastAddress &aAddress) { SuccessOrExit(mMulticastAddresses.Remove(aAddress)); - Get().Signal(OT_CHANGED_IP6_MULTICAST_UNSUBSCRIBED); + Get().Signal(kEventIp6MulticastUnsubscribed); VerifyOrExit(mAddressCallback != NULL, OT_NOOP); mAddressCallback(&aAddress.mAddress, kMulticastPrefixLength, /* IsAdded */ false, mAddressCallbackContext); @@ -374,7 +374,7 @@ otError Netif::SubscribeExternalMulticast(const Address &aAddress) { entry->mAddress = aAddress; mMulticastAddresses.Push(*entry); - Get().Signal(OT_CHANGED_IP6_MULTICAST_SUBSCRIBED); + Get().Signal(kEventIp6MulticastSubscribed); ExitNow(); } } @@ -409,7 +409,7 @@ otError Netif::UnsubscribeExternalMulticast(const Address &aAddress) entry->MarkAsNotInUse(); - Get().Signal(OT_CHANGED_IP6_MULTICAST_UNSUBSCRIBED); + Get().Signal(kEventIp6MulticastUnsubscribed); exit: return error; @@ -437,7 +437,7 @@ void Netif::AddUnicastAddress(NetifUnicastAddress &aAddress) { SuccessOrExit(mUnicastAddresses.Add(aAddress)); - Get().Signal(aAddress.mRloc ? OT_CHANGED_THREAD_RLOC_ADDED : OT_CHANGED_IP6_ADDRESS_ADDED); + Get().Signal(aAddress.mRloc ? kEventThreadRlocAdded : kEventIp6AddressAdded); VerifyOrExit(mAddressCallback != NULL, OT_NOOP); mAddressCallback(&aAddress.mAddress, aAddress.mPrefixLength, /* IsAdded */ true, mAddressCallbackContext); @@ -450,7 +450,7 @@ void Netif::RemoveUnicastAddress(const NetifUnicastAddress &aAddress) { SuccessOrExit(mUnicastAddresses.Remove(aAddress)); - Get().Signal(aAddress.mRloc ? OT_CHANGED_THREAD_RLOC_REMOVED : OT_CHANGED_IP6_ADDRESS_REMOVED); + Get().Signal(aAddress.mRloc ? kEventThreadRlocRemoved : kEventIp6AddressRemoved); VerifyOrExit(mAddressCallback != NULL, OT_NOOP); mAddressCallback(&aAddress.mAddress, aAddress.mPrefixLength, /* IsAdded */ false, mAddressCallbackContext); @@ -486,7 +486,7 @@ otError Netif::AddExternalUnicastAddress(const NetifUnicastAddress &aAddress) { *entry = aAddress; mUnicastAddresses.Push(*entry); - Get().Signal(OT_CHANGED_IP6_ADDRESS_ADDED); + Get().Signal(kEventIp6AddressAdded); ExitNow(); } } @@ -521,7 +521,7 @@ otError Netif::RemoveExternalUnicastAddress(const Address &aAddress) entry->MarkAsNotInUse(); - Get().Signal(OT_CHANGED_IP6_ADDRESS_REMOVED); + Get().Signal(kEventIp6AddressRemoved); exit: return error; diff --git a/src/core/thread/announce_sender.cpp b/src/core/thread/announce_sender.cpp index 3ae445681..3a1ace9f2 100644 --- a/src/core/thread/announce_sender.cpp +++ b/src/core/thread/announce_sender.cpp @@ -112,7 +112,7 @@ exit: AnnounceSender::AnnounceSender(Instance &aInstance) : AnnounceSenderBase(aInstance, AnnounceSender::HandleTimer) - , mNotifierCallback(aInstance, HandleStateChanged, this) + , mNotifierCallback(aInstance, HandleNotifierEvents, this) { } @@ -175,14 +175,14 @@ void AnnounceSender::Stop(void) otLogInfoMle("Stopping periodic MLE Announcements tx"); } -void AnnounceSender::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void AnnounceSender::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void AnnounceSender::HandleStateChanged(otChangedFlags aFlags) +void AnnounceSender::HandleNotifierEvents(Events aEvents) { - if ((aFlags & OT_CHANGED_THREAD_ROLE) != 0) + if (aEvents.Contains(kEventThreadRoleChanged)) { CheckState(); } diff --git a/src/core/thread/announce_sender.hpp b/src/core/thread/announce_sender.hpp index 42c66d152..4c2683515 100644 --- a/src/core/thread/announce_sender.hpp +++ b/src/core/thread/announce_sender.hpp @@ -157,8 +157,8 @@ private: void CheckState(void); void Stop(void); static void HandleTimer(Timer &aTimer); - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); Notifier::Callback mNotifierCallback; }; diff --git a/src/core/thread/energy_scan_server.cpp b/src/core/thread/energy_scan_server.cpp index 6949446cc..b8c6e1c78 100644 --- a/src/core/thread/energy_scan_server.cpp +++ b/src/core/thread/energy_scan_server.cpp @@ -56,7 +56,7 @@ EnergyScanServer::EnergyScanServer(Instance &aInstance) , mActive(false) , mScanResultsLength(0) , mTimer(aInstance, EnergyScanServer::HandleTimer, this) - , mNotifierCallback(aInstance, &EnergyScanServer::HandleStateChanged, this) + , mNotifierCallback(aInstance, &EnergyScanServer::HandleNotifierEvents, this) , mEnergyScan(OT_URI_PATH_ENERGY_SCAN, &EnergyScanServer::HandleRequest, this) { Get().AddResource(mEnergyScan); @@ -212,14 +212,14 @@ exit: mActive = false; } -void EnergyScanServer::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void EnergyScanServer::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void EnergyScanServer::HandleStateChanged(otChangedFlags aFlags) +void EnergyScanServer::HandleNotifierEvents(Events aEvents) { - if ((aFlags & OT_CHANGED_THREAD_NETDATA) != 0 && !mActive && + if (aEvents.Contains(kEventThreadNetdataChanged) && !mActive && Get().GetCommissioningData() == NULL) { mActive = false; diff --git a/src/core/thread/energy_scan_server.hpp b/src/core/thread/energy_scan_server.hpp index ad25c2b85..dec67751f 100644 --- a/src/core/thread/energy_scan_server.hpp +++ b/src/core/thread/energy_scan_server.hpp @@ -75,8 +75,8 @@ private: static void HandleTimer(Timer &aTimer); void HandleTimer(void); - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); void SendReport(void); diff --git a/src/core/thread/key_manager.cpp b/src/core/thread/key_manager.cpp index c8e4355b4..3941cbc6a 100644 --- a/src/core/thread/key_manager.cpp +++ b/src/core/thread/key_manager.cpp @@ -99,7 +99,7 @@ void KeyManager::Stop(void) #if OPENTHREAD_MTD || OPENTHREAD_FTD void KeyManager::SetPskc(const Pskc &aPskc) { - IgnoreError(Get().Update(mPskc, aPskc, OT_CHANGED_PSKC)); + IgnoreError(Get().Update(mPskc, aPskc, kEventPskcChanged)); mIsPskcSet = true; } #endif // OPENTHREAD_MTD || OPENTHREAD_FTD @@ -109,9 +109,8 @@ otError KeyManager::SetMasterKey(const MasterKey &aKey) otError error = OT_ERROR_NONE; Router *parent; - SuccessOrExit( - Get().Update(mMasterKey, aKey, OT_CHANGED_MASTER_KEY | OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER)); - + SuccessOrExit(Get().Update(mMasterKey, aKey, kEventMasterKeyChanged)); + Get().Signal(kEventThreadKeySeqCounterChanged); mKeySequence = 0; UpdateKeyMaterial(); @@ -175,7 +174,7 @@ void KeyManager::UpdateKeyMaterial(void) void KeyManager::SetCurrentKeySequence(uint32_t aKeySequence) { - VerifyOrExit(aKeySequence != mKeySequence, Get().SignalIfFirst(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER)); + VerifyOrExit(aKeySequence != mKeySequence, Get().SignalIfFirst(kEventThreadKeySeqCounterChanged)); if ((aKeySequence == (mKeySequence + 1)) && mKeyRotationTimer.IsRunning()) { @@ -195,7 +194,7 @@ void KeyManager::SetCurrentKeySequence(uint32_t aKeySequence) SetMacFrameCounter(0); mMleFrameCounter = 0; - Get().Signal(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER); + Get().Signal(kEventThreadKeySeqCounterChanged); exit: return; @@ -265,7 +264,7 @@ exit: void KeyManager::SetSecurityPolicyFlags(uint8_t aSecurityPolicyFlags) { - IgnoreError(Get().Update(mSecurityPolicyFlags, aSecurityPolicyFlags, OT_CHANGED_SECURITY_POLICY)); + IgnoreError(Get().Update(mSecurityPolicyFlags, aSecurityPolicyFlags, kEventSecurityPolicyChanged)); } void KeyManager::StartKeyRotationTimer(void) diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index cedc63a69..27c511b74 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -108,7 +108,7 @@ Mle::Mle(Instance &aInstance) , mAlternateChannel(0) , mAlternatePanId(Mac::kPanIdBroadcast) , mAlternateTimestamp(0) - , mNotifierCallback(aInstance, &Mle::HandleStateChanged, this) + , mNotifierCallback(aInstance, &Mle::HandleNotifierEvents, this) , mParentResponseCb(NULL) , mParentResponseCbContext(NULL) { @@ -314,7 +314,7 @@ void Mle::SetRole(DeviceRole aRole) { DeviceRole oldRole = mRole; - SuccessOrExit(Get().Update(mRole, aRole, OT_CHANGED_THREAD_ROLE)); + SuccessOrExit(Get().Update(mRole, aRole, kEventThreadRoleChanged)); otLogNoteMle("Role %s -> %s", RoleToString(oldRole), RoleToString(mRole)); @@ -878,12 +878,13 @@ void Mle::UpdateLinkLocalAddress(void) mLinkLocal64.GetAddress().SetIid(Get().GetExtAddress()); Get().AddUnicastAddress(mLinkLocal64); - Get().Signal(OT_CHANGED_THREAD_LL_ADDR); + Get().Signal(kEventThreadLinkLocalAddrChanged); } void Mle::SetMeshLocalPrefix(const MeshLocalPrefix &aMeshLocalPrefix) { - VerifyOrExit(GetMeshLocalPrefix() != aMeshLocalPrefix, Get().SignalIfFirst(OT_CHANGED_THREAD_ML_ADDR)); + VerifyOrExit(GetMeshLocalPrefix() != aMeshLocalPrefix, + Get().SignalIfFirst(kEventThreadMeshLocalAddrChanged)); if (Get().IsUp()) { @@ -964,7 +965,7 @@ void Mle::ApplyMeshLocalPrefix(void) exit: // Changing the prefix also causes the mesh local address to be different. - Get().Signal(OT_CHANGED_THREAD_ML_ADDR); + Get().Signal(kEventThreadMeshLocalAddrChanged); } uint16_t Mle::GetRloc16(void) const @@ -1010,12 +1011,12 @@ void Mle::SetLeaderData(uint32_t aPartitionId, uint8_t aWeighting, uint8_t aLead #if OPENTHREAD_FTD Get().HandlePartitionChange(); #endif - Get().Signal(OT_CHANGED_THREAD_PARTITION_ID); + Get().Signal(kEventThreadPartitionIdChanged); mCounters.mPartitionIdChanges++; } else { - Get().SignalIfFirst(OT_CHANGED_THREAD_PARTITION_ID); + Get().SignalIfFirst(kEventThreadPartitionIdChanged); } mLeaderData.SetPartitionId(aPartitionId); @@ -1485,16 +1486,16 @@ exit: return error; } -void Mle::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void Mle::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void Mle::HandleStateChanged(otChangedFlags aFlags) +void Mle::HandleNotifierEvents(Events aEvents) { VerifyOrExit(!IsDisabled(), OT_NOOP); - if (aFlags & OT_CHANGED_THREAD_ROLE) + if (aEvents.Contains(kEventThreadRoleChanged)) { if (IsChild() && !IsFullThreadDevice() && mAddressRegistrationMode == kAppendMeshLocalOnly) { @@ -1509,7 +1510,7 @@ void Mle::HandleStateChanged(otChangedFlags aFlags) } } - if ((aFlags & (OT_CHANGED_IP6_ADDRESS_ADDED | OT_CHANGED_IP6_ADDRESS_REMOVED)) != 0) + if (aEvents.ContainsAny(kEventIp6AddressAdded | kEventIp6AddressRemoved)) { if (!Get().IsUnicastAddress(mMeshLocal64.GetAddress())) { @@ -1518,7 +1519,7 @@ void Mle::HandleStateChanged(otChangedFlags aFlags) OT_IP6_ADDRESS_SIZE - OT_IP6_PREFIX_SIZE)); Get().AddUnicastAddress(mMeshLocal64); - Get().Signal(OT_CHANGED_THREAD_ML_ADDR); + Get().Signal(kEventThreadMeshLocalAddrChanged); } if (IsChild() && !IsFullThreadDevice()) @@ -1528,7 +1529,7 @@ void Mle::HandleStateChanged(otChangedFlags aFlags) } } - if ((aFlags & (OT_CHANGED_IP6_MULTICAST_SUBSCRIBED | OT_CHANGED_IP6_MULTICAST_UNSUBSCRIBED)) != 0) + if (aEvents.ContainsAny(kEventIp6MulticastSubscribed | kEventIp6MulticastUnsubscribed)) { // When multicast subscription changes, SED always notifies its parent as it depends on its // parent for indirect transmission. Since Thread 1.2, MED MAY also notify its parent of 1.2 @@ -1546,7 +1547,7 @@ void Mle::HandleStateChanged(otChangedFlags aFlags) } } - if ((aFlags & OT_CHANGED_THREAD_NETDATA) != 0) + if (aEvents.Contains(kEventThreadNetdataChanged)) { #if OPENTHREAD_FTD if (IsFullThreadDevice()) @@ -1556,7 +1557,7 @@ void Mle::HandleStateChanged(otChangedFlags aFlags) else #endif { - if ((aFlags & OT_CHANGED_THREAD_ROLE) == 0) + if (!aEvents.Contains(kEventThreadRoleChanged)) { mChildUpdateRequestState = kChildUpdateRequestPending; ScheduleMessageTransmissionTimer(); @@ -1579,18 +1580,18 @@ void Mle::HandleStateChanged(otChangedFlags aFlags) #endif // OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE } - if (aFlags & (OT_CHANGED_THREAD_ROLE | OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER)) + if (aEvents.ContainsAny(kEventThreadRoleChanged | kEventThreadKeySeqCounterChanged)) { // Store the settings on a key seq change, or when role changes and device // is attached (i.e., skip `Store()` on role change to detached). - if ((aFlags & OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER) || IsAttached()) + if (aEvents.Contains(kEventThreadKeySeqCounterChanged) || IsAttached()) { IgnoreError(Store()); } } - if (aFlags & OT_CHANGED_SECURITY_POLICY) + if (aEvents.Contains(kEventSecurityPolicyChanged)) { Get().AllowNativeCommissioner(Get().IsNativeCommissioningAllowed()); } @@ -2219,7 +2220,7 @@ void Mle::HandleMessageTransmissionTimer(void) { // The `mMessageTransmissionTimer` is used for: // - // - Delaying OT_CHANGED notification triggered "Child Update Request" transmission (to allow aggregation), + // - Delaying kEvent notification triggered "Child Update Request" transmission (to allow aggregation), // - Retransmission of "Child Update Request", // - Retransmission of "Data Request" on a child, // - Sending periodic keep-alive "Child Update Request" messages on a non-sleepy (rx-on) child. diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index 1579976d8..e14c333a2 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -1696,8 +1696,8 @@ private: TimeMilli mSendTime; // Time when the message shall be sent. }; - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); static void HandleAttachTimer(Timer &aTimer); void HandleAttachTimer(void); static void HandleDelayedResponseTimer(Timer &aTimer); diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 63e109528..2f43bd31d 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -4759,11 +4759,11 @@ void MleRouter::Signal(otNeighborTableEvent aEvent, Neighbor &aNeighbor) switch (aEvent) { case OT_NEIGHBOR_TABLE_EVENT_CHILD_ADDED: - Get().Signal(OT_CHANGED_THREAD_CHILD_ADDED); + Get().Signal(kEventThreadChildAdded); break; case OT_NEIGHBOR_TABLE_EVENT_CHILD_REMOVED: - Get().Signal(OT_CHANGED_THREAD_CHILD_REMOVED); + Get().Signal(kEventThreadChildRemoved); break; default: diff --git a/src/core/thread/network_data_leader.cpp b/src/core/thread/network_data_leader.cpp index be6eb384f..683578ee0 100644 --- a/src/core/thread/network_data_leader.cpp +++ b/src/core/thread/network_data_leader.cpp @@ -64,7 +64,7 @@ void LeaderBase::Reset(void) mVersion = Random::NonCrypto::GetUint8(); mStableVersion = Random::NonCrypto::GetUint8(); mLength = 0; - Get().Signal(OT_CHANGED_THREAD_NETDATA); + Get().Signal(kEventThreadNetdataChanged); } otError LeaderBase::GetServiceId(uint32_t aEnterpriseNumber, @@ -444,7 +444,7 @@ otError LeaderBase::SetNetworkData(uint8_t aVersion, otDumpDebgNetData("set network data", mTlvs, mLength); - Get().Signal(OT_CHANGED_THREAD_NETDATA); + Get().Signal(kEventThreadNetdataChanged); exit: return error; @@ -470,7 +470,7 @@ otError LeaderBase::SetCommissioningData(const uint8_t *aValue, uint8_t aValueLe } mVersion++; - Get().Signal(OT_CHANGED_THREAD_NETDATA); + Get().Signal(kEventThreadNetdataChanged); exit: return error; diff --git a/src/core/thread/network_data_leader_ftd.cpp b/src/core/thread/network_data_leader_ftd.cpp index a5be14a84..49ad20b00 100644 --- a/src/core/thread/network_data_leader_ftd.cpp +++ b/src/core/thread/network_data_leader_ftd.cpp @@ -120,7 +120,7 @@ void Leader::IncrementVersions(bool aIncludeStable) } mVersion++; - Get().Signal(OT_CHANGED_THREAD_NETDATA); + Get().Signal(kEventThreadNetdataChanged); } void Leader::RemoveBorderRouter(uint16_t aRloc16, MatchMode aMatchMode) diff --git a/src/core/thread/network_data_notifier.cpp b/src/core/thread/network_data_notifier.cpp index 3b1656932..64339d6dd 100644 --- a/src/core/thread/network_data_notifier.cpp +++ b/src/core/thread/network_data_notifier.cpp @@ -46,7 +46,7 @@ namespace NetworkData { Notifier::Notifier(Instance &aInstance) : InstanceLocator(aInstance) - , mNotifierCallback(aInstance, &Notifier::HandleStateChanged, this) + , mNotifierCallback(aInstance, &Notifier::HandleNotifierEvents, this) , mTimer(aInstance, Notifier::HandleTimer, this) , mNextDelay(0) , mWaitingForResponse(false) @@ -101,19 +101,19 @@ exit: } } -void Notifier::HandleStateChanged(ot::Notifier::Callback &aCallback, otChangedFlags aFlags) +void Notifier::HandleNotifierEvents(ot::Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void Notifier::HandleStateChanged(otChangedFlags aFlags) +void Notifier::HandleNotifierEvents(Events aEvents) { - if (aFlags & (OT_CHANGED_THREAD_ROLE | OT_CHANGED_THREAD_CHILD_REMOVED)) + if (aEvents.ContainsAny(kEventThreadRoleChanged | kEventThreadChildRemoved)) { mNextDelay = 0; } - if (aFlags & (OT_CHANGED_THREAD_NETDATA | OT_CHANGED_THREAD_ROLE | OT_CHANGED_THREAD_CHILD_REMOVED)) + if (aEvents.ContainsAny(kEventThreadNetdataChanged | kEventThreadRoleChanged | kEventThreadChildRemoved)) { SynchronizeServerData(); } diff --git a/src/core/thread/network_data_notifier.hpp b/src/core/thread/network_data_notifier.hpp index 3c9ac36f1..4a907e174 100644 --- a/src/core/thread/network_data_notifier.hpp +++ b/src/core/thread/network_data_notifier.hpp @@ -74,8 +74,8 @@ private: kDelaySynchronizeServerData = 300000, ///< milliseconds }; - static void HandleStateChanged(ot::Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(ot::Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); static void HandleTimer(Timer &aTimer); void HandleTimer(void); diff --git a/src/core/thread/thread_netif.cpp b/src/core/thread/thread_netif.cpp index e2dd424c0..6bf54da64 100644 --- a/src/core/thread/thread_netif.cpp +++ b/src/core/thread/thread_netif.cpp @@ -146,7 +146,7 @@ void ThreadNetif::Up(void) #if OPENTHREAD_CONFIG_SNTP_CLIENT_ENABLE IgnoreError(Get().Start()); #endif - Get().Signal(OT_CHANGED_THREAD_NETIF_STATE); + Get().Signal(kEventThreadNetifStateChanged); exit: return; @@ -177,7 +177,7 @@ void ThreadNetif::Down(void) #if OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE IgnoreError(Get().Stop()); #endif - Get().Signal(OT_CHANGED_THREAD_NETIF_STATE); + Get().Signal(kEventThreadNetifStateChanged); exit: return; diff --git a/src/core/thread/time_sync_service.cpp b/src/core/thread/time_sync_service.cpp index 8736f9964..90dfb0e6f 100644 --- a/src/core/thread/time_sync_service.cpp +++ b/src/core/thread/time_sync_service.cpp @@ -62,7 +62,7 @@ TimeSync::TimeSync(Instance &aInstance) , mNetworkTimeOffset(0) , mTimeSyncCallback(NULL) , mTimeSyncCallbackContext(NULL) - , mNotifierCallback(aInstance, &TimeSync::HandleStateChanged, this) + , mNotifierCallback(aInstance, &TimeSync::HandleNotifierEvents, this) , mTimer(aInstance, HandleTimeout, this) , mCurrentStatus(OT_NETWORK_TIME_UNSYNCHRONIZED) { @@ -173,16 +173,16 @@ exit: } #endif // OPENTHREAD_FTD -void TimeSync::HandleStateChanged(otChangedFlags aFlags) +void TimeSync::HandleNotifierEvents(Events aEvents) { bool stateChanged = false; - if ((aFlags & OT_CHANGED_THREAD_ROLE) != 0) + if (aEvents.Contains(kEventThreadRoleChanged)) { stateChanged = true; } - if ((aFlags & OT_CHANGED_THREAD_PARTITION_ID) != 0 && !Get().IsLeader()) + if (aEvents.Contains(kEventThreadPartitionIdChanged) && !Get().IsLeader()) { // Partition has changed. Accept any network time currently being seeded on the new partition // and don't attempt to forward the currently held network time from the previous partition. @@ -209,9 +209,9 @@ void TimeSync::HandleTimeout(void) CheckAndHandleChanges(false); } -void TimeSync::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void TimeSync::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } void TimeSync::HandleTimeout(Timer &aTimer) diff --git a/src/core/thread/time_sync_service.hpp b/src/core/thread/time_sync_service.hpp index 8563b340f..74785656b 100644 --- a/src/core/thread/time_sync_service.hpp +++ b/src/core/thread/time_sync_service.hpp @@ -157,7 +157,7 @@ public: * @param[in] aFlags Flags that denote the state change events. * */ - void HandleStateChanged(otChangedFlags aFlags); + void HandleNotifierEvents(Events aEvents); /** * Callback to be called when timer expires. @@ -173,7 +173,7 @@ private: * @param[in] aFlags Flags that denote the state change events. * */ - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); /** * Callback to be called when timer expires. diff --git a/src/core/utils/channel_manager.cpp b/src/core/utils/channel_manager.cpp index 5039f9451..dfef0bb3f 100644 --- a/src/core/utils/channel_manager.cpp +++ b/src/core/utils/channel_manager.cpp @@ -51,7 +51,7 @@ ChannelManager::ChannelManager(Instance &aInstance) , mSupportedChannelMask(0) , mFavoredChannelMask(0) , mActiveTimestamp(0) - , mNotifierCallback(aInstance, &ChannelManager::HandleStateChanged, this) + , mNotifierCallback(aInstance, &ChannelManager::HandleNotifierEvents, this) , mDelay(kMinimumDelay) , mChannel(0) , mState(kStateIdle) @@ -77,7 +77,7 @@ void ChannelManager::RequestChannelChange(uint8_t aChannel) mTimer.Start(1 + Random::NonCrypto::GetUint32InRange(0, kRequestStartJitterInterval)); - Get().Signal(OT_CHANGED_CHANNEL_MANAGER_NEW_CHANNEL); + Get().Signal(kEventChannelManagerNewChannelChanged); exit: return; @@ -252,14 +252,14 @@ void ChannelManager::HandleTimer(void) } } -void ChannelManager::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aChangedFlags) +void ChannelManager::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aChangedFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void ChannelManager::HandleStateChanged(otChangedFlags aChangedFlags) +void ChannelManager::HandleNotifierEvents(Events aEvents) { - VerifyOrExit((aChangedFlags & OT_CHANGED_THREAD_CHANNEL) != 0, OT_NOOP); + VerifyOrExit(aEvents.Contains(kEventThreadChannelChanged), OT_NOOP); VerifyOrExit(mChannel == Get().GetPanChannel(), OT_NOOP); mState = kStateIdle; diff --git a/src/core/utils/channel_manager.hpp b/src/core/utils/channel_manager.hpp index 18e8f9e66..21416fbdc 100644 --- a/src/core/utils/channel_manager.hpp +++ b/src/core/utils/channel_manager.hpp @@ -92,7 +92,7 @@ public: * * A subsequent call to this method will cancel an ongoing previously requested channel change. * - * If the requested channel changes, it will trigger a `Notifier` event `OT_CHANGED_CHANNEL_MANAGER_NEW_CHANNEL`. + * If the requested channel changes, it will trigger a `Notifier` event `kEventChannelManagerNewChannelChanged`. * * @param[in] aChannel The new channel for the Thread network. * @@ -272,8 +272,8 @@ private: static void HandleTimer(Timer &aTimer); void HandleTimer(void); - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aChangedFlags); - void HandleStateChanged(otChangedFlags aChangedFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); void PreparePendingDataset(void); void StartAutoSelectTimer(void); diff --git a/src/core/utils/child_supervision.cpp b/src/core/utils/child_supervision.cpp index ac42212eb..f81ac9330 100644 --- a/src/core/utils/child_supervision.cpp +++ b/src/core/utils/child_supervision.cpp @@ -51,7 +51,7 @@ ChildSupervisor::ChildSupervisor(Instance &aInstance) : InstanceLocator(aInstance) , mSupervisionInterval(kDefaultSupervisionInterval) , mTimer(aInstance, ChildSupervisor::HandleTimer, this) - , mNotifierCallback(aInstance, &ChildSupervisor::HandleStateChanged, this) + , mNotifierCallback(aInstance, &ChildSupervisor::HandleNotifierEvents, this) { } @@ -162,14 +162,14 @@ void ChildSupervisor::CheckState(void) } } -void ChildSupervisor::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void ChildSupervisor::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void ChildSupervisor::HandleStateChanged(otChangedFlags aFlags) +void ChildSupervisor::HandleNotifierEvents(Events aEvents) { - if ((aFlags & (OT_CHANGED_THREAD_ROLE | OT_CHANGED_THREAD_CHILD_ADDED | OT_CHANGED_THREAD_CHILD_REMOVED)) != 0) + if (aEvents.ContainsAny(kEventThreadRoleChanged | kEventThreadChildAdded | kEventThreadChildRemoved)) { CheckState(); } diff --git a/src/core/utils/child_supervision.hpp b/src/core/utils/child_supervision.hpp index 9c6666bb3..180fed98e 100644 --- a/src/core/utils/child_supervision.hpp +++ b/src/core/utils/child_supervision.hpp @@ -160,8 +160,8 @@ private: void CheckState(void); static void HandleTimer(Timer &aTimer); void HandleTimer(void); - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); uint16_t mSupervisionInterval; TimerMilli mTimer; diff --git a/src/core/utils/jam_detector.cpp b/src/core/utils/jam_detector.cpp index 99b76eb9f..a2e645d52 100644 --- a/src/core/utils/jam_detector.cpp +++ b/src/core/utils/jam_detector.cpp @@ -49,7 +49,7 @@ JamDetector::JamDetector(Instance &aInstance) : InstanceLocator(aInstance) , mHandler(NULL) , mContext(NULL) - , mNotifierCallback(aInstance, HandleStateChanged, this) + , mNotifierCallback(aInstance, HandleNotifierEvents, this) , mTimer(aInstance, JamDetector::HandleTimer, this) , mHistoryBitmap(0) , mCurSecondStartTime(0) @@ -271,14 +271,14 @@ void JamDetector::SetJamState(bool aNewState) } } -void JamDetector::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void JamDetector::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void JamDetector::HandleStateChanged(otChangedFlags aFlags) +void JamDetector::HandleNotifierEvents(Events aEvents) { - if (aFlags & OT_CHANGED_THREAD_ROLE) + if (aEvents.Contains(kEventThreadRoleChanged)) { CheckState(); } diff --git a/src/core/utils/jam_detector.hpp b/src/core/utils/jam_detector.hpp index a0ce15dcc..3713affcc 100644 --- a/src/core/utils/jam_detector.hpp +++ b/src/core/utils/jam_detector.hpp @@ -190,8 +190,8 @@ private: void HandleTimer(void); void UpdateHistory(bool aDidExceedThreshold); void UpdateJamState(void); - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); Handler mHandler; // Handler/callback to inform about jamming state void * mContext; // Context for handler/callback diff --git a/src/core/utils/otns.cpp b/src/core/utils/otns.cpp index 16e7f37d4..567019792 100644 --- a/src/core/utils/otns.cpp +++ b/src/core/utils/otns.cpp @@ -86,24 +86,24 @@ void Otns::EmitStatus(const char *aFmt, ...) otPlatOtnsStatus(statusStr); } -void Otns::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void Otns::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void Otns::HandleStateChanged(otChangedFlags aFlags) +void Otns::HandleNotifierEvents(Events aEvents) { - if ((aFlags & OT_CHANGED_THREAD_ROLE) != 0) + if (aEvents.Contains(kEventThreadRoleChanged)) { EmitStatus("role=%d", Get().GetRole()); } - if ((aFlags & OT_CHANGED_THREAD_PARTITION_ID) != 0) + if (aEvents.Contains(kEventThreadPartitionIdChanged)) { EmitStatus("parid=%x", Get().GetLeaderData().GetPartitionId()); } - if ((aFlags & OT_CHANGED_JOINER_STATE) != 0) + if (aEvents.Contains(kEventJoinerStateChanged)) { EmitStatus("joiner_state=%d", Get().GetState()); } diff --git a/src/core/utils/otns.hpp b/src/core/utils/otns.hpp index ac23fedff..21692c58c 100644 --- a/src/core/utils/otns.hpp +++ b/src/core/utils/otns.hpp @@ -67,7 +67,7 @@ public: */ explicit Otns(Instance &aInstance) : InstanceLocator(aInstance) - , mNotifierCallback(aInstance, &Otns::HandleStateChanged, this) + , mNotifierCallback(aInstance, &Otns::HandleNotifierEvents, this) { } @@ -127,8 +127,8 @@ public: private: static void EmitStatus(const char *aFmt, ...); - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); Notifier::Callback mNotifierCallback; }; diff --git a/src/core/utils/slaac_address.cpp b/src/core/utils/slaac_address.cpp index 0b13a0dde..e126f1490 100644 --- a/src/core/utils/slaac_address.cpp +++ b/src/core/utils/slaac_address.cpp @@ -51,7 +51,7 @@ Slaac::Slaac(Instance &aInstance) : InstanceLocator(aInstance) , mEnabled(true) , mFilter(NULL) - , mNotifierCallback(aInstance, &Slaac::HandleStateChanged, this) + , mNotifierCallback(aInstance, &Slaac::HandleNotifierEvents, this) { memset(mAddresses, 0, sizeof(mAddresses)); } @@ -99,23 +99,23 @@ bool Slaac::ShouldFilter(const otIp6Prefix &aPrefix) const return (mFilter != NULL) && mFilter(&GetInstance(), &aPrefix); } -void Slaac::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags) +void Slaac::HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents) { - aCallback.GetOwner().HandleStateChanged(aFlags); + aCallback.GetOwner().HandleNotifierEvents(aEvents); } -void Slaac::HandleStateChanged(otChangedFlags aFlags) +void Slaac::HandleNotifierEvents(Events aEvents) { UpdateMode mode = kModeNone; VerifyOrExit(mEnabled, OT_NOOP); - if (aFlags & OT_CHANGED_THREAD_NETDATA) + if (aEvents.Contains(kEventThreadNetdataChanged)) { mode |= kModeAdd | kModeRemove; } - if (aFlags & OT_CHANGED_IP6_ADDRESS_REMOVED) + if (aEvents.Contains(kEventIp6AddressRemoved)) { // When an IPv6 address is removed, we ensure to check if a SLAAC address // needs to be added (replacing the removed address). diff --git a/src/core/utils/slaac_address.hpp b/src/core/utils/slaac_address.hpp index 09a9baea2..9744e36ff 100644 --- a/src/core/utils/slaac_address.hpp +++ b/src/core/utils/slaac_address.hpp @@ -161,8 +161,8 @@ private: bool ShouldFilter(const otIp6Prefix &aPrefix) const; void Update(UpdateMode aMode); void GetIidSecretKey(IidSecretKey &aKey) const; - static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags); - void HandleStateChanged(otChangedFlags aFlags); + static void HandleNotifierEvents(Notifier::Callback &aCallback, Events aEvents); + void HandleNotifierEvents(Events aEvents); bool mEnabled; otIp6SlaacPrefixFilter mFilter;