--- a/src/lte/model/epc-x2-sap.h Wed Dec 05 13:43:21 2012 +0100
+++ b/src/lte/model/epc-x2-sap.h Wed Dec 05 13:52:42 2012 +0100
@@ -25,6 +25,8 @@
#include "ns3/eps-bearer.h"
#include "ns3/ipv4-address.h"
+#include <bitset>
+
namespace ns3 {
@@ -89,6 +91,22 @@
};
/**
+ * E-RABs subject to status transfer item as
+ * it is used in the SN STATUS TRANSFER message.
+ * See section 9.1.1.4 for further info about the parameters
+ */
+ static const uint16_t m_maxPdcpSn = 4096;
+ struct ErabsSubjectToStatusTransferItem
+ {
+ uint16_t erabId;
+ std::bitset<m_maxPdcpSn> receiveStatusOfUlPdcpSdus;
+ uint16_t ulPdcpSn;
+ uint32_t ulHfn;
+ uint16_t dlPdcpSn;
+ uint32_t dlHfn;
+ };
+
+ /**
* UL Interference OverloadIndication as
* it is used in the LOAD INFORMATION message.
* See section 9.2.17 for further info about the values
@@ -248,6 +266,20 @@
};
/**
+ * \brief Parameters of the SN STATUS TRANSFER message.
+ *
+ * See section 9.1.1.4 for further info about the parameters
+ */
+ struct SnStatusTransferParams
+ {
+ uint16_t oldEnbUeX2apId;
+ uint16_t newEnbUeX2apId;
+ uint16_t sourceCellId;
+ uint16_t targetCellId;
+ std::vector <ErabsSubjectToStatusTransferItem> erabsSubjectToStatusTransferList;
+ };
+
+ /**
* \brief Parameters of the UE CONTEXT RELEASE message.
*
* See section 9.1.1.5 for further info about the parameters
@@ -257,6 +289,7 @@
uint16_t oldEnbUeX2apId;
uint16_t newEnbUeX2apId;
uint16_t sourceCellId;
+ uint16_t targetCellId;
};
/**
@@ -305,6 +338,8 @@
virtual void SendHandoverPreparationFailure (HandoverPreparationFailureParams params) = 0;
+ virtual void SendSnStatusTransfer (SnStatusTransferParams params) = 0;
+
virtual void SendUeContextRelease (UeContextReleaseParams params) = 0;
virtual void SendLoadInformation (LoadInformationParams params) = 0;
@@ -332,6 +367,8 @@
virtual void RecvHandoverPreparationFailure (HandoverPreparationFailureParams params) = 0;
+ virtual void RecvSnStatusTransfer (SnStatusTransferParams params) = 0;
+
virtual void RecvUeContextRelease (UeContextReleaseParams params) = 0;
virtual void RecvLoadInformation (LoadInformationParams params) = 0;
@@ -357,6 +394,8 @@
virtual void SendHandoverPreparationFailure (HandoverPreparationFailureParams params);
+ virtual void SendSnStatusTransfer (SnStatusTransferParams params);
+
virtual void SendUeContextRelease (UeContextReleaseParams params);
virtual void SendLoadInformation (LoadInformationParams params);
@@ -402,6 +441,13 @@
template <class C>
void
+EpcX2SpecificEpcX2SapProvider<C>::SendSnStatusTransfer (SnStatusTransferParams params)
+{
+ m_x2->DoSendSnStatusTransfer (params);
+}
+
+template <class C>
+void
EpcX2SpecificEpcX2SapProvider<C>::SendUeContextRelease (UeContextReleaseParams params)
{
m_x2->DoSendUeContextRelease (params);
@@ -439,6 +485,8 @@
virtual void RecvHandoverPreparationFailure (HandoverPreparationFailureParams params);
+ virtual void RecvSnStatusTransfer (SnStatusTransferParams params);
+
virtual void RecvUeContextRelease (UeContextReleaseParams params);
virtual void RecvLoadInformation (LoadInformationParams params);
@@ -484,6 +532,13 @@
template <class C>
void
+EpcX2SpecificEpcX2SapUser<C>::RecvSnStatusTransfer (SnStatusTransferParams params)
+{
+ m_rrc->DoRecvSnStatusTransfer (params);
+}
+
+template <class C>
+void
EpcX2SpecificEpcX2SapUser<C>::RecvUeContextRelease (UeContextReleaseParams params)
{
m_rrc->DoRecvUeContextRelease (params);