A Discrete-Event Network Simulator
API
dsss-ppdu.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 Orange Labs
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Rediet <getachew.redieteab@orange.com>
18  * Muhammad Iqbal Rochman <muhiqbalcr@uchicago.edu>
19  * Sébastien Deronne <sebastien.deronne@gmail.com> (DsssSigHeader)
20  */
21 
22 #ifndef DSSS_PPDU_H
23 #define DSSS_PPDU_H
24 
25 #include "ns3/header.h"
26 #include "ns3/wifi-ppdu.h"
27 
34 namespace ns3
35 {
36 
37 class WifiPsdu;
38 
45 class DsssPpdu : public WifiPpdu
46 {
47  public:
52  class DsssSigHeader : public Header
53  {
54  public:
55  DsssSigHeader();
56 
61  static TypeId GetTypeId();
62 
63  TypeId GetInstanceTypeId() const override;
64  void Print(std::ostream& os) const override;
65  uint32_t GetSerializedSize() const override;
66  void Serialize(Buffer::Iterator start) const override;
67  uint32_t Deserialize(Buffer::Iterator start) override;
68 
74  void SetRate(uint64_t rate);
80  uint64_t GetRate() const;
86  void SetLength(uint16_t length);
92  uint16_t GetLength() const;
93 
94  private:
95  uint8_t m_rate;
96  uint16_t m_length;
97  }; // class DsssSigHeader
98 
109  const WifiTxVector& txVector,
110  uint16_t txCenterFreq,
111  Time ppduDuration,
112  uint64_t uid);
113 
114  Time GetTxDuration() const override;
115  Ptr<WifiPpdu> Copy() const override;
116 
117  private:
118  WifiTxVector DoGetTxVector() const override;
119 
126  void SetPhyHeaders(const WifiTxVector& txVector, Time ppduDuration);
127 
135  void SetDsssHeader(DsssSigHeader& dsssSig,
136  const WifiTxVector& txVector,
137  Time ppduDuration) const;
138 
145  virtual void SetTxVectorFromDsssHeader(WifiTxVector& txVector,
146  const DsssSigHeader& dsssSig) const;
147 
148 #ifndef NS3_BUILD_PROFILE_DEBUG
149  DsssSigHeader m_dsssSig;
150 #endif
151 }; // class DsssPpdu
152 
153 } // namespace ns3
154 
155 #endif /* DSSS_PPDU_H */
iterator in a Buffer instance
Definition: buffer.h:100
DSSS SIG PHY header.
Definition: dsss-ppdu.h:53
uint32_t GetSerializedSize() const override
Definition: dsss-ppdu.cc:150
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition: dsss-ppdu.cc:138
uint16_t m_length
LENGTH field.
Definition: dsss-ppdu.h:96
void SetLength(uint16_t length)
Fill the LENGTH field of L-SIG (in bytes).
Definition: dsss-ppdu.cc:210
void Print(std::ostream &os) const override
Definition: dsss-ppdu.cc:144
void Serialize(Buffer::Iterator start) const override
Definition: dsss-ppdu.cc:222
uint8_t m_rate
RATE field.
Definition: dsss-ppdu.h:95
uint64_t GetRate() const
Return the RATE field of L-SIG (in bit/s).
Definition: dsss-ppdu.cc:185
static TypeId GetTypeId()
Get the type ID.
Definition: dsss-ppdu.cc:128
void SetRate(uint64_t rate)
Fill the RATE field of L-SIG (in bit/s).
Definition: dsss-ppdu.cc:156
uint16_t GetLength() const
Return the LENGTH field of L-SIG (in bytes).
Definition: dsss-ppdu.cc:216
DSSS (HR/DSSS) PPDU (11b)
Definition: dsss-ppdu.h:46
Time GetTxDuration() const override
Get the total transmission duration of the PPDU.
Definition: dsss-ppdu.cc:99
WifiTxVector DoGetTxVector() const override
Get the TXVECTOR used to send the PPDU.
Definition: dsss-ppdu.cc:71
Ptr< WifiPpdu > Copy() const override
Copy this instance.
Definition: dsss-ppdu.cc:116
virtual void SetTxVectorFromDsssHeader(WifiTxVector &txVector, const DsssSigHeader &dsssSig) const
Fill in the TXVECTOR from DSSS header.
Definition: dsss-ppdu.cc:93
DsssPpdu(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint16_t txCenterFreq, Time ppduDuration, uint64_t uid)
Create a DSSS (HR/DSSS) PPDU.
Definition: dsss-ppdu.cc:35
void SetPhyHeaders(const WifiTxVector &txVector, Time ppduDuration)
Fill in the PHY headers.
Definition: dsss-ppdu.cc:47
void SetDsssHeader(DsssSigHeader &dsssSig, const WifiTxVector &txVector, Time ppduDuration) const
Fill in the DSSS header.
Definition: dsss-ppdu.cc:61
Protocol header serialization and deserialization.
Definition: header.h:44
virtual uint32_t Deserialize(Buffer::Iterator start)=0
Deserialize the object from a buffer iterator.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
a unique identifier for an interface.
Definition: type-id.h:60
WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU.
Definition: wifi-ppdu.h:56
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Every class exported by the ns3 library is enclosed in the ns3 namespace.