Add Load Information primitive to X2 SAP
authorManuel Requena <manuel.requena@cttc.es>
Tue, 20 Nov 2012 18:56:24 +0100
changeset 9415 e35ffeb8f9e7
parent 9412 da31245666bb
child 9416 7d95ab53c4cf
Add Load Information primitive to X2 SAP
src/lte/model/epc-x2-sap.h
--- a/src/lte/model/epc-x2-sap.h	Wed Nov 14 16:05:54 2012 +0100
+++ b/src/lte/model/epc-x2-sap.h	Tue Nov 20 18:56:24 2012 +0100
@@ -88,13 +88,67 @@
     uint16_t    cause;
   };
 
+  /**
+   * UL Interference OverloadIndication as
+   * it is used in the LOAD INFORMATION message.
+   * See section 9.2.17 for further info about the values
+   */
+  enum UlInterferenceOverloadIndicationItem
+  {
+    HighInterference,
+    MediumInterference,
+    LowInterference
+  };
+
+  /**
+   * UL High Interference Information as
+   * it is used in the LOAD INFORMATION message.
+   * See section 9.1.2.1 for further info about the parameters
+   */
+  struct UlHighInterferenceInformationItem
+  {
+    uint16_t    targetCellId;
+    std::vector <bool> ulHighInterferenceIndicationList;
+  };
+
+  /**
+   * Relative Narrowband Tx Power (RNTP) as
+   * it is used in the LOAD INFORMATION message.
+   * See section 9.2.19 for further info about the parameters
+   * 
+   * Note: You can use INT16_MIN value for -infinite value
+   *       in the rntpThreshold field
+   */
+  struct RelativeNarrowbandTxBand
+  {
+    std::vector <bool> rntpPerPrbList;
+    int16_t     rntpThreshold;
+    uint16_t    antennaPorts;
+    uint16_t    pB;
+    uint16_t    pdcchInterferenceImpact;
+  };
+
+  /**
+   * Cell Information Item as
+   * it is used in the LOAD INFORMATION message.
+   * See section 9.1.2.1 for further info about the parameters
+   */
+  struct CellInformationItem
+  {
+    uint16_t    sourceCellId;
+    std::vector <UlInterferenceOverloadIndicationItem> ulInterferenceOverloadIndicationList;
+    std::vector <UlHighInterferenceInformationItem> ulHighInterferenceInformationList;
+    RelativeNarrowbandTxBand relativeNarrowbandTxBand;
+  };
+
+
   enum IdCause
   {
     HandoverDesirableForRadioReason,
     TimeCriticalHandover
   };
 
-  
+
   /**
    * \brief Parameters of the HANDOVER REQUEST message.
    *
@@ -139,6 +193,18 @@
     uint16_t            newEnbUeX2apId;
     uint16_t            sourceCellId;
   };
+
+  /**
+   * \brief Parameters of the LOAD INFORMATION message.
+   *
+   * See section 9.1.2.1 for further info about the parameters
+   */
+  struct LoadInformationParams
+  {
+    uint16_t            targetCellId;
+    std::vector <CellInformationItem> cellInformationList;
+  };
+
 };
 
 
@@ -158,11 +224,10 @@
   virtual void SendHandoverRequest (HandoverRequestParams params) = 0;
 
   virtual void SendHandoverRequestAck (HandoverRequestAckParams params) = 0;
-  
-// TODO
-//   virtual void SendSnStatusTransfer (const struct SnStatusTransfer& params) = 0;
-// 
+
   virtual void SendUeContextRelease (UeContextReleaseParams params) = 0;
+
+  virtual void SendLoadInformation (LoadInformationParams params) = 0;
 };
 
 
@@ -180,13 +245,12 @@
    */
 
   virtual void RecvHandoverRequest (HandoverRequestParams params) = 0;
-  
+
   virtual void RecvHandoverRequestAck (HandoverRequestAckParams params) = 0;
 
-// TODO
-//   virtual void RecvSnStatusTransfer (const struct SnStatusTransfer& params) = 0;
-// 
   virtual void RecvUeContextRelease (UeContextReleaseParams params) = 0;
+
+  virtual void RecvLoadInformation (LoadInformationParams params) = 0;
 };
 
 ///////////////////////////////////////
@@ -206,6 +270,8 @@
   virtual void SendHandoverRequestAck (HandoverRequestAckParams params);
 
   virtual void SendUeContextRelease (UeContextReleaseParams params);
+
+  virtual void SendLoadInformation (LoadInformationParams params);
   
 private:
   EpcX2SpecificEpcX2SapProvider ();
@@ -244,6 +310,13 @@
   m_x2->DoSendUeContextRelease (params);
 }
 
+template <class C>
+void
+EpcX2SpecificEpcX2SapProvider<C>::SendLoadInformation (LoadInformationParams params)
+{
+  m_x2->DoSendLoadInformation (params);
+}
+
 ///////////////////////////////////////
 
 template <class C>
@@ -261,7 +334,9 @@
   virtual void RecvHandoverRequestAck (HandoverRequestAckParams params);
   
   virtual void RecvUeContextRelease (UeContextReleaseParams params);
-  
+
+  virtual void RecvLoadInformation (LoadInformationParams params);
+
 private:
   EpcX2SpecificEpcX2SapUser ();
   C* m_rrc;
@@ -299,6 +374,12 @@
   m_rrc->DoRecvUeContextRelease (params);
 }
 
+template <class C>
+void
+EpcX2SpecificEpcX2SapUser<C>::RecvLoadInformation (LoadInformationParams params)
+{
+  m_rrc->DoRecvLoadInformation (params);
+}
 
 } // namespace ns3