A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
ofdm-ppdu.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2020 Orange Labs
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Author: Rediet <getachew.redieteab@orange.com>
7
* Muhammad Iqbal Rochman <muhiqbalcr@uchicago.edu>
8
* Sébastien Deronne <sebastien.deronne@gmail.com> (LSigHeader)
9
*/
10
11
#ifndef OFDM_PPDU_H
12
#define OFDM_PPDU_H
13
14
#include "ns3/wifi-phy-band.h"
15
#include "ns3/wifi-ppdu.h"
16
17
/**
18
* @file
19
* @ingroup wifi
20
* Declaration of ns3::OfdmPpdu class.
21
*/
22
23
namespace
ns3
24
{
25
26
class
WifiPsdu;
27
28
/**
29
* @brief OFDM PPDU (11a)
30
* @ingroup wifi
31
*
32
* OfdmPpdu stores a preamble, PHY headers and a PSDU of a PPDU with non-HT header,
33
* i.e., PPDU that uses OFDM modulation.
34
*/
35
class
OfdmPpdu
:
public
WifiPpdu
36
{
37
public
:
38
/**
39
* OFDM and ERP OFDM L-SIG PHY header.
40
* See section 17.3.4 in IEEE 802.11-2016.
41
*/
42
class
LSigHeader
43
{
44
public
:
45
LSigHeader
();
46
47
/**
48
* Fill the RATE field of L-SIG (in bit/s).
49
*
50
* @param rate the RATE field of L-SIG expressed in bit/s
51
* @param channelWidth the channel width
52
*/
53
void
SetRate
(uint64_t rate,
MHz_u
channelWidth = 20);
54
/**
55
* Return the RATE field of L-SIG (in bit/s).
56
*
57
* @param channelWidth the channel width
58
* @return the RATE field of L-SIG expressed in bit/s
59
*/
60
uint64_t
GetRate
(
MHz_u
channelWidth = 20)
const
;
61
/**
62
* Fill the LENGTH field of L-SIG (in bytes).
63
*
64
* @param length the LENGTH field of L-SIG expressed in bytes
65
*/
66
void
SetLength
(uint16_t length);
67
/**
68
* Return the LENGTH field of L-SIG (in bytes).
69
*
70
* @return the LENGTH field of L-SIG expressed in bytes
71
*/
72
uint16_t
GetLength
()
const
;
73
74
private
:
75
uint8_t
m_rate
;
///< RATE field
76
uint16_t
m_length
;
///< LENGTH field
77
};
// class LSigHeader
78
79
/**
80
* Create an OFDM PPDU.
81
*
82
* @param psdu the PHY payload (PSDU)
83
* @param txVector the TXVECTOR that was used for this PPDU
84
* @param channel the operating channel of the PHY used to transmit this PPDU
85
* @param uid the unique ID of this PPDU
86
* @param instantiateLSig flag used to instantiate LSigHeader (set LSigHeader's
87
* rate and length), should be disabled by child classes
88
*/
89
OfdmPpdu
(
Ptr<const WifiPsdu>
psdu,
90
const
WifiTxVector
& txVector,
91
const
WifiPhyOperatingChannel
& channel,
92
uint64_t uid,
93
bool
instantiateLSig =
true
);
94
95
Time
GetTxDuration
()
const override
;
96
Ptr<WifiPpdu>
Copy
()
const override
;
97
98
protected
:
99
LSigHeader
m_lSig
;
//!< the L-SIG PHY header
100
101
private
:
102
WifiTxVector
DoGetTxVector
()
const override
;
103
104
/**
105
* Fill in the PHY headers.
106
*
107
* @param txVector the TXVECTOR that was used for this PPDU
108
* @param psduSize the size duration of the PHY payload (PSDU)
109
*/
110
void
SetPhyHeaders
(
const
WifiTxVector
& txVector, std::size_t psduSize);
111
112
/**
113
* Fill in the L-SIG header.
114
*
115
* @param lSig the L-SIG header to fill in
116
* @param txVector the TXVECTOR that was used for this PPDU
117
* @param psduSize the size duration of the PHY payload (PSDU)
118
*/
119
void
SetLSigHeader
(
LSigHeader
& lSig,
const
WifiTxVector
& txVector, std::size_t psduSize)
const
;
120
121
/**
122
* Fill in the TXVECTOR from L-SIG header.
123
*
124
* @param txVector the TXVECTOR to fill in
125
* @param lSig the L-SIG header
126
*/
127
virtual
void
SetTxVectorFromLSigHeader
(
WifiTxVector
& txVector,
const
LSigHeader
& lSig)
const
;
128
129
MHz_u
m_channelWidth
;
//!< the channel width used to transmit that PPDU
130
//!< (needed to distinguish 5 MHz, 10 MHz or 20 MHz PPDUs)
131
};
// class OfdmPpdu
132
133
}
// namespace ns3
134
135
#endif
/* OFDM_PPDU_H */
double
ns3::OfdmPpdu::LSigHeader
OFDM and ERP OFDM L-SIG PHY header.
Definition
ofdm-ppdu.h:43
ns3::OfdmPpdu::LSigHeader::GetLength
uint16_t GetLength() const
Return the LENGTH field of L-SIG (in bytes).
Definition
ofdm-ppdu.cc:199
ns3::OfdmPpdu::LSigHeader::m_rate
uint8_t m_rate
RATE field.
Definition
ofdm-ppdu.h:75
ns3::OfdmPpdu::LSigHeader::SetRate
void SetRate(uint64_t rate, MHz_u channelWidth=20)
Fill the RATE field of L-SIG (in bit/s).
Definition
ofdm-ppdu.cc:94
ns3::OfdmPpdu::LSigHeader::GetRate
uint64_t GetRate(MHz_u channelWidth=20) const
Return the RATE field of L-SIG (in bit/s).
Definition
ofdm-ppdu.cc:147
ns3::OfdmPpdu::LSigHeader::SetLength
void SetLength(uint16_t length)
Fill the LENGTH field of L-SIG (in bytes).
Definition
ofdm-ppdu.cc:192
ns3::OfdmPpdu::LSigHeader::m_length
uint16_t m_length
LENGTH field.
Definition
ofdm-ppdu.h:76
ns3::OfdmPpdu::LSigHeader::LSigHeader
LSigHeader()
Definition
ofdm-ppdu.cc:87
ns3::OfdmPpdu
OFDM PPDU (11a)
Definition
ofdm-ppdu.h:36
ns3::OfdmPpdu::SetLSigHeader
void SetLSigHeader(LSigHeader &lSig, const WifiTxVector &txVector, std::size_t psduSize) const
Fill in the L-SIG header.
Definition
ofdm-ppdu.cc:48
ns3::OfdmPpdu::SetPhyHeaders
void SetPhyHeaders(const WifiTxVector &txVector, std::size_t psduSize)
Fill in the PHY headers.
Definition
ofdm-ppdu.cc:41
ns3::OfdmPpdu::m_channelWidth
MHz_u m_channelWidth
the channel width used to transmit that PPDU (needed to distinguish 5 MHz, 10 MHz or 20 MHz PPDUs)
Definition
ofdm-ppdu.h:129
ns3::OfdmPpdu::OfdmPpdu
OfdmPpdu(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, uint64_t uid, bool instantiateLSig=true)
Create an OFDM PPDU.
Definition
ofdm-ppdu.cc:25
ns3::OfdmPpdu::m_lSig
LSigHeader m_lSig
the L-SIG PHY header
Definition
ofdm-ppdu.h:99
ns3::OfdmPpdu::GetTxDuration
Time GetTxDuration() const override
Get the total transmission duration of the PPDU.
Definition
ofdm-ppdu.cc:73
ns3::OfdmPpdu::Copy
Ptr< WifiPpdu > Copy() const override
Copy this instance.
Definition
ofdm-ppdu.cc:82
ns3::OfdmPpdu::SetTxVectorFromLSigHeader
virtual void SetTxVectorFromLSigHeader(WifiTxVector &txVector, const LSigHeader &lSig) const
Fill in the TXVECTOR from L-SIG header.
Definition
ofdm-ppdu.cc:64
ns3::OfdmPpdu::DoGetTxVector
WifiTxVector DoGetTxVector() const override
Get the TXVECTOR used to send the PPDU.
Definition
ofdm-ppdu.cc:55
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition
mpi-test-fixtures.h:37
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition
nstime.h:94
ns3::WifiPhyOperatingChannel
Class that keeps track of all information about the current PHY operating channel.
Definition
wifi-phy-operating-channel.h:62
ns3::WifiPpdu
WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU.
Definition
wifi-ppdu.h:47
ns3::WifiTxVector
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Definition
wifi-tx-vector.h:101
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
wifi
model
non-ht
ofdm-ppdu.h
Generated on Sat Dec 14 2024 09:20:51 for ns-3 by
1.11.0