mirror of
https://github.com/espressif/openthread.git
synced 2026-10-15 12:17:41 +00:00
MeshForwader: Update HandleDataRequest() to use the counter mQueuedIndirectMessageCnt (#688)
This commit makes the following changes in `HandleDataRequest()` in `MeshForwader` class: - We use the counter `mQueuedIndirectMessageCnt` to determine if there are any queued frames for a given child. - Handle data poll/request from a child only.
This commit is contained in:
committed by
Jonathan Hui
parent
2071716936
commit
ed6d72eccd
@@ -1654,27 +1654,21 @@ void MeshForwarder::UpdateFramePending()
|
||||
|
||||
void MeshForwarder::HandleDataRequest(const Mac::Address &aMacSource, const ThreadMessageInfo &aMessageInfo)
|
||||
{
|
||||
Neighbor *neighbor;
|
||||
uint8_t childIndex;
|
||||
Child *child;
|
||||
|
||||
// Security Check: only process secure Data Poll frames.
|
||||
VerifyOrExit(aMessageInfo.mLinkSecurity, ;);
|
||||
|
||||
assert(mMle.GetDeviceState() != Mle::kDeviceStateDetached);
|
||||
|
||||
VerifyOrExit((neighbor = mMle.GetNeighbor(aMacSource)) != NULL, ;);
|
||||
neighbor->mLastHeard = Timer::GetNow();
|
||||
VerifyOrExit((child = mMle.GetChild(aMacSource)) != NULL, ;);
|
||||
child->mLastHeard = Timer::GetNow();
|
||||
|
||||
mMle.HandleMacDataRequest(*static_cast<Child *>(neighbor));
|
||||
childIndex = mMle.GetChildIndex(*static_cast<Child *>(neighbor));
|
||||
mMle.HandleMacDataRequest(*child);
|
||||
|
||||
for (Message *message = mSendQueue.GetHead(); message; message = message->GetNext())
|
||||
if (child->mQueuedIndirectMessageCnt > 0)
|
||||
{
|
||||
if (message->GetDirectTransmission() == false && message->GetChildMask(childIndex))
|
||||
{
|
||||
neighbor->mDataRequest = true;
|
||||
break;
|
||||
}
|
||||
child->mDataRequest = true;
|
||||
}
|
||||
|
||||
mScheduleTransmissionTask.Post();
|
||||
|
||||
Reference in New Issue
Block a user