A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
zigbee-aps-data.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 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 APS layer data transmission in a simple topology.
13 *
14 * This example use a Zigbee stack formed by NWK and APS layers.
15 * The APS layer is used to transmit data, the creation of the necessary routes is
16 * handle automatically by the NWK layer. There is no ZDO, therefore we need to manually
17 * use the NWK to form the network and establish the router devices.
18 *
19 * The example demonstrates the following:
20 * - Sending data using the APS layer (Unicast and Groupcast destinations).
21 * - Using the APS layer to establish groupcast groups and endpoints.
22 *
23 *
24 * Network Extended PAN id: 0X000000000000CA:FE (based on the PAN coordinator address)
25 *
26 * Devices Addresses:
27 *
28 * [Coordinator] ZC (dev0 | Node 0): [00:00:00:00:00:00:CA:FE] [00:00]
29 * [Router 1] ZR1 (dev1 | Node 1): [00:00:00:00:00:00:00:01] [short addr assigned by ZC]
30 * [Router 2] ZR2 (dev2 | Node 2): [00:00:00:00:00:00:00:02] [short addr assigned by ZR1]
31 * [Router 3] ZR3 (dev3 | Node 3): [00:00:00:00:00:00:00:03] [short addr assigned by ZR2]
32 * [Router 4] ZR4 (dev4 | Node 4): [00:00:00:00:00:00:00:04] [short addr assigned by ZR1]
33 *
34 * Topology:
35 *
36 * ZC--------ZR1------------ZR2----------ZR3 (GroupID Member: [01:23] | Endpoints: 3)
37 * |
38 * |
39 * ZR4 (GroupID Member: [01:23] | Endpoints: 3, 9)
40 *
41 *
42 * In example, Both ZR4 and ZR3 are part of the multicast group [01:23].
43 * ZR4 has two endpoints in the group, 3 and 9. ZR3 has only one endpoint in the group, 3.
44 */
45
46#include "ns3/constant-position-mobility-model.h"
47#include "ns3/core-module.h"
48#include "ns3/log.h"
49#include "ns3/lr-wpan-module.h"
50#include "ns3/packet.h"
51#include "ns3/propagation-delay-model.h"
52#include "ns3/propagation-loss-model.h"
53#include "ns3/simulator.h"
54#include "ns3/single-model-spectrum-channel.h"
55#include "ns3/zigbee-module.h"
56
57#include <iostream>
58
59using namespace ns3;
60using namespace ns3::lrwpan;
61using namespace ns3::zigbee;
62
63NS_LOG_COMPONENT_DEFINE("ZigbeeRouting");
64
66
67static void
69{
70 std::cout << Simulator::Now().As(Time::S) << " Node " << stack->GetNode()->GetId() << " | ";
72 {
73 std::cout << "UCST | ";
74 }
75 else if (params.m_dstAddrMode == ApsDstAddressMode::GROUP_ADDR_DST_ENDPOINT_NOT_PRESENT)
76 {
77 std::cout << "GROUPCAST | ";
78 }
79 else
80 {
81 std::cout << "Unknown | ";
82 }
83 std::cout << "ApsdeDataIndication: Received DATA packet with size " << p->GetSize()
84 << " for destination EndPoint " << params.m_dstEndPoint << "\n";
85}
86
87static void
89{
90 std::cout << Simulator::Now().As(Time::S) << " Node " << stack->GetNode()->GetId() << " | "
91 << "NlmeNetworkFormationConfirmStatus = " << params.m_status << "\n";
92}
93
94static void
96{
97 // See Zigbee Specification r22.1.0, 3.6.1.4.1
98 // This method implements a simplistic version of the method implemented
99 // in a zigbee APL layer. In this layer a candidate Extended PAN Id must
100 // be selected and a NLME-JOIN.request must be issued.
101
102 if (params.m_status == NwkStatus::SUCCESS)
103 {
104 std::cout << Simulator::Now().As(Time::S) << " Node " << stack->GetNode()->GetId() << " | "
105 << " Network discovery confirm Received. Networks found ("
106 << params.m_netDescList.size() << ")\n";
107
108 NlmeJoinRequestParams joinParams;
109
111 capaInfo.SetDeviceType(ROUTER);
112 capaInfo.SetAllocateAddrOn(true);
113
115 joinParams.m_capabilityInfo = capaInfo.GetCapability();
116 joinParams.m_extendedPanId = params.m_netDescList[0].m_extPanId;
117
118 Simulator::ScheduleNow(&ZigbeeNwk::NlmeJoinRequest, stack->GetNwk(), joinParams);
119 }
120 else
121 {
122 NS_ABORT_MSG("Unable to discover networks | status: " << params.m_status);
123 }
124}
125
126static void
128{
129 if (params.m_status == NwkStatus::SUCCESS)
130 {
131 std::cout << Simulator::Now().As(Time::S) << " Node " << stack->GetNode()->GetId() << " | "
132 << " The device joined the network SUCCESSFULLY with short address " << std::hex
133 << params.m_networkAddress << " on the Extended PAN Id: 0x" << std::hex
134 << params.m_extendedPanId << "\n"
135 << std::dec;
136
137 // 3 - After dev 1 is associated, it should be started as a router
138 // (i.e. it becomes able to accept request from other devices to join the network)
139 NlmeStartRouterRequestParams startRouterParams;
141 stack->GetNwk(),
142 startRouterParams);
143 }
144 else
145 {
146 std::cout << " The device FAILED to join the network with status " << params.m_status
147 << "\n";
148 }
149}
150
151static void
153{
154 std::cout << "NlmeRouteDiscoveryConfirmStatus = " << params.m_status << "\n";
155}
156
157static void
159{
160 // Send data from a device with stackSrc to device with stackDst.
161
162 // We do not know what network address will be assigned after the JOIN procedure
163 // but we can request the network address from stackDst (the destination device) when
164 // we intend to send data. If a route do not exist, we will search for a route
165 // before transmitting data (Mesh routing).
166
168 // Src and Dst Endpoints must not be 0, because this is reserved for the ZDO.
169 // Other Endpoint numbers can help to differentiate between different applications
170 // running in the same node (similar to the concept of a port in TCP/IP).
171 // Likewise, because we currently do not have ZDO or ZCL or AF, clusterId
172 // and profileId numbers are non-sensical.
173 ApsdeDataRequestParams dataReqParams;
174 ZigbeeApsTxOptions txOptions;
175 dataReqParams.m_useAlias = false;
176 // Default, use 16 bit address destination (No option), equivalent to 0x00
177 dataReqParams.m_txOptions = txOptions.GetTxOptions();
178 dataReqParams.m_srcEndPoint = 4; // Arbitrary value, must not be 0
179 dataReqParams.m_clusterId = 5; // Arbitrary value
180 dataReqParams.m_profileId = 2; // Arbitrary value
181
183 dataReqParams.m_dstAddr16 = stackDst->GetNwk()->GetNetworkAddress();
184 dataReqParams.m_dstEndPoint = 3;
185
186 Simulator::ScheduleNow(&ZigbeeAps::ApsdeDataRequest, stackSrc->GetAps(), dataReqParams, p);
187}
188
189static void
191{
193 // Src and Dst Endpoints must not be 0, because this is reserved for the ZDO.
194 // Other Endpoint numbers can help to differentiate between different applications
195 // running in the same node (similar to the concept of a port in TCP/IP).
196 // Likewise, because we currently do not have ZDO or ZCL or AF, clusterId
197 // and profileId numbers are non-sensical.
198 ApsdeDataRequestParams dataReqParams;
199 ZigbeeApsTxOptions txOptions;
200 dataReqParams.m_useAlias = false;
201 // Default, use 16 bit address destination (No option), equivalent to 0x00
202 dataReqParams.m_txOptions = txOptions.GetTxOptions();
203 dataReqParams.m_srcEndPoint = 4; // Arbitrary value, must not be 0
204 dataReqParams.m_clusterId = 5; // Arbitrary value
205 dataReqParams.m_profileId = 2; // Arbitrary value
206
208 dataReqParams.m_dstAddr16 = Mac16Address("01:23"); // The destination group address
209
210 Simulator::ScheduleNow(&ZigbeeAps::ApsdeDataRequest, stackSrc->GetAps(), dataReqParams, p);
211}
212
213int
214main(int argc, char* argv[])
215{
217 // Enable logs for further details
218 // LogComponentEnable("ZigbeeNwk", LOG_LEVEL_DEBUG);
219 // LogComponentEnable("ZigbeeAps", LOG_LEVEL_DEBUG);
220
223
225 nodes.Create(5);
226
227 //// Configure MAC
228
229 LrWpanHelper lrWpanHelper;
230 NetDeviceContainer lrwpanDevices = lrWpanHelper.Install(nodes);
231 Ptr<LrWpanNetDevice> dev0 = lrwpanDevices.Get(0)->GetObject<LrWpanNetDevice>();
232 Ptr<LrWpanNetDevice> dev1 = lrwpanDevices.Get(1)->GetObject<LrWpanNetDevice>();
233 Ptr<LrWpanNetDevice> dev2 = lrwpanDevices.Get(2)->GetObject<LrWpanNetDevice>();
234 Ptr<LrWpanNetDevice> dev3 = lrwpanDevices.Get(3)->GetObject<LrWpanNetDevice>();
235 Ptr<LrWpanNetDevice> dev4 = lrwpanDevices.Get(4)->GetObject<LrWpanNetDevice>();
236
237 // Device must ALWAYS have IEEE Address (Extended address) assigned.
238 // Network address (short address) are assigned by the the JOIN mechanism
239 dev0->GetMac()->SetExtendedAddress("00:00:00:00:00:00:CA:FE");
240 dev1->GetMac()->SetExtendedAddress("00:00:00:00:00:00:00:01");
241 dev2->GetMac()->SetExtendedAddress("00:00:00:00:00:00:00:02");
242 dev3->GetMac()->SetExtendedAddress("00:00:00:00:00:00:00:03");
243 dev4->GetMac()->SetExtendedAddress("00:00:00:00:00:00:00:04");
244
248
251
252 channel->AddPropagationLossModel(propModel);
253 channel->SetPropagationDelayModel(delayModel);
254
255 dev0->SetChannel(channel);
256 dev1->SetChannel(channel);
257 dev2->SetChannel(channel);
258 dev3->SetChannel(channel);
259 dev4->SetChannel(channel);
260
261 // Configure the Zigbee stack, by default both the NWK and the APS are present
262
263 ZigbeeHelper zigbeeHelper;
264 ZigbeeStackContainer zigbeeStackContainer = zigbeeHelper.Install(lrwpanDevices);
265
266 Ptr<ZigbeeStack> zstack0 = zigbeeStackContainer.Get(0)->GetObject<ZigbeeStack>();
267 Ptr<ZigbeeStack> zstack1 = zigbeeStackContainer.Get(1)->GetObject<ZigbeeStack>();
268 Ptr<ZigbeeStack> zstack2 = zigbeeStackContainer.Get(2)->GetObject<ZigbeeStack>();
269 Ptr<ZigbeeStack> zstack3 = zigbeeStackContainer.Get(3)->GetObject<ZigbeeStack>();
270 Ptr<ZigbeeStack> zstack4 = zigbeeStackContainer.Get(4)->GetObject<ZigbeeStack>();
271
272 // Add the stacks to a container to later on print routes.
273 zigbeeStacks.Add(zstack0);
274 zigbeeStacks.Add(zstack1);
275 zigbeeStacks.Add(zstack2);
276 zigbeeStacks.Add(zstack3);
277 zigbeeStacks.Add(zstack4);
278
279 // Assign streams to the zigbee stacks to obtain
280 // reprodusable results from random events occurring inside the stack.
281 zstack0->GetNwk()->AssignStreams(0);
282 zstack1->GetNwk()->AssignStreams(10);
283 zstack2->GetNwk()->AssignStreams(20);
284 zstack3->GetNwk()->AssignStreams(30);
285 zstack4->GetNwk()->AssignStreams(40);
286
287 //// Configure Nodes Mobility
288
290 dev0Mobility->SetPosition(Vector(0, 0, 0));
291 dev0->GetPhy()->SetMobility(dev0Mobility);
292
294 dev1Mobility->SetPosition(Vector(90, 0, 0));
295 dev1->GetPhy()->SetMobility(dev1Mobility);
296
298 dev2Mobility->SetPosition(Vector(170, 0, 0));
299 dev2->GetPhy()->SetMobility(dev2Mobility);
300
302 dev3Mobility->SetPosition(Vector(250, 0, 0));
303 dev3->GetPhy()->SetMobility(dev3Mobility);
304
306 dev4Mobility->SetPosition(Vector(90, 50, 0));
307 dev4->GetPhy()->SetMobility(dev4Mobility);
308
309 // NWK callbacks hooks
310 // These hooks are usually directly connected to the ZDO.
311 // In this case, there is no ZDO, therefore, we connect the event outputs
312 // of all devices directly to our static functions in this example.
313
314 zstack0->GetNwk()->SetNlmeNetworkFormationConfirmCallback(
316 zstack0->GetNwk()->SetNlmeRouteDiscoveryConfirmCallback(
318
319 zstack1->GetNwk()->SetNlmeNetworkDiscoveryConfirmCallback(
321 zstack2->GetNwk()->SetNlmeNetworkDiscoveryConfirmCallback(
323 zstack3->GetNwk()->SetNlmeNetworkDiscoveryConfirmCallback(
325 zstack4->GetNwk()->SetNlmeNetworkDiscoveryConfirmCallback(
327
328 zstack1->GetNwk()->SetNlmeJoinConfirmCallback(MakeBoundCallback(&NwkJoinConfirm, zstack1));
329 zstack2->GetNwk()->SetNlmeJoinConfirmCallback(MakeBoundCallback(&NwkJoinConfirm, zstack2));
330 zstack3->GetNwk()->SetNlmeJoinConfirmCallback(MakeBoundCallback(&NwkJoinConfirm, zstack3));
331 zstack4->GetNwk()->SetNlmeJoinConfirmCallback(MakeBoundCallback(&NwkJoinConfirm, zstack4));
332
333 // APS callback hooks
334
335 zstack0->GetAps()->SetApsdeDataIndicationCallback(
337 zstack1->GetAps()->SetApsdeDataIndicationCallback(
339 zstack2->GetAps()->SetApsdeDataIndicationCallback(
341 zstack3->GetAps()->SetApsdeDataIndicationCallback(
343 zstack4->GetAps()->SetApsdeDataIndicationCallback(
345
346 // NWK Layer
347 // We do not have a ZDO, therefore we need to manually
348 // initiate the network formation and discovery procedures
349 // using the NWK layer.
350
351 // 1 - Initiate the Zigbee coordinator, start the network
352 // ALL_CHANNELS = 0x07FFF800 (Channels 11~26)
354 netFormParams.m_scanChannelList.channelPageCount = 1;
356 netFormParams.m_scanDuration = 0;
357 netFormParams.m_superFrameOrder = 15;
358 netFormParams.m_beaconOrder = 15;
359
360 Simulator::ScheduleWithContext(zstack0->GetNode()->GetId(),
361 Seconds(1),
363 zstack0->GetNwk(),
364 netFormParams);
365
366 // 2- Schedule devices sequentially find and join the network.
367 // After this procedure, each device make a NLME-START-ROUTER.request to become a router
368
370 netDiscParams.m_scanChannelList.channelPageCount = 1;
371 netDiscParams.m_scanChannelList.channelsField[0] = 0x00007800; // BitMap: Channels 11~14
372 netDiscParams.m_scanDuration = 2;
373 Simulator::ScheduleWithContext(zstack1->GetNode()->GetId(),
374 Seconds(3),
376 zstack1->GetNwk(),
377 netDiscParams);
378
380 netDiscParams2.m_scanChannelList.channelPageCount = 1;
381 netDiscParams2.m_scanChannelList.channelsField[0] = 0x00007800; // BitMap: Channels 11~14
382 netDiscParams2.m_scanDuration = 2;
383 Simulator::ScheduleWithContext(zstack2->GetNode()->GetId(),
384 Seconds(4),
386 zstack2->GetNwk(),
387 netDiscParams2);
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(zstack3->GetNode()->GetId(),
394 Seconds(5),
396 zstack3->GetNwk(),
397 netDiscParams3);
398
400 netDiscParams4.m_scanChannelList.channelPageCount = 1;
401 netDiscParams4.m_scanChannelList.channelsField[0] = 0x00007800; // BitMap: Channels 11~14
402 netDiscParams4.m_scanDuration = 2;
403 Simulator::ScheduleWithContext(zstack4->GetNode()->GetId(),
404 Seconds(6),
406 zstack4->GetNwk(),
407 netDiscParams4);
408
409 // APS Layer
410 // 4- Establish the Groupcast groups and its endpoints
411 // Add group [01:23] and endpoint 3 to Devices 3 and 4
412 // Also add endpoint 9 to device 4 in the same group.
413 ApsmeGroupRequestParams groupParams;
414 groupParams.m_groupAddress = Mac16Address("01:23");
415 groupParams.m_endPoint = 3;
416 Simulator::ScheduleWithContext(zstack3->GetNode()->GetId(),
417 Seconds(7),
419 zstack3->GetAps(),
420 groupParams);
421
422 Simulator::ScheduleWithContext(zstack4->GetNode()->GetId(),
423 Seconds(7),
425 zstack4->GetAps(),
426 groupParams);
427
428 groupParams.m_endPoint = 9; // Add endpoint 9 to the same group
429 Simulator::ScheduleWithContext(zstack4->GetNode()->GetId(),
430 Seconds(7),
432 zstack4->GetAps(),
433 groupParams);
434
435 // 4- Send data using the APS layer
436
437 // GROUPCAST
438 // Transmit data to all endpoints in devices that are
439 // part of the group [01:23] (i.e. endpoints in the ZR3 and ZR4).
441
442 // UNICAST
443 // Transmit data to a specific endpoint in a device
444 // In this case, we send data to the endpoint 3 of ZR3.
445 // We require the destination address, but we do not know this apriori,
446 // therefore we can request it from zstack3 on runtime.
447 Simulator::Schedule(Seconds(10), &SendDataUcst, zstack0, zstack3);
448
449 // Print the contents of the routing table in the initiator device (ZC)
451 Simulator::Schedule(Seconds(11), &ZigbeeNwk::PrintRoutingTable, zstack0->GetNwk(), stream);
452
456 return 0;
457}
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.
Smart pointer class similar to boost::intrusive_ptr.
Definition ptr.h:67
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:409
@ S
second
Definition nstime.h:107
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 ApsmeAddGroupRequest(ApsmeGroupRequestParams params)
Zigbee Specification r22.1.0, Section 2.2.4.5.1 APSME-ADD-GROUP.request Request that group membership...
void ApsdeDataRequest(ApsdeDataRequestParams params, Ptr< Packet > asdu)
Zigbee Specification r22.1.0, Section 2.2.4.1.1 APSDE-DATA.request Request the transmission of data t...
Definition zigbee-aps.cc:93
Helper class used to craft the transmission options bitmap used by the APSDE-DATA....
Definition zigbee-aps.h:638
uint8_t GetTxOptions() const
Get the complete bitmap containing the Tx options.
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 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 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.
Ptr< ZigbeeStack > Get(uint32_t i) const
Get a stack element from the 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:439
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition nstime.h:1369
@ GROUP_ADDR_DST_ENDPOINT_NOT_PRESENT
Group address or 16-bit destination address present but destination endpoint not present.
Definition zigbee-aps.h:49
@ DST_ADDR16_DST_ENDPOINT_PRESENT
16-bit destination address and destination endpoint present.
Definition zigbee-aps.h:51
@ ROUTER
Router device.
NodeContainer nodes
@ ASSOCIATION
The device is requesting to join a network through association.
Definition zigbee-nwk.h:109
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:48
@ SUCCESS
The operation was completed successfully.
Definition zigbee-nwk.h:154
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:302
channel
Definition third.py:77
Zigbee Specification r22.1.0, Section 2.2.4.1.3 APSDE-DATA.indications params.
Definition zigbee-aps.h:166
Zigbee Specification r22.1.0, Section 2.2.4.1.1 APSDE-DATA.request params.
Definition zigbee-aps.h:124
uint16_t m_profileId
The application profile ID.
Definition zigbee-aps.h:130
uint16_t m_clusterId
The application cluster ID.
Definition zigbee-aps.h:131
Mac16Address m_dstAddr16
The destination 16-bit address.
Definition zigbee-aps.h:127
uint8_t m_txOptions
Transmission options.
Definition zigbee-aps.h:134
uint8_t m_srcEndPoint
The source endpoint.
Definition zigbee-aps.h:132
bool m_useAlias
Indicates if alias is used in this transmission.
Definition zigbee-aps.h:135
ApsDstAddressMode m_dstAddrMode
Destination address mode.
Definition zigbee-aps.h:125
uint8_t m_dstEndPoint
The destination endpoint.
Definition zigbee-aps.h:129
Zigbee Specification r22.1.0, Section 2.2.4.5.1 and 2.2.4.5.3 APSME-ADD-GROUP.request and APSME-REMOV...
Definition zigbee-aps.h:233
uint8_t m_endPoint
The endpoint to which the group address is associated.
Definition zigbee-aps.h:235
Mac16Address m_groupAddress
The group address to add.
Definition zigbee-aps.h:234
uint8_t channelPageCount
The number of the channel page structures contained in the channel list structure.
Definition zigbee-nwk.h:275
std::vector< uint32_t > channelsField
The set of channels for a given page.
Definition zigbee-nwk.h:277
NLME-JOIN.confirm params.
Definition zigbee-nwk.h:539
NLME-JOIN.request params.
Definition zigbee-nwk.h:517
JoiningMethod m_rejoinNetwork
This parameter controls the method of joining the network.
Definition zigbee-nwk.h:520
uint8_t m_capabilityInfo
The operating capabilities of the device being directly joined (Bit map).
Definition zigbee-nwk.h:526
uint64_t m_extendedPanId
The 64 bit PAN identifier of the the network to join.
Definition zigbee-nwk.h:518
NLME-NETWORK-DISCOVERY.confirm params.
Definition zigbee-nwk.h:502
NLME-NETWORK-DISCOVERY.request params.
Definition zigbee-nwk.h:463
uint8_t m_scanDuration
A value used to calculate the length of time to spend.
Definition zigbee-nwk.h:466
ChannelList m_scanChannelList
The list of all channel pages and the associated channels that shall be scanned.
Definition zigbee-nwk.h:464
NLME-NETWORK-FORMATION.confirm params.
Definition zigbee-nwk.h:394
NLME-NETWORK-FORMATION.request params.
Definition zigbee-nwk.h:349
uint8_t m_superFrameOrder
The superframe order.
Definition zigbee-nwk.h:356
ChannelList m_scanChannelList
A structure that contain a description on the pages and their channels to be scanned.
Definition zigbee-nwk.h:350
uint8_t m_scanDuration
The time spent of each channel in symbols: aBaseSuperframeDuriantion * (2n+1).
Definition zigbee-nwk.h:353
NLME-ROUTE-DISCOVERY.confirm params.
Definition zigbee-nwk.h:421
NLME-START-ROUTER.request params.
Definition zigbee-nwk.h:590
static void SendDataUcst(Ptr< ZigbeeStack > stackSrc, Ptr< ZigbeeStack > stackDst)
static void NwkNetworkDiscoveryConfirm(Ptr< ZigbeeStack > stack, NlmeNetworkDiscoveryConfirmParams params)
static void SendDataGcst(Ptr< ZigbeeStack > stackSrc)
static void ApsDataIndication(Ptr< ZigbeeStack > stack, ApsdeDataIndicationParams 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)