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
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 "
lte-rlc-sequence-number.h
"
24
25
#include "ns3/header.h"
26
27
#include <list>
28
29
namespace
ns3
30
{
31
40
class
LteRlcAmHeader
:
public
Header
41
{
42
public
:
48
LteRlcAmHeader
();
49
~LteRlcAmHeader
()
override
;
50
52
void
SetDataPdu
();
58
void
SetControlPdu
(uint8_t controlPduType);
63
bool
IsDataPdu
()
const
;
68
bool
IsControlPdu
()
const
;
69
71
enum
DataControlPdu_t
72
{
73
CONTROL_PDU
= 0,
74
DATA_PDU
= 1
75
};
76
78
static
constexpr
uint8_t
STATUS_PDU
{0};
79
80
//
81
// DATA PDU
82
//
83
89
void
SetSequenceNumber
(
SequenceNumber10
sequenceNumber);
95
SequenceNumber10
GetSequenceNumber
()
const
;
96
102
void
SetFramingInfo
(uint8_t framingInfo);
108
uint8_t
GetFramingInfo
()
const
;
109
111
enum
FramingInfoFirstByte_t
112
{
113
FIRST_BYTE
= 0x00,
114
NO_FIRST_BYTE
= 0x02
115
};
116
118
enum
FramingInfoLastByte_t
119
{
120
LAST_BYTE
= 0x00,
121
NO_LAST_BYTE
= 0x01
122
};
123
129
void
PushExtensionBit
(uint8_t extensionBit);
135
void
PushLengthIndicator
(uint16_t lengthIndicator);
136
142
uint8_t
PopExtensionBit
();
148
uint16_t
PopLengthIndicator
();
149
151
enum
ExtensionBit_t
152
{
153
DATA_FIELD_FOLLOWS
= 0,
154
E_LI_FIELDS_FOLLOWS
= 1
155
};
156
162
void
SetResegmentationFlag
(uint8_t resegFlag);
168
uint8_t
GetResegmentationFlag
()
const
;
169
171
enum
ResegmentationFlag_t
172
{
173
PDU
= 0,
174
SEGMENT
= 1
175
};
176
182
void
SetPollingBit
(uint8_t pollingBit);
188
uint8_t
GetPollingBit
()
const
;
189
191
enum
PollingBit_t
192
{
193
STATUS_REPORT_NOT_REQUESTED
= 0,
194
STATUS_REPORT_IS_REQUESTED
= 1
195
};
196
202
void
SetLastSegmentFlag
(uint8_t lsf);
208
uint8_t
GetLastSegmentFlag
()
const
;
209
211
enum
LastSegmentFlag_t
212
{
213
NO_LAST_PDU_SEGMENT
= 0,
214
LAST_PDU_SEGMENT
= 1
215
};
216
222
void
SetSegmentOffset
(uint16_t segmentOffset);
228
uint16_t
GetSegmentOffset
()
const
;
234
uint16_t
GetLastOffset
()
const
;
235
236
//
237
// CONTROL PDU
238
//
239
245
void
SetAckSn
(
SequenceNumber10
ackSn);
251
SequenceNumber10
GetAckSn
()
const
;
252
257
static
TypeId
GetTypeId
();
258
TypeId
GetInstanceTypeId
()
const override
;
259
void
Print
(std::ostream& os)
const override
;
260
uint32_t
GetSerializedSize
()
const override
;
261
void
Serialize
(
Buffer::Iterator
start)
const override
;
262
uint32_t
Deserialize
(
Buffer::Iterator
start)
override
;
263
271
bool
OneMoreNackWouldFitIn
(uint16_t bytes);
272
278
void
PushNack
(
int
nack);
279
287
bool
IsNackPresent
(
SequenceNumber10
nack);
288
295
int
PopNack
();
296
297
private
:
298
uint16_t
m_headerLength
;
299
uint8_t
m_dataControlBit
;
300
301
// Data PDU fields
302
uint8_t
m_resegmentationFlag
;
303
uint8_t
m_pollingBit
;
304
uint8_t
m_framingInfo
;
305
SequenceNumber10
m_sequenceNumber
;
306
uint8_t
m_lastSegmentFlag
;
307
uint16_t
m_segmentOffset
;
308
uint16_t
m_lastOffset
;
309
310
std::list<uint8_t>
m_extensionBits
;
311
std::list<uint16_t>
m_lengthIndicators
;
312
313
// Control PDU fields
314
uint8_t
m_controlPduType
;
315
316
// Status PDU fields
317
SequenceNumber10
m_ackSn
;
318
std::list<int>
m_nackSnList
;
319
320
std::list<uint8_t>
m_extensionBits1
;
321
std::list<uint8_t>
m_extensionBits2
;
322
};
323
324
};
// namespace ns3
325
326
#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::LteRlcAmHeader
The packet header for the AM Radio Link Control (RLC) protocol packets.
Definition:
lte-rlc-am-header.h:41
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:212
ns3::LteRlcAmHeader::LAST_PDU_SEGMENT
@ LAST_PDU_SEGMENT
Definition:
lte-rlc-am-header.h:214
ns3::LteRlcAmHeader::NO_LAST_PDU_SEGMENT
@ NO_LAST_PDU_SEGMENT
Definition:
lte-rlc-am-header.h:213
ns3::LteRlcAmHeader::PollingBit_t
PollingBit_t
PollingBit_t enumeration.
Definition:
lte-rlc-am-header.h:192
ns3::LteRlcAmHeader::STATUS_REPORT_NOT_REQUESTED
@ STATUS_REPORT_NOT_REQUESTED
Definition:
lte-rlc-am-header.h:193
ns3::LteRlcAmHeader::STATUS_REPORT_IS_REQUESTED
@ STATUS_REPORT_IS_REQUESTED
Definition:
lte-rlc-am-header.h:194
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::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Definition:
lte-rlc-am-header.cc:484
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:298
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:152
ns3::LteRlcAmHeader::DATA_FIELD_FOLLOWS
@ DATA_FIELD_FOLLOWS
Definition:
lte-rlc-am-header.h:153
ns3::LteRlcAmHeader::E_LI_FIELDS_FOLLOWS
@ E_LI_FIELDS_FOLLOWS
Definition:
lte-rlc-am-header.h:154
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:305
ns3::LteRlcAmHeader::m_lastOffset
uint16_t m_lastOffset
last offset
Definition:
lte-rlc-am-header.h:308
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:299
ns3::LteRlcAmHeader::m_extensionBits
std::list< uint8_t > m_extensionBits
Includes extensionBit of the fixed part.
Definition:
lte-rlc-am-header.h:310
ns3::LteRlcAmHeader::SetFramingInfo
void SetFramingInfo(uint8_t framingInfo)
Set sequence number.
Definition:
lte-rlc-am-header.cc:87
ns3::LteRlcAmHeader::STATUS_PDU
static constexpr uint8_t STATUS_PDU
Control PDU type status.
Definition:
lte-rlc-am-header.h:78
ns3::LteRlcAmHeader::DataControlPdu_t
DataControlPdu_t
DataControlPdu_t enumeration.
Definition:
lte-rlc-am-header.h:72
ns3::LteRlcAmHeader::DATA_PDU
@ DATA_PDU
Definition:
lte-rlc-am-header.h:74
ns3::LteRlcAmHeader::CONTROL_PDU
@ CONTROL_PDU
Definition:
lte-rlc-am-header.h:73
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::m_ackSn
SequenceNumber10 m_ackSn
ack sn
Definition:
lte-rlc-am-header.h:317
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:314
ns3::LteRlcAmHeader::ResegmentationFlag_t
ResegmentationFlag_t
ResegmentationFlag_t typedef.
Definition:
lte-rlc-am-header.h:172
ns3::LteRlcAmHeader::PDU
@ PDU
Definition:
lte-rlc-am-header.h:173
ns3::LteRlcAmHeader::SEGMENT
@ SEGMENT
Definition:
lte-rlc-am-header.h:174
ns3::LteRlcAmHeader::m_segmentOffset
uint16_t m_segmentOffset
segment offset
Definition:
lte-rlc-am-header.h:307
ns3::LteRlcAmHeader::m_extensionBits2
std::list< uint8_t > m_extensionBits2
extension bits 2
Definition:
lte-rlc-am-header.h:321
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:320
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:304
ns3::LteRlcAmHeader::m_resegmentationFlag
uint8_t m_resegmentationFlag
resegmentation flag
Definition:
lte-rlc-am-header.h:302
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:303
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:306
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:318
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:119
ns3::LteRlcAmHeader::NO_LAST_BYTE
@ NO_LAST_BYTE
Definition:
lte-rlc-am-header.h:121
ns3::LteRlcAmHeader::LAST_BYTE
@ LAST_BYTE
Definition:
lte-rlc-am-header.h:120
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:112
ns3::LteRlcAmHeader::NO_FIRST_BYTE
@ NO_FIRST_BYTE
Definition:
lte-rlc-am-header.h:114
ns3::LteRlcAmHeader::FIRST_BYTE
@ FIRST_BYTE
Definition:
lte-rlc-am-header.h:113
ns3::LteRlcAmHeader::m_lengthIndicators
std::list< uint16_t > m_lengthIndicators
length indicators
Definition:
lte-rlc-am-header.h:311
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:34
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:59
uint32_t
lte-rlc-sequence-number.h
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
lte
model
lte-rlc-am-header.h
Generated on Sun Jul 2 2023 18:21:49 for ns-3 by
1.9.6