Optimizate orhpaned MLE Announce message. (#886)

This commit is contained in:
Xiao Ma
2016-10-26 09:08:43 -07:00
committed by Jonathan Hui
parent cf2a74a209
commit 4caec455c3
3 changed files with 21 additions and 7 deletions
+1 -1
View File
@@ -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
View File
@@ -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:
+3 -2
View File
@@ -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.