A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
delay-jitter-estimation.cc
1
2
#include "delay-jitter-estimation.h"
3
#include "ns3/tag.h"
4
#include "ns3/simulator.h"
5
#include "ns3/string.h"
6
7
namespace
ns3 {
8
9
class
DelayJitterEstimationTimestampTag
:
public
Tag
10
{
11
public
:
12
DelayJitterEstimationTimestampTag
();
13
static
TypeId
GetTypeId (
void
);
14
virtual
TypeId
GetInstanceTypeId
(
void
)
const
;
15
16
virtual
uint32_t
GetSerializedSize
(
void
)
const
;
17
virtual
void
Serialize
(
TagBuffer
i)
const
;
18
virtual
void
Deserialize
(
TagBuffer
i);
19
virtual
void
Print
(std::ostream &os)
const
;
20
21
Time
GetTxTime (
void
)
const
;
22
private
:
23
uint64_t m_creationTime;
24
};
25
26
DelayJitterEstimationTimestampTag::DelayJitterEstimationTimestampTag ()
27
: m_creationTime (
Simulator
::
Now
().GetTimeStep ())
28
{
29
}
30
31
TypeId
32
DelayJitterEstimationTimestampTag::GetTypeId (
void
)
33
{
34
static
TypeId tid = TypeId (
"anon::DelayJitterEstimationTimestampTag"
)
35
.SetParent<Tag> ()
36
.AddConstructor<DelayJitterEstimationTimestampTag> ()
37
.AddAttribute (
"CreationTime"
,
38
"The time at which the timestamp was created"
,
39
StringValue (
"0.0s"
),
40
MakeTimeAccessor (&DelayJitterEstimationTimestampTag::GetTxTime),
41
MakeTimeChecker ())
42
;
43
return
tid;
44
}
45
TypeId
46
DelayJitterEstimationTimestampTag::GetInstanceTypeId
(
void
)
const
47
{
48
return
GetTypeId ();
49
}
50
51
uint32_t
52
DelayJitterEstimationTimestampTag::GetSerializedSize
(
void
)
const
53
{
54
return
8;
55
}
56
void
57
DelayJitterEstimationTimestampTag::Serialize
(
TagBuffer
i)
const
58
{
59
i.
WriteU64
(m_creationTime);
60
}
61
void
62
DelayJitterEstimationTimestampTag::Deserialize
(
TagBuffer
i)
63
{
64
m_creationTime = i.
ReadU64
();
65
}
66
void
67
DelayJitterEstimationTimestampTag::Print
(std::ostream &os)
const
68
{
69
os <<
"CreationTime="
<< m_creationTime;
70
}
71
Time
72
DelayJitterEstimationTimestampTag::GetTxTime (
void
)
const
73
{
74
return
TimeStep (m_creationTime);
75
}
76
77
DelayJitterEstimation::DelayJitterEstimation ()
78
: m_previousRx (Simulator::
Now
()),
79
m_previousRxTx (Simulator::
Now
()),
80
m_jitter (0),
81
m_delay (
Seconds
(0.0))
82
{
83
}
84
void
85
DelayJitterEstimation::PrepareTx
(
Ptr<const Packet>
packet)
86
{
87
DelayJitterEstimationTimestampTag
tag;
88
packet->
AddByteTag
(tag);
89
}
90
void
91
DelayJitterEstimation::RecordRx
(
Ptr<const Packet>
packet)
92
{
93
DelayJitterEstimationTimestampTag
tag;
94
bool
found;
95
found = packet->
FindFirstMatchingByteTag
(tag);
96
if
(!found)
97
{
98
return
;
99
}
100
tag.GetTxTime ();
101
102
Time
delta = (
Simulator::Now
() - m_previousRx) - (tag.GetTxTime () - m_previousRxTx);
103
m_jitter += (Abs (delta) - m_jitter) / 16;
104
m_previousRx =
Simulator::Now
();
105
m_previousRxTx = tag.GetTxTime ();
106
m_delay =
Simulator::Now
() - tag.GetTxTime ();
107
}
108
109
Time
110
DelayJitterEstimation::GetLastDelay
(
void
)
const
111
{
112
return
m_delay;
113
}
114
uint64_t
115
DelayJitterEstimation::GetLastJitter
(
void
)
const
116
{
117
return
m_jitter.GetHigh ();
118
}
119
120
}
// namespace ns3
ns3::Packet::FindFirstMatchingByteTag
bool FindFirstMatchingByteTag(Tag &tag) const
Definition:
packet.cc:850
ns3::Time
keep track of time unit.
Definition:
nstime.h:149
ns3::Ptr< const Packet >
ns3::Simulator
Control the scheduling of simulation events.
Definition:
simulator.h:58
ns3::TagBuffer::WriteU64
void WriteU64(uint64_t v)
Definition:
tag-buffer.cc:102
ns3::DelayJitterEstimation::RecordRx
void RecordRx(Ptr< const Packet > packet)
Definition:
delay-jitter-estimation.cc:91
ns3::DelayJitterEstimationTimestampTag::Print
virtual void Print(std::ostream &os) const
Definition:
delay-jitter-estimation.cc:67
ns3::DelayJitterEstimation::GetLastJitter
uint64_t GetLastJitter(void) const
Definition:
delay-jitter-estimation.cc:115
ns3::DelayJitterEstimation::PrepareTx
static void PrepareTx(Ptr< const Packet > packet)
Definition:
delay-jitter-estimation.cc:85
ns3::DelayJitterEstimationTimestampTag::Serialize
virtual void Serialize(TagBuffer i) const
Definition:
delay-jitter-estimation.cc:57
ns3::Tag
tag a set of bytes in a packet
Definition:
tag.h:36
ns3::TagBuffer::ReadU64
uint64_t ReadU64(void)
Definition:
tag-buffer.cc:134
ns3::DelayJitterEstimationTimestampTag
Definition:
delay-jitter-estimation.cc:9
ns3::DelayJitterEstimation::GetLastDelay
Time GetLastDelay(void) const
Definition:
delay-jitter-estimation.cc:110
ns3::Simulator::Now
static Time Now(void)
Definition:
simulator.cc:179
ns3::DelayJitterEstimationTimestampTag::Deserialize
virtual void Deserialize(TagBuffer i)
Definition:
delay-jitter-estimation.cc:62
ns3::TagBuffer
read and write tag data
Definition:
tag-buffer.h:51
ns3::Seconds
Time Seconds(double seconds)
create ns3::Time instances in units of seconds.
Definition:
nstime.h:586
ns3::Now
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
Definition:
simulator.cc:286
ns3::DelayJitterEstimationTimestampTag::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Definition:
delay-jitter-estimation.cc:46
ns3::DelayJitterEstimationTimestampTag::GetSerializedSize
virtual uint32_t GetSerializedSize(void) const
Definition:
delay-jitter-estimation.cc:52
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:44
ns3::Packet::AddByteTag
void AddByteTag(const Tag &tag) const
Definition:
packet.cc:833
src
tools
model
delay-jitter-estimation.cc
Generated on Sun Mar 16 2014 11:25:11 for ns-3 by
1.8.6