mirror of
https://github.com/espressif/openthread.git
synced 2026-07-28 22:57:47 +00:00
Enhance Mle::HandleDataResponse (#692)
* Enhance Mle::HandleDataResponse * Send DataRequest when vn_version is greater and no dataset included
This commit is contained in:
+19
-1
@@ -1687,7 +1687,8 @@ ThreadError Mle::HandleDataResponse(const Message &aMessage, const Ip6::MessageI
|
||||
PendingTimestampTlv pendingTimestamp;
|
||||
Tlv tlv;
|
||||
uint16_t offset;
|
||||
int8_t diff;
|
||||
int8_t diff = 0;
|
||||
bool dataRequest = false;
|
||||
|
||||
otLogInfoMle("Received Data Response\n");
|
||||
|
||||
@@ -1732,6 +1733,10 @@ ThreadError Mle::HandleDataResponse(const Message &aMessage, const Ip6::MessageI
|
||||
aMessage.Read(offset, sizeof(tlv), &tlv);
|
||||
mNetif.GetActiveDataset().Set(activeTimestamp, aMessage, offset + sizeof(tlv), tlv.GetLength());
|
||||
}
|
||||
else
|
||||
{
|
||||
dataRequest = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Pending Timestamp
|
||||
@@ -1745,6 +1750,10 @@ ThreadError Mle::HandleDataResponse(const Message &aMessage, const Ip6::MessageI
|
||||
aMessage.Read(offset, sizeof(tlv), &tlv);
|
||||
mNetif.GetPendingDataset().Set(activeTimestamp, aMessage, offset + sizeof(tlv), tlv.GetLength());
|
||||
}
|
||||
else
|
||||
{
|
||||
dataRequest = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Network Data
|
||||
@@ -1754,6 +1763,15 @@ ThreadError Mle::HandleDataResponse(const Message &aMessage, const Ip6::MessageI
|
||||
|
||||
exit:
|
||||
(void)aMessageInfo;
|
||||
|
||||
if (diff > 0 && dataRequest)
|
||||
{
|
||||
uint8_t tlvs[] = {Tlv::kNetworkData};
|
||||
|
||||
SendDataRequest(aMessageInfo.GetPeerAddr(), tlvs, sizeof(tlvs));
|
||||
mRetrieveNewNetworkData = true;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user