A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
zigbee-aps.h
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#ifndef ZIGBEE_APS_H
12#define ZIGBEE_APS_H
13
14#include "zigbee-aps-header.h"
15#include "zigbee-aps-tables.h"
16#include "zigbee-nwk.h"
17
18#include "ns3/event-id.h"
19#include "ns3/mac16-address.h"
20#include "ns3/mac64-address.h"
21#include "ns3/object.h"
22#include "ns3/random-variable-stream.h"
23#include "ns3/sequence-number.h"
24#include "ns3/traced-callback.h"
25#include "ns3/traced-value.h"
26
27#include <cstdint>
28#include <iomanip>
29#include <iterator>
30
31namespace ns3
32{
33namespace zigbee
34{
35
36/**
37 * @ingroup zigbee
38 *
39 * APS Destination Address Mode,
40 * Zigbee Specification r22.1.0
41 * Table 2-2 APSDE-DATA.request Parameters
42 * See Table 2-4 APSDE-DATA.indication Parameters
43 */
44enum class ApsDstAddressMode : std::uint8_t
45{
46 DST_ADDR_AND_DST_ENDPOINT_NOT_PRESENT = 0x00, //!< Destination address and destination endpoint
47 //!< not present.
48 GROUP_ADDR_DST_ENDPOINT_NOT_PRESENT = 0x01, //!< Group address or 16-bit destination address
49 //!< present but destination endpoint not present.
50 DST_ADDR16_DST_ENDPOINT_PRESENT = 0x02, //!< 16-bit destination address and destination
51 //!< endpoint present.
52 DST_ADDR64_DST_ENDPOINT_PRESENT = 0x03, //!< 64-bit destination address and destination
53 //!< endpoint present.
54 DST_ADDR64_DST_ENDPOINT_NOT_PRESENT = 0x04 //!< 64-bit address present but destination
55 //!< endpoint not present.
56};
57
58/**
59 * @ingroup zigbee
60 *
61 * APS Source Address Mode,
62 * Zigbee Specification r22.1.0
63 * See Table 2-4 APSDE-DATA.indication Parameters
64 */
65enum class ApsSrcAddressMode : std::uint8_t
66{
67 SRC_ADDR16_SRC_ENDPOINT_PRESENT = 0x02, //!< 16-bit source address and source endpoint present
68 SRC_ADDR64_SRC_ENDPOINT_PRESENT = 0x03, //!< 64-bit source address and source endpoint present
69 SRC_ADDR64_SRC_ENDPOINT_NOT_PRESENT = 0x04 //!< 64-bit source address present but source
70 //!< endpoint not present
71};
72
73/**
74 * @ingroup zigbee
75 *
76 * APS Security status
77 * See Zigbee Specification r22.1.0, Table 2-4
78 * APSDE-DATA.indication Parameters
79 */
80enum class ApsSecurityStatus : std::uint8_t
81{
82 UNSECURED = 0x00, //!< Unsecured status
83 SECURED_NWK_KEY = 0x01, //!< Use NWK secure key
84 SECURED_LINK_KEY = 0x02 //!< Use link secure key
85};
86
87/**
88 * @ingroup zigbee
89 *
90 * APS Sub-layer Status Values
91 * See Zigbee Specification r22.1.0, Table 2-27
92 */
93enum class ApsStatus : std::uint8_t
94{
95 SUCCESS = 0x00, //!< A request has been executed successfully.
96 ASDU_TOO_LONG = 0xa0, //!< A received fragmented
97 //!< frame could not be defragmented at the current time.
98 DEFRAG_DEFERRED = 0xa1, //!< Defragmentation deferred.
99 DEFRAG_UNSUPPORTED = 0xa2, //!< Defragmentation is not supported.
100 ILLEGAL_REQUEST = 0xa3, //!< Illegal request
101 INVALID_BINDING = 0xa4, //!< Invalid binding
102 INVALID_GROUP = 0xa5, //!< Invalid group
103 INVALID_PARAMETER = 0xa6, //!< A parameter value was invalid or out of range
104 NO_ACK = 0xa7, //!< No Acknowledgment
105 NO_BOUND_DEVICE = 0xa8, //!< No bound device
106 NO_SHORT_ADDRESS = 0xa9, //!< No short address present
107 NOT_SUPPORTED = 0xaa, //!< Not supported in APS
108 SECURED_LINK_KEY = 0xab, //!< Secured link key present
109 SECURED_NWK_KEY = 0xac, //!< Secured network key present
110 SECURITY_FAIL = 0xad, //!< Security failed
111 TABLE_FULL = 0xae, //!< Binding table or group table is full
112 UNSECURED = 0xaf, //!< Unsecured
113 UNSUPPORTED_ATTRIBUTE = 0xb0 //!< Unsupported attribute
114};
115
116/**
117 * @ingroup zigbee
118 *
119 * Zigbee Specification r22.1.0, Section 2.2.4.1.1
120 * APSDE-DATA.request params.
121 */
123{
126 Mac16Address m_dstAddr16; //!< The destination 16-bit address
127 Mac64Address m_dstAddr64; //!< The destination 64-bit address
128 uint8_t m_dstEndPoint{0}; //!< The destination endpoint
129 uint16_t m_profileId{0}; //!< The application profile ID
130 uint16_t m_clusterId{0}; //!< The application cluster ID
131 uint8_t m_srcEndPoint{0}; //!< The source endpoint
132 uint32_t m_asduLength{0}; //!< The ASDU length
133 uint8_t m_txOptions{0}; //!< Transmission options
134 bool m_useAlias{false}; //!< Indicates if alias is used in this transmission
135 Mac16Address m_aliasSrcAddr; //!< Alias source address
136 uint8_t m_aliasSeqNumb{0}; //!< Alias sequence number
137 uint8_t m_radius{0}; //!< Radius (Number of hops this message travels)
138};
139
140/**
141 * @ingroup zigbee
142 *
143 * Zigbee Specification r22.1.0, Section 2.2.4.1.2
144 * APSDE-DATA.confirm params.
145 */
147{
150 Mac16Address m_dstAddr16; //!< The destination 16-bit address.
151 Mac64Address m_dstAddr64; //!< The destination IEEE address (64-bit address).
152 uint8_t m_dstEndPoint{0}; //!< The destination endpoint.
153 uint8_t m_srcEndPoint{0}; //!< The source endpoint.
155 Time m_txTime; //!< The transmission timestamp.
156};
157
158/**
159 * @ingroup zigbee
160 *
161 * Zigbee Specification r22.1.0, Section 2.2.4.1.3
162 * APSDE-DATA.indications params.
163 */
165{
168 //!< address mode
169 Mac16Address m_dstAddr16; //!< The destination 16-bit address
170 Mac64Address m_dstAddr64; //!< The destination IEEE address (64-bit address)
171 uint8_t m_dstEndPoint{0xF0}; //!< The destination endpoint
174 //!< source address mode
175
176 Mac16Address m_srcAddress16; //!< The 16-bit address
177 Mac64Address m_srcAddress64; //!< The IEEE source address (64-bit address)
178 uint8_t m_srcEndpoint{0xF0}; //!< The application source endpoint
179 uint16_t m_profileId{0xC0DE}; //!< The application profile ID
180 uint16_t m_clusterId{0x0000}; //!< The application cluster ID
181 uint8_t asduLength{0}; //!< The size of the the ASDU packet
182 ApsStatus m_status{ApsStatus::SUCCESS}; //!< The data indication status
184 uint8_t m_linkQuality{0}; //!< The link quality indication value
185 Time m_rxTime; //!< The reception timestamp
186};
187
188/**
189 * @ingroup zigbee
190 *
191 * Zigbee Specification r22.1.0, Sections 2.2.4.3.1 and 2.2.4.3.3
192 * APSME-BIND.request and APSME-UNBIND.request params.
193 */
195{
196 Mac64Address m_srcAddr; //!< The source IEEE address (64-bit address)
197 uint8_t m_srcEndPoint{0}; //!< The application source endpoint
198 uint16_t m_clusterId{0}; //!< The application cluster ID
201 Mac16Address m_dstAddr16; //!< The destination 16-bit address
202 Mac64Address m_dstAddr64; //!< The destination 64-bit address
203 uint8_t m_dstEndPoint{0xF0}; //!< The application destination endpoint
204};
205
206/**
207 * @ingroup zigbee
208 *
209 * Zigbee Specification r22.1.0, Sections 2.2.4.3.2 and 2.2.4.3.4
210 * APSME-BIND.confirm and APSME-UNBIND.confirm params
211 */
213{
214 ApsStatus m_status{ApsStatus::UNSUPPORTED_ATTRIBUTE}; //!< The status of the bind request
215 Mac64Address m_srcAddr; //!< The application source address
216 uint8_t m_srcEndPoint{0}; //!< The application source endpoint
217 uint16_t m_clusterId{0}; //!< The application cluster ID
220 Mac16Address m_dstAddr16; //!< The destination 16-bit address
221 Mac64Address m_dstAddr64; //!< The destination 64-bit address
222 uint8_t m_dstEndPoint{0xF0}; //!< The application destination endpoint
223};
224
225//////////////////////
226// Callbacks //
227//////////////////////
228
229/**
230 * @ingroup zigbee
231 *
232 * This callback is called to confirm a successfully transmission of an ASDU.
233 */
235
236/**
237 * @ingroup zigbee
238 *
239 * This callback is called after a ASDU has successfully received and
240 * APS push it to deliver it to the next higher layer (typically the application framework).
241 */
243
244/**
245 * @ingroup zigbee
246 *
247 * This callback is called to confirm a successfully addition of a destination
248 * into the binding table.
249 */
251
252/**
253 * @ingroup zigbee
254 *
255 * This callback is called to confirm a successfully unbind request performed
256 * into the binding table.
257 */
259
260/**
261 * @ingroup zigbee
262 *
263 * Zigbee Specification r22.1.0, Section 2.2.3
264 * Class that implements the Zigbee Specification Application Support Sub-layer (APS).
265 */
266class ZigbeeAps : public Object
267{
268 public:
269 /**
270 * Get the type ID.
271 *
272 * @return the object TypeId
273 */
274 static TypeId GetTypeId();
275
276 /**
277 * Default constructor.
278 */
279 ZigbeeAps();
280 ~ZigbeeAps() override;
281
282 /**
283 * Set the underlying NWK to use in this Zigbee APS
284 *
285 * @param nwk The pointer to the underlying Zigbee NWK to set to this Zigbee APS
286 */
287 void SetNwk(Ptr<ZigbeeNwk> nwk);
288
289 /**
290 * Get the underlying NWK used by the current Zigbee APS.
291 *
292 * @return The pointer to the underlying NWK object currently connected to the Zigbee APS.
293 */
294 Ptr<ZigbeeNwk> GetNwk() const;
295
296 /**
297 * Zigbee Specification r22.1.0, Section 2.2.4.1.1
298 * APSDE-DATA.request
299 * Request the transmission of data to one or more entities.
300 *
301 * @param params The APSDE data request params
302 * @param asdu The packet to transmit
303 */
305
306 /**
307 * Zigbee Specification r22.1.0, Section 2.2.4.3.1
308 * APSME-BIND.request
309 * Bind a source entry to one or more destination entries in the binding table.
310 *
311 * @param params The APSDE bind request params
312 */
314
315 /**
316 * Zigbee Specification r22.1.0, Section 2.2.4.3.3
317 * APSME-BIND.request
318 * Unbind a destination entry from a source entry in the binding table.
319 *
320 * @param params The APSDE bind request params
321 */
323
324 /**
325 * Zigbee Specification r22.1.0, Section 3.2.1.2
326 * NLDE-DATA.confirm
327 * Used to report to the APS the transmission of data from the NWK.
328 *
329 * @param params The NLDE data confirm params
330 */
332
333 /**
334 * Zigbee Specification r22.1.0, Section 3.2.1.3
335 * NLDE-DATA.indication
336 * Used to report to the APS the reception of data from the NWK.
337 *
338 * @param params The NLDE data indication params
339 * @param nsdu The packet received
340 */
342
343 /**
344 * Set the callback as part of the interconnections between the APS and
345 * the next layer or service (typically the application framework). The callback
346 * implements the callback used in a APSDE-DATA.confirm
347 *
348 * @param c the ApsdeDataConfirm callback
349 */
351
352 /**
353 * Set the callback as part of the interconnections between the APS and
354 * the next layer or service (typically the application framework). The callback
355 * implements the callback used in a APSDE-DATA.indication
356 *
357 * @param c the ApsdeDataIndication callback
358 */
360
361 /**
362 * Set the callback as part of the interconnections between the APS and
363 * the next layer or service (typically the application framework). The callback
364 * implements the callback used in a APSME-BIND.confirm
365 *
366 * @param c the ApsmeBindConfirm callback
367 */
369
370 /**
371 * Set the callback as part of the interconnections between the APS and
372 * the next layer or service (typically the application framework). The callback
373 * implements the callback used in a APSDE-UNBIND.confirm
374 *
375 * @param c the ApsdeUnbindConfirm callback
376 */
378
379 protected:
380 void DoInitialize() override;
381 void DoDispose() override;
382 void NotifyConstructionCompleted() override;
383
384 private:
385 /**
386 * Send a Groupcast or IEEE address destination from a list of destination in
387 * the binding table.
388 *
389 * @param params The APSDE data request params
390 * @param asdu The packet to transmit
391 */
393
394 /**
395 * Send a regular UCST or BCST data transmission to a known 16-bit address destination.
396 *
397 * @param params The APSDE data request params
398 * @param asdu The packet to transmit
399 */
401
402 Ptr<ZigbeeNwk> m_nwk; //!< Pointer to the underlying NWK connected to this Zigbee APS
403 SequenceNumber8 m_apsCounter; //!< The sequence number used in packet Tx with APS headers.
404 BindingTable m_apsBindingTable; //!< The binding table associated to this APS layer
405
406 /**
407 * This callback is used to to notify the results of a data transmission
408 * request to the Application framework (AF) making the request.
409 * See Zigbee specification r22.1.0, Section 2.2.4.1.2
410 */
412
413 /**
414 * This callback is used to to notify the reception of data
415 * to the Application framework (AF).
416 * See Zigbee specification r22.1.0, Section 2.2.4.1.3
417 */
419
420 /**
421 * This callback is used to to notify the result of a binding
422 * request in the APS to the Application framework (AF).
423 * See Zigbee specification r22.1.0, Section 2.2.4.3.2
424 */
426
427 /**
428 * This callback is used to to notify the result of a unbinding
429 * request in the APS to the Application framework (AF).
430 * See Zigbee specification r22.1.0, Section 2.2.4.3.4
431 */
433};
434
435/**
436 * @ingroup zigbee
437 *
438 * Helper class used to craft the transmission options bitmap used by the
439 * APSDE-DATA.request.
440 */
442{
443 public:
444 /**
445 * The constructor of the Tx options class.
446 *
447 * @param value The value to set in the Tx options.
448 */
449 ZigbeeApsTxOptions(uint8_t value = 0);
450
451 /**
452 * Set the security enable bit of the TX options.
453 *
454 * @param enable True if security is enabled.
455 */
456 void SetSecurityEnabled(bool enable);
457
458 /**
459 * Set the use network key bit of the TX options.
460 *
461 * @param enable True if Network key should be used.
462 */
463 void SetUseNwkKey(bool enable);
464
465 /**
466 * Set the Acknowledgement required bit of the Tx options.
467 *
468 * @param enable True if ACK is required.
469 */
470 void SetAckRequired(bool enable);
471
472 /**
473 * Set the fragmentation bit of the Tx options
474 *
475 * @param enable True if fragmentation is allowed in the transmission.
476 */
477 void SetFragmentationPermitted(bool enable);
478
479 /**
480 * Set the include extended nonce bit of the Tx options
481 *
482 * @param enable True if the frame should include the extended nonce
483 */
484 void SetIncludeExtendedNonce(bool enable);
485
486 /**
487 * Show if the security enable bit of the Tx options is present.
488 *
489 * @return True if the bit is active
490 */
491 bool IsSecurityEnabled() const;
492
493 /**
494 * Show if the use network key bit of the Tx options is present.
495 *
496 * @return True if the bit is active
497 */
498 bool IsUseNwkKey() const;
499
500 /**
501 * Show if the ACK bit of the Tx options is present.
502 *
503 * @return True if the bit is active
504 */
505 bool IsAckRequired() const;
506
507 /**
508 * Show if the fragmentation permitted bit of the Tx options is present.
509 *
510 * @return True if the bit is active
511 */
512 bool IsFragmentationPermitted() const;
513
514 /**
515 * Show if the include extended nonce bit of the Tx options is present.
516 *
517 * @return True if the bit is active
518 */
519 bool IsIncludeExtendedNonce() const;
520
521 /**
522 * Get the complete bitmap containing the Tx options
523 *
524 * @return The Tx options bitmap.
525 */
526 uint8_t GetTxOptions() const;
527
528 private:
529 /**
530 * Set a bit value into a position in the uint8_t representint the Tx options.
531 *
532 * @param pos Position to shift
533 * @param value Value to set
534 */
535 void SetBit(int pos, bool value);
536
537 /**
538 * Get the value of the bit at the position indicated.
539 *
540 * @param pos The position in the uint8_t Tx options
541 * @return True if the bit value was obtained
542 */
543 bool GetBit(int pos) const;
544
545 uint8_t m_txOptions; //!< the bitmap representing the Tx options
546};
547
548} // namespace zigbee
549} // namespace ns3
550
551#endif /* ZIGBEE_APS_H */
Callback template class.
Definition callback.h:422
This class can contain 16 bit addresses.
an EUI-64 address
A base class which provides memory management and object aggregation.
Definition object.h:78
Smart pointer class similar to boost::intrusive_ptr.
Simulation virtual time values and global simulation resolution.
Definition nstime.h:94
a unique identifier for an interface.
Definition type-id.h:49
APS Binding Table See Zigbee specification r22.1.0, Table 2-134 Similar to the z-boss implementation,...
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.
ApsStatus
APS Sub-layer Status Values See Zigbee Specification r22.1.0, Table 2-27.
Definition zigbee-aps.h:94
ApsDstAddressMode
APS Destination Address Mode, Zigbee Specification r22.1.0 Table 2-2 APSDE-DATA.request Parameters Se...
Definition zigbee-aps.h:45
Callback< void, ApsmeBindConfirmParams > ApsmeBindConfirmCallback
This callback is called to confirm a successfully addition of a destination into the binding table.
Definition zigbee-aps.h:250
Callback< void, ApsdeDataConfirmParams > ApsdeDataConfirmCallback
This callback is called to confirm a successfully transmission of an ASDU.
Definition zigbee-aps.h:234
ApsSrcAddressMode
APS Source Address Mode, Zigbee Specification r22.1.0 See Table 2-4 APSDE-DATA.indication Parameters.
Definition zigbee-aps.h:66
Callback< void, ApsmeBindConfirmParams > ApsmeUnbindConfirmCallback
This callback is called to confirm a successfully unbind request performed into the binding table.
Definition zigbee-aps.h:258
ApsSecurityStatus
APS Security status See Zigbee Specification r22.1.0, Table 2-4 APSDE-DATA.indication Parameters.
Definition zigbee-aps.h:81
Callback< void, ApsdeDataIndicationParams, Ptr< Packet > > ApsdeDataIndicationCallback
This callback is called after a ASDU has successfully received and APS push it to deliver it to the n...
Definition zigbee-aps.h:242
ApsDstAddressModeBind
APS Destination Address Mode for Binding Zigbee Specification r22.1.0, Table 2-6 APSME-BIND....
@ ILLEGAL_REQUEST
Illegal request.
@ UNSUPPORTED_ATTRIBUTE
Unsupported attribute.
@ INVALID_GROUP
Invalid group.
@ ASDU_TOO_LONG
A received fragmented frame could not be defragmented at the current time.
@ INVALID_BINDING
Invalid binding.
@ NOT_SUPPORTED
Not supported in APS.
@ DEFRAG_DEFERRED
Defragmentation deferred.
@ SECURITY_FAIL
Security failed.
@ NO_BOUND_DEVICE
No bound device.
@ DEFRAG_UNSUPPORTED
Defragmentation is not supported.
@ SUCCESS
A request has been executed successfully.
@ 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_NOT_PRESENT
64-bit address present but destination endpoint not present.
@ SRC_ADDR64_SRC_ENDPOINT_PRESENT
64-bit source address and source endpoint present
@ SRC_ADDR16_SRC_ENDPOINT_PRESENT
16-bit source address and source endpoint present
@ SRC_ADDR64_SRC_ENDPOINT_NOT_PRESENT
64-bit source address present but source endpoint not present
@ SECURED_LINK_KEY
Use link secure key.
@ UNSECURED
Unsecured status.
@ SECURED_NWK_KEY
Use NWK secure key.
@ UNSUPPORTED_ATTRIBUTE
Unsupported attribute (Zigbee specification r22.1.0)
Definition zigbee-nwk.h:197
@ SUCCESS
The operation was completed successfully.
Definition zigbee-nwk.h:153
@ NO_SHORT_ADDRESS
Failure due to unallocated 16-bit short address.
Definition zigbee-nwk.h:173
@ INVALID_PARAMETER
Invalid Parameter (Zigbee specification r22.1.0)
Definition zigbee-nwk.h:189
@ NO_ACK
No acknowledgment was received after macMaxFrameRetries.
Definition zigbee-nwk.h:170
@ TABLE_FULL
Either the routing or neighbor table are full.
Definition zigbee-nwk.h:126
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
Mac64Address m_srcAddress64
The IEEE source address (64-bit address)
Definition zigbee-aps.h:177
Time m_rxTime
The reception timestamp.
Definition zigbee-aps.h:185
Mac64Address m_dstAddr64
The destination IEEE address (64-bit address)
Definition zigbee-aps.h:170
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
uint16_t m_profileId
The application profile ID.
Definition zigbee-aps.h:129
Mac16Address m_aliasSrcAddr
Alias source address.
Definition zigbee-aps.h:135
uint16_t m_clusterId
The application cluster ID.
Definition zigbee-aps.h:130
Mac16Address m_dstAddr16
The destination 16-bit address.
Definition zigbee-aps.h:126
uint8_t m_txOptions
Transmission options.
Definition zigbee-aps.h:133
uint8_t m_srcEndPoint
The source endpoint.
Definition zigbee-aps.h:131
uint32_t m_asduLength
The ASDU length.
Definition zigbee-aps.h:132
bool m_useAlias
Indicates if alias is used in this transmission.
Definition zigbee-aps.h:134
uint8_t m_aliasSeqNumb
Alias sequence number.
Definition zigbee-aps.h:136
ApsDstAddressMode m_dstAddrMode
Destination address mode.
Definition zigbee-aps.h:124
uint8_t m_dstEndPoint
The destination endpoint.
Definition zigbee-aps.h:128
uint8_t m_radius
Radius (Number of hops this message travels)
Definition zigbee-aps.h:137
Mac64Address m_dstAddr64
The destination 64-bit address.
Definition zigbee-aps.h:127
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
Mac64Address m_srcAddr
The source IEEE address (64-bit address)
Definition zigbee-aps.h:196
ApsDstAddressModeBind m_dstAddrMode
Destination address mode.
Definition zigbee-aps.h:199
uint16_t m_clusterId
The application cluster ID.
Definition zigbee-aps.h:198
uint8_t m_srcEndPoint
The application source endpoint.
Definition zigbee-aps.h:197
uint8_t m_dstEndPoint
The application destination endpoint.
Definition zigbee-aps.h:203
Mac64Address m_dstAddr64
The destination 64-bit address.
Definition zigbee-aps.h:202
Mac16Address m_dstAddr16
The destination 16-bit address.
Definition zigbee-aps.h:201
NLDE-DATA.confirm params.
Definition zigbee-nwk.h:291
NLDE-DATA.indication params.
Definition zigbee-nwk.h:305