mirror of
https://github.com/espressif/openthread.git
synced 2026-08-04 09:57:47 +00:00
[notifier] always signal changed state/config for the first time (#2818)
This commit adds new logic in `Notifier` class (and how it is used) to ensure when state/configuration is changed, each of the OT_CHANGED_* events (e.g., channel, network name) is signaled for the first time (even in case new set value is same as before). This change addresses an issue where if user sets a parameter (using OpenThread public APIs) before starting Thread operation the event indicating the change would not be emitted. This commit also defines `otChangedFlags` and `Notifier::Flags` types, and updates the logging in `Notifier` to use `String` class.
This commit is contained in:
committed by
Jonathan Hui
parent
d5797546e1
commit
9ce38e0161
@@ -250,6 +250,13 @@ enum
|
||||
OT_CHANGED_CHANNEL_MANAGER_NEW_CHANNEL = 1 << 23, ///< Channel Manager new pending Thread channel changed
|
||||
};
|
||||
|
||||
/**
|
||||
* This type represents a bit-field indicating specific state/configuration that has changed. See `OT_CHANGED_*`
|
||||
* definitions.
|
||||
*
|
||||
*/
|
||||
typedef uint32_t otChangedFlags;
|
||||
|
||||
/**
|
||||
* This function pointer is called to notify certain configuration or state changes within OpenThread.
|
||||
*
|
||||
@@ -257,7 +264,7 @@ enum
|
||||
* @param[in] aContext A pointer to application-specific context.
|
||||
*
|
||||
*/
|
||||
typedef void(OTCALL *otStateChangedCallback)(uint32_t aFlags, void *aContext);
|
||||
typedef void(OTCALL *otStateChangedCallback)(otChangedFlags aFlags, void *aContext);
|
||||
|
||||
/**
|
||||
* This function registers a callback to indicate when certain configuration or state changes within OpenThread.
|
||||
|
||||
+3
-3
@@ -3478,7 +3478,7 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void OTCALL Interpreter::s_HandleNetifStateChanged(uint32_t aFlags, void *aContext)
|
||||
void OTCALL Interpreter::s_HandleNetifStateChanged(otChangedFlags aFlags, void *aContext)
|
||||
{
|
||||
#ifdef OTDLL
|
||||
otCliContext *cliContext = static_cast<otCliContext *>(aContext);
|
||||
@@ -3489,9 +3489,9 @@ void OTCALL Interpreter::s_HandleNetifStateChanged(uint32_t aFlags, void *aConte
|
||||
}
|
||||
|
||||
#ifdef OTDLL
|
||||
void Interpreter::HandleNetifStateChanged(otInstance *mInstance, uint32_t aFlags)
|
||||
void Interpreter::HandleNetifStateChanged(otInstance *mInstance, otChangedFlags aFlags)
|
||||
#else
|
||||
void Interpreter::HandleNetifStateChanged(uint32_t aFlags)
|
||||
void Interpreter::HandleNetifStateChanged(otChangedFlags aFlags)
|
||||
#endif
|
||||
{
|
||||
VerifyOrExit((aFlags & OT_CHANGED_THREAD_NETDATA) != 0);
|
||||
|
||||
+3
-3
@@ -330,7 +330,7 @@ private:
|
||||
static void s_HandlePingTimer(Timer &aTimer);
|
||||
#endif
|
||||
static void OTCALL s_HandleActiveScanResult(otActiveScanResult *aResult, void *aContext);
|
||||
static void OTCALL s_HandleNetifStateChanged(uint32_t aFlags, void *aContext);
|
||||
static void OTCALL s_HandleNetifStateChanged(otChangedFlags aFlags, void *aContext);
|
||||
#ifndef OTDLL
|
||||
static void s_HandleLinkPcapReceive(const otRadioFrame *aFrame, void *aContext);
|
||||
#endif
|
||||
@@ -360,9 +360,9 @@ private:
|
||||
#endif
|
||||
void HandleActiveScanResult(otActiveScanResult *aResult);
|
||||
#ifdef OTDLL
|
||||
void HandleNetifStateChanged(otInstance *aInstance, uint32_t aFlags);
|
||||
void HandleNetifStateChanged(otInstance *aInstance, otChangedFlags aFlags);
|
||||
#else
|
||||
void HandleNetifStateChanged(uint32_t aFlags);
|
||||
void HandleNetifStateChanged(otChangedFlags aFlags);
|
||||
#endif
|
||||
#ifndef OTDLL
|
||||
void HandleLinkPcapReceive(const otRadioFrame *aFrame);
|
||||
|
||||
@@ -50,7 +50,8 @@ Notifier::Callback::Callback(Handler aHandler, void *aOwner)
|
||||
|
||||
Notifier::Notifier(Instance &aInstance)
|
||||
: InstanceLocator(aInstance)
|
||||
, mFlags(0)
|
||||
, mFlagsToSignal(0)
|
||||
, mSignaledFlags(0)
|
||||
, mTask(aInstance, &Notifier::HandleStateChanged, this)
|
||||
, mCallbacks(NULL)
|
||||
{
|
||||
@@ -149,12 +150,21 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void Notifier::SetFlags(uint32_t aFlags)
|
||||
void Notifier::Signal(otChangedFlags aFlags)
|
||||
{
|
||||
mFlags |= aFlags;
|
||||
mFlagsToSignal |= aFlags;
|
||||
mSignaledFlags |= aFlags;
|
||||
mTask.Post();
|
||||
}
|
||||
|
||||
void Notifier::SignalIfFirst(otChangedFlags aFlags)
|
||||
{
|
||||
if (!HasSignaled(aFlags))
|
||||
{
|
||||
Signal(aFlags);
|
||||
}
|
||||
}
|
||||
|
||||
void Notifier::HandleStateChanged(Tasklet &aTasklet)
|
||||
{
|
||||
aTasklet.GetOwner<Notifier>().HandleStateChanged();
|
||||
@@ -162,11 +172,11 @@ void Notifier::HandleStateChanged(Tasklet &aTasklet)
|
||||
|
||||
void Notifier::HandleStateChanged(void)
|
||||
{
|
||||
uint32_t flags = mFlags;
|
||||
otChangedFlags flags = mFlagsToSignal;
|
||||
|
||||
VerifyOrExit(flags != 0);
|
||||
|
||||
mFlags = 0;
|
||||
mFlagsToSignal = 0;
|
||||
|
||||
LogChangedFlags(flags);
|
||||
|
||||
@@ -194,35 +204,29 @@ exit:
|
||||
|
||||
#if (OPENTHREAD_CONFIG_LOG_LEVEL >= OT_LOG_LEVEL_INFO) && (OPENTHREAD_CONFIG_LOG_MAC == 1)
|
||||
|
||||
void Notifier::LogChangedFlags(uint32_t aFlags) const
|
||||
void Notifier::LogChangedFlags(otChangedFlags aFlags) const
|
||||
{
|
||||
uint32_t flags = aFlags;
|
||||
char stringBuffer[kFlagsStringBufferSize];
|
||||
char * buf = stringBuffer;
|
||||
int len = sizeof(stringBuffer) - 1;
|
||||
int charsWritten;
|
||||
otChangedFlags flags = aFlags;
|
||||
bool isFirst = true;
|
||||
String<kFlagsStringBufferSize> string;
|
||||
|
||||
for (uint8_t bit = 0; bit < 32; bit++)
|
||||
for (uint8_t bit = 0; bit < sizeof(otChangedFlags) * CHAR_BIT; bit++)
|
||||
{
|
||||
VerifyOrExit(flags != 0);
|
||||
|
||||
if (flags & (1 << bit))
|
||||
{
|
||||
charsWritten = snprintf(buf, static_cast<size_t>(len), "%s ", FlagToString(1 << bit));
|
||||
VerifyOrExit(charsWritten >= 0 && charsWritten < len);
|
||||
buf += charsWritten;
|
||||
len -= charsWritten;
|
||||
|
||||
SuccessOrExit(string.Append("%s%s", isFirst ? "" : " ", FlagToString(1 << bit)));
|
||||
isFirst = false;
|
||||
flags ^= (1 << bit);
|
||||
}
|
||||
}
|
||||
|
||||
exit:
|
||||
stringBuffer[sizeof(stringBuffer) - 1] = 0;
|
||||
otLogInfoCore(GetInstance(), "Notifier: StateChanged (0x%04x) [ %s] ", aFlags, stringBuffer);
|
||||
otLogInfoCore(GetInstance(), "Notifier: StateChanged (0x%04x) [%s] ", aFlags, string.AsCString());
|
||||
}
|
||||
|
||||
const char *Notifier::FlagToString(uint32_t aFlag) const
|
||||
const char *Notifier::FlagToString(otChangedFlags aFlag) const
|
||||
{
|
||||
const char *retval = "(unknown)";
|
||||
|
||||
@@ -333,15 +337,13 @@ const char *Notifier::FlagToString(uint32_t aFlag) const
|
||||
|
||||
#else // #if (OPENTHREAD_CONFIG_LOG_LEVEL >= OT_LOG_LEVEL_INFO) && (OPENTHREAD_CONFIG_LOG_MAC == 1)
|
||||
|
||||
void Notifier::LogChangedFlags(uint32_t aFlags) const
|
||||
void Notifier::LogChangedFlags(otChangedFlags) const
|
||||
{
|
||||
OT_UNUSED_VARIABLE(aFlags);
|
||||
}
|
||||
|
||||
const char *Notifier::FlagToString(uint32_t aFlag) const
|
||||
const char *Notifier::FlagToString(otChangedFlags) const
|
||||
{
|
||||
OT_UNUSED_VARIABLE(aFlag);
|
||||
return NULL;
|
||||
return "";
|
||||
}
|
||||
|
||||
#endif // #if (OPENTHREAD_CONFIG_LOG_LEVEL >= OT_LOG_LEVEL_INFO) && (OPENTHREAD_CONFIG_LOG_MAC == 1)
|
||||
|
||||
@@ -79,11 +79,10 @@ public:
|
||||
* This type defines the function pointer which is called to notify of state or configuration changes.
|
||||
*
|
||||
* @param[in] aCallback A reference to callback instance.
|
||||
* @param[in] aFlags A bit-field indicating specific state that has changed. See `OT_CHANGED_<STATE>`
|
||||
* definitions in `instance.h`.
|
||||
* @param[in] aFlags A bit-field indicating specific state or configuration that has changed.
|
||||
*
|
||||
*/
|
||||
typedef void (*Handler)(Callback &aCallback, uint32_t aFlags);
|
||||
typedef void (*Handler)(Callback &aCallback, otChangedFlags aFlags);
|
||||
|
||||
/**
|
||||
* This constructor initializes a `Callback` instance
|
||||
@@ -149,22 +148,40 @@ public:
|
||||
void RemoveCallback(otStateChangedCallback aCallback, void *aContext);
|
||||
|
||||
/**
|
||||
* This method schedules notification of changed flags.
|
||||
*
|
||||
* The @p aFlags are combined (bitwise-or) with other flags that have not been provided in a callback yet.
|
||||
* This method schedules signaling of changed flags.
|
||||
*
|
||||
* @param[in] aFlags A bit-field indicating what configuration or state has changed.
|
||||
*
|
||||
*/
|
||||
void SetFlags(uint32_t aFlags);
|
||||
void Signal(otChangedFlags aFlags);
|
||||
|
||||
/**
|
||||
* This method indicates whether or not a state changed callback is pending.
|
||||
* This method schedules signaling of changed flags only if the set of flags has not been signaled before (first
|
||||
* time signal).
|
||||
*
|
||||
* @retval TRUE if a state changed callback is pending, FALSE otherwise.
|
||||
* @param[in] aFlags A bit-field indicating what configuration or state has changed.
|
||||
*
|
||||
*/
|
||||
bool IsPending(void) const { return (mFlags != 0); }
|
||||
void SignalIfFirst(otChangedFlags aFlags);
|
||||
|
||||
/**
|
||||
* This method indicates whether or not a changed callback is pending.
|
||||
*
|
||||
* @returns TRUE if a state changed callback is pending, FALSE otherwise.
|
||||
*
|
||||
*/
|
||||
bool IsPending(void) const { return (mFlagsToSignal != 0); }
|
||||
|
||||
/**
|
||||
* This method indicates whether or not a changed notification for a given set of flags has been signaled before.
|
||||
*
|
||||
* @param[in] aFlags A bit-field containing the flag-bits 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.
|
||||
*
|
||||
*/
|
||||
bool HasSignaled(otChangedFlags aFlags) const { return (mSignaledFlags & aFlags) == aFlags; }
|
||||
|
||||
private:
|
||||
enum
|
||||
@@ -182,10 +199,11 @@ private:
|
||||
static void HandleStateChanged(Tasklet &aTasklet);
|
||||
void HandleStateChanged(void);
|
||||
|
||||
void LogChangedFlags(uint32_t aFlags) const;
|
||||
const char *FlagToString(uint32_t aFlag) const;
|
||||
void LogChangedFlags(otChangedFlags aFlags) const;
|
||||
const char *FlagToString(otChangedFlags aFlag) const;
|
||||
|
||||
uint32_t mFlags;
|
||||
otChangedFlags mFlagsToSignal;
|
||||
otChangedFlags mSignaledFlags;
|
||||
Tasklet mTask;
|
||||
Callback * mCallbacks;
|
||||
ExternalCallback mExternalCallbacks[kMaxExternalHandlers];
|
||||
|
||||
+24
-3
@@ -514,7 +514,7 @@ otError Mac::SetPanChannel(uint8_t aChannel)
|
||||
|
||||
VerifyOrExit(OT_RADIO_CHANNEL_MIN <= aChannel && aChannel <= OT_RADIO_CHANNEL_MAX, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
VerifyOrExit(mPanChannel != aChannel);
|
||||
VerifyOrExit(mPanChannel != aChannel, GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_CHANNEL));
|
||||
|
||||
mPanChannel = aChannel;
|
||||
mCcaSuccessRateTracker.Reset();
|
||||
@@ -525,6 +525,8 @@ otError Mac::SetPanChannel(uint8_t aChannel)
|
||||
|
||||
UpdateIdleMode();
|
||||
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_CHANNEL);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
@@ -576,12 +578,22 @@ exit:
|
||||
}
|
||||
|
||||
otError Mac::SetNetworkName(const char *aNetworkName)
|
||||
{
|
||||
return SetNetworkName(aNetworkName, static_cast<uint8_t>(strnlen(aNetworkName, OT_NETWORK_NAME_MAX_SIZE + 1)));
|
||||
}
|
||||
|
||||
otError Mac::SetNetworkName(const char *aBuffer, uint8_t aLength)
|
||||
{
|
||||
otError error = OT_ERROR_NONE;
|
||||
uint8_t len = static_cast<uint8_t>(strnlen(aBuffer, aLength));
|
||||
|
||||
VerifyOrExit(strlen(aNetworkName) <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_INVALID_ARGS);
|
||||
VerifyOrExit(len <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_INVALID_ARGS);
|
||||
VerifyOrExit(memcmp(mNetworkName.m8, aBuffer, len) != 0,
|
||||
GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_NETWORK_NAME));
|
||||
|
||||
(void)strlcpy(mNetworkName.m8, aNetworkName, sizeof(mNetworkName));
|
||||
memcpy(mNetworkName.m8, aBuffer, len);
|
||||
mNetworkName.m8[len] = 0;
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_NETWORK_NAME);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -589,15 +601,24 @@ exit:
|
||||
|
||||
otError Mac::SetPanId(PanId aPanId)
|
||||
{
|
||||
VerifyOrExit(mPanId != aPanId, GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_PANID));
|
||||
mPanId = aPanId;
|
||||
otPlatRadioSetPanId(&GetInstance(), mPanId);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_PANID);
|
||||
|
||||
exit:
|
||||
return OT_ERROR_NONE;
|
||||
}
|
||||
|
||||
otError Mac::SetExtendedPanId(const uint8_t *aExtPanId)
|
||||
{
|
||||
VerifyOrExit(memcmp(mExtendedPanId.m8, aExtPanId, sizeof(mExtendedPanId)) != 0,
|
||||
GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_EXT_PANID));
|
||||
|
||||
memcpy(mExtendedPanId.m8, aExtPanId, sizeof(mExtendedPanId));
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_EXT_PANID);
|
||||
|
||||
exit:
|
||||
return OT_ERROR_NONE;
|
||||
}
|
||||
|
||||
|
||||
+15
-2
@@ -653,13 +653,26 @@ public:
|
||||
/**
|
||||
* This method sets the IEEE 802.15.4 Network Name.
|
||||
*
|
||||
* @param[in] aNetworkName A pointer to the IEEE 802.15.4 Network Name.
|
||||
* @param[in] aNetworkName A pointer to the string. Must be null terminated.
|
||||
*
|
||||
* @retval OT_ERROR_NONE Successfully set the IEEE 802.15.4 Network Name.
|
||||
* @retval OT_ERROR_NONE Successfully set the IEEE 802.15.4 Network Name.
|
||||
* @retval OT_ERROR_INVALID_ARGS Given name is too long.
|
||||
*
|
||||
*/
|
||||
otError SetNetworkName(const char *aNetworkName);
|
||||
|
||||
/**
|
||||
* This method sets the IEEE 802.15.4 Network Name.
|
||||
*
|
||||
* @param[in] aBuffer A pointer to the char buffer containing the name. Does not need to be null terminated.
|
||||
* @param[in] aLength Number of chars in the buffer.
|
||||
*
|
||||
* @retval OT_ERROR_NONE Successfully set the IEEE 802.15.4 Network Name.
|
||||
* @retval OT_ERROR_INVALID_ARGS Given name is too long.
|
||||
*
|
||||
*/
|
||||
otError SetNetworkName(const char *aBuffer, uint8_t aLength);
|
||||
|
||||
/**
|
||||
* This method returns the IEEE 802.15.4 PAN ID.
|
||||
*
|
||||
|
||||
@@ -122,7 +122,7 @@ otError Commissioner::Stop(void)
|
||||
GetNetif().GetCoapSecure().Stop();
|
||||
|
||||
mState = OT_COMMISSIONER_STATE_DISABLED;
|
||||
GetNotifier().SetFlags(OT_CHANGED_COMMISSIONER_STATE);
|
||||
GetNotifier().Signal(OT_CHANGED_COMMISSIONER_STATE);
|
||||
RemoveCoapResources();
|
||||
ClearJoiners();
|
||||
mTransmitAttempts = 0;
|
||||
@@ -681,7 +681,7 @@ exit:
|
||||
}
|
||||
}
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_COMMISSIONER_STATE);
|
||||
GetNotifier().Signal(OT_CHANGED_COMMISSIONER_STATE);
|
||||
}
|
||||
|
||||
otError Commissioner::SendKeepAlive(void)
|
||||
|
||||
@@ -522,12 +522,11 @@ void Dataset::Remove(uint8_t *aStart, uint8_t aLength)
|
||||
|
||||
otError Dataset::ApplyConfiguration(Instance &aInstance) const
|
||||
{
|
||||
ThreadNetif &netif = aInstance.GetThreadNetif();
|
||||
Notifier & notifier = aInstance.GetNotifier();
|
||||
Mac::Mac & mac = netif.GetMac();
|
||||
otError error = OT_ERROR_NONE;
|
||||
const Tlv * cur = reinterpret_cast<const Tlv *>(mTlvs);
|
||||
const Tlv * end = reinterpret_cast<const Tlv *>(mTlvs + mLength);
|
||||
ThreadNetif &netif = aInstance.GetThreadNetif();
|
||||
Mac::Mac & mac = netif.GetMac();
|
||||
otError error = OT_ERROR_NONE;
|
||||
const Tlv * cur = reinterpret_cast<const Tlv *>(mTlvs);
|
||||
const Tlv * end = reinterpret_cast<const Tlv *>(mTlvs + mLength);
|
||||
|
||||
VerifyOrExit(IsValid(), error = OT_ERROR_PARSE);
|
||||
|
||||
@@ -539,63 +538,30 @@ otError Dataset::ApplyConfiguration(Instance &aInstance) const
|
||||
{
|
||||
uint8_t channel = static_cast<uint8_t>(static_cast<const ChannelTlv *>(cur)->GetChannel());
|
||||
|
||||
if (mac.GetPanChannel() != channel)
|
||||
error = mac.SetPanChannel(channel);
|
||||
|
||||
if (error != OT_ERROR_NONE)
|
||||
{
|
||||
error = mac.SetPanChannel(channel);
|
||||
|
||||
if (error != OT_ERROR_NONE)
|
||||
{
|
||||
otLogWarnMeshCoP(aInstance, "DatasetManager::ApplyConfiguration() Failed to set channel to %d (%s)",
|
||||
channel, otThreadErrorToString(error));
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
notifier.SetFlags(OT_CHANGED_THREAD_CHANNEL);
|
||||
otLogWarnMeshCoP(aInstance, "DatasetManager::ApplyConfiguration() Failed to set channel to %d (%s)",
|
||||
channel, otThreadErrorToString(error));
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case Tlv::kPanId:
|
||||
{
|
||||
uint16_t panid = static_cast<const PanIdTlv *>(cur)->GetPanId();
|
||||
|
||||
if (mac.GetPanId() != panid)
|
||||
{
|
||||
mac.SetPanId(panid);
|
||||
notifier.SetFlags(OT_CHANGED_THREAD_PANID);
|
||||
}
|
||||
|
||||
mac.SetPanId(static_cast<const PanIdTlv *>(cur)->GetPanId());
|
||||
break;
|
||||
}
|
||||
|
||||
case Tlv::kExtendedPanId:
|
||||
{
|
||||
const ExtendedPanIdTlv *extpanid = static_cast<const ExtendedPanIdTlv *>(cur);
|
||||
|
||||
if (memcmp(mac.GetExtendedPanId(), extpanid->GetExtendedPanId(), OT_EXT_PAN_ID_SIZE) != 0)
|
||||
{
|
||||
mac.SetExtendedPanId(extpanid->GetExtendedPanId());
|
||||
notifier.SetFlags(OT_CHANGED_THREAD_EXT_PANID);
|
||||
}
|
||||
|
||||
mac.SetExtendedPanId(static_cast<const ExtendedPanIdTlv *>(cur)->GetExtendedPanId());
|
||||
break;
|
||||
}
|
||||
|
||||
case Tlv::kNetworkName:
|
||||
{
|
||||
const NetworkNameTlv *name = static_cast<const NetworkNameTlv *>(cur);
|
||||
otNetworkName networkName;
|
||||
|
||||
memcpy(networkName.m8, name->GetNetworkName(), name->GetLength());
|
||||
networkName.m8[name->GetLength()] = '\0';
|
||||
|
||||
if (strcmp(networkName.m8, mac.GetNetworkName()) != 0)
|
||||
{
|
||||
mac.SetNetworkName(networkName.m8);
|
||||
notifier.SetFlags(OT_CHANGED_THREAD_NETWORK_NAME);
|
||||
}
|
||||
|
||||
mac.SetNetworkName(name->GetNetworkName(), name->GetLength());
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ otError Joiner::Start(const char * aPSKd,
|
||||
|
||||
VerifyOrExit(mState == OT_JOINER_STATE_IDLE, error = OT_ERROR_BUSY);
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_JOINER_STATE);
|
||||
GetNotifier().Signal(OT_CHANGED_JOINER_STATE);
|
||||
|
||||
// use extended address based on factory-assigned IEEE EUI-64
|
||||
GetJoinerId(joinerId);
|
||||
@@ -168,7 +168,7 @@ void Joiner::Complete(otError aError)
|
||||
ThreadNetif &netif = GetNetif();
|
||||
mState = OT_JOINER_STATE_IDLE;
|
||||
otError error = OT_ERROR_NOT_FOUND;
|
||||
GetNotifier().SetFlags(OT_CHANGED_JOINER_STATE);
|
||||
GetNotifier().Signal(OT_CHANGED_JOINER_STATE);
|
||||
|
||||
netif.GetCoapSecure().Disconnect();
|
||||
|
||||
|
||||
@@ -71,12 +71,12 @@ JoinerRouter::JoinerRouter(Instance &aInstance)
|
||||
aInstance.GetNotifier().RegisterCallback(mNotifierCallback);
|
||||
}
|
||||
|
||||
void JoinerRouter::HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags)
|
||||
void JoinerRouter::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags)
|
||||
{
|
||||
aCallback.GetOwner<JoinerRouter>().HandleStateChanged(aFlags);
|
||||
}
|
||||
|
||||
void JoinerRouter::HandleStateChanged(uint32_t aFlags)
|
||||
void JoinerRouter::HandleStateChanged(otChangedFlags aFlags)
|
||||
{
|
||||
ThreadNetif &netif = GetNetif();
|
||||
|
||||
|
||||
@@ -88,8 +88,8 @@ private:
|
||||
kDelayJoinEnt = 50, ///< milliseconds
|
||||
};
|
||||
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags);
|
||||
void HandleStateChanged(uint32_t aFlags);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags);
|
||||
void HandleStateChanged(otChangedFlags aFlags);
|
||||
|
||||
static void HandleUdpReceive(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo);
|
||||
void HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
|
||||
|
||||
+10
-10
@@ -146,7 +146,7 @@ otError Netif::SubscribeAllRoutersMulticast(void)
|
||||
}
|
||||
}
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_IP6_MULTICAST_SUBSRCRIBED);
|
||||
GetNotifier().Signal(OT_CHANGED_IP6_MULTICAST_SUBSRCRIBED);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -178,7 +178,7 @@ exit:
|
||||
|
||||
if (error != OT_ERROR_NOT_FOUND)
|
||||
{
|
||||
GetNotifier().SetFlags(OT_CHANGED_IP6_MULTICAST_UNSUBSRCRIBED);
|
||||
GetNotifier().Signal(OT_CHANGED_IP6_MULTICAST_UNSUBSRCRIBED);
|
||||
}
|
||||
|
||||
return error;
|
||||
@@ -198,7 +198,7 @@ otError Netif::SubscribeMulticast(NetifMulticastAddress &aAddress)
|
||||
|
||||
aAddress.mNext = mMulticastAddresses;
|
||||
mMulticastAddresses = &aAddress;
|
||||
GetNotifier().SetFlags(OT_CHANGED_IP6_MULTICAST_SUBSRCRIBED);
|
||||
GetNotifier().Signal(OT_CHANGED_IP6_MULTICAST_SUBSRCRIBED);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -231,7 +231,7 @@ exit:
|
||||
|
||||
if (error != OT_ERROR_NOT_FOUND)
|
||||
{
|
||||
GetNotifier().SetFlags(OT_CHANGED_IP6_MULTICAST_UNSUBSRCRIBED);
|
||||
GetNotifier().Signal(OT_CHANGED_IP6_MULTICAST_UNSUBSRCRIBED);
|
||||
}
|
||||
|
||||
return error;
|
||||
@@ -290,7 +290,7 @@ otError Netif::SubscribeExternalMulticast(const Address &aAddress)
|
||||
entry->mAddress = aAddress;
|
||||
entry->mNext = mMulticastAddresses;
|
||||
mMulticastAddresses = entry;
|
||||
GetNotifier().SetFlags(OT_CHANGED_IP6_MULTICAST_SUBSRCRIBED);
|
||||
GetNotifier().Signal(OT_CHANGED_IP6_MULTICAST_SUBSRCRIBED);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -330,7 +330,7 @@ otError Netif::UnsubscribeExternalMulticast(const Address &aAddress)
|
||||
// To mark the address entry as unused/available, set the `mNext` pointer back to the entry itself.
|
||||
entry->mNext = entry;
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_IP6_MULTICAST_UNSUBSRCRIBED);
|
||||
GetNotifier().Signal(OT_CHANGED_IP6_MULTICAST_UNSUBSRCRIBED);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -365,7 +365,7 @@ otError Netif::AddUnicastAddress(NetifUnicastAddress &aAddress)
|
||||
aAddress.mNext = mUnicastAddresses;
|
||||
mUnicastAddresses = &aAddress;
|
||||
|
||||
GetNotifier().SetFlags(aAddress.mRloc ? OT_CHANGED_THREAD_RLOC_ADDED : OT_CHANGED_IP6_ADDRESS_ADDED);
|
||||
GetNotifier().Signal(aAddress.mRloc ? OT_CHANGED_THREAD_RLOC_ADDED : OT_CHANGED_IP6_ADDRESS_ADDED);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -398,7 +398,7 @@ exit:
|
||||
|
||||
if (error != OT_ERROR_NOT_FOUND)
|
||||
{
|
||||
GetNotifier().SetFlags(aAddress.mRloc ? OT_CHANGED_THREAD_RLOC_REMOVED : OT_CHANGED_IP6_ADDRESS_REMOVED);
|
||||
GetNotifier().Signal(aAddress.mRloc ? OT_CHANGED_THREAD_RLOC_REMOVED : OT_CHANGED_IP6_ADDRESS_REMOVED);
|
||||
}
|
||||
|
||||
return error;
|
||||
@@ -443,7 +443,7 @@ otError Netif::AddExternalUnicastAddress(const NetifUnicastAddress &aAddress)
|
||||
entry->mNext = mUnicastAddresses;
|
||||
mUnicastAddresses = entry;
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_IP6_ADDRESS_ADDED);
|
||||
GetNotifier().Signal(OT_CHANGED_IP6_ADDRESS_ADDED);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -483,7 +483,7 @@ otError Netif::RemoveExternalUnicastAddress(const Address &aAddress)
|
||||
// To mark the address entry as unused/available, set the `mNext` pointer back to the entry itself.
|
||||
entry->mNext = entry;
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_IP6_ADDRESS_REMOVED);
|
||||
GetNotifier().Signal(OT_CHANGED_IP6_ADDRESS_REMOVED);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
|
||||
@@ -196,12 +196,12 @@ void AnnounceSender::Stop(void)
|
||||
otLogInfoMle(GetInstance(), "Stopping periodic MLE Announcements tx");
|
||||
}
|
||||
|
||||
void AnnounceSender::HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags)
|
||||
void AnnounceSender::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags)
|
||||
{
|
||||
aCallback.GetOwner<AnnounceSender>().HandleStateChanged(aFlags);
|
||||
}
|
||||
|
||||
void AnnounceSender::HandleStateChanged(uint32_t aFlags)
|
||||
void AnnounceSender::HandleStateChanged(otChangedFlags aFlags)
|
||||
{
|
||||
if ((aFlags & OT_CHANGED_THREAD_ROLE) != 0)
|
||||
{
|
||||
|
||||
@@ -162,8 +162,8 @@ private:
|
||||
void CheckState(void);
|
||||
void Stop(void);
|
||||
static void HandleTimer(Timer &aTimer);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags);
|
||||
void HandleStateChanged(uint32_t aFlags);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags);
|
||||
void HandleStateChanged(otChangedFlags aFlags);
|
||||
|
||||
Notifier::Callback mNotifierCallback;
|
||||
};
|
||||
|
||||
@@ -227,12 +227,12 @@ exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
void EnergyScanServer::HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags)
|
||||
void EnergyScanServer::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags)
|
||||
{
|
||||
aCallback.GetOwner<EnergyScanServer>().HandleStateChanged(aFlags);
|
||||
}
|
||||
|
||||
void EnergyScanServer::HandleStateChanged(uint32_t aFlags)
|
||||
void EnergyScanServer::HandleStateChanged(otChangedFlags aFlags)
|
||||
{
|
||||
if ((aFlags & OT_CHANGED_THREAD_NETDATA) != 0 && !mActive &&
|
||||
GetNetif().GetNetworkDataLeader().GetCommissioningData() == NULL)
|
||||
|
||||
@@ -80,8 +80,8 @@ private:
|
||||
static void HandleTimer(Timer &aTimer);
|
||||
void HandleTimer(void);
|
||||
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags);
|
||||
void HandleStateChanged(uint32_t aFlags);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags);
|
||||
void HandleStateChanged(otChangedFlags aFlags);
|
||||
|
||||
otError SendReport(void);
|
||||
|
||||
|
||||
@@ -104,11 +104,12 @@ const uint8_t *KeyManager::GetPSKc(void) const
|
||||
|
||||
void KeyManager::SetPSKc(const uint8_t *aPSKc)
|
||||
{
|
||||
if (memcmp(mPSKc, aPSKc, sizeof(mPSKc)) != 0)
|
||||
{
|
||||
memcpy(mPSKc, aPSKc, sizeof(mPSKc));
|
||||
GetNotifier().SetFlags(OT_CHANGED_PSKC);
|
||||
}
|
||||
VerifyOrExit(memcmp(mPSKc, aPSKc, sizeof(mPSKc)) != 0, GetNotifier().SignalIfFirst(OT_CHANGED_PSKC));
|
||||
memcpy(mPSKc, aPSKc, sizeof(mPSKc));
|
||||
GetNotifier().Signal(OT_CHANGED_PSKC);
|
||||
|
||||
exit:
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -123,7 +124,8 @@ otError KeyManager::SetMasterKey(const otMasterKey &aKey)
|
||||
otError error = OT_ERROR_NONE;
|
||||
Router * routers;
|
||||
|
||||
VerifyOrExit(memcmp(&mMasterKey, &aKey, sizeof(mMasterKey)) != 0);
|
||||
VerifyOrExit(memcmp(&mMasterKey, &aKey, sizeof(mMasterKey)) != 0,
|
||||
GetNotifier().SignalIfFirst(OT_CHANGED_MASTER_KEY));
|
||||
|
||||
mMasterKey = aKey;
|
||||
mKeySequence = 0;
|
||||
@@ -151,7 +153,7 @@ otError KeyManager::SetMasterKey(const otMasterKey &aKey)
|
||||
iter.GetChild()->SetMleFrameCounter(0);
|
||||
}
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER | OT_CHANGED_MASTER_KEY);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER | OT_CHANGED_MASTER_KEY);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -178,10 +180,7 @@ otError KeyManager::ComputeKey(uint32_t aKeySequence, uint8_t *aKey)
|
||||
|
||||
void KeyManager::SetCurrentKeySequence(uint32_t aKeySequence)
|
||||
{
|
||||
if (aKeySequence == mKeySequence)
|
||||
{
|
||||
ExitNow();
|
||||
}
|
||||
VerifyOrExit(aKeySequence != mKeySequence, GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER));
|
||||
|
||||
// Check if the guard timer has expired if key rotation is requested.
|
||||
if ((aKeySequence == (mKeySequence + 1)) && (mKeySwitchGuardTime != 0) && mKeyRotationTimer.IsRunning() &&
|
||||
@@ -202,7 +201,7 @@ void KeyManager::SetCurrentKeySequence(uint32_t aKeySequence)
|
||||
StartKeyRotationTimer();
|
||||
}
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER);
|
||||
|
||||
exit:
|
||||
return;
|
||||
@@ -260,10 +259,12 @@ exit:
|
||||
|
||||
void KeyManager::SetSecurityPolicyFlags(uint8_t aSecurityPolicyFlags)
|
||||
{
|
||||
if (mSecurityPolicyFlags != aSecurityPolicyFlags)
|
||||
Notifier ¬ifier = GetNotifier();
|
||||
|
||||
if (!notifier.HasSignaled(OT_CHANGED_SECURITY_POLICY) || (mSecurityPolicyFlags != aSecurityPolicyFlags))
|
||||
{
|
||||
mSecurityPolicyFlags = aSecurityPolicyFlags;
|
||||
GetNotifier().SetFlags(OT_CHANGED_SECURITY_POLICY);
|
||||
notifier.Signal(OT_CHANGED_SECURITY_POLICY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+13
-8
@@ -294,12 +294,12 @@ exit:
|
||||
|
||||
void Mle::SetRole(otDeviceRole aRole)
|
||||
{
|
||||
VerifyOrExit(aRole != mRole);
|
||||
VerifyOrExit(aRole != mRole, GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_ROLE));
|
||||
|
||||
otLogInfoMle(GetInstance(), "Role %s -> %s", RoleToString(mRole), RoleToString(aRole));
|
||||
|
||||
mRole = aRole;
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_ROLE);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_ROLE);
|
||||
|
||||
exit:
|
||||
return;
|
||||
@@ -805,7 +805,7 @@ otError Mle::UpdateLinkLocalAddress(void)
|
||||
mLinkLocal64.GetAddress().SetIid(netif.GetMac().GetExtAddress());
|
||||
netif.AddUnicastAddress(mLinkLocal64);
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_LL_ADDR);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_LL_ADDR);
|
||||
|
||||
return OT_ERROR_NONE;
|
||||
}
|
||||
@@ -821,6 +821,7 @@ otError Mle::SetMeshLocalPrefix(const uint8_t *aMeshLocalPrefix)
|
||||
|
||||
if (memcmp(mMeshLocal64.GetAddress().mFields.m8, aMeshLocalPrefix, 8) == 0)
|
||||
{
|
||||
GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_ML_ADDR);
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
@@ -872,7 +873,7 @@ otError Mle::SetMeshLocalPrefix(const uint8_t *aMeshLocalPrefix)
|
||||
}
|
||||
|
||||
// Changing the prefix also causes the mesh local address to be different.
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_ML_ADDR);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_ML_ADDR);
|
||||
|
||||
exit:
|
||||
return OT_ERROR_NONE;
|
||||
@@ -922,7 +923,11 @@ void Mle::SetLeaderData(uint32_t aPartitionId, uint8_t aWeighting, uint8_t aLead
|
||||
if (mLeaderData.GetPartitionId() != aPartitionId)
|
||||
{
|
||||
GetNetif().GetMle().HandlePartitionChange();
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_PARTITION_ID);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_PARTITION_ID);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_PARTITION_ID);
|
||||
}
|
||||
|
||||
mLeaderData.SetPartitionId(aPartitionId);
|
||||
@@ -1374,12 +1379,12 @@ exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
void Mle::HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags)
|
||||
void Mle::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags)
|
||||
{
|
||||
aCallback.GetOwner<Mle>().HandleStateChanged(aFlags);
|
||||
}
|
||||
|
||||
void Mle::HandleStateChanged(uint32_t aFlags)
|
||||
void Mle::HandleStateChanged(otChangedFlags aFlags)
|
||||
{
|
||||
ThreadNetif &netif = GetNetif();
|
||||
VerifyOrExit(mRole != OT_DEVICE_ROLE_DISABLED);
|
||||
@@ -1393,7 +1398,7 @@ void Mle::HandleStateChanged(uint32_t aFlags)
|
||||
OT_IP6_ADDRESS_SIZE - OT_IP6_PREFIX_SIZE);
|
||||
|
||||
netif.AddUnicastAddress(mMeshLocal64);
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_ML_ADDR);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_ML_ADDR);
|
||||
}
|
||||
|
||||
if (mRole == OT_DEVICE_ROLE_CHILD && !IsFullThreadDevice())
|
||||
|
||||
@@ -1545,8 +1545,8 @@ private:
|
||||
uint8_t aSecurityLevel,
|
||||
uint8_t * aNonce);
|
||||
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags);
|
||||
void HandleStateChanged(uint32_t aFlags);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags);
|
||||
void HandleStateChanged(otChangedFlags aFlags);
|
||||
static void HandleAttachTimer(Timer &aTimer);
|
||||
void HandleAttachTimer(void);
|
||||
static void HandleDelayedResponseTimer(Timer &aTimer);
|
||||
|
||||
@@ -4517,11 +4517,11 @@ void MleRouter::SignalChildUpdated(otThreadChildTableEvent aEvent, Child &aChild
|
||||
switch (aEvent)
|
||||
{
|
||||
case OT_THREAD_CHILD_TABLE_EVENT_CHILD_ADDED:
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_CHILD_ADDED);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_CHILD_ADDED);
|
||||
break;
|
||||
|
||||
case OT_THREAD_CHILD_TABLE_EVENT_CHILD_REMOVED:
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_CHILD_REMOVED);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_CHILD_REMOVED);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ void LeaderBase::Reset(void)
|
||||
mVersion = static_cast<uint8_t>(otPlatRandomGet());
|
||||
mStableVersion = static_cast<uint8_t>(otPlatRandomGet());
|
||||
mLength = 0;
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_NETDATA);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_NETDATA);
|
||||
}
|
||||
|
||||
otError LeaderBase::GetContext(const Ip6::Address &aAddress, Lowpan::Context &aContext)
|
||||
@@ -431,7 +431,7 @@ otError LeaderBase::SetNetworkData(uint8_t aVersion,
|
||||
|
||||
otDumpDebgNetData(GetInstance(), "set network data", mTlvs, mLength);
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_NETDATA);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_NETDATA);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -457,7 +457,7 @@ otError LeaderBase::SetCommissioningData(const uint8_t *aValue, uint8_t aValueLe
|
||||
}
|
||||
|
||||
mVersion++;
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_NETDATA);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_NETDATA);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
|
||||
@@ -103,7 +103,7 @@ void Leader::IncrementVersion(void)
|
||||
if (GetNetif().GetMle().GetRole() == OT_DEVICE_ROLE_LEADER)
|
||||
{
|
||||
mVersion++;
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_NETDATA);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_NETDATA);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ void Leader::RemoveBorderRouter(uint16_t aRloc16)
|
||||
mStableVersion++;
|
||||
}
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_NETDATA);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_NETDATA);
|
||||
|
||||
exit:
|
||||
return;
|
||||
@@ -772,7 +772,7 @@ otError Leader::RegisterNetworkData(uint16_t aRloc16, uint8_t *aTlvs, uint8_t aT
|
||||
}
|
||||
}
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_NETDATA);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_NETDATA);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
@@ -1179,7 +1179,7 @@ otError Leader::FreeContext(uint8_t aContextId)
|
||||
mContextUsed &= ~(1 << aContextId);
|
||||
mVersion++;
|
||||
mStableVersion++;
|
||||
GetNotifier().SetFlags(OT_CHANGED_THREAD_NETDATA);
|
||||
GetNotifier().Signal(OT_CHANGED_THREAD_NETDATA);
|
||||
return OT_ERROR_NONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ void ChannelManager::RequestChannelChange(uint8_t aChannel)
|
||||
|
||||
mTimer.Start(1 + Random::GetUint32InRange(0, kRequestStartJitterInterval));
|
||||
|
||||
GetNotifier().SetFlags(OT_CHANGED_CHANNEL_MANAGER_NEW_CHANNEL);
|
||||
GetNotifier().Signal(OT_CHANGED_CHANNEL_MANAGER_NEW_CHANNEL);
|
||||
|
||||
exit:
|
||||
return;
|
||||
@@ -256,12 +256,12 @@ void ChannelManager::HandleTimer(void)
|
||||
}
|
||||
}
|
||||
|
||||
void ChannelManager::HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags)
|
||||
void ChannelManager::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags)
|
||||
{
|
||||
aCallback.GetOwner<ChannelManager>().HandleStateChanged(aFlags);
|
||||
}
|
||||
|
||||
void ChannelManager::HandleStateChanged(uint32_t aFlags)
|
||||
void ChannelManager::HandleStateChanged(otChangedFlags aFlags)
|
||||
{
|
||||
VerifyOrExit((aFlags & OT_CHANGED_THREAD_CHANNEL) != 0);
|
||||
VerifyOrExit(mChannel == GetInstance().Get<Mac::Mac>().GetPanChannel());
|
||||
|
||||
@@ -273,8 +273,8 @@ private:
|
||||
|
||||
static void HandleTimer(Timer &aTimer);
|
||||
void HandleTimer(void);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, uint32_t aChangedFlags);
|
||||
void HandleStateChanged(uint32_t aChangedFlags);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aChangedFlags);
|
||||
void HandleStateChanged(otChangedFlags aChangedFlags);
|
||||
void PreparePendingDataset(void);
|
||||
void StartAutoSelectTimer(void);
|
||||
|
||||
|
||||
@@ -167,12 +167,12 @@ void ChildSupervisor::CheckState(void)
|
||||
}
|
||||
}
|
||||
|
||||
void ChildSupervisor::HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags)
|
||||
void ChildSupervisor::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags)
|
||||
{
|
||||
aCallback.GetOwner<ChildSupervisor>().HandleStateChanged(aFlags);
|
||||
}
|
||||
|
||||
void ChildSupervisor::HandleStateChanged(uint32_t aFlags)
|
||||
void ChildSupervisor::HandleStateChanged(otChangedFlags aFlags)
|
||||
{
|
||||
if ((aFlags & (OT_CHANGED_THREAD_ROLE | OT_CHANGED_THREAD_CHILD_ADDED | OT_CHANGED_THREAD_CHILD_REMOVED)) != 0)
|
||||
{
|
||||
|
||||
@@ -159,8 +159,8 @@ private:
|
||||
void CheckState(void);
|
||||
static void HandleTimer(Timer &aTimer);
|
||||
void HandleTimer(void);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags);
|
||||
void HandleStateChanged(uint32_t aFlags);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags);
|
||||
void HandleStateChanged(otChangedFlags aFlags);
|
||||
|
||||
uint16_t mSupervisionInterval;
|
||||
TimerMilli mTimer;
|
||||
|
||||
@@ -278,12 +278,12 @@ void JamDetector::SetJamState(bool aNewState)
|
||||
}
|
||||
}
|
||||
|
||||
void JamDetector::HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags)
|
||||
void JamDetector::HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags)
|
||||
{
|
||||
aCallback.GetOwner<JamDetector>().HandleStateChanged(aFlags);
|
||||
}
|
||||
|
||||
void JamDetector::HandleStateChanged(uint32_t aFlags)
|
||||
void JamDetector::HandleStateChanged(otChangedFlags aFlags)
|
||||
{
|
||||
if (aFlags & OT_CHANGED_THREAD_ROLE)
|
||||
{
|
||||
|
||||
@@ -191,8 +191,8 @@ private:
|
||||
void HandleTimer(void);
|
||||
void UpdateHistory(bool aThresholdExceeded);
|
||||
void UpdateJamState(void);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, uint32_t aFlags);
|
||||
void HandleStateChanged(uint32_t aFlags);
|
||||
static void HandleStateChanged(Notifier::Callback &aCallback, otChangedFlags aFlags);
|
||||
void HandleStateChanged(otChangedFlags aFlags);
|
||||
|
||||
Handler mHandler; // Handler/callback to inform about jamming state
|
||||
void * mContext; // Context for handler/callback
|
||||
|
||||
@@ -269,7 +269,7 @@ protected:
|
||||
#endif // OPENTHREAD_RADIO || OPENTHREAD_ENABLE_RAW_LINK_API
|
||||
|
||||
#if OPENTHREAD_MTD || OPENTHREAD_FTD
|
||||
static void HandleStateChanged(uint32_t aFlags, void *aContext);
|
||||
static void HandleStateChanged(otChangedFlags aFlags, void *aContext);
|
||||
void ProcessThreadChangedFlags(void);
|
||||
|
||||
#if OPENTHREAD_FTD
|
||||
|
||||
@@ -2884,7 +2884,7 @@ exit:
|
||||
// MARK: Property/Status Changed
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void NcpBase::HandleStateChanged(uint32_t aFlags, void *aContext)
|
||||
void NcpBase::HandleStateChanged(otChangedFlags aFlags, void *aContext)
|
||||
{
|
||||
NcpBase *ncp = static_cast<NcpBase *>(aContext);
|
||||
|
||||
@@ -2896,7 +2896,7 @@ void NcpBase::ProcessThreadChangedFlags(void)
|
||||
{
|
||||
static const struct
|
||||
{
|
||||
uint32_t mThreadFlag;
|
||||
otChangedFlags mThreadFlag;
|
||||
spinel_prop_key_t mPropKey;
|
||||
} kFlags[] = {
|
||||
{OT_CHANGED_IP6_ADDRESS_ADDED, SPINEL_PROP_IPV6_ADDRESS_TABLE},
|
||||
|
||||
Reference in New Issue
Block a user