[mle] add TxMessage::AppendActiveAndPendingTimestampTlvs() (#10341)

This commit adds `AppendActiveAndPendingTimestampTlvs()` helper
method, which appends both Active and Pending Timestamp TLVs to the
message. This helps simplify the code as the two TLVs are almost
always included together in different MLE messages.
This commit is contained in:
Abtin Keshavarzian
2024-06-05 10:52:58 -07:00
committed by GitHub
parent b77645458e
commit 18f7bc32f1
3 changed files with 19 additions and 14 deletions
+14 -6
View File
@@ -1630,8 +1630,7 @@ void Mle::SendDelayedResponse(TxMessage &aMessage, const DelayedResponseMetadata
if (aMessage.GetSubType() == Message::kSubTypeMleDataRequest)
{
SuccessOrExit(error = aMessage.AppendActiveTimestampTlv());
SuccessOrExit(error = aMessage.AppendPendingTimestampTlv());
SuccessOrExit(error = aMessage.AppendActiveAndPendingTimestampTlvs());
}
SuccessOrExit(error = aMessage.SendTo(aMetadata.mDestination));
@@ -1807,8 +1806,7 @@ Error Mle::SendChildIdRequest(void)
}
SuccessOrExit(error = message->AppendTlvRequestTlv(kTlvs, tlvsLen));
SuccessOrExit(error = message->AppendActiveTimestampTlv());
SuccessOrExit(error = message->AppendPendingTimestampTlv());
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
mParentCandidate.SetState(Neighbor::kStateValid);
@@ -1878,8 +1876,7 @@ Error Mle::SendDataRequest(const Ip6::Address &aDestination, const uint8_t *aTlv
}
else
{
SuccessOrExit(error = message->AppendActiveTimestampTlv());
SuccessOrExit(error = message->AppendPendingTimestampTlv());
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
SuccessOrExit(error = message->SendTo(aDestination));
Log(kMessageSend, kTypeDataRequest, aDestination);
@@ -4749,6 +4746,17 @@ exit:
return error;
}
Error Mle::TxMessage::AppendActiveAndPendingTimestampTlvs(void)
{
Error error;
SuccessOrExit(error = AppendActiveTimestampTlv());
error = AppendPendingTimestampTlv();
exit:
return error;
}
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
Error Mle::TxMessage::AppendCslChannelTlv(void)
{
+1
View File
@@ -1024,6 +1024,7 @@ private:
Error AppendXtalAccuracyTlv(void);
Error AppendActiveTimestampTlv(void);
Error AppendPendingTimestampTlv(void);
Error AppendActiveAndPendingTimestampTlvs(void);
#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
Error AppendTimeRequestTlv(void);
Error AppendTimeParameterTlv(void);
+4 -8
View File
@@ -2775,8 +2775,7 @@ Error MleRouter::SendChildIdResponse(Child &aChild)
VerifyOrExit((message = NewMleMessage(kCommandChildIdResponse)) != nullptr, error = kErrorNoBufs);
SuccessOrExit(error = message->AppendSourceAddressTlv());
SuccessOrExit(error = message->AppendLeaderDataTlv());
SuccessOrExit(error = message->AppendActiveTimestampTlv());
SuccessOrExit(error = message->AppendPendingTimestampTlv());
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
if ((aChild.GetRloc16() == 0) || !RouterIdMatch(aChild.GetRloc16(), GetRloc16()))
{
@@ -2895,8 +2894,7 @@ Error MleRouter::SendChildUpdateRequest(Child &aChild)
SuccessOrExit(error = message->AppendSourceAddressTlv());
SuccessOrExit(error = message->AppendLeaderDataTlv());
SuccessOrExit(error = message->AppendNetworkDataTlv(aChild.GetNetworkDataType()));
SuccessOrExit(error = message->AppendActiveTimestampTlv());
SuccessOrExit(error = message->AppendPendingTimestampTlv());
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
if (!aChild.IsStateValid())
{
@@ -2999,8 +2997,7 @@ void MleRouter::SendChildUpdateResponse(Child *aChild,
case Tlv::kNetworkData:
SuccessOrExit(error = message->AppendNetworkDataTlv(aChild->GetNetworkDataType()));
SuccessOrExit(error = message->AppendActiveTimestampTlv());
SuccessOrExit(error = message->AppendPendingTimestampTlv());
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
break;
case Tlv::kTimeout:
@@ -3057,8 +3054,7 @@ void MleRouter::SendDataResponse(const Ip6::Address &aDestination,
VerifyOrExit((message = NewMleMessage(kCommandDataResponse)) != nullptr, error = kErrorNoBufs);
SuccessOrExit(error = message->AppendSourceAddressTlv());
SuccessOrExit(error = message->AppendLeaderDataTlv());
SuccessOrExit(error = message->AppendActiveTimestampTlv());
SuccessOrExit(error = message->AppendPendingTimestampTlv());
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
for (uint8_t tlvType : aTlvList)
{