A Discrete-Event Network Simulator
API
lr-wpan-fields.h
Go to the documentation of this file.
1/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2019 Ritsumeikan University, Shiga, Japan.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * Author: Alberto Gallegos Ramonet <ramonet@fc.ritsumei.ac.jp>
19 *
20 * This file implements Information Fields present in IEEE 802.15.4-2011.
21 * Information Fields are in practice similar to the Information Elements(IE)
22 * introduced in later revisions of the standard, however, they lack
23 * descriptors and common format unlike the IEs. To keep this implementation
24 * consistent with the IEEE 802.15.4-2011 std. the present file implements
25 * Information Fields not Information Elements.
26 */
27#ifndef LR_WPAN_FIELDS_H
28#define LR_WPAN_FIELDS_H
29
30
31#include <ns3/mac16-address.h>
32#include <ns3/mac64-address.h>
33#include "ns3/buffer.h"
34#include <array>
35
36
37namespace ns3 {
38
44{
45 RFD = 0,
46 FFD = 1
47};
48
55{
56
57public:
63 void SetSuperframe (uint16_t superFrm);
68 void SetBeaconOrder (uint8_t bcnOrder);
73 void SetSuperframeOrder (uint8_t frmOrder);
78 void SetFinalCapSlot (uint8_t capSlot);
83 void SetBattLifeExt (bool battLifeExt);
88 void SetPanCoor (bool panCoor);
93 void SetAssocPermit (bool assocPermit);
98 uint8_t GetBeaconOrder (void) const;
103 uint8_t GetFrameOrder (void) const;
108 uint8_t GetFinalCapSlot (void) const;
113 bool IsBattLifeExt (void) const;
118 bool IsPanCoor (void) const;
123 bool IsAssocPermit (void) const;
128 uint16_t GetSuperframe (void) const;
133 uint32_t GetSerializedSize (void) const;
146
147private:
148 // Superframe Specification field
149 // See IEEE 802.14.15-2011 5.2.2.1.2
157
158};
159
167std::ostream &operator << (std::ostream &os, const SuperframeField &superframeField);
168
175{
176
177public:
178 GtsFields ();
183 uint8_t GetGtsSpecField (void) const;
188 uint8_t GetGtsDirectionField (void) const;
193 void SetGtsSpecField (uint8_t gtsSpec);
198 void SetGtsDirectionField (uint8_t gtsDir);
203 bool GetGtsPermit (void) const;
208 uint32_t GetSerializedSize (void) const;
221
222private:
227 {
231 };
232
233 //GTS specification field
235 // GTS specification field Reserved (Not necessary) (Bit 3-6)
237 //GTS Direction field
238 uint8_t m_gtsDirMask;
239 // GTS Direction field Reserved (Not Necessary) (Bit 7)
240 //GTS List
242};
243
244
252std::ostream &operator << (std::ostream &os, const GtsFields &gtsFields);
253
254
255
262{
263
264public:
270 void AddAddress (Mac16Address shortAddr);
275 void AddAddress (Mac64Address extAddr);
281 bool SearchAddress (Mac16Address shortAddr);
287 bool SearchAddress (Mac64Address extAddr);
292 uint8_t GetPndAddrSpecField (void) const;
297 uint8_t GetNumShortAddr (void) const;
302 uint8_t GetNumExtAddr (void) const;
303
309 void SetPndAddrSpecField (uint8_t pndAddrSpecField);
314 uint32_t GetSerializedSize (void) const;
327
328private:
329 // Pending Address Specification Field
334 // Address List
335 std::array <Mac16Address,7> m_shortAddrList;
336 std::array<Mac64Address,7> m_extAddrList;
337
338};
339
347std::ostream &operator << (std::ostream &os, const PendingAddrFields &pendingAddrFields);
348
349
357{
358
359public:
365 uint32_t GetSerializedSize (void) const;
382 bool IsDeviceTypeFfd (void) const;
387 bool IsPowSrcAvailable (void) const;
392 bool IsReceiverOnWhenIdle (void) const;
397 bool IsSecurityCapability (void) const;
402 bool IsShortAddrAllocOn (void) const;
408 void SetFfdDevice (bool devType);
413 void SetPowSrcAvailable (bool pow);
418 void SetRxOnWhenIdle (bool rxIdle);
423 void SetSecurityCap (bool sec);
429 void SetShortAddrAllocOn (bool addrAlloc);
430
431private:
432
438
439};
440std::ostream &operator << (std::ostream &os, const CapabilityField &capabilityField);
441
442
443} //end namespace ns3
444
445#endif /* LR_WPAN_FIELDS_H */
iterator in a Buffer instance
Definition: buffer.h:99
Represent the Capability Information Field.
bool IsDeviceTypeFfd(void) const
True if the device type is a Full Functional Device (FFD) false if is a Reduced Functional Device (RF...
uint32_t GetSerializedSize(void) const
Get the size of the serialized Capability Information Field.
bool m_securityCap
Capability Information Field, Security Capability (bit 6)
bool IsSecurityCapability(void) const
True if the device is capable of sending and receiving cryptographically protected MAC frames.
bool m_allocAddr
Capability Information Field, Allocate Address (bit 7)
void SetPowSrcAvailable(bool pow)
Set the Power Source available flag in the Capability Information Field.
void SetShortAddrAllocOn(bool addrAlloc)
Set the Short Address Flag in the Capability Information Field.
bool IsShortAddrAllocOn(void) const
True if the device wishes the coordinator to allocate a short address as result of the association pr...
void SetSecurityCap(bool sec)
Set the Security Capability flag in the Capability Information Field.
bool IsPowSrcAvailable(void) const
True if the device is receiving power from alternating current mains.
void SetRxOnWhenIdle(bool rxIdle)
Indicate if the receiver is On on Idle.
bool m_deviceType
Capability Information Field, Device Type (bit 1)
bool m_powerSource
Capability Information Field, Power Source (bit 2)
bool IsReceiverOnWhenIdle(void) const
True if the device does not disable its receiver to conserve power during idle periods.
void SetFfdDevice(bool devType)
Set the Device type in the Capability Information Field.
Buffer::Iterator Deserialize(Buffer::Iterator i)
Deserialize the entire Capability Information Field.
Buffer::Iterator Serialize(Buffer::Iterator i) const
Serialize the entire Capability Information Field.
bool m_receiverOnWhenIdle
Capability Information Field, Receiver On When Idle (bit 3)
Represent the GTS information fields.
void SetGtsSpecField(uint8_t gtsSpec)
Set the GTS Specification Field to the GTS Fields.
uint8_t GetGtsSpecField(void) const
Get the GTS Specification Field from the GTS Fields.
void SetGtsDirectionField(uint8_t gtsDir)
Set the GTS direction field to the GTS Fields.
gtsDescriptor m_gtsList[7]
GTS List field (maximum descriptors stored == 7)
uint32_t GetSerializedSize(void) const
Get the size of the serialized GTS fields.
uint8_t GetGtsDirectionField(void) const
Get the GTS Direction Field from the GTS Fields.
uint8_t m_gtsSpecPermit
GTS specification field GTS Permit (Bit 7)
uint8_t m_gtsSpecDescCount
GTS specification field Descriptor Count (Bit 0-2)
Buffer::Iterator Serialize(Buffer::Iterator i) const
Serialize the entire GTS fields.
bool GetGtsPermit(void) const
Get the GTS Specification Permit.
Buffer::Iterator Deserialize(Buffer::Iterator i)
Deserialize the entire GTS fields.
uint8_t m_gtsDirMask
GTS Direction field Directions Mask (Bit 0-6)
This class can contain 16 bit addresses.
Definition: mac16-address.h:42
an EUI-64 address
Definition: mac64-address.h:44
Represent the Pending Address Specification field.
Buffer::Iterator Deserialize(Buffer::Iterator i)
Deserialize the all the Pending Address Fields.
std::array< Mac16Address, 7 > m_shortAddrList
Pending Short Address List.
uint8_t GetNumExtAddr(void) const
Get the number of Extended Pending Address indicated in the Pending Address Specification Field.
std::array< Mac64Address, 7 > m_extAddrList
Pending Extended Address List.
uint32_t GetSerializedSize(void) const
Get the size of the serialized Pending Address Fields.
uint8_t m_pndAddrSpecNumShortAddr
Pending Address Specification field Number of Short Address (Bits 0-2) Pending Address Specification ...
uint8_t m_pndAddrSpecNumExtAddr
Pending Address Specification field Number of Extended Address (Bits 4-6) Pending Address Specificati...
bool SearchAddress(Mac16Address shortAddr)
Search for the short Pending Address in the Address List.
uint8_t GetNumShortAddr(void) const
Get the number of Short Pending Address indicated in the Pending Address Specification Field.
Buffer::Iterator Serialize(Buffer::Iterator i) const
Serialize the entire Pending Address Fields.
uint8_t GetPndAddrSpecField(void) const
Get the whole Pending Address Specification Field from the Pending Address Fields.
void AddAddress(Mac16Address shortAddr)
Add a short Pending Address to the Address List.
void SetPndAddrSpecField(uint8_t pndAddrSpecField)
Set the whole Pending Address Specification field.
Represent the Superframe Specification information field.
bool m_sspecBatLifeExt
Superframe Specification field Battery Life Extension (Bit 12) Superframe Specification field Reserve...
bool m_sspecAssocPermit
Superframe Specification field Association Permit (Bit 15)
bool IsBattLifeExt(void) const
Check if the Battery Life Extension bit is enabled.
bool m_sspecPanCoor
Superframe Specification field PAN Coordinator (Bit 14)
uint8_t m_sspecFnlCapSlot
Superframe Specification field Final CAP slot (Bit 8-11)
void SetAssocPermit(bool assocPermit)
Set the Superframe Specification Association Permit field.
uint8_t m_sspecBcnOrder
Superframe Specification field Beacon Order (Bit 0-3)
void SetBattLifeExt(bool battLifeExt)
Set the Superframe Specification Battery Life Extension (BLE).
uint8_t GetFinalCapSlot(void) const
Get the the Final CAP Slot.
uint8_t m_sspecSprFrmOrder
Superframe Specification field Superframe Order (Bit 4-7)
uint32_t GetSerializedSize(void) const
Get the size of the serialized Superframe specification information field.
void SetFinalCapSlot(uint8_t capSlot)
Set the superframe specification Final CAP slot field.
void SetSuperframeOrder(uint8_t frmOrder)
Set the superframe specification Superframe Order field.
void SetPanCoor(bool panCoor)
Set the Superframe Specification PAN coordinator field.
uint16_t GetSuperframe(void) const
Get the Superframe specification information field.
Buffer::Iterator Serialize(Buffer::Iterator i) const
Serialize the entire superframe specification field.
void SetBeaconOrder(uint8_t bcnOrder)
Set the superframe specification Beacon Order field.
bool IsAssocPermit(void) const
Check if the Association Permit bit is enabled.
uint8_t GetBeaconOrder(void) const
Get the Superframe Specification Beacon Order field.
Buffer::Iterator Deserialize(Buffer::Iterator i)
Deserialize the entire superframe specification field.
uint8_t GetFrameOrder(void) const
Get the Superframe Specification Frame Order field.
void SetSuperframe(uint16_t superFrm)
Set the whole Superframe Specification Information field.
bool IsPanCoor(void) const
Check if the PAN Coordinator bit is enabled.
DeviceType
The device Capabilities.
@ RFD
Reduced Functional Device (RFD)
@ FFD
Full Functional Device (FFD)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:139
Mac16Address m_gtsDescDevShortAddr
GTS Descriptor Device Short Address (Bit 0-15)
uint8_t m_gtsDescLength
GTS Descriptor GTS Length (Bit 20-23)
uint8_t m_gtsDescStartSlot
GTS Descriptor GTS Starting Slot(Bit 16-19)