A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
lte-rlc-sequence-number.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2012 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_SEQUENCE_NUMBER_H
21
#define LTE_RLC_SEQUENCE_NUMBER_H
22
23
#include <ns3/assert.h>
24
25
#include <iostream>
26
#include <limits>
27
#include <stdint.h>
28
29
// #include "ns3/lte-rlc.h"
30
31
namespace
ns3
32
{
33
35
class
SequenceNumber10
36
{
37
public
:
38
SequenceNumber10
()
39
:
m_value
(0),
40
m_modulusBase
(0)
41
{
42
}
43
49
explicit
SequenceNumber10
(uint16_t
value
)
50
:
m_value
(
value
% 1024),
51
m_modulusBase
(0)
52
{
53
}
54
60
SequenceNumber10
(
const
SequenceNumber10
&
value
)
61
:
m_value
(
value
.
m_value
),
62
m_modulusBase
(
value
.
m_modulusBase
)
63
{
64
}
65
72
SequenceNumber10
&
operator=
(uint16_t
value
)
73
{
74
m_value
=
value
% 1024;
75
return
*
this
;
76
}
77
82
uint16_t
GetValue
()
const
83
{
84
return
m_value
;
85
}
86
91
void
SetModulusBase
(
SequenceNumber10
modulusBase)
92
{
93
m_modulusBase
= modulusBase.
m_value
;
94
}
95
100
void
SetModulusBase
(uint16_t modulusBase)
101
{
102
m_modulusBase
= modulusBase;
103
}
104
109
SequenceNumber10
operator++
(
int
)
110
{
111
SequenceNumber10
retval(
m_value
);
112
m_value
= ((uint32_t)
m_value
+ 1) % 1024;
113
retval.
SetModulusBase
(
m_modulusBase
);
114
return
retval;
115
}
116
122
SequenceNumber10
operator+
(uint16_t
delta
)
const
123
{
124
SequenceNumber10
ret((
m_value
+
delta
) % 1024);
125
ret.
SetModulusBase
(
m_modulusBase
);
126
return
ret;
127
}
128
134
SequenceNumber10
operator-
(uint16_t
delta
)
const
135
{
136
SequenceNumber10
ret((
m_value
-
delta
) % 1024);
137
ret.
SetModulusBase
(
m_modulusBase
);
138
return
ret;
139
}
140
146
uint16_t
operator-
(
const
SequenceNumber10
& other)
const
147
{
148
uint16_t diff =
m_value
- other.
m_value
;
149
return
(diff);
150
}
151
157
bool
operator>
(
const
SequenceNumber10
& other)
const
158
{
159
NS_ASSERT
(
m_modulusBase
== other.
m_modulusBase
);
160
uint16_t v1 = (
m_value
-
m_modulusBase
) % 1024;
161
uint16_t v2 = (other.
m_value
- other.
m_modulusBase
) % 1024;
162
return
v1 > v2;
163
}
164
170
bool
operator==
(
const
SequenceNumber10
& other)
const
171
{
172
return
(
m_value
== other.
m_value
);
173
}
174
180
bool
operator!=
(
const
SequenceNumber10
& other)
const
181
{
182
return
(
m_value
!= other.
m_value
);
183
}
184
190
bool
operator<=
(
const
SequenceNumber10
& other)
const
191
{
192
return
(!this->
operator
>(other));
193
}
194
200
bool
operator>=
(
const
SequenceNumber10
& other)
const
201
{
202
return
(this->
operator
>(other) || this->
operator
==(other));
203
}
204
210
bool
operator<
(
const
SequenceNumber10
& other)
const
211
{
212
return
!this->
operator>
(other) &&
m_value
!= other.
m_value
;
213
}
214
215
friend
std::ostream&
operator<<
(std::ostream& os,
const
SequenceNumber10
& val);
216
217
private
:
218
uint16_t
m_value
;
219
uint16_t
m_modulusBase
;
220
};
221
222
}
// namespace ns3
223
224
#endif
// LTE_RLC_SEQUENCE_NUMBER_H
ns3::SequenceNumber10
SequenceNumber10 class.
Definition:
lte-rlc-sequence-number.h:36
ns3::SequenceNumber10::m_modulusBase
uint16_t m_modulusBase
the modulus base
Definition:
lte-rlc-sequence-number.h:219
ns3::SequenceNumber10::operator==
bool operator==(const SequenceNumber10 &other) const
equality operator
Definition:
lte-rlc-sequence-number.h:170
ns3::SequenceNumber10::operator-
uint16_t operator-(const SequenceNumber10 &other) const
subtraction operator
Definition:
lte-rlc-sequence-number.h:146
ns3::SequenceNumber10::SequenceNumber10
SequenceNumber10(const SequenceNumber10 &value)
Constructor.
Definition:
lte-rlc-sequence-number.h:60
ns3::SequenceNumber10::operator<
bool operator<(const SequenceNumber10 &other) const
less than operator
Definition:
lte-rlc-sequence-number.h:210
ns3::SequenceNumber10::SetModulusBase
void SetModulusBase(uint16_t modulusBase)
Set modulus base.
Definition:
lte-rlc-sequence-number.h:100
ns3::SequenceNumber10::SequenceNumber10
SequenceNumber10()
Definition:
lte-rlc-sequence-number.h:38
ns3::SequenceNumber10::GetValue
uint16_t GetValue() const
Extracts the numeric value of the sequence number.
Definition:
lte-rlc-sequence-number.h:82
ns3::SequenceNumber10::operator!=
bool operator!=(const SequenceNumber10 &other) const
inequality operator
Definition:
lte-rlc-sequence-number.h:180
ns3::SequenceNumber10::m_value
uint16_t m_value
the value
Definition:
lte-rlc-sequence-number.h:218
ns3::SequenceNumber10::SequenceNumber10
SequenceNumber10(uint16_t value)
Constructor.
Definition:
lte-rlc-sequence-number.h:49
ns3::SequenceNumber10::operator+
SequenceNumber10 operator+(uint16_t delta) const
addition operator
Definition:
lte-rlc-sequence-number.h:122
ns3::SequenceNumber10::operator-
SequenceNumber10 operator-(uint16_t delta) const
subtraction operator
Definition:
lte-rlc-sequence-number.h:134
ns3::SequenceNumber10::operator=
SequenceNumber10 & operator=(uint16_t value)
Assignment operator.
Definition:
lte-rlc-sequence-number.h:72
ns3::SequenceNumber10::operator++
SequenceNumber10 operator++(int)
postfix ++ operator
Definition:
lte-rlc-sequence-number.h:109
ns3::SequenceNumber10::operator>=
bool operator>=(const SequenceNumber10 &other) const
greater than or equal operator
Definition:
lte-rlc-sequence-number.h:200
ns3::SequenceNumber10::operator>
bool operator>(const SequenceNumber10 &other) const
greater than operator
Definition:
lte-rlc-sequence-number.h:157
ns3::SequenceNumber10::operator<<
friend std::ostream & operator<<(std::ostream &os, const SequenceNumber10 &val)
Ostream output function.
Definition:
lte-rlc-sequence-number.cc:32
ns3::SequenceNumber10::operator<=
bool operator<=(const SequenceNumber10 &other) const
less than or equal operator
Definition:
lte-rlc-sequence-number.h:190
ns3::SequenceNumber10::SetModulusBase
void SetModulusBase(SequenceNumber10 modulusBase)
Set modulus base.
Definition:
lte-rlc-sequence-number.h:91
NS_ASSERT
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Definition:
assert.h:66
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
second.value
value
Definition:
second.py:41
two-ray-to-three-gpp-ch-calibration.delta
delta
Definition:
two-ray-to-three-gpp-ch-calibration.py:475
src
lte
model
lte-rlc-sequence-number.h
Generated on Fri Mar 31 2023 13:30:45 for ns-3 by
1.9.1