[mle] add parameter-less AppendModeTlv() helper (#12868)

This commit introduces an overloaded version of `AppendModeTlv()`
that automatically uses the device's own `GetDeviceMode()`.
The new parameter-less version simplifies the common case where a
node reports its own mode. The parameterized version is
preserved for cases where a specific mode must be provided (e.g.,
parent reporting one of its children's mode).
This commit is contained in:
Abtin Keshavarzian
2026-04-10 21:37:55 -05:00
committed by GitHub
parent 9feec93a20
commit 21181644aa
3 changed files with 8 additions and 5 deletions
+5 -3
View File
@@ -1231,7 +1231,7 @@ Error Mle::SendChildUpdateRequestToParent(ChildUpdateRequestMode aMode)
}
VerifyOrExit((message = NewMleMessage(kCommandChildUpdateRequest)) != nullptr, error = kErrorNoBufs);
SuccessOrExit(error = message->AppendModeTlv(mDeviceMode));
SuccessOrExit(error = message->AppendModeTlv());
switch (aMode)
{
@@ -3554,6 +3554,8 @@ Error Mle::TxMessage::AppendSourceAddressTlv(void)
Error Mle::TxMessage::AppendStatusTlv(Status aStatus) { return Tlv::Append<StatusTlv>(*this, aStatus); }
Error Mle::TxMessage::AppendModeTlv(void) { return AppendModeTlv(Get<Mle>().GetDeviceMode()); }
Error Mle::TxMessage::AppendModeTlv(DeviceMode aMode) { return Tlv::Append<ModeTlv>(*this, aMode.Get()); }
Error Mle::TxMessage::AppendTimeoutTlv(uint32_t aTimeout) { return Tlv::Append<TimeoutTlv>(*this, aTimeout); }
@@ -5017,7 +5019,7 @@ void Mle::Attacher::SendParentRequest(ParentRequestType aType)
}
VerifyOrExit((message = Get<Mle>().NewMleMessage(kCommandParentRequest)) != nullptr, error = kErrorNoBufs);
SuccessOrExit(error = message->AppendModeTlv(Get<Mle>().mDeviceMode));
SuccessOrExit(error = message->AppendModeTlv());
SuccessOrExit(error = message->AppendChallengeTlv(mParentRequestChallenge));
SuccessOrExit(error = message->AppendScanMaskTlv(scanMask));
SuccessOrExit(error = message->AppendVersionTlv());
@@ -5134,7 +5136,7 @@ Error Mle::Attacher::SendChildIdRequest(void)
VerifyOrExit((message = Get<Mle>().NewMleMessage(kCommandChildIdRequest)) != nullptr, error = kErrorNoBufs);
SuccessOrExit(error = message->AppendResponseTlv(mParentCandidate.mRxChallenge));
SuccessOrExit(error = message->AppendLinkAndMleFrameCounterTlvs());
SuccessOrExit(error = message->AppendModeTlv(Get<Mle>().mDeviceMode));
SuccessOrExit(error = message->AppendModeTlv());
SuccessOrExit(error = message->AppendTimeoutTlv(Get<Mle>().mTimeout));
SuccessOrExit(error = message->AppendVersionTlv());
SuccessOrExit(error = message->AppendSupervisionIntervalTlvIfSleepyChild());
+1
View File
@@ -1558,6 +1558,7 @@ private:
public:
// Appending single TLV
Error AppendSourceAddressTlv(void);
Error AppendModeTlv(void);
Error AppendModeTlv(DeviceMode aMode);
Error AppendTimeoutTlv(uint32_t aTimeout);
Error AppendChallengeTlv(const TxChallenge &aChallenge);
+2 -2
View File
@@ -174,7 +174,7 @@ void Mle::P2p::SendP2pLinkRequest(Peer *aPeer)
VerifyOrExit(aPeer != nullptr, error = kErrorInvalidArgs);
VerifyOrExit((message = Get<Mle>().NewMleMessage(kCommandP2pLinkRequest)) != nullptr, error = kErrorNoBufs);
SuccessOrExit(error = message->AppendModeTlv(Get<Mle>().GetDeviceMode()));
SuccessOrExit(error = message->AppendModeTlv());
SuccessOrExit(error = message->AppendVersionTlv());
aPeer->GenerateChallenge();
@@ -225,7 +225,7 @@ Error Mle::P2p::SendP2pLinkAcceptVariant(const LinkAcceptInfo &aInfo, bool aIsLi
VerifyOrExit((message = Get<Mle>().NewMleMessage(command)) != nullptr, error = kErrorNoBufs);
if (command == kCommandP2pLinkAcceptAndRequest)
{
SuccessOrExit(error = message->AppendModeTlv(Get<Mle>().GetDeviceMode()));
SuccessOrExit(error = message->AppendModeTlv());
SuccessOrExit(error = message->AppendVersionTlv());
}