From a7668d6475e8f69b405fcb8a4db896f877018081 Mon Sep 17 00:00:00 2001 From: Shu Chen Date: Mon, 14 Nov 2016 18:16:20 +0800 Subject: [PATCH] Fix a packet receive issue in CC2538 radio driver (#969) If a device sends an ACK required packet, but receives a packet other than ACK, then it should trigger the ReceiveDone() method with the received packet. --- examples/platforms/cc2538/radio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/platforms/cc2538/radio.c b/examples/platforms/cc2538/radio.c index bec34e8d4..4d8aef9ff 100644 --- a/examples/platforms/cc2538/radio.c +++ b/examples/platforms/cc2538/radio.c @@ -381,7 +381,9 @@ void cc2538RadioProcess(otInstance *aInstance) { readFrame(); - if ((sState == kStateReceive) && (sReceiveFrame.mLength > 0)) + if ((sState == kStateReceive && sReceiveFrame.mLength > 0) || + (sState == kStateTransmit && sReceiveFrame.mLength > 0 && + (sReceiveFrame.mPsdu[0] & IEEE802154_FRAME_TYPE_MASK) != IEEE802154_FRAME_TYPE_ACK)) { #if OPENTHREAD_ENABLE_DIAG