A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
zigbee-nwk-routing.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Tokushima University, Japan
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Authors:
7 *
8 * Alberto Gallegos Ramonet <alramonet@is.tokushima-u.ac.jp>
9 */
10
11/**
12 * Mesh routing example with data transmission using a simple topology.
13 *
14 * This example shows the NWK layer procedure to perform a route request.
15 * Prior the route discovery and data transmission, an association-based join is performed.
16 * The procedure requires a sequence of primitive calls on a specific order in the indicated
17 * devices.
18 *
19 *
20 * Network Extended PAN id: 0X000000000000CA:FE (based on the PAN coordinator address)
21 *
22 * Devices Addresses:
23 *
24 * [Coordinator] ZC (dev0 | Node 0): [00:00:00:00:00:00:CA:FE] [00:00]
25 * [Router 1] ZR1 (dev1 | Node 1): [00:00:00:00:00:00:00:01] [short addr assigned by ZC]
26 * [Router 2] ZR2 (dev2 | Node 2): [00:00:00:00:00:00:00:02] [short addr assigned by ZR1]
27 * [Router 3] ZR3 (dev3 | Node 3): [00:00:00:00:00:00:00:03] [short addr assigned by ZR2]
28 * [Router 4] ZR4 (dev4 | Node 4): [00:00:00:00:00:00:00:04] [short addr assigned by ZR1]
29 *
30 * Topology:
31 *
32 * ZC--------ZR1------------ZR2----------ZR3
33 * |
34 * |
35 * ZR4
36 */
37
38#include "ns3/constant-position-mobility-model.h"
39#include "ns3/core-module.h"
40#include "ns3/log.h"
41#include "ns3/lr-wpan-module.h"
42#include "ns3/packet.h"
43#include "ns3/propagation-delay-model.h"
44#include "ns3/propagation-loss-model.h"
45#include "ns3/simulator.h"
46#include "ns3/single-model-spectrum-channel.h"
47#include "ns3/zigbee-module.h"
48
49#include <iostream>
50
51using namespace ns3;
52using namespace ns3::lrwpan;
53using namespace ns3::zigbee;
54
55NS_LOG_COMPONENT_DEFINE("ZigbeeRouting");
56
58
59static void
61{
62 std::cout << "\nTime " << Simulator::Now().As(Time::S) << " | "
63 << "Traceroute to destination [" << dst << "]:\n";
64 Mac16Address target = src;
65 uint32_t count = 1;
66 while (target != Mac16Address("FF:FF") && target != dst)
67 {
68 Ptr<ZigbeeStack> zstack;
69
70 for (auto i = zigbeeStacks.Begin(); i != zigbeeStacks.End(); i++)
71 {
72 zstack = *i;
73 if (zstack->GetNwk()->GetNetworkAddress() == target)
74 {
75 break;
76 }
77 }
78
79 bool neighbor = false;
80 target = zstack->GetNwk()->FindRoute(dst, neighbor);
81 if (target == Mac16Address("FF:FF"))
82 {
83 std::cout << count << ". Node " << zstack->GetNode()->GetId() << " ["
84 << zstack->GetNwk()->GetNetworkAddress() << " | "
85 << zstack->GetNwk()->GetIeeeAddress() << "]: "
86 << " Destination Unreachable\n";
87 }
88 else
89 {
90 std::cout << count << ". Node " << zstack->GetNode()->GetId() << " ["
91 << zstack->GetNwk()->GetNetworkAddress() << " | "
92 << zstack->GetNwk()->GetIeeeAddress() << "]: "
93 << "NextHop [" << target << "] ";
94 if (neighbor)
95 {
96 std::cout << "(*Neighbor)\n";
97 }
98 else
99 {
100 std::cout << "\n";
101 }
102 count++;
103 }
104 }
105 std::cout << "\n";
106}
107
108static void
110{
111 std::cout << Simulator::Now().As(Time::S) << " Node " << stack->GetNode()->GetId() << " | "
112 << "NsdeDataIndication: Received packet of size " << p->GetSize() << "\n";
113}
114
115static void
117{
118 std::cout << "NlmeNetworkFormationConfirmStatus = " << params.m_status << "\n";
119}
120
121static void
123{
124 // See Zigbee Specification r22.1.0, 3.6.1.4.1
125 // This method implements a simplistic version of the method implemented
126 // in a zigbee APL layer. In this layer a candidate Extended PAN Id must
127 // be selected and a NLME-JOIN.request must be issued.
128
129 if (params.m_status == NwkStatus::SUCCESS)
130 {
131 std::cout << " Network discovery confirm Received. Networks found ("
132 << params.m_netDescList.size() << "):\n";
133
134 for (const auto& netDescriptor : params.m_netDescList)
135 {
136 std::cout << " ExtPanID: 0x" << std::hex << netDescriptor.m_extPanId << "\n"
137 << std::dec << " CH: " << static_cast<uint32_t>(netDescriptor.m_logCh)
138 << "\n"
139 << std::hex << " Pan ID: 0x" << netDescriptor.m_panId << "\n"
140 << " Stack profile: " << std::dec
141 << static_cast<uint32_t>(netDescriptor.m_stackProfile) << "\n"
142 << "--------------------\n";
143 }
144
145 NlmeJoinRequestParams joinParams;
146
148 capaInfo.SetDeviceType(ROUTER);
149 capaInfo.SetAllocateAddrOn(true);
150
151 joinParams.m_rejoinNetwork = zigbee::JoiningMethod::ASSOCIATION;
152 joinParams.m_capabilityInfo = capaInfo.GetCapability();
153 joinParams.m_extendedPanId = params.m_netDescList[0].m_extPanId;
154
155 Simulator::ScheduleNow(&ZigbeeNwk::NlmeJoinRequest, stack->GetNwk(), joinParams);
156 }
157 else
158 {
159 NS_ABORT_MSG("Unable to discover networks | status: " << params.m_status);
160 }
161}
162
163static void
165{
166 if (params.m_status == NwkStatus::SUCCESS)
167 {
168 std::cout << Simulator::Now().As(Time::S) << " Node " << stack->GetNode()->GetId() << " | "
169 << " The device joined the network SUCCESSFULLY with short address " << std::hex
170 << params.m_networkAddress << " on the Extended PAN Id: " << std::hex
171 << params.m_extendedPanId << "\n"
172 << std::dec;
173
174 // 3 - After dev 1 is associated, it should be started as a router
175 // (i.e. it becomes able to accept request from other devices to join the network)
176 NlmeStartRouterRequestParams startRouterParams;
178 stack->GetNwk(),
179 startRouterParams);
180 }
181 else
182 {
183 std::cout << " The device FAILED to join the network with status " << params.m_status
184 << "\n";
185 }
186}
187
188static void
190{
191 std::cout << "NlmeRouteDiscoveryConfirmStatus = " << params.m_status << "\n";
192}
193
194static void
196{
197 // Send data from a device with stackSrc to device with stackDst.
198
199 // We do not know what network address will be assigned after the JOIN procedure
200 // but we can request the network address from stackDst (the destination device) when
201 // we intend to send data. If a route do not exist, we will search for a route
202 // before transmitting data (Mesh routing).
203
205 NldeDataRequestParams dataReqParams;
206 dataReqParams.m_dstAddrMode = UCST_BCST;
207 dataReqParams.m_dstAddr = stackDst->GetNwk()->GetNetworkAddress();
208 dataReqParams.m_nsduHandle = 1;
210
211 Simulator::ScheduleNow(&ZigbeeNwk::NldeDataRequest, stackSrc->GetNwk(), dataReqParams, p);
212
213 // Give a few seconds to allow the creation of the route and
214 // then print the route trace and tables from the source
216 &TraceRoute,
217 stackSrc->GetNwk()->GetNetworkAddress(),
218 stackDst->GetNwk()->GetNetworkAddress());
219
221 Simulator::Schedule(Seconds(4), &ZigbeeNwk::PrintNeighborTable, stackSrc->GetNwk(), stream);
222
223 Simulator::Schedule(Seconds(4), &ZigbeeNwk::PrintRoutingTable, stackSrc->GetNwk(), stream);
224
227 stackSrc->GetNwk(),
228 stream);
229}
230
231int
232main(int argc, char* argv[])
233{
235 // Enable logs for further details
236 // LogComponentEnable("ZigbeeNwk", LOG_LEVEL_DEBUG);
237
240
242 nodes.Create(5);
243
244 //// Configure MAC
245
246 LrWpanHelper lrWpanHelper;
247 NetDeviceContainer lrwpanDevices = lrWpanHelper.Install(nodes);
248 Ptr<LrWpanNetDevice> dev0 = lrwpanDevices.Get(0)->GetObject<LrWpanNetDevice>();
249 Ptr<LrWpanNetDevice> dev1 = lrwpanDevices.Get(1)->GetObject<LrWpanNetDevice>();
250 Ptr<LrWpanNetDevice> dev2 = lrwpanDevices.Get(2)->GetObject<LrWpanNetDevice>();
251 Ptr<LrWpanNetDevice> dev3 = lrwpanDevices.Get(3)->GetObject<LrWpanNetDevice>();
252 Ptr<LrWpanNetDevice> dev4 = lrwpanDevices.Get(4)->GetObject<LrWpanNetDevice>();
253
254 // Device must ALWAYS have IEEE Address (Extended address) assigned.
255 // Network address (short address) are assigned by the the JOIN mechanism
256 dev0->GetMac()->SetExtendedAddress("00:00:00:00:00:00:CA:FE");
257 dev1->GetMac()->SetExtendedAddress("00:00:00:00:00:00:00:01");
258 dev2->GetMac()->SetExtendedAddress("00:00:00:00:00:00:00:02");
259 dev3->GetMac()->SetExtendedAddress("00:00:00:00:00:00:00:03");
260 dev4->GetMac()->SetExtendedAddress("00:00:00:00:00:00:00:04");
261
265
268
269 channel->AddPropagationLossModel(propModel);
270 channel->SetPropagationDelayModel(delayModel);
271
272 dev0->SetChannel(channel);
273 dev1->SetChannel(channel);
274 dev2->SetChannel(channel);
275 dev3->SetChannel(channel);
276 dev4->SetChannel(channel);
277
278 //// Configure NWK
279
280 ZigbeeHelper zigbee;
281 ZigbeeStackContainer zigbeeStackContainer = zigbee.Install(lrwpanDevices);
282
283 Ptr<ZigbeeStack> zstack0 = zigbeeStackContainer.Get(0)->GetObject<ZigbeeStack>();
284 Ptr<ZigbeeStack> zstack1 = zigbeeStackContainer.Get(1)->GetObject<ZigbeeStack>();
285 Ptr<ZigbeeStack> zstack2 = zigbeeStackContainer.Get(2)->GetObject<ZigbeeStack>();
286 Ptr<ZigbeeStack> zstack3 = zigbeeStackContainer.Get(3)->GetObject<ZigbeeStack>();
287 Ptr<ZigbeeStack> zstack4 = zigbeeStackContainer.Get(4)->GetObject<ZigbeeStack>();
288
289 // Add the stacks to a container to later on print routes.
290 zigbeeStacks.Add(zstack0);
291 zigbeeStacks.Add(zstack1);
292 zigbeeStacks.Add(zstack2);
293 zigbeeStacks.Add(zstack3);
294 zigbeeStacks.Add(zstack4);
295
296 // Assign streams to the zigbee stacks to obtain
297 // reprodusable results from random events occurring inside the stack.
298 zstack0->GetNwk()->AssignStreams(0);
299 zstack1->GetNwk()->AssignStreams(10);
300 zstack2->GetNwk()->AssignStreams(20);
301 zstack3->GetNwk()->AssignStreams(30);
302 zstack4->GetNwk()->AssignStreams(40);
303
304 //// Configure Nodes Mobility
305
307 dev0Mobility->SetPosition(Vector(0, 0, 0));
308 dev0->GetPhy()->SetMobility(dev0Mobility);
309
311 dev1Mobility->SetPosition(Vector(90, 0, 0));
312 dev1->GetPhy()->SetMobility(dev1Mobility);
313
315 dev2Mobility->SetPosition(Vector(170, 0, 0));
316 dev2->GetPhy()->SetMobility(dev2Mobility);
317
319 dev3Mobility->SetPosition(Vector(250, 0, 0));
320 dev3->GetPhy()->SetMobility(dev3Mobility);
321
323 dev4Mobility->SetPosition(Vector(90, 50, 0));
324 dev4->GetPhy()->SetMobility(dev4Mobility);
325
326 // NWK callbacks hooks
327 // These hooks are usually directly connected to the APS layer
328 // In this case, there is no APS layer, therefore, we connect the event outputs
329 // of all devices directly to our static functions in this example.
330
331 zstack0->GetNwk()->SetNlmeNetworkFormationConfirmCallback(
333 zstack0->GetNwk()->SetNlmeRouteDiscoveryConfirmCallback(
335
336 zstack0->GetNwk()->SetNldeDataIndicationCallback(
338 zstack1->GetNwk()->SetNldeDataIndicationCallback(
340 zstack2->GetNwk()->SetNldeDataIndicationCallback(
342 zstack3->GetNwk()->SetNldeDataIndicationCallback(
344 zstack4->GetNwk()->SetNldeDataIndicationCallback(
346
347 zstack1->GetNwk()->SetNlmeNetworkDiscoveryConfirmCallback(
349 zstack2->GetNwk()->SetNlmeNetworkDiscoveryConfirmCallback(
351 zstack3->GetNwk()->SetNlmeNetworkDiscoveryConfirmCallback(
353 zstack4->GetNwk()->SetNlmeNetworkDiscoveryConfirmCallback(
355
356 zstack1->GetNwk()->SetNlmeJoinConfirmCallback(MakeBoundCallback(&NwkJoinConfirm, zstack1));
357 zstack2->GetNwk()->SetNlmeJoinConfirmCallback(MakeBoundCallback(&NwkJoinConfirm, zstack2));
358 zstack3->GetNwk()->SetNlmeJoinConfirmCallback(MakeBoundCallback(&NwkJoinConfirm, zstack3));
359 zstack4->GetNwk()->SetNlmeJoinConfirmCallback(MakeBoundCallback(&NwkJoinConfirm, zstack4));
360
361 // 1 - Initiate the Zigbee coordinator, start the network
362 // ALL_CHANNELS = 0x07FFF800 (Channels 11~26)
364 netFormParams.m_scanChannelList.channelPageCount = 1;
366 netFormParams.m_scanDuration = 0;
367 netFormParams.m_superFrameOrder = 15;
368 netFormParams.m_beaconOrder = 15;
369
370 Simulator::ScheduleWithContext(zstack0->GetNode()->GetId(),
371 Seconds(1),
373 zstack0->GetNwk(),
374 netFormParams);
375
376 // 2- Schedule devices sequentially find and join the network.
377 // After this procedure, each device make a NLME-START-ROUTER.request to become a router
378
380 netDiscParams.m_scanChannelList.channelPageCount = 1;
381 netDiscParams.m_scanChannelList.channelsField[0] = 0x00007800; // BitMap: Channels 11~14
382 netDiscParams.m_scanDuration = 2;
383 Simulator::ScheduleWithContext(zstack1->GetNode()->GetId(),
384 Seconds(3),
386 zstack1->GetNwk(),
387 netDiscParams);
388
390 netDiscParams2.m_scanChannelList.channelPageCount = 1;
391 netDiscParams2.m_scanChannelList.channelsField[0] = 0x00007800; // BitMap: Channels 11~14
392 netDiscParams2.m_scanDuration = 2;
393 Simulator::ScheduleWithContext(zstack2->GetNode()->GetId(),
394 Seconds(4),
396 zstack2->GetNwk(),
397 netDiscParams2);
398
400 netDiscParams2.m_scanChannelList.channelPageCount = 1;
401 netDiscParams2.m_scanChannelList.channelsField[0] = 0x00007800; // BitMap: Channels 11~14
402 netDiscParams2.m_scanDuration = 2;
403 Simulator::ScheduleWithContext(zstack3->GetNode()->GetId(),
404 Seconds(5),
406 zstack3->GetNwk(),
407 netDiscParams3);
408
410 netDiscParams4.m_scanChannelList.channelPageCount = 1;
411 netDiscParams4.m_scanChannelList.channelsField[0] = 0x00007800; // BitMap: Channels 11~14
412 netDiscParams4.m_scanDuration = 2;
413 Simulator::ScheduleWithContext(zstack4->GetNode()->GetId(),
414 Seconds(6),
416 zstack4->GetNwk(),
417 netDiscParams4);
418
419 // 5- Find Route and Send data
420
421 Simulator::Schedule(Seconds(8), &SendData, zstack0, zstack3);
422
426 return 0;
427}
helps to manage and create IEEE 802.15.4 NetDevice objects
NetDeviceContainer Install(NodeContainer c)
Install a LrWpanNetDevice and the associated structures (e.g., channel) in the nodes.
This class can contain 16 bit addresses.
holds a vector of ns3::NetDevice pointers
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
keep track of a set of node pointers.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Smart pointer class similar to boost::intrusive_ptr.
static void SetRun(uint64_t run)
Set the run number of simulation.
static void SetSeed(uint32_t seed)
Set the seed.
static EventId Schedule(const Time &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Definition simulator.h:561
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
Definition simulator.cc:131
static void ScheduleWithContext(uint32_t context, const Time &delay, FUNC f, Ts &&... args)
Schedule an event with the given context.
Definition simulator.h:578
static Time Now()
Return the current simulation virtual time.
Definition simulator.cc:197
static void Run()
Run the simulation.
Definition simulator.cc:167
static EventId ScheduleNow(FUNC f, Ts &&... args)
Schedule an event to expire Now.
Definition simulator.h:595
static void Stop()
Tell the Simulator the calling event should be the last one executed.
Definition simulator.cc:175
TimeWithUnit As(const Unit unit=Time::AUTO) const
Attach a unit to a Time, to facilitate output in a specific unit.
Definition time.cc:403
@ S
second
Definition nstime.h:105
Setup a Zigbee stack to be used with LrWpanNetDevice.
zigbee::ZigbeeStackContainer Install(NetDeviceContainer c)
Install the Zigbee stack on top of an existing LrWpanNetDevice.
Network layer to device interface.
Represent the the Capability Information Bit fields See zigbe Specification r22.1....
uint8_t GetCapability() const
Used to obtain the complete capability information bit map.
void SetDeviceType(MacDeviceType devType)
Set the device type bit for the capability information field.
void SetAllocateAddrOn(bool value)
Set the Allocate Addr On for the capability information field.
void PrintRoutingTable(Ptr< OutputStreamWrapper > stream) const
Print the entries in the routing table.
void NlmeStartRouterRequest(NlmeStartRouterRequestParams params)
Zigbee Specification r22.1.0, section 3.2.2.9 NLME-START-ROUTER.request This primitive allows the nex...
void NldeDataRequest(NldeDataRequestParams params, Ptr< Packet > packet)
Zigbee Specification r22.1.0, Section 3.2.1.1 NLDE-DATA.request Request to transfer a NSDU.
void PrintNeighborTable(Ptr< OutputStreamWrapper > stream) const
Print the entries in the neighbor table.
void NlmeNetworkDiscoveryRequest(NlmeNetworkDiscoveryRequestParams params)
Zigbee Specification r22.1.0, section 3.2.2.3 NLME-NETWORK-DISCOVERY.request Allows the next higher l...
void NlmeJoinRequest(NlmeJoinRequestParams params)
Zigbee Specification r22.1.0, section 3.2.2.13 NLME-JOIN.request This primitive allows the next highe...
void PrintRouteDiscoveryTable(Ptr< OutputStreamWrapper > stream)
Print the entries in the route discovery table.
void NlmeNetworkFormationRequest(NlmeNetworkFormationRequestParams params)
Zigbee Specification r22.1.0, Section 3.2.2.5 and 3.6.1.1 NLME-NETWORK-FORMATION.request Request the ...
Holds a vector of ns3::ZigbeeStack pointers.
Iterator End() const
Get an iterator which indicates past the last ZigbeeStack in the container.
Iterator Begin() const
Get and iterator which refers to the first ZigbeeStack in the container.
Ptr< ZigbeeStack > Get(uint32_t i) const
Get a stack element from the container.
void Add(ZigbeeStackContainer other)
Append the contents of another ZigbeeStackContainer to the end of this container.
Zigbee protocol stack to device interface.
#define NS_ABORT_MSG(msg)
Unconditional abnormal program termination with a message.
Definition abort.h:38
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition log.h:191
auto MakeBoundCallback(R(*fnPtr)(Args...), BArgs &&... bargs)
Make Callbacks with varying number of bound arguments.
Definition callback.h:745
Ptr< T > CreateObject(Args &&... args)
Create an object by type, with varying number of constructor parameters.
Definition object.h:619
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition ptr.h:436
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition nstime.h:1345
@ ROUTER
Router device.
@ UCST_BCST
Unicast or Broadcast address mode.
Definition zigbee-nwk.h:78
NodeContainer nodes
@ ENABLE_ROUTE_DISCOVERY
Enable route discovery.
static constexpr uint32_t ALL_CHANNELS
Bitmap representing all channels (11~26) LSB b0-b26, b27-b31 MSB Page 0 in Zigbee (250kbps O-QPSK)
Definition zigbee-nwk.h:47
Every class exported by the ns3 library is enclosed in the ns3 namespace.
LogLevel
Logging severity classes and levels.
Definition log.h:83
@ LOG_PREFIX_FUNC
Prefix all trace prints with function.
Definition log.h:107
@ LOG_PREFIX_TIME
Prefix all trace prints with simulation time.
Definition log.h:108
@ LOG_PREFIX_NODE
Prefix all trace prints with simulation node.
Definition log.h:109
void LogComponentEnableAll(LogLevel level)
Enable the logging output for all registered log components.
Definition log.cc:309
channel
Definition third.py:77
uint8_t channelPageCount
The number of the channel page structures contained in the channel list structure.
Definition zigbee-nwk.h:274
std::vector< uint32_t > channelsField
The set of channels for a given page.
Definition zigbee-nwk.h:276
NLDE-DATA.indication params.
Definition zigbee-nwk.h:305
NLDE-DATA.request params.
Definition zigbee-nwk.h:323
Mac16Address m_dstAddr
The destination address.
Definition zigbee-nwk.h:326
uint8_t m_nsduHandle
The NSDU handle.
Definition zigbee-nwk.h:328
AddressMode m_dstAddrMode
Destination address mode.
Definition zigbee-nwk.h:324
uint8_t m_discoverRoute
0x01 Enable Route Discovery | 0x00: Suppress Route discovery
Definition zigbee-nwk.h:338
NLME-JOIN.confirm params.
Definition zigbee-nwk.h:537
NLME-JOIN.request params.
Definition zigbee-nwk.h:515
JoiningMethod m_rejoinNetwork
This parameter controls the method of joining the network.
Definition zigbee-nwk.h:518
uint8_t m_capabilityInfo
The operating capabilities of the device being directly joined (Bit map).
Definition zigbee-nwk.h:524
uint64_t m_extendedPanId
The 64 bit PAN identifier of the the network to join.
Definition zigbee-nwk.h:516
NLME-NETWORK-DISCOVERY.confirm params.
Definition zigbee-nwk.h:500
NLME-NETWORK-DISCOVERY.request params.
Definition zigbee-nwk.h:461
uint8_t m_scanDuration
A value used to calculate the length of time to spend.
Definition zigbee-nwk.h:464
ChannelList m_scanChannelList
The list of all channel pages and the associated channels that shall be scanned.
Definition zigbee-nwk.h:462
NLME-NETWORK-FORMATION.confirm params.
Definition zigbee-nwk.h:393
NLME-NETWORK-FORMATION.request params.
Definition zigbee-nwk.h:348
uint8_t m_superFrameOrder
The superframe order.
Definition zigbee-nwk.h:355
ChannelList m_scanChannelList
A structure that contain a description on the pages and their channels to be scanned.
Definition zigbee-nwk.h:349
uint8_t m_scanDuration
The time spent of each channel in symbols: aBaseSuperframeDuriantion * (2n+1).
Definition zigbee-nwk.h:352
NLME-ROUTE-DISCOVERY.confirm params.
Definition zigbee-nwk.h:419
NLME-START-ROUTER.request params.
Definition zigbee-nwk.h:588
static void NwkNetworkDiscoveryConfirm(Ptr< ZigbeeStack > stack, NlmeNetworkDiscoveryConfirmParams params)
static void SendData(Ptr< ZigbeeStack > stackSrc, Ptr< ZigbeeStack > stackDst)
static void TraceRoute(Mac16Address src, Mac16Address dst)
static void NwkDataIndication(Ptr< ZigbeeStack > stack, NldeDataIndicationParams params, Ptr< Packet > p)
static void NwkJoinConfirm(Ptr< ZigbeeStack > stack, NlmeJoinConfirmParams params)
ZigbeeStackContainer zigbeeStacks
static void NwkRouteDiscoveryConfirm(Ptr< ZigbeeStack > stack, NlmeRouteDiscoveryConfirmParams params)
static void NwkNetworkFormationConfirm(Ptr< ZigbeeStack > stack, NlmeNetworkFormationConfirmParams params)