mirror of
https://github.com/espressif/openthread.git
synced 2026-09-30 21:07:39 +00:00
[mac] add enhanced frame pending (#4334)
This commit adds enhanced frame pending feature of Thread 1.2. This requires the platform radio driver to correctly set frame pending bit for Data frames and MAC Data Request frames.
This commit is contained in:
@@ -125,12 +125,11 @@ static void ReverseExtAddress(otExtAddress *aReversed, const otExtAddress *aOrig
|
||||
}
|
||||
}
|
||||
|
||||
static bool isDataRequestAndHasFramePending(const otRadioFrame *aFrame)
|
||||
static bool HasFramePending(const otRadioFrame *aFrame)
|
||||
{
|
||||
bool rval = false;
|
||||
otMacAddress src;
|
||||
|
||||
otEXPECT(otMacFrameIsDataRequest(aFrame));
|
||||
otEXPECT_ACTION(sSrcMatchEnabled, rval = true);
|
||||
otEXPECT(otMacFrameGetSrcAddr(aFrame, &src) == OT_ERROR_NONE);
|
||||
|
||||
@@ -715,7 +714,13 @@ void radioSendAck(void)
|
||||
sAckFrame.mLength = IEEE802154_ACK_LENGTH;
|
||||
sAckMessage.mPsdu[0] = IEEE802154_FRAME_TYPE_ACK;
|
||||
|
||||
if (isDataRequestAndHasFramePending(&sReceiveFrame))
|
||||
if (
|
||||
#if OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2
|
||||
(otMacFrameIsData(&sReceiveFrame) || otMacFrameIsDataRequest(&sReceiveFrame))
|
||||
#else
|
||||
otMacFrameIsDataRequest(&sReceiveFrame)
|
||||
#endif
|
||||
&& HasFramePending(&sReceiveFrame))
|
||||
{
|
||||
sAckMessage.mPsdu[0] |= IEEE802154_FRAME_PENDING;
|
||||
sReceiveFrame.mInfo.mRxInfo.mAckedWithFramePending = true;
|
||||
|
||||
Reference in New Issue
Block a user