Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(851)

Unified Diff: src/lte/model/epc-x2.cc

Issue 328170043: NS-3 GSoC 2017 LTE CA handover milestone 2 and 3
Patch Set: NS-3 GSoC 2017 LTE CA handover milestone 2 and 3 Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/lte/model/epc-x2.h ('k') | src/lte/model/lte-enb-component-carrier-manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/lte/model/epc-x2.cc
===================================================================
--- a/src/lte/model/epc-x2.cc
+++ b/src/lte/model/epc-x2.cc
@@ -56,24 +56,22 @@
///////////////////////////////////////////
-X2CellInfo::X2CellInfo (uint16_t localCellId, uint16_t remoteCellId)
+X2CellInfo::X2CellInfo (std::vector<uint16_t> localCellIds, std::vector<uint16_t> remoteCellIds) :
+ m_localCellIds {localCellIds},
+ m_remoteCellIds {remoteCellIds}
{
- m_localCellId = localCellId;
- m_remoteCellId = remoteCellId;
}
X2CellInfo::~X2CellInfo (void)
{
- m_localCellId = 0;
- m_remoteCellId = 0;
}
X2CellInfo&
X2CellInfo::operator= (const X2CellInfo& value)
{
NS_LOG_FUNCTION (this);
- m_localCellId = value.m_localCellId;
- m_remoteCellId = value.m_remoteCellId;
+ m_localCellIds = value.m_localCellIds;
+ m_remoteCellIds = value.m_remoteCellIds;
return *this;
}
@@ -130,8 +128,9 @@
void
-EpcX2::AddX2Interface (uint16_t localCellId, Ipv4Address localX2Address, uint16_t remoteCellId, Ipv4Address remoteX2Address)
+EpcX2::AddX2Interface (uint16_t localCellId, Ipv4Address localX2Address, std::vector<uint16_t> remoteCellIds, Ipv4Address remoteX2Address)
{
+ uint16_t remoteCellId = remoteCellIds.at (0);
NS_LOG_FUNCTION (this << localCellId << localX2Address << remoteCellId << remoteX2Address);
int retval;
@@ -151,18 +150,23 @@
NS_ASSERT (retval == 0);
localX2uSocket->SetRecvCallback (MakeCallback (&EpcX2::RecvFromX2uSocket, this));
+ std::vector<uint16_t> localCellIds;
+ localCellIds.push_back (localCellId);
NS_ASSERT_MSG (m_x2InterfaceSockets.find (remoteCellId) == m_x2InterfaceSockets.end (),
"Mapping for remoteCellId = " << remoteCellId << " is already known");
- m_x2InterfaceSockets [remoteCellId] = Create<X2IfaceInfo> (remoteX2Address, localX2cSocket, localX2uSocket);
+ for (uint16_t remoteCellId: remoteCellIds)
+ {
+ m_x2InterfaceSockets [remoteCellId] = Create<X2IfaceInfo> (remoteX2Address, localX2cSocket, localX2uSocket);
+ }
NS_ASSERT_MSG (m_x2InterfaceCellIds.find (localX2cSocket) == m_x2InterfaceCellIds.end (),
"Mapping for control plane localSocket = " << localX2cSocket << " is already known");
- m_x2InterfaceCellIds [localX2cSocket] = Create<X2CellInfo> (localCellId, remoteCellId);
+ m_x2InterfaceCellIds [localX2cSocket] = Create<X2CellInfo> (localCellIds, remoteCellIds);
NS_ASSERT_MSG (m_x2InterfaceCellIds.find (localX2uSocket) == m_x2InterfaceCellIds.end (),
"Mapping for data plane localSocket = " << localX2uSocket << " is already known");
- m_x2InterfaceCellIds [localX2uSocket] = Create<X2CellInfo> (localCellId, remoteCellId);
+ m_x2InterfaceCellIds [localX2uSocket] = Create<X2CellInfo> (localCellIds, remoteCellIds);
}
@@ -201,7 +205,7 @@
EpcX2SapUser::HandoverRequestParams params;
params.oldEnbUeX2apId = x2HoReqHeader.GetOldEnbUeX2apId ();
params.cause = x2HoReqHeader.GetCause ();
- params.sourceCellId = cellsInfo->m_remoteCellId;
+ params.sourceCellId = cellsInfo->m_remoteCellIds.at (0);
params.targetCellId = x2HoReqHeader.GetTargetCellId ();
params.mmeUeS1apId = x2HoReqHeader.GetMmeUeS1apId ();
params.ueAggregateMaxBitRateDownlink = x2HoReqHeader.GetUeAggregateMaxBitRateDownlink ();
@@ -213,9 +217,7 @@
NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
NS_LOG_LOGIC ("mmeUeS1apId = " << params.mmeUeS1apId);
- NS_LOG_LOGIC ("cellsInfo->m_localCellId = " << cellsInfo->m_localCellId);
- NS_ASSERT_MSG (params.targetCellId == cellsInfo->m_localCellId,
- "TargetCellId mismatches with localCellId");
+ NS_LOG_LOGIC ("cellsInfo->m_localCellId = " << cellsInfo->m_localCellIds.at (0));
m_x2SapUser->RecvHandoverRequest (params);
}
@@ -231,8 +233,8 @@
EpcX2SapUser::HandoverRequestAckParams params;
params.oldEnbUeX2apId = x2HoReqAckHeader.GetOldEnbUeX2apId ();
params.newEnbUeX2apId = x2HoReqAckHeader.GetNewEnbUeX2apId ();
- params.sourceCellId = cellsInfo->m_localCellId;
- params.targetCellId = cellsInfo->m_remoteCellId;
+ params.sourceCellId = cellsInfo->m_localCellIds.at (0);
+ params.targetCellId = cellsInfo->m_remoteCellIds.at (0);
params.admittedBearers = x2HoReqAckHeader.GetAdmittedBearers ();
params.notAdmittedBearers = x2HoReqAckHeader.GetNotAdmittedBearers ();
params.rrcContext = packet;
@@ -255,8 +257,8 @@
EpcX2SapUser::HandoverPreparationFailureParams params;
params.oldEnbUeX2apId = x2HoPrepFailHeader.GetOldEnbUeX2apId ();
- params.sourceCellId = cellsInfo->m_localCellId;
- params.targetCellId = cellsInfo->m_remoteCellId;
+ params.sourceCellId = cellsInfo->m_localCellIds.at (0);
+ params.targetCellId = cellsInfo->m_remoteCellIds.at (0);
params.cause = x2HoPrepFailHeader.GetCause ();
params.criticalityDiagnostics = x2HoPrepFailHeader.GetCriticalityDiagnostics ();
@@ -302,8 +304,8 @@
EpcX2SapUser::SnStatusTransferParams params;
params.oldEnbUeX2apId = x2SnStatusXferHeader.GetOldEnbUeX2apId ();
params.newEnbUeX2apId = x2SnStatusXferHeader.GetNewEnbUeX2apId ();
- params.sourceCellId = cellsInfo->m_remoteCellId;
- params.targetCellId = cellsInfo->m_localCellId;
+ params.sourceCellId = cellsInfo->m_remoteCellIds.at (0);
+ params.targetCellId = cellsInfo->m_localCellIds.at (0);
params.erabsSubjectToStatusTransferList = x2SnStatusXferHeader.GetErabsSubjectToStatusTransferList ();
NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
@@ -386,8 +388,8 @@
NS_LOG_LOGIC ("GTP-U header: " << gtpu);
EpcX2SapUser::UeDataParams params;
- params.sourceCellId = cellsInfo->m_remoteCellId;
- params.targetCellId = cellsInfo->m_localCellId;
+ params.sourceCellId = cellsInfo->m_remoteCellIds.at (0);
+ params.targetCellId = cellsInfo->m_localCellIds.at (0);
params.gtpTeid = gtpu.GetTeid ();
params.ueData = packet;
« no previous file with comments | « src/lte/model/epc-x2.h ('k') | src/lte/model/lte-enb-component-carrier-manager.h » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b