From db2d99176c7f98903622a203d83f55fc64f06207 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Tue, 17 Feb 2026 20:50:48 -0800 Subject: [PATCH] [nexus] extend `Node::Join()` to allow specifying network data type on SED (#12451) This commit updates `Node::Join()` to allow specifying whether a node joining as an SED should request the full network data or only the stable subset via the `JoinMode` parameter. Previously, `kAsSed` implicitly requested full network data. This change updates `kAsSed` to request only the stable subset (the default behavior for an SED). A new `kAsSedWithFullNetData` mode is introduced to explicitly request full network data when joining as an SED. This change provides more flexibility in test scenarios, allowing validation of SEDs with different network data requirements. --- tests/nexus/platform/nexus_node.cpp | 14 ++++++++------ tests/nexus/platform/nexus_node.hpp | 7 +++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/tests/nexus/platform/nexus_node.cpp b/tests/nexus/platform/nexus_node.cpp index 9aeba7cbc..39fcf734a 100644 --- a/tests/nexus/platform/nexus_node.cpp +++ b/tests/nexus/platform/nexus_node.cpp @@ -66,7 +66,7 @@ void Node::Form(void) void Node::Join(Node &aNode, JoinMode aJoinMode) { MeshCoP::Dataset dataset; - Mle::DeviceMode mode(0); + uint8_t mode = 0; switch (aJoinMode) { @@ -75,18 +75,20 @@ void Node::Join(Node &aNode, JoinMode aJoinMode) OT_FALL_THROUGH; case kAsFtd: - mode.Set(Mle::DeviceMode::kModeRxOnWhenIdle | Mle::DeviceMode::kModeFullThreadDevice | - Mle::DeviceMode::kModeFullNetworkData); + mode = Mle::DeviceMode::kModeRxOnWhenIdle | Mle::DeviceMode::kModeFullThreadDevice | + Mle::DeviceMode::kModeFullNetworkData; break; case kAsMed: - mode.Set(Mle::DeviceMode::kModeRxOnWhenIdle | Mle::DeviceMode::kModeFullNetworkData); + mode = Mle::DeviceMode::kModeRxOnWhenIdle | Mle::DeviceMode::kModeFullNetworkData; + break; + case kAsSedWithFullNetData: + mode = Mle::DeviceMode::kModeFullNetworkData; break; case kAsSed: - mode.Set(Mle::DeviceMode::kModeFullNetworkData); break; } - SuccessOrQuit(Get().SetDeviceMode(mode)); + SuccessOrQuit(Get().SetDeviceMode(Mle::DeviceMode(mode))); SuccessOrQuit(aNode.Get().Read(dataset)); Get().SaveLocal(dataset); diff --git a/tests/nexus/platform/nexus_node.hpp b/tests/nexus/platform/nexus_node.hpp index 61d6a9fad..5c966b438 100644 --- a/tests/nexus/platform/nexus_node.hpp +++ b/tests/nexus/platform/nexus_node.hpp @@ -66,12 +66,19 @@ class Node : public Platform, public Heap::Allocatable, public LinkedListE friend class Heap::Allocatable; public: + // Defines the device role and Network Data request behavior + // during joining: + // + // - `kAsFtd`, `kAsFed`, and `kAsMed` all request full netdata. + // - `kAsSed` requests only stable netdata (default for SED). + // - `kAsSedWithFullNetData` explicitly request full netdata. enum JoinMode : uint8_t { kAsFtd, kAsFed, kAsMed, kAsSed, + kAsSedWithFullNetData, }; void Reset(void);