[simulation] send enh-ack for 802.15.4-2015 frames (#5039)

This commit changes the simulation radio to send secured enh-ack for
secured frames. This improves code coverage for testing.
This commit is contained in:
Yakun Xu
2020-06-03 10:59:19 -07:00
committed by GitHub
parent 6de8d778b7
commit f302796bd2
3 changed files with 22 additions and 11 deletions
+18 -7
View File
@@ -732,7 +732,7 @@ void radioTransmit(struct RadioMessage *aMessage, const struct otRadioFrame *aFr
#endif // OPENTHREAD_SIMULATION_VIRTUAL_TIME == 0
}
void radioGenerateAck(void)
void radioSendAck(void)
{
if (
#if OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2
@@ -746,17 +746,28 @@ void radioGenerateAck(void)
sReceiveFrame.mInfo.mRxInfo.mAckedWithFramePending = true;
}
otMacFrameGenerateImmAck(&sReceiveFrame, sReceiveFrame.mInfo.mRxInfo.mAckedWithFramePending, &sAckFrame);
}
void radioSendAck(void)
{
radioGenerateAck();
#if OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2
// Use enh-ack for 802.15.4-2015 frames
if (otMacFrameIsVersion2015(&sReceiveFrame))
{
otEXPECT(otMacFrameGenerateEnhAck(&sReceiveFrame, sReceiveFrame.mInfo.mRxInfo.mAckedWithFramePending, NULL, 0,
&sAckFrame) == OT_ERROR_NONE);
}
else
#endif
{
otMacFrameGenerateImmAck(&sReceiveFrame, sReceiveFrame.mInfo.mRxInfo.mAckedWithFramePending, &sAckFrame);
}
sAckMessage.mChannel = sReceiveFrame.mChannel;
radioComputeCrc(&sAckMessage, sAckFrame.mLength);
radioTransmit(&sAckMessage, &sAckFrame);
#if OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2
exit:
#endif
return;
}
void radioProcessFrame(otInstance *aInstance)
+2 -2
View File
@@ -139,7 +139,7 @@ void otMacFrameGenerateImmAck(const otRadioFrame *aFrame, bool aIsFramePending,
static_cast<Mac::TxFrame *>(aAckFrame)->GenerateImmAck(*static_cast<const Mac::RxFrame *>(aFrame), aIsFramePending);
}
#if OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT
#if OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2
otError otMacFrameGenerateEnhAck(const otRadioFrame *aFrame,
bool aIsFramePending,
const uint8_t * aIeData,
@@ -151,6 +151,7 @@ otError otMacFrameGenerateEnhAck(const otRadioFrame *aFrame,
return static_cast<Mac::TxFrame *>(aAckFrame)->GenerateEnhAck(*static_cast<const Mac::RxFrame *>(aFrame),
aIsFramePending, aIeData, aIeLength);
}
#endif
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
void otMacFrameSetCslIe(otRadioFrame *aFrame, uint16_t aCslPeriod, uint16_t aCslPhase)
@@ -158,4 +159,3 @@ void otMacFrameSetCslIe(otRadioFrame *aFrame, uint16_t aCslPeriod, uint16_t aCsl
static_cast<Mac::Frame *>(aFrame)->SetCslIe(aCslPeriod, aCslPhase);
}
#endif // OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
#endif // OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT
+2 -2
View File
@@ -1082,7 +1082,7 @@ void TxFrame::GenerateImmAck(const RxFrame &aFrame, bool aIsFramePending)
mLength = kImmAckLength;
}
#if OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT
#if OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2
otError TxFrame::GenerateEnhAck(const RxFrame &aFrame, bool aIsFramePending, const uint8_t *aIeData, uint8_t aIeLength)
{
otError error = OT_ERROR_NONE;
@@ -1193,7 +1193,7 @@ otError TxFrame::GenerateEnhAck(const RxFrame &aFrame, bool aIsFramePending, con
exit:
return error;
}
#endif
#endif // OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2
// LCOV_EXCL_START