mirror of
https://github.com/espressif/openthread.git
synced 2026-07-29 23:27:46 +00:00
Optimizate orhpaned MLE Announce message. (#886)
This commit is contained in:
@@ -166,7 +166,7 @@ void AnnounceBeginServer::HandleTimer(void *aContext)
|
||||
|
||||
void AnnounceBeginServer::HandleTimer(void)
|
||||
{
|
||||
mNetif.GetMle().SendAnnounce(mChannel++);
|
||||
mNetif.GetMle().SendAnnounce(mChannel++, false);
|
||||
|
||||
while (mCount > 0)
|
||||
{
|
||||
|
||||
+17
-4
@@ -1434,11 +1434,12 @@ exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
ThreadError Mle::SendAnnounce(uint8_t aChannel)
|
||||
ThreadError Mle::SendAnnounce(uint8_t aChannel, bool aOrphanAnnounce)
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
ChannelTlv channel;
|
||||
PanIdTlv panid;
|
||||
ActiveTimestampTlv activeTimestamp;
|
||||
Ip6::Address destination;
|
||||
Message *message;
|
||||
|
||||
@@ -1452,7 +1453,19 @@ ThreadError Mle::SendAnnounce(uint8_t aChannel)
|
||||
channel.SetChannel(mMac.GetChannel());
|
||||
SuccessOrExit(error = message->Append(&channel, sizeof(channel)));
|
||||
|
||||
SuccessOrExit(error = AppendActiveTimestamp(*message));
|
||||
if (aOrphanAnnounce)
|
||||
{
|
||||
activeTimestamp.Init();
|
||||
activeTimestamp.SetSeconds(0);
|
||||
activeTimestamp.SetTicks(0);
|
||||
activeTimestamp.SetAuthoritative(true);
|
||||
|
||||
SuccessOrExit(error = message->Append(&activeTimestamp, sizeof(activeTimestamp)));
|
||||
}
|
||||
else
|
||||
{
|
||||
SuccessOrExit(error = AppendActiveTimestamp(*message));
|
||||
}
|
||||
|
||||
panid.Init();
|
||||
panid.SetPanId(mMac.GetPanId());
|
||||
@@ -1501,7 +1514,7 @@ void Mle::SendOrphanAnnounce(void)
|
||||
}
|
||||
|
||||
// Send Annuonce message
|
||||
SendAnnounce(channel);
|
||||
SendAnnounce(channel, true);
|
||||
|
||||
// Move to next channel
|
||||
mAnnounceChannel++;
|
||||
@@ -2488,7 +2501,7 @@ ThreadError Mle::HandleAnnounce(const Message &aMessage, const Ip6::MessageInfo
|
||||
}
|
||||
else
|
||||
{
|
||||
SendAnnounce(static_cast<uint8_t>(channel.GetChannel()));
|
||||
SendAnnounce(static_cast<uint8_t>(channel.GetChannel()), false);
|
||||
}
|
||||
|
||||
exit:
|
||||
|
||||
@@ -430,13 +430,14 @@ public:
|
||||
/**
|
||||
* This method generates an MLE Announce message.
|
||||
*
|
||||
* @param[in] aChannel The channel to use when transmitting.
|
||||
* @param[in] aChannel The channel to use when transmitting.
|
||||
* @param[in] aOrphanAnnounce To indiciate if MLE Announce is sent from an orphan end device.
|
||||
*
|
||||
* @retval kThreadError_None Successfully generated an MLE Announce message.
|
||||
* @retval kThreadError_NoBufs Insufficient buffers to generate the MLE Announce message.
|
||||
*
|
||||
*/
|
||||
ThreadError SendAnnounce(uint8_t aChannel);
|
||||
ThreadError SendAnnounce(uint8_t aChannel, bool aOrphanAnnounce);
|
||||
|
||||
/**
|
||||
* This method causes the Thread interface to detach from the Thread network.
|
||||
|
||||
Reference in New Issue
Block a user