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
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
epc-x2.h
Go to the documentation of this file.
1
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Author: Manuel Requena <manuel.requena@cttc.es>
19
*/
20
21
#ifndef EPC_X2_H
22
#define EPC_X2_H
23
24
#include "ns3/socket.h"
25
#include "ns3/callback.h"
26
#include "ns3/ptr.h"
27
#include "ns3/object.h"
28
29
#include "ns3/epc-x2-sap.h"
30
31
#include <map>
32
33
namespace
ns3 {
34
35
36
class
X2IfaceInfo
:
public
SimpleRefCount
<X2IfaceInfo>
37
{
38
public
:
39
X2IfaceInfo
(
Ipv4Address
remoteIpAddr,
Ptr<Socket>
localCtrlPlaneSocket,
Ptr<Socket>
localUserPlaneSocket);
40
virtual
~X2IfaceInfo
(
void
);
41
42
X2IfaceInfo
&
operator=
(
const
X2IfaceInfo
&);
43
44
public
:
45
Ipv4Address
m_remoteIpAddr
;
46
Ptr<Socket>
m_localCtrlPlaneSocket
;
47
Ptr<Socket>
m_localUserPlaneSocket
;
48
};
49
50
51
class
X2CellInfo
:
public
SimpleRefCount
<X2CellInfo>
52
{
53
public
:
54
X2CellInfo
(uint16_t localCellId, uint16_t remoteCellId);
55
virtual
~X2CellInfo
(
void
);
56
57
X2CellInfo
&
operator=
(
const
X2CellInfo
&);
58
59
public
:
60
uint16_t
m_localCellId
;
61
uint16_t
m_remoteCellId
;
62
};
63
64
70
class
EpcX2
:
public
Object
71
{
72
friend
class
EpcX2SpecificEpcX2SapProvider
<
EpcX2
>;
73
74
public
:
78
EpcX2
();
79
83
virtual
~EpcX2
(
void
);
84
85
static
TypeId
GetTypeId
(
void
);
86
virtual
void
DoDispose
(
void
);
87
88
92
void
SetEpcX2SapUser
(
EpcX2SapUser
* s);
93
97
EpcX2SapProvider
*
GetEpcX2SapProvider
();
98
99
103
void
AddX2Interface
(uint16_t enb1CellId,
Ipv4Address
enb1X2Address, uint16_t enb2CellId,
Ipv4Address
enb2X2Address);
104
105
112
void
RecvFromX2cSocket
(
Ptr<Socket>
socket);
113
120
void
RecvFromX2uSocket
(
Ptr<Socket>
socket);
121
122
123
protected
:
124
// Interface provided by EpcX2SapProvider
125
virtual
void
DoSendHandoverRequest
(
EpcX2SapProvider::HandoverRequestParams
params);
126
virtual
void
DoSendHandoverRequestAck
(
EpcX2SapProvider::HandoverRequestAckParams
params);
127
virtual
void
DoSendHandoverPreparationFailure
(
EpcX2SapProvider::HandoverPreparationFailureParams
params);
128
virtual
void
DoSendSnStatusTransfer
(
EpcX2SapProvider::SnStatusTransferParams
params);
129
virtual
void
DoSendUeContextRelease
(
EpcX2SapProvider::UeContextReleaseParams
params);
130
virtual
void
DoSendLoadInformation
(
EpcX2SapProvider::LoadInformationParams
params);
131
virtual
void
DoSendResourceStatusUpdate
(
EpcX2SapProvider::ResourceStatusUpdateParams
params);
132
virtual
void
DoSendUeData
(
EpcX2SapProvider::UeDataParams
params);
133
134
EpcX2SapUser
*
m_x2SapUser
;
135
EpcX2SapProvider
*
m_x2SapProvider
;
136
137
138
private
:
139
144
std::map < uint16_t, Ptr<X2IfaceInfo> >
m_x2InterfaceSockets
;
145
150
std::map < Ptr<Socket>,
Ptr<X2CellInfo>
>
m_x2InterfaceCellIds
;
151
155
uint16_t
m_x2cUdpPort
;
156
uint16_t
m_x2uUdpPort
;
157
158
};
159
160
}
//namespace ns3
161
162
#endif // EPC_X2_H
src
lte
model
epc-x2.h
Generated on Tue May 14 2013 11:08:24 for ns-3 by
1.8.1.2