A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
zigbee-aps.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#include "zigbee-aps.h"
12
13#include "ns3/log.h"
14#include "ns3/packet.h"
15#include "ns3/simulator.h"
16
17namespace ns3
18{
19namespace zigbee
20{
21
22NS_LOG_COMPONENT_DEFINE("ZigbeeAps");
24
25TypeId
27{
28 static TypeId tid = TypeId("ns3::zigbee::ZigbeeAps")
30 .SetGroupName("Zigbee")
31 .AddConstructor<ZigbeeAps>();
32 return tid;
33}
34
39
40void
45
50
51void
57
58void
60{
61 m_nwk = nullptr;
62 // m_apsBindingTable.Dispose();
64
66}
67
68void
70{
71 m_nwk = nwk;
72}
73
76{
77 return m_nwk;
78}
79
80void
82{
83 NS_LOG_FUNCTION(this);
84
85 // Fill APSDE-data.confirm parameters in case we need to return an error
86 ApsdeDataConfirmParams confirmParams;
87 confirmParams.m_dstAddrMode = params.m_dstAddrMode;
88 confirmParams.m_dstAddr16 = params.m_dstAddr16;
89 confirmParams.m_dstAddr64 = params.m_dstAddr64;
90 confirmParams.m_dstEndPoint = params.m_dstEndPoint;
91 confirmParams.m_srcEndPoint = params.m_srcEndPoint;
92
93 ZigbeeApsTxOptions txOptions(params.m_txOptions);
94
95 if (txOptions.IsSecurityEnabled())
96 {
97 // TODO: Add support for security options
99 {
100 confirmParams.m_status = ApsStatus::SECURITY_FAIL;
101 confirmParams.m_txTime = Simulator::Now();
102 m_apsdeDataConfirmCallback(confirmParams);
103 }
104 NS_LOG_WARN("Security is not currently supported");
105 return;
106 }
107
108 // TODO: Fragmentation
109
110 // TODO: Add ACK support
111 if (txOptions.IsAckRequired())
112 {
113 NS_ABORT_MSG("Transmission with ACK not supported");
114 return;
115 }
116
117 // See See 2.2.4.1.1
118 switch (params.m_dstAddrMode)
119 {
121 // Use BINDING TABLE to send data to one or more destinations
122 // (Groupcast or IEEE address destination transmission)
123 NS_ABORT_MSG("Binded destination groupcast not supported");
124 // SendDataWithBindingTable(params, asdu);
125 break;
126 }
128 // TODO: Add Groupcast (multicast) support
129 NS_ABORT_MSG("GROUP ADDRESS (MCST) not supported");
130 break;
131 }
133 // Regular UCST or BCST transmission with the 16 bit destination address
134 SendDataUcstBcst(params, asdu);
135 break;
136 }
138 // TODO: Add Extended address transmission support.
139 // The NWK do not accept direct extended address transmissions,
140 // therefore, the APS must translate the extended address
141 // to a short address using the nwkAddressMap NIB.
143 {
145 confirmParams.m_txTime = Simulator::Now();
146 m_apsdeDataConfirmCallback(confirmParams);
147 }
148 NS_LOG_WARN("Extended address mode not supported");
149 break;
150 }
151 default:
152 NS_ABORT_MSG("Invalid Option");
153 break;
154 }
155}
156
157void
159{
160 NS_LOG_FUNCTION(this);
161
162 // Fill APSDE-data.confirm parameters in case we need to return an error
163 ApsdeDataConfirmParams confirmParams;
164 confirmParams.m_dstAddrMode = params.m_dstAddrMode;
165 confirmParams.m_dstAddr16 = params.m_dstAddr16;
166 confirmParams.m_dstAddr64 = params.m_dstAddr64;
167 confirmParams.m_dstEndPoint = params.m_dstEndPoint;
168 confirmParams.m_srcEndPoint = params.m_srcEndPoint;
169
170 // APS Header
171 ZigbeeApsTxOptions txOptions(params.m_txOptions);
172 ZigbeeApsHeader apsHeader;
174 apsHeader.SetSrcEndpoint(params.m_srcEndPoint);
175 apsHeader.SetProfileId(params.m_profileId);
176 apsHeader.SetClusterId(params.m_clusterId);
177 apsHeader.SetExtHeaderPresent(false);
179
180 // NLDE-data.request params
181 NldeDataRequestParams nwkParams;
182 nwkParams.m_radius = params.m_radius;
184 nwkParams.m_securityEnable = txOptions.IsSecurityEnabled();
186
187 SrcBindingEntry srcEntry;
188 std::vector<DstBindingEntry> dstEntries;
189
190 if (m_apsBindingTable.LookUpEntries(srcEntry, dstEntries))
191 {
192 for (const auto& dst : dstEntries)
193 {
195 {
196 // We must look into the nwkAddressMap to transform the
197 // 64 bit address destination to a 16 bit destination
198 NS_LOG_WARN("Bound destination found but 64bit destination not supported");
199 // TODO: drop trace here
200 }
201 else
202 {
203 // Send a UCST message to each destination
204 nwkParams.m_dstAddr = dst.GetDstAddr16();
206 m_apsCounter++;
207 Ptr<Packet> p = asdu->Copy();
208 p->AddHeader(apsHeader);
210 }
211 }
212
214 {
215 confirmParams.m_status = ApsStatus::SUCCESS;
216 confirmParams.m_txTime = Simulator::Now();
217 m_apsdeDataConfirmCallback(confirmParams);
218 }
219 }
220 else
221 {
223 {
224 confirmParams.m_status = ApsStatus::NO_BOUND_DEVICE;
225 confirmParams.m_txTime = Simulator::Now();
226 m_apsdeDataConfirmCallback(confirmParams);
227 }
228 }
229}
230
231void
233{
234 NS_LOG_FUNCTION(this);
235
236 // Fill APSDE-data.confirm parameters in case we need to return an error
237 ApsdeDataConfirmParams confirmParams;
238 confirmParams.m_dstAddrMode = params.m_dstAddrMode;
239 confirmParams.m_dstAddr16 = params.m_dstAddr16;
240 confirmParams.m_dstAddr64 = params.m_dstAddr64;
241 confirmParams.m_dstEndPoint = params.m_dstEndPoint;
242 confirmParams.m_srcEndPoint = params.m_srcEndPoint;
243
244 // APS Header
245 ZigbeeApsTxOptions txOptions(params.m_txOptions);
246 ZigbeeApsHeader apsHeader;
248 apsHeader.SetSrcEndpoint(params.m_srcEndPoint);
249 apsHeader.SetProfileId(params.m_profileId);
250 apsHeader.SetClusterId(params.m_clusterId);
251 apsHeader.SetExtHeaderPresent(false);
253
254 // NLDE-data.request params
255 NldeDataRequestParams nwkParams;
256 nwkParams.m_radius = params.m_radius;
258 nwkParams.m_securityEnable = txOptions.IsSecurityEnabled();
260
261 if (params.m_dstAddr16 == "FF:FF" || params.m_dstAddr16 == "FF:FD" ||
262 params.m_dstAddr16 == "FF:FC" || params.m_dstAddr16 == "FF:FB")
263 {
264 // Destination is a broadcast address
266 }
267 else
268 {
269 // Destination is a unicast address
271 }
272
273 if (params.m_useAlias)
274 {
275 if (txOptions.IsAckRequired()) // 0b1 = 00000001 = 1 dec
276 {
278 {
279 confirmParams.m_status = ApsStatus::NOT_SUPPORTED;
280 confirmParams.m_txTime = Simulator::Now();
281 m_apsdeDataConfirmCallback(confirmParams);
282 }
283 return;
284 }
285
286 nwkParams.m_useAlias = params.m_useAlias;
287 nwkParams.m_aliasSeqNumber = params.m_aliasSeqNumb;
288 nwkParams.m_aliasSrcAddr = params.m_aliasSrcAddr;
289
290 apsHeader.SetApsCounter(params.m_aliasSeqNumb);
291 }
292 else
293 {
295 m_apsCounter++;
296 }
297
299 nwkParams.m_dstAddr = params.m_dstAddr16;
300 apsHeader.SetDstEndpoint(params.m_dstEndPoint);
301
302 asdu->AddHeader(apsHeader);
303
305}
306
307void
309{
310 ApsmeBindConfirmParams confirmParams;
311 confirmParams.m_srcAddr = params.m_srcAddr;
312 confirmParams.m_srcEndPoint = params.m_srcEndPoint;
313 confirmParams.m_clusterId = params.m_clusterId;
314 confirmParams.m_dstAddr16 = params.m_dstAddr16;
315 confirmParams.m_dstAddr64 = params.m_dstAddr64;
316 confirmParams.m_dstAddrMode = params.m_dstAddrMode;
317 confirmParams.m_dstEndPoint = params.m_dstEndPoint;
318
319 // TODO: confirm the device has joined the network
320 // How? APS have no access to join information.
321
322 // Verify params are in valid range (2.2.4.3.1)
323 if ((params.m_srcEndPoint < 0x01 || params.m_srcEndPoint > 0xfe) ||
324 (params.m_dstEndPoint < 0x01))
325 {
327 {
328 confirmParams.m_status = ApsStatus::ILLEGAL_REQUEST;
329 m_apsmeBindConfirmCallback(confirmParams);
330 }
331 return;
332 }
333
334 SrcBindingEntry srcEntry(params.m_srcAddr, params.m_srcEndPoint, params.m_clusterId);
335
336 DstBindingEntry dstEntry;
337
339 {
340 // Group Addressing binding
342 dstEntry.SetDstAddr16(params.m_dstAddr16);
343 }
344 else
345 {
346 // Unicast binding
348 dstEntry.SetDstEndPoint(params.m_dstEndPoint);
349 }
350
351 switch (m_apsBindingTable.Bind(srcEntry, dstEntry))
352 {
354 confirmParams.m_status = ApsStatus::SUCCESS;
355 break;
357 confirmParams.m_status = ApsStatus::INVALID_BINDING;
358 break;
360 confirmParams.m_status = ApsStatus::TABLE_FULL;
361 break;
362 default:
363 NS_LOG_ERROR("Invalid binding option");
364 }
365
367 {
368 m_apsmeBindConfirmCallback(confirmParams);
369 }
370}
371
372void
376
377void
381
382void
384{
385 NS_LOG_FUNCTION(this);
386
387 ZigbeeApsHeader apsHeader;
388 nsdu->RemoveHeader(apsHeader);
389
390 ApsdeDataIndicationParams indicationParams;
391 indicationParams.m_status = ApsStatus::SUCCESS;
392
393 // TODO:
394 // See section 2.2.4.1.3.
395 // - Handle Security
396 // - Handle grouping(MCST) (Note group table shared by NWK and APS)
397 // - Handle binding
398 // - Handle fragmentation
399 // - Detect Duplicates
400 // - Handle ACK
401
402 // Check if packet is fragmented
403 if (apsHeader.IsExtHeaderPresent())
404 {
405 indicationParams.m_status = ApsStatus::DEFRAG_UNSUPPORTED;
407 {
408 m_apsdeDataIndicationCallback(indicationParams, nsdu);
409 }
410 NS_LOG_WARN("Extended Header (Fragmentation) not supported");
411 return;
412 }
413
414 if (apsHeader.GetFrameType() == ApsFrameType::APS_DATA)
415 {
416 if (apsHeader.GetDeliveryMode() == ApsDeliveryMode::APS_UCST ||
418 {
420 // Note: Extracting the Address directly from the NWK, creates a dependency on this NWK
421 // implementation. This is not a very good design, but in practice, it is unavoidable
422 // due to the descriptions in the specification.
423 indicationParams.m_dstAddr16 = m_nwk->GetNetworkAddress();
424 indicationParams.m_dstEndPoint = apsHeader.GetDstEndpoint();
426 indicationParams.m_srcAddress16 = params.m_srcAddr;
427 indicationParams.m_srcEndpoint = apsHeader.GetSrcEndpoint();
428 indicationParams.m_profileId = apsHeader.GetProfileId();
429 indicationParams.m_clusterId = apsHeader.GetClusterId();
430 indicationParams.asduLength = nsdu->GetSize();
432 indicationParams.m_linkQuality = params.m_linkQuality;
433 indicationParams.m_rxTime = Simulator::Now();
434
436 {
437 m_apsdeDataIndicationCallback(indicationParams, nsdu);
438 }
439 }
440 else
441 {
442 // TODO: Group deliveryMode == (MCST)
443 NS_LOG_WARN("Group delivery not supported");
444 }
445 }
446}
447
448void
453
454void
459
460void
465
466void
471
472//////////////////////////
473// ZigbeeApsTxOptions //
474//////////////////////////
475
477 : m_txOptions(value)
478{
479}
480
481void
483{
484 SetBit(0, enable);
485}
486
487void
489{
490 SetBit(1, enable);
491}
492
493void
495{
496 SetBit(2, enable);
497}
498
499void
501{
502 SetBit(3, enable);
503}
504
505void
507{
508 SetBit(4, enable);
509}
510
511bool
513{
514 return GetBit(0);
515}
516
517bool
519{
520 return GetBit(1);
521}
522
523bool
525{
526 return GetBit(2);
527}
528
529bool
534
535bool
537{
538 return GetBit(4);
539}
540
541uint8_t
543{
544 return m_txOptions;
545}
546
547void
548ZigbeeApsTxOptions::SetBit(int pos, bool value)
549{
550 if (value)
551 {
552 m_txOptions |= (1 << pos);
553 }
554 else
555 {
556 m_txOptions &= ~(1 << pos);
557 }
558}
559
560bool
562{
563 return (m_txOptions >> pos) & 1;
564}
565
566} // namespace zigbee
567} // namespace ns3
bool IsNull() const
Check for null implementation.
Definition callback.h:555
A base class which provides memory management and object aggregation.
Definition object.h:78
virtual void DoInitialize()
Initialize() implementation.
Definition object.cc:440
virtual void DoDispose()
Destructor implementation.
Definition object.cc:433
Smart pointer class similar to boost::intrusive_ptr.
NUMERIC_TYPE GetValue() const
Extracts the numeric value of the sequence number.
static Time Now()
Return the current simulation virtual time.
Definition simulator.cc:197
static EventId ScheduleNow(FUNC f, Ts &&... args)
Schedule an event to expire Now.
Definition simulator.h:595
a unique identifier for an interface.
Definition type-id.h:49
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition type-id.cc:1001
bool LookUpEntries(const SrcBindingEntry &src, std::vector< DstBindingEntry > &dstEntries)
Look for destination entries binded to an specific source entry portion in the binding table.
BindingTableStatus Bind(const SrcBindingEntry &src, const DstBindingEntry &dst)
Add an entry to the binding table.
Binding Table entry: Destination portion of the table.
void SetDstAddrMode(ApsDstAddressModeBind mode)
Set the destination address mode of the destination binding entry.
void SetDstEndPoint(uint8_t endPoint)
Set the destination endppoint to the destination binding entry.
void SetDstAddr16(Mac16Address address)
Set the destination 16-bit address of the destination binding entry.
Binding Table entry: Source portion of the table.
Defines the APS header use by data transfer and commands issued from the APS layer.
void SetDstEndpoint(uint8_t endpoint)
Set the destination endpoint in the APS header.
uint16_t GetClusterId() const
Get the cluster id in the APS header.
void SetDeliveryMode(enum ApsDeliveryMode mode)
Defines the mode in which this frame should be transmitted.
bool IsExtHeaderPresent() const
Indicates whether or not the extended header is present in the frame.
void SetFrameType(enum ApsFrameType frameType)
Set the Frame type defined in the APS layer.
void SetSrcEndpoint(uint8_t endpoint)
Set the source endpoint in the APS header.
void SetExtHeaderPresent(bool present)
Enables or disables the usage of the extended header.
ApsDeliveryMode GetDeliveryMode() const
Get the transmission mode set on the header.
void SetApsCounter(uint8_t counter)
Set the value of the APS counter in the APS header.
void SetClusterId(uint16_t clusterId)
Set the cluster id in the APS header.
uint8_t GetSrcEndpoint() const
Get the source endpoint in the APS header.
uint8_t GetDstEndpoint() const
Get the destination endpoint in the APS header.
ApsFrameType GetFrameType() const
Get the frame time present in the header.
void SetProfileId(uint16_t profileId)
Set the profile ID in the APS header.
uint16_t GetProfileId() const
Get the profile ID in the APS header.
Zigbee Specification r22.1.0, Section 2.2.3 Class that implements the Zigbee Specification Applicatio...
Definition zigbee-aps.h:267
void ApsmeBindRequest(ApsmeBindRequestParams params)
Zigbee Specification r22.1.0, Section 2.2.4.3.1 APSME-BIND.request Bind a source entry to one or more...
void NldeDataIndication(NldeDataIndicationParams params, Ptr< Packet > nsdu)
Zigbee Specification r22.1.0, Section 3.2.1.3 NLDE-DATA.indication Used to report to the APS the rece...
void SetApsmeUnbindConfirmCallback(ApsmeUnbindConfirmCallback c)
Set the callback as part of the interconnections between the APS and the next layer or service (typic...
SequenceNumber8 m_apsCounter
The sequence number used in packet Tx with APS headers.
Definition zigbee-aps.h:403
void SetApsdeDataConfirmCallback(ApsdeDataConfirmCallback c)
Set the callback as part of the interconnections between the APS and the next layer or service (typic...
void SetApsmeBindConfirmCallback(ApsmeBindConfirmCallback c)
Set the callback as part of the interconnections between the APS and the next layer or service (typic...
ZigbeeAps()
Default constructor.
Definition zigbee-aps.cc:35
void DoInitialize() override
Initialize() implementation.
Definition zigbee-aps.cc:52
Ptr< ZigbeeNwk > m_nwk
Pointer to the underlying NWK connected to this Zigbee APS.
Definition zigbee-aps.h:402
void SendDataWithBindingTable(ApsdeDataRequestParams params, Ptr< Packet > asdu)
Send a Groupcast or IEEE address destination from a list of destination in the binding table.
ApsdeDataConfirmCallback m_apsdeDataConfirmCallback
This callback is used to to notify the results of a data transmission request to the Application fram...
Definition zigbee-aps.h:411
void SetApsdeDataIndicationCallback(ApsdeDataIndicationCallback c)
Set the callback as part of the interconnections between the APS and the next layer or service (typic...
static TypeId GetTypeId()
Get the type ID.
Definition zigbee-aps.cc:26
ApsdeDataIndicationCallback m_apsdeDataIndicationCallback
This callback is used to to notify the reception of data to the Application framework (AF).
Definition zigbee-aps.h:418
void SendDataUcstBcst(ApsdeDataRequestParams params, Ptr< Packet > asdu)
Send a regular UCST or BCST data transmission to a known 16-bit address destination.
void DoDispose() override
Destructor implementation.
Definition zigbee-aps.cc:59
ApsmeBindConfirmCallback m_apsmeBindConfirmCallback
This callback is used to to notify the result of a binding request in the APS to the Application fram...
Definition zigbee-aps.h:425
void ApsmeUnbindRequest(ApsmeBindRequestParams params)
Zigbee Specification r22.1.0, Section 2.2.4.3.3 APSME-BIND.request Unbind a destination entry from a ...
void NotifyConstructionCompleted() override
Notifier called once the ObjectBase is fully constructed.
Definition zigbee-aps.cc:41
Ptr< ZigbeeNwk > GetNwk() const
Get the underlying NWK used by the current Zigbee APS.
Definition zigbee-aps.cc:75
BindingTable m_apsBindingTable
The binding table associated to this APS layer.
Definition zigbee-aps.h:404
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:81
void SetNwk(Ptr< ZigbeeNwk > nwk)
Set the underlying NWK to use in this Zigbee APS.
Definition zigbee-aps.cc:69
ApsmeUnbindConfirmCallback m_apsmeUnbindConfirmCallback
This callback is used to to notify the result of a unbinding request in the APS to the Application fr...
Definition zigbee-aps.h:432
void NldeDataConfirm(NldeDataConfirmParams params)
Zigbee Specification r22.1.0, Section 3.2.1.2 NLDE-DATA.confirm Used to report to the APS the transmi...
Helper class used to craft the transmission options bitmap used by the APSDE-DATA....
Definition zigbee-aps.h:442
bool GetBit(int pos) const
Get the value of the bit at the position indicated.
bool IsSecurityEnabled() const
Show if the security enable bit of the Tx options is present.
void SetUseNwkKey(bool enable)
Set the use network key bit of the TX options.
bool IsIncludeExtendedNonce() const
Show if the include extended nonce bit of the Tx options is present.
uint8_t m_txOptions
the bitmap representing the Tx options
Definition zigbee-aps.h:545
uint8_t GetTxOptions() const
Get the complete bitmap containing the Tx options.
void SetAckRequired(bool enable)
Set the Acknowledgement required bit of the Tx options.
void SetIncludeExtendedNonce(bool enable)
Set the include extended nonce bit of the Tx options.
void SetFragmentationPermitted(bool enable)
Set the fragmentation bit of the Tx options.
void SetSecurityEnabled(bool enable)
Set the security enable bit of the TX options.
ZigbeeApsTxOptions(uint8_t value=0)
The constructor of the Tx options class.
bool IsUseNwkKey() const
Show if the use network key bit of the Tx options is present.
void SetBit(int pos, bool value)
Set a bit value into a position in the uint8_t representint the Tx options.
bool IsAckRequired() const
Show if the ACK bit of the Tx options is present.
bool IsFragmentationPermitted() const
Show if the fragmentation permitted bit of the Tx options is present.
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.
Callback< R, Args... > MakeNullCallback()
Definition callback.h:727
#define NS_ABORT_MSG(msg)
Unconditional abnormal program termination with a message.
Definition abort.h:38
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
Definition log.h:243
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition log.h:191
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
Definition log.h:250
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition object-base.h:35
@ ILLEGAL_REQUEST
Illegal request.
@ NO_SHORT_ADDRESS
No short address present.
@ INVALID_BINDING
Invalid binding.
@ NOT_SUPPORTED
Not supported in APS.
@ TABLE_FULL
Binding table or group table is full.
@ SECURITY_FAIL
Security failed.
@ NO_BOUND_DEVICE
No bound device.
@ DEFRAG_UNSUPPORTED
Defragmentation is not supported.
@ SUCCESS
A request has been executed successfully.
@ GROUP_ADDR_DST_ENDPOINT_NOT_PRESENT
Group address or 16-bit destination address present but destination endpoint not present.
@ DST_ADDR16_DST_ENDPOINT_PRESENT
16-bit destination address and destination endpoint present.
@ DST_ADDR_AND_DST_ENDPOINT_NOT_PRESENT
Destination address and destination endpoint not present.
@ DST_ADDR64_DST_ENDPOINT_PRESENT
64-bit destination address and destination endpoint present.
@ UCST_BCST
Unicast or Broadcast address mode.
Definition zigbee-nwk.h:78
@ SRC_ADDR16_SRC_ENDPOINT_PRESENT
16-bit source address and source endpoint present
@ UNSECURED
Unsecured status.
@ ENABLE_ROUTE_DISCOVERY
Enable route discovery.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Zigbee Specification r22.1.0, Section 2.2.4.1.2 APSDE-DATA.confirm params.
Definition zigbee-aps.h:147
Mac16Address m_dstAddr16
The destination 16-bit address.
Definition zigbee-aps.h:150
uint8_t m_srcEndPoint
The source endpoint.
Definition zigbee-aps.h:153
ApsDstAddressMode m_dstAddrMode
Destination address mode.
Definition zigbee-aps.h:148
uint8_t m_dstEndPoint
The destination endpoint.
Definition zigbee-aps.h:152
Time m_txTime
The transmission timestamp.
Definition zigbee-aps.h:155
Mac64Address m_dstAddr64
The destination IEEE address (64-bit address).
Definition zigbee-aps.h:151
ApsStatus m_status
The confirmation status.
Definition zigbee-aps.h:154
Zigbee Specification r22.1.0, Section 2.2.4.1.3 APSDE-DATA.indications params.
Definition zigbee-aps.h:165
Time m_rxTime
The reception timestamp.
Definition zigbee-aps.h:185
Mac16Address m_dstAddr16
The destination 16-bit address.
Definition zigbee-aps.h:169
uint8_t m_dstEndPoint
The destination endpoint.
Definition zigbee-aps.h:171
uint8_t asduLength
The size of the the ASDU packet.
Definition zigbee-aps.h:181
uint8_t m_srcEndpoint
The application source endpoint.
Definition zigbee-aps.h:178
ApsSrcAddressMode m_srcAddrMode
The source address mode.
Definition zigbee-aps.h:172
ApsDstAddressMode m_dstAddrMode
The destination address mode.
Definition zigbee-aps.h:166
ApsStatus m_status
The data indication status.
Definition zigbee-aps.h:182
uint8_t m_linkQuality
The link quality indication value.
Definition zigbee-aps.h:184
Mac16Address m_srcAddress16
The 16-bit address.
Definition zigbee-aps.h:176
uint16_t m_clusterId
The application cluster ID.
Definition zigbee-aps.h:180
ApsSecurityStatus m_securityStatus
Security status.
Definition zigbee-aps.h:183
uint16_t m_profileId
The application profile ID.
Definition zigbee-aps.h:179
Zigbee Specification r22.1.0, Section 2.2.4.1.1 APSDE-DATA.request params.
Definition zigbee-aps.h:123
Zigbee Specification r22.1.0, Sections 2.2.4.3.2 and 2.2.4.3.4 APSME-BIND.confirm and APSME-UNBIND....
Definition zigbee-aps.h:213
ApsDstAddressModeBind m_dstAddrMode
Destination address mode.
Definition zigbee-aps.h:218
uint16_t m_clusterId
The application cluster ID.
Definition zigbee-aps.h:217
ApsStatus m_status
The status of the bind request.
Definition zigbee-aps.h:214
uint8_t m_srcEndPoint
The application source endpoint.
Definition zigbee-aps.h:216
Mac64Address m_srcAddr
The application source address.
Definition zigbee-aps.h:215
Mac16Address m_dstAddr16
The destination 16-bit address.
Definition zigbee-aps.h:220
Mac64Address m_dstAddr64
The destination 64-bit address.
Definition zigbee-aps.h:221
uint8_t m_dstEndPoint
The application destination endpoint.
Definition zigbee-aps.h:222
Zigbee Specification r22.1.0, Sections 2.2.4.3.1 and 2.2.4.3.3 APSME-BIND.request and APSME-UNBIND....
Definition zigbee-aps.h:195
NLDE-DATA.confirm params.
Definition zigbee-nwk.h:291
NLDE-DATA.indication params.
Definition zigbee-nwk.h:305
NLDE-DATA.request params.
Definition zigbee-nwk.h:323
SequenceNumber8 m_aliasSeqNumber
The sequence number used by this NSDU (ignored if useAlias = false).
Definition zigbee-nwk.h:332
Mac16Address m_dstAddr
The destination address.
Definition zigbee-nwk.h:326
bool m_securityEnable
Enable NWK layer security for the current frame.
Definition zigbee-nwk.h:339
bool m_useAlias
Indicates if next higher layer use an alias for the current frame.
Definition zigbee-nwk.h:329
Mac16Address m_aliasSrcAddr
The source address to be used by this NSDU (ignored ifuseAlias = false).
Definition zigbee-nwk.h:330
uint8_t m_radius
Distance in hops that the frame is allowed to travel through the network.
Definition zigbee-nwk.h:334
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