mirror of
https://github.com/espressif/openthread.git
synced 2026-08-22 02:19:52 +00:00
[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:
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user