Add ResourceStatusUpdate primitive to X2 SAP
authorManuel Requena <manuel.requena@cttc.es>
Tue, 27 Nov 2012 18:33:45 +0100
changeset 9432 0a3218ce7fe9
parent 9418 150d133b96af
child 9433 d5700444db81
Add ResourceStatusUpdate primitive to X2 SAP
src/lte/model/epc-x2-sap.h
--- a/src/lte/model/epc-x2-sap.h	Tue Nov 20 22:04:08 2012 +0100
+++ b/src/lte/model/epc-x2-sap.h	Tue Nov 27 18:33:45 2012 +0100
@@ -61,7 +61,7 @@
     bool        dlForwarding;
     Ipv4Address transportLayerAddress;
     uint32_t    gtpTeid;
-    
+
     ErabToBeSetupItem ();
   };
 
@@ -76,7 +76,7 @@
     uint32_t    ulGtpTeid;
     uint32_t    dlGtpTeid;
   };
-  
+
   /**
    * E-RABs not admitted item as
    * it is used in the HANDOVER REQUEST ACKNOWLEDGE message.
@@ -141,6 +141,56 @@
     RelativeNarrowbandTxBand relativeNarrowbandTxBand;
   };
 
+  /**
+   * Load Indicator as
+   * it is used in the RESOURCE STATUS UPDATE message.
+   * See section 9.2.36 for further info about the value
+   */
+  enum LoadIndicator
+  {
+    LowLoad,
+    MediumLoad,
+    HighLoad,
+    Overload
+  };
+
+  /**
+   * Composite Available Capacity as
+   * it is used in the RESOURCE STATUS UPDATE message.
+   * See section 9.2.45 for further info about the parameters
+   */
+  struct CompositeAvailCapacity
+  {
+    uint16_t    cellCapacityClassValue;
+    uint16_t    capacityValue;
+  };
+
+  /**
+   * Cell Measurement Result Item as
+   * it is used in the RESOURCE STATUS UPDATE message.
+   * See section 9.1.2.14 for further info about the parameters
+   */
+  struct CellMeasurementResultItem
+  {
+    uint16_t        sourceCellId;
+
+    LoadIndicator   dlHardwareLoadIndicator;
+    LoadIndicator   ulHardwareLoadIndicator;
+
+    LoadIndicator   dlS1TnlLoadIndicator;
+    LoadIndicator   ulS1TnlLoadIndicator;
+
+    uint16_t        dlGbrPrbUsage;
+    uint16_t        ulGbrPrbUsage;
+    uint16_t        dlNonGbrPrbUsage;
+    uint16_t        ulNonGbrPrbUsage;
+    uint16_t        dlTotalPrbUsage;
+    uint16_t        ulTotalPrbUsage;
+
+    CompositeAvailCapacity  dlCompositeAvailableCapacity;
+    CompositeAvailCapacity  ulCompositeAvailableCapacity;
+  };
+
 
   enum IdCause
   {
@@ -165,7 +215,7 @@
     std::vector <ErabToBeSetupItem> bearers;
     Ptr<Packet>         rrcContext;
   };
-  
+
   /**
    * \brief Parameters of the HANDOVER REQUEST ACKNOWLEDGE message.
    *
@@ -205,6 +255,19 @@
     std::vector <CellInformationItem> cellInformationList;
   };
 
+  /**
+   * \brief Parameters of the RESOURCE STATUS UPDATE message.
+   *
+   * See section 9.1.2.14 for further info about the parameters
+   */
+  struct ResourceStatusUpdateParams
+  {
+    uint16_t            targetCellId;
+    uint16_t            enb1MeasurementId;
+    uint16_t            enb2MeasurementId;
+    std::vector <CellMeasurementResultItem> cellMeasurementResultList;
+  };
+
 };
 
 
@@ -216,7 +279,7 @@
 {
 public:
   virtual ~EpcX2SapProvider ();
-  
+
   /**
    * Service primitives
    */
@@ -228,6 +291,8 @@
   virtual void SendUeContextRelease (UeContextReleaseParams params) = 0;
 
   virtual void SendLoadInformation (LoadInformationParams params) = 0;
+
+  virtual void SendResourceStatusUpdate (ResourceStatusUpdateParams params) = 0;
 };
 
 
@@ -251,6 +316,8 @@
   virtual void RecvUeContextRelease (UeContextReleaseParams params) = 0;
 
   virtual void RecvLoadInformation (LoadInformationParams params) = 0;
+  
+  virtual void RecvResourceStatusUpdate (ResourceStatusUpdateParams params) = 0;
 };
 
 ///////////////////////////////////////
@@ -272,7 +339,9 @@
   virtual void SendUeContextRelease (UeContextReleaseParams params);
 
   virtual void SendLoadInformation (LoadInformationParams params);
-  
+
+  virtual void SendResourceStatusUpdate (ResourceStatusUpdateParams params);
+
 private:
   EpcX2SpecificEpcX2SapProvider ();
   C* m_x2;
@@ -317,6 +386,13 @@
   m_x2->DoSendLoadInformation (params);
 }
 
+template <class C>
+void
+EpcX2SpecificEpcX2SapProvider<C>::SendResourceStatusUpdate (ResourceStatusUpdateParams params)
+{
+  m_x2->DoSendResourceStatusUpdate (params);
+}
+
 ///////////////////////////////////////
 
 template <class C>
@@ -332,11 +408,13 @@
   virtual void RecvHandoverRequest (HandoverRequestParams params);
 
   virtual void RecvHandoverRequestAck (HandoverRequestAckParams params);
-  
+
   virtual void RecvUeContextRelease (UeContextReleaseParams params);
 
   virtual void RecvLoadInformation (LoadInformationParams params);
 
+  virtual void RecvResourceStatusUpdate (ResourceStatusUpdateParams params);
+
 private:
   EpcX2SpecificEpcX2SapUser ();
   C* m_rrc;
@@ -381,6 +459,13 @@
   m_rrc->DoRecvLoadInformation (params);
 }
 
+template <class C>
+void
+EpcX2SpecificEpcX2SapUser<C>::RecvResourceStatusUpdate (ResourceStatusUpdateParams params)
+{
+  m_rrc->DoRecvResourceStatusUpdate (params);
+}
+
 } // namespace ns3
 
 #endif // EPC_X2_SAP_H