A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
lte-rlc-am-header.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
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: Manuel Requena <manuel.requena@cttc.es>
18
*/
19
20
#ifndef LTE_RLC_AM_HEADER_H
21
#define LTE_RLC_AM_HEADER_H
22
23
#include "ns3/header.h"
24
#include "ns3/lte-rlc-sequence-number.h"
25
26
#include <list>
27
28
namespace
ns3
29
{
30
39
class
LteRlcAmHeader
:
public
Header
40
{
41
public
:
47
LteRlcAmHeader
();
48
~LteRlcAmHeader
()
override
;
49
51
void
SetDataPdu
();
57
void
SetControlPdu
(uint8_t controlPduType);
62
bool
IsDataPdu
()
const
;
67
bool
IsControlPdu
()
const
;
68
70
enum
DataControlPdu_t
71
{
72
CONTROL_PDU
= 0,
73
DATA_PDU
= 1
74
};
75
77
enum
ControPduType_t
78
{
79
STATUS_PDU
= 000,
80
};
81
82
//
83
// DATA PDU
84
//
85
91
void
SetSequenceNumber
(
SequenceNumber10
sequenceNumber);
97
SequenceNumber10
GetSequenceNumber
()
const
;
98
104
void
SetFramingInfo
(uint8_t framingInfo);
110
uint8_t
GetFramingInfo
()
const
;
111
113
enum
FramingInfoFirstByte_t
114
{
115
FIRST_BYTE
= 0x00,
116
NO_FIRST_BYTE
= 0x02
117
};
118
120
enum
FramingInfoLastByte_t
121
{
122
LAST_BYTE
= 0x00,
123
NO_LAST_BYTE
= 0x01
124
};
125
131
void
PushExtensionBit
(uint8_t extensionBit);
137
void
PushLengthIndicator
(uint16_t lengthIndicator);
138
144
uint8_t
PopExtensionBit
();
150
uint16_t
PopLengthIndicator
();
151
153
enum
ExtensionBit_t
154
{
155
DATA_FIELD_FOLLOWS
= 0,
156
E_LI_FIELDS_FOLLOWS
= 1
157
};
158
164
void
SetResegmentationFlag
(uint8_t resegFlag);
170
uint8_t
GetResegmentationFlag
()
const
;
171
173
enum
ResegmentationFlag_t
174
{
175
PDU
= 0,
176
SEGMENT
= 1
177
};
178
184
void
SetPollingBit
(uint8_t pollingBit);
190
uint8_t
GetPollingBit
()
const
;
191
193
enum
PollingBit_t
194
{
195
STATUS_REPORT_NOT_REQUESTED
= 0,
196
STATUS_REPORT_IS_REQUESTED
= 1
197
};
198
204
void
SetLastSegmentFlag
(uint8_t lsf);
210
uint8_t
GetLastSegmentFlag
()
const
;
211
213
enum
LastSegmentFlag_t
214
{
215
NO_LAST_PDU_SEGMENT
= 0,
216
LAST_PDU_SEGMENT
= 1
217
};
218
224
void
SetSegmentOffset
(uint16_t segmentOffset);
230
uint16_t
GetSegmentOffset
()
const
;
236
uint16_t
GetLastOffset
()
const
;
237
238
//
239
// CONTROL PDU
240
//
241
247
void
SetAckSn
(
SequenceNumber10
ackSn);
253
SequenceNumber10
GetAckSn
()
const
;
254
259
static
TypeId
GetTypeId
();
260
TypeId
GetInstanceTypeId
()
const override
;
261
void
Print
(std::ostream& os)
const override
;
262
uint32_t
GetSerializedSize
()
const override
;
263
void
Serialize
(
Buffer::Iterator
start
)
const override
;
264
uint32_t
Deserialize
(
Buffer::Iterator
start
)
override
;
265
273
bool
OneMoreNackWouldFitIn
(uint16_t bytes);
274
280
void
PushNack
(
int
nack);
281
289
bool
IsNackPresent
(
SequenceNumber10
nack);
290
297
int
PopNack
();
298
299
private
:
300
uint16_t
m_headerLength
;
301
uint8_t
m_dataControlBit
;
302
303
// Data PDU fields
304
uint8_t
m_resegmentationFlag
;
305
uint8_t
m_pollingBit
;
306
uint8_t
m_framingInfo
;
307
SequenceNumber10
m_sequenceNumber
;
308
uint8_t
m_lastSegmentFlag
;
309
uint16_t
m_segmentOffset
;
310
uint16_t
m_lastOffset
;
311
312
std::list<uint8_t>
m_extensionBits
;
313
std::list<uint16_t>
m_lengthIndicators
;
314
315
// Control PDU fields
316
uint8_t
m_controlPduType
;
317
318
// Status PDU fields
319
SequenceNumber10
m_ackSn
;
320
std::list<int>
m_nackSnList
;
321
322
std::list<uint8_t>
m_extensionBits1
;
323
std::list<uint8_t>
m_extensionBits2
;
324
};
325
326
};
// namespace ns3
327
328
#endif
// LTE_RLC_AM_HEADER_H
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition:
buffer.h:100
ns3::Header
Protocol header serialization and deserialization.
Definition:
header.h:44
ns3::Header::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)=0
Deserialize the object from a buffer iterator.
ns3::LteRlcAmHeader
The packet header for the AM Radio Link Control (RLC) protocol packets.
Definition:
lte-rlc-am-header.h:40
ns3::LteRlcAmHeader::GetPollingBit
uint8_t GetPollingBit() const
Get polling bit function.
Definition:
lte-rlc-am-header.cc:170
ns3::LteRlcAmHeader::LastSegmentFlag_t
LastSegmentFlag_t
LastSegmentFlag_t typedef.
Definition:
lte-rlc-am-header.h:214
ns3::LteRlcAmHeader::LAST_PDU_SEGMENT
@ LAST_PDU_SEGMENT
Definition:
lte-rlc-am-header.h:216
ns3::LteRlcAmHeader::NO_LAST_PDU_SEGMENT
@ NO_LAST_PDU_SEGMENT
Definition:
lte-rlc-am-header.h:215
ns3::LteRlcAmHeader::PollingBit_t
PollingBit_t
PollingBit_t enumeration.
Definition:
lte-rlc-am-header.h:194
ns3::LteRlcAmHeader::STATUS_REPORT_NOT_REQUESTED
@ STATUS_REPORT_NOT_REQUESTED
Definition:
lte-rlc-am-header.h:195
ns3::LteRlcAmHeader::STATUS_REPORT_IS_REQUESTED
@ STATUS_REPORT_IS_REQUESTED
Definition:
lte-rlc-am-header.h:196
ns3::LteRlcAmHeader::PopExtensionBit
uint8_t PopExtensionBit()
Pop extension bit function.
Definition:
lte-rlc-am-header.cc:134
ns3::LteRlcAmHeader::SetSegmentOffset
void SetSegmentOffset(uint16_t segmentOffset)
Set segment offset function.
Definition:
lte-rlc-am-header.cc:188
ns3::LteRlcAmHeader::PushExtensionBit
void PushExtensionBit(uint8_t extensionBit)
Push extension bit function.
Definition:
lte-rlc-am-header.cc:111
ns3::LteRlcAmHeader::IsDataPdu
bool IsDataPdu() const
Is data PDU function.
Definition:
lte-rlc-am-header.cc:75
ns3::LteRlcAmHeader::GetAckSn
SequenceNumber10 GetAckSn() const
Get ack sn function.
Definition:
lte-rlc-am-header.cc:280
ns3::LteRlcAmHeader::SetPollingBit
void SetPollingBit(uint8_t pollingBit)
Set polling bit function.
Definition:
lte-rlc-am-header.cc:164
ns3::LteRlcAmHeader::OneMoreNackWouldFitIn
bool OneMoreNackWouldFitIn(uint16_t bytes)
Definition:
lte-rlc-am-header.cc:212
ns3::LteRlcAmHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Definition:
lte-rlc-am-header.cc:355
ns3::LteRlcAmHeader::m_headerLength
uint16_t m_headerLength
header length
Definition:
lte-rlc-am-header.h:300
ns3::LteRlcAmHeader::SetLastSegmentFlag
void SetLastSegmentFlag(uint8_t lsf)
Set last segment flag function.
Definition:
lte-rlc-am-header.cc:176
ns3::LteRlcAmHeader::Print
void Print(std::ostream &os) const override
Definition:
lte-rlc-am-header.cc:302
ns3::LteRlcAmHeader::ExtensionBit_t
ExtensionBit_t
ExtensionBit_t typedef.
Definition:
lte-rlc-am-header.h:154
ns3::LteRlcAmHeader::DATA_FIELD_FOLLOWS
@ DATA_FIELD_FOLLOWS
Definition:
lte-rlc-am-header.h:155
ns3::LteRlcAmHeader::E_LI_FIELDS_FOLLOWS
@ E_LI_FIELDS_FOLLOWS
Definition:
lte-rlc-am-header.h:156
ns3::LteRlcAmHeader::GetLastOffset
uint16_t GetLastOffset() const
Get last offset function.
Definition:
lte-rlc-am-header.cc:200
ns3::LteRlcAmHeader::m_sequenceNumber
SequenceNumber10 m_sequenceNumber
sequence number
Definition:
lte-rlc-am-header.h:307
ns3::LteRlcAmHeader::m_lastOffset
uint16_t m_lastOffset
last offset
Definition:
lte-rlc-am-header.h:310
ns3::LteRlcAmHeader::LteRlcAmHeader
LteRlcAmHeader()
Constructor.
Definition:
lte-rlc-am-header.cc:31
ns3::LteRlcAmHeader::PushNack
void PushNack(int nack)
Add one more NACK to the CONTROL PDU.
Definition:
lte-rlc-am-header.cc:228
ns3::LteRlcAmHeader::m_dataControlBit
uint8_t m_dataControlBit
data control bit
Definition:
lte-rlc-am-header.h:301
ns3::LteRlcAmHeader::m_extensionBits
std::list< uint8_t > m_extensionBits
Includes extensionBit of the fixed part.
Definition:
lte-rlc-am-header.h:312
ns3::LteRlcAmHeader::SetFramingInfo
void SetFramingInfo(uint8_t framingInfo)
Set sequence number.
Definition:
lte-rlc-am-header.cc:87
ns3::LteRlcAmHeader::DataControlPdu_t
DataControlPdu_t
DataControlPdu_t enumeration.
Definition:
lte-rlc-am-header.h:71
ns3::LteRlcAmHeader::DATA_PDU
@ DATA_PDU
Definition:
lte-rlc-am-header.h:73
ns3::LteRlcAmHeader::CONTROL_PDU
@ CONTROL_PDU
Definition:
lte-rlc-am-header.h:72
ns3::LteRlcAmHeader::GetLastSegmentFlag
uint8_t GetLastSegmentFlag() const
Get last segment flag function.
Definition:
lte-rlc-am-header.cc:182
ns3::LteRlcAmHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition:
lte-rlc-am-header.cc:296
ns3::LteRlcAmHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Definition:
lte-rlc-am-header.cc:361
ns3::LteRlcAmHeader::ControPduType_t
ControPduType_t
ControlPduType_t enumeration.
Definition:
lte-rlc-am-header.h:78
ns3::LteRlcAmHeader::STATUS_PDU
@ STATUS_PDU
Definition:
lte-rlc-am-header.h:79
ns3::LteRlcAmHeader::m_ackSn
SequenceNumber10 m_ackSn
ack sn
Definition:
lte-rlc-am-header.h:319
ns3::LteRlcAmHeader::PopLengthIndicator
uint16_t PopLengthIndicator()
Pop length indicator function.
Definition:
lte-rlc-am-header.cc:143
ns3::LteRlcAmHeader::m_controlPduType
uint8_t m_controlPduType
control PDU type
Definition:
lte-rlc-am-header.h:316
ns3::LteRlcAmHeader::ResegmentationFlag_t
ResegmentationFlag_t
ResegmentationFlag_t typedef.
Definition:
lte-rlc-am-header.h:174
ns3::LteRlcAmHeader::PDU
@ PDU
Definition:
lte-rlc-am-header.h:175
ns3::LteRlcAmHeader::SEGMENT
@ SEGMENT
Definition:
lte-rlc-am-header.h:176
ns3::LteRlcAmHeader::m_segmentOffset
uint16_t m_segmentOffset
segment offset
Definition:
lte-rlc-am-header.h:309
ns3::LteRlcAmHeader::m_extensionBits2
std::list< uint8_t > m_extensionBits2
extension bits 2
Definition:
lte-rlc-am-header.h:323
ns3::LteRlcAmHeader::SetAckSn
void SetAckSn(SequenceNumber10 ackSn)
Set ack sn function.
Definition:
lte-rlc-am-header.cc:206
ns3::LteRlcAmHeader::m_extensionBits1
std::list< uint8_t > m_extensionBits1
Includes E1 after ACK_SN.
Definition:
lte-rlc-am-header.h:322
ns3::LteRlcAmHeader::IsControlPdu
bool IsControlPdu() const
Is control PDU function.
Definition:
lte-rlc-am-header.cc:81
ns3::LteRlcAmHeader::SetDataPdu
void SetDataPdu()
Set data PDU function.
Definition:
lte-rlc-am-header.cc:60
ns3::LteRlcAmHeader::m_framingInfo
uint8_t m_framingInfo
2 bits
Definition:
lte-rlc-am-header.h:306
ns3::LteRlcAmHeader::m_resegmentationFlag
uint8_t m_resegmentationFlag
resegmentation flag
Definition:
lte-rlc-am-header.h:304
ns3::LteRlcAmHeader::PushLengthIndicator
void PushLengthIndicator(uint16_t lengthIndicator)
Push length indicator function.
Definition:
lte-rlc-am-header.cc:128
ns3::LteRlcAmHeader::GetResegmentationFlag
uint8_t GetResegmentationFlag() const
Get resegmentation flag function.
Definition:
lte-rlc-am-header.cc:158
ns3::LteRlcAmHeader::SetResegmentationFlag
void SetResegmentationFlag(uint8_t resegFlag)
Pop extension bit function.
Definition:
lte-rlc-am-header.cc:152
ns3::LteRlcAmHeader::GetSegmentOffset
uint16_t GetSegmentOffset() const
Get segment offset function.
Definition:
lte-rlc-am-header.cc:194
ns3::LteRlcAmHeader::m_pollingBit
uint8_t m_pollingBit
polling bit
Definition:
lte-rlc-am-header.h:305
ns3::LteRlcAmHeader::GetTypeId
static TypeId GetTypeId()
Get the type ID.
Definition:
lte-rlc-am-header.cc:286
ns3::LteRlcAmHeader::m_lastSegmentFlag
uint8_t m_lastSegmentFlag
last segment flag
Definition:
lte-rlc-am-header.h:308
ns3::LteRlcAmHeader::IsNackPresent
bool IsNackPresent(SequenceNumber10 nack)
Definition:
lte-rlc-am-header.cc:246
ns3::LteRlcAmHeader::m_nackSnList
std::list< int > m_nackSnList
nack sn list
Definition:
lte-rlc-am-header.h:320
ns3::LteRlcAmHeader::GetFramingInfo
uint8_t GetFramingInfo() const
Get framing info.
Definition:
lte-rlc-am-header.cc:99
ns3::LteRlcAmHeader::GetSequenceNumber
SequenceNumber10 GetSequenceNumber() const
Get sequence number.
Definition:
lte-rlc-am-header.cc:105
ns3::LteRlcAmHeader::PopNack
int PopNack()
Retrieve one NACK from the CONTROL PDU.
Definition:
lte-rlc-am-header.cc:263
ns3::LteRlcAmHeader::FramingInfoLastByte_t
FramingInfoLastByte_t
FramingInfoLastByte_t enumeration.
Definition:
lte-rlc-am-header.h:121
ns3::LteRlcAmHeader::NO_LAST_BYTE
@ NO_LAST_BYTE
Definition:
lte-rlc-am-header.h:123
ns3::LteRlcAmHeader::LAST_BYTE
@ LAST_BYTE
Definition:
lte-rlc-am-header.h:122
ns3::LteRlcAmHeader::~LteRlcAmHeader
~LteRlcAmHeader() override
Definition:
lte-rlc-am-header.cc:45
ns3::LteRlcAmHeader::SetControlPdu
void SetControlPdu(uint8_t controlPduType)
Set control PDU function.
Definition:
lte-rlc-am-header.cc:67
ns3::LteRlcAmHeader::FramingInfoFirstByte_t
FramingInfoFirstByte_t
FramingInfoFirstByte_t enumeration.
Definition:
lte-rlc-am-header.h:114
ns3::LteRlcAmHeader::NO_FIRST_BYTE
@ NO_FIRST_BYTE
Definition:
lte-rlc-am-header.h:116
ns3::LteRlcAmHeader::FIRST_BYTE
@ FIRST_BYTE
Definition:
lte-rlc-am-header.h:115
ns3::LteRlcAmHeader::m_lengthIndicators
std::list< uint16_t > m_lengthIndicators
length indicators
Definition:
lte-rlc-am-header.h:313
ns3::LteRlcAmHeader::SetSequenceNumber
void SetSequenceNumber(SequenceNumber10 sequenceNumber)
Set sequence number.
Definition:
lte-rlc-am-header.cc:93
ns3::SequenceNumber10
SequenceNumber10 class.
Definition:
lte-rlc-sequence-number.h:36
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:60
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
two-ray-to-three-gpp-ch-calibration.start
start
Definition:
two-ray-to-three-gpp-ch-calibration.py:474
src
lte
model
lte-rlc-am-header.h
Generated on Fri Mar 31 2023 13:30:45 for ns-3 by
1.9.1