mirror of
https://github.com/espressif/openthread.git
synced 2026-09-12 04:00:10 +00:00
[mle] refactor MleRouter and Mle classes into a single Mle class (#11411)
This commit refactors the `Mle` modules and combines the `MleRouter` and `Mle` classes into a single `Mle` class which now handles both FTD and MTD functionalities. The `MleRouter` and `Mle` classes were originally intended as sub-classes, where the base class `Mle` would provide MTD and common behaviors, and `MleRouter` would implement FTD-specific behaviors. However, over the years and as new features were implemented, these two classes became more intertwined, and the `Mle` class began to include many FTD-related functions and interactions with `MleRouter` private variables and methods. This commit simplifies the code by combining the two into a single class. The previous `mle_router.cpp` file is also renamed to `mle_ftd.cpp` to indicate that it implements FTD-specific MLE behaviors.
This commit is contained in:
@@ -40,7 +40,7 @@ void Node::Form(void)
|
||||
Get<MeshCoP::ActiveDatasetManager>().SaveLocal(datasetInfo);
|
||||
|
||||
Get<ThreadNetif>().Up();
|
||||
SuccessOrQuit(Get<Mle::MleRouter>().Start());
|
||||
SuccessOrQuit(Get<Mle::Mle>().Start());
|
||||
}
|
||||
|
||||
void Node::Join(Node &aNode, JoinMode aJoinMode)
|
||||
@@ -51,7 +51,7 @@ void Node::Join(Node &aNode, JoinMode aJoinMode)
|
||||
switch (aJoinMode)
|
||||
{
|
||||
case kAsFed:
|
||||
SuccessOrQuit(Get<Mle::MleRouter>().SetRouterEligible(false));
|
||||
SuccessOrQuit(Get<Mle::Mle>().SetRouterEligible(false));
|
||||
OT_FALL_THROUGH;
|
||||
|
||||
case kAsFtd:
|
||||
@@ -72,7 +72,7 @@ void Node::Join(Node &aNode, JoinMode aJoinMode)
|
||||
Get<MeshCoP::ActiveDatasetManager>().SaveLocal(dataset);
|
||||
|
||||
Get<ThreadNetif>().Up();
|
||||
SuccessOrQuit(Get<Mle::MleRouter>().Start());
|
||||
SuccessOrQuit(Get<Mle::Mle>().Start());
|
||||
}
|
||||
|
||||
void Node::AllowList(Node &aNode)
|
||||
|
||||
@@ -866,7 +866,7 @@ void TestBorderAgentMeshCoPServiceChangedCallback(void)
|
||||
VerifyOrQuit(meshCoPServiceTester.FindTxtEntry("sb", txtEntry));
|
||||
VerifyOrQuit(meshCoPServiceTester.FindTxtEntry("pt", txtEntry));
|
||||
VerifyOrQuit(CheckObjectSameAsTxtEntryData(
|
||||
txtEntry, BigEndian::HostSwap32(node0.Get<Mle::MleRouter>().GetLeaderData().GetPartitionId())));
|
||||
txtEntry, BigEndian::HostSwap32(node0.Get<Mle::Mle>().GetLeaderData().GetPartitionId())));
|
||||
VerifyOrQuit(meshCoPServiceTester.FindTxtEntry("at", txtEntry));
|
||||
VerifyOrQuit(CheckObjectSameAsTxtEntryData(txtEntry, node0.Get<ActiveDatasetManager>().GetTimestamp()));
|
||||
|
||||
|
||||
@@ -247,12 +247,12 @@ void TestDtlsSingleSession(void)
|
||||
nexus.AdvanceTime(50 * Time::kOneSecondInMsec);
|
||||
VerifyOrQuit(node0.Get<Mle::Mle>().IsLeader());
|
||||
|
||||
SuccessOrQuit(node1.Get<Mle::MleRouter>().SetRouterEligible(false));
|
||||
SuccessOrQuit(node1.Get<Mle::Mle>().SetRouterEligible(false));
|
||||
node1.Join(node0);
|
||||
nexus.AdvanceTime(20 * Time::kOneSecondInMsec);
|
||||
VerifyOrQuit(node1.Get<Mle::Mle>().IsChild());
|
||||
|
||||
SuccessOrQuit(node2.Get<Mle::MleRouter>().SetRouterEligible(false));
|
||||
SuccessOrQuit(node2.Get<Mle::Mle>().SetRouterEligible(false));
|
||||
node2.Join(node0);
|
||||
nexus.AdvanceTime(20 * Time::kOneSecondInMsec);
|
||||
VerifyOrQuit(node2.Get<Mle::Mle>().IsChild());
|
||||
@@ -489,12 +489,12 @@ void TestDtlsMultiSession(void)
|
||||
nexus.AdvanceTime(50 * Time::kOneSecondInMsec);
|
||||
VerifyOrQuit(node0.Get<Mle::Mle>().IsLeader());
|
||||
|
||||
SuccessOrQuit(node1.Get<Mle::MleRouter>().SetRouterEligible(false));
|
||||
SuccessOrQuit(node1.Get<Mle::Mle>().SetRouterEligible(false));
|
||||
node1.Join(node0);
|
||||
nexus.AdvanceTime(20 * Time::kOneSecondInMsec);
|
||||
VerifyOrQuit(node1.Get<Mle::Mle>().IsChild());
|
||||
|
||||
SuccessOrQuit(node2.Get<Mle::MleRouter>().SetRouterEligible(false));
|
||||
SuccessOrQuit(node2.Get<Mle::Mle>().SetRouterEligible(false));
|
||||
node2.Join(node0);
|
||||
nexus.AdvanceTime(20 * Time::kOneSecondInMsec);
|
||||
VerifyOrQuit(node2.Get<Mle::Mle>().IsChild());
|
||||
|
||||
@@ -78,7 +78,7 @@ void VerifyChildIp6Addresses(const Child &aChild, uint8_t aAddressListLength, co
|
||||
{
|
||||
Ip6::Address address;
|
||||
|
||||
if (sInstance->Get<Mle::MleRouter>().IsMeshLocalAddress(aAddressList[index]))
|
||||
if (sInstance->Get<Mle::Mle>().IsMeshLocalAddress(aAddressList[index]))
|
||||
{
|
||||
SuccessOrQuit(aChild.GetMeshLocalIp6Address(address));
|
||||
VerifyOrQuit(address == aAddressList[index], "GetMeshLocalIp6Address() did not return expected address");
|
||||
@@ -127,7 +127,7 @@ void TestChildIp6Address(void)
|
||||
numAddresses = 0;
|
||||
|
||||
// First addresses uses the mesh local prefix (mesh-local address).
|
||||
addresses[numAddresses] = sInstance->Get<Mle::MleRouter>().GetMeshLocalEid();
|
||||
addresses[numAddresses] = sInstance->Get<Mle::Mle>().GetMeshLocalEid();
|
||||
addresses[numAddresses].SetIid(meshLocalIid);
|
||||
|
||||
numAddresses++;
|
||||
|
||||
@@ -104,7 +104,7 @@ static void Init(void)
|
||||
otMeshLocalPrefix meshLocalPrefix = {{0xfd, 0x00, 0xca, 0xfe, 0xfa, 0xce, 0x12, 0x34}};
|
||||
OffsetRange offsetRange;
|
||||
|
||||
sInstance->Get<Mle::MleRouter>().SetMeshLocalPrefix(static_cast<Ip6::NetworkPrefix &>(meshLocalPrefix));
|
||||
sInstance->Get<Mle::Mle>().SetMeshLocalPrefix(static_cast<Ip6::NetworkPrefix &>(meshLocalPrefix));
|
||||
|
||||
// Emulate global prefixes with contextes.
|
||||
uint8_t mockNetworkData[] = {
|
||||
|
||||
Reference in New Issue
Block a user