mirror of
https://github.com/espressif/openthread.git
synced 2026-08-12 05:37:46 +00:00
[mle] add TxMessage::AppendSteeringData() (#9559)
This commit is contained in:
@@ -4963,6 +4963,28 @@ Error Mle::TxMessage::AppendPendingDatasetTlv(void)
|
||||
return Get<MeshCoP::PendingDatasetManager>().AppendMleDatasetTlv(*this);
|
||||
}
|
||||
|
||||
Error Mle::TxMessage::AppendSteeringDataTlv(void)
|
||||
{
|
||||
Error error = kErrorNone;
|
||||
MeshCoP::SteeringData steeringData;
|
||||
|
||||
#if OPENTHREAD_CONFIG_MLE_STEERING_DATA_SET_OOB_ENABLE
|
||||
if (!Get<MleRouter>().mSteeringData.IsEmpty())
|
||||
{
|
||||
steeringData = Get<MleRouter>().mSteeringData;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
SuccessOrExit(Get<NetworkData::Leader>().FindSteeringData(steeringData));
|
||||
}
|
||||
|
||||
error = Tlv::Append<MeshCoP::SteeringDataTlv>(*this, steeringData.GetData(), steeringData.GetLength());
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
#endif // OPENTHREAD_FTD
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -1017,6 +1017,7 @@ private:
|
||||
Error AppendActiveDatasetTlv(void);
|
||||
Error AppendPendingDatasetTlv(void);
|
||||
Error AppendConnectivityTlv(void);
|
||||
Error AppendSteeringDataTlv(void);
|
||||
Error AppendAddressRegistrationTlv(Child &aChild);
|
||||
#endif
|
||||
template <uint8_t kArrayLength> Error AppendTlvRequestTlv(const uint8_t (&aTlvArray)[kArrayLength])
|
||||
|
||||
@@ -2810,26 +2810,7 @@ Error MleRouter::SendDiscoveryResponse(const Ip6::Address &aDestination, const M
|
||||
networkNameTlv.SetNetworkName(Get<MeshCoP::NetworkNameManager>().GetNetworkName().GetAsData());
|
||||
SuccessOrExit(error = networkNameTlv.AppendTo(*message));
|
||||
|
||||
#if OPENTHREAD_CONFIG_MLE_STEERING_DATA_SET_OOB_ENABLE
|
||||
// If steering data is set out of band, use that value.
|
||||
// Otherwise use the one from commissioning data.
|
||||
if (!mSteeringData.IsEmpty())
|
||||
{
|
||||
SuccessOrExit(error = Tlv::Append<MeshCoP::SteeringDataTlv>(*message, mSteeringData.GetData(),
|
||||
mSteeringData.GetLength()));
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
const MeshCoP::SteeringDataTlv *steeringDataTlv;
|
||||
|
||||
steeringDataTlv = Get<NetworkData::Leader>().FindInCommissioningData<MeshCoP::SteeringDataTlv>();
|
||||
|
||||
if (steeringDataTlv != nullptr)
|
||||
{
|
||||
SuccessOrExit(error = steeringDataTlv->AppendTo(*message));
|
||||
}
|
||||
}
|
||||
SuccessOrExit(error = message->AppendSteeringDataTlv());
|
||||
|
||||
SuccessOrExit(
|
||||
error = Tlv::Append<MeshCoP::JoinerUdpPortTlv>(*message, Get<MeshCoP::JoinerRouter>().GetJoinerUdpPort()));
|
||||
|
||||
Reference in New Issue
Block a user