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
147
148private:
149 // Superframe Specification field
150 // See IEEE 802.14.15-2011 5.2.2.1.2
158
159};
160
168std::ostream &operator << (std::ostream &os, const SuperframeField &superframeField);
169
176{
177
178public:
179 GtsFields ();
184 uint8_t GetGtsSpecField (void) const;
189 uint8_t GetGtsDirectionField (void) const;
194 void SetGtsSpecField (uint8_t gtsSpec);
199 void SetGtsDirectionField (uint8_t gtsDir);
204 uint32_t GetSerializedSize (void) const;
217
218private:
223 {
227 };
228
229 //GTS specification field
231 // GTS specification field Reserved (Not necessary) (Bit 3-6)
233 //GTS Direction field
234 uint8_t m_gtsDirMask;
235 // GTS Direction field Reserved (Not Necessary) (Bit 7)
236 //GTS List
238};
239
240
248std::ostream &operator << (std::ostream &os, const GtsFields &gtsFields);
249
250
251
258{
259
260public:
266 void AddAddress (Mac16Address shortAddr);
271 void AddAddress (Mac64Address extAddr);
277 bool SearchAddress (Mac16Address shortAddr);
283 bool SearchAddress (Mac64Address extAddr);
288 uint8_t GetPndAddrSpecField (void) const;
293 uint8_t GetNumShortAddr (void) const;
298 uint8_t GetNumExtAddr (void) const;
299
305 void SetPndAddrSpecField (uint8_t pndAddrSpecField);
310 uint32_t GetSerializedSize (void) const;
323
324private:
325 // Pending Address Specification Field
330 // Address List
331 std::array <Mac16Address,7> m_shortAddrList;
332 std::array<Mac64Address,7> m_extAddrList;
333
334};
335
343std::ostream &operator << (std::ostream &os, const PendingAddrFields &pendingAddrFields);
344
345
346} //end namespace ns3
347
348#endif /* LR_WPAN_FIELDS_H */
iterator in a Buffer instance
Definition: buffer.h:99
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.
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)