src/lte/model/epc-x2-sap.h
changeset 9480 55db96d61f2c
parent 9457 afc07ef9c8d9
parent 9476 826240041f48
child 9556 29b3091d8fb8
--- 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);