diff --git a/src/lte/model/epc-x2-sap.cc b/src/lte/model/epc-x2-sap.cc index d8ad89615..07faf67c5 100644 --- a/src/lte/model/epc-x2-sap.cc +++ b/src/lte/model/epc-x2-sap.cc @@ -23,6 +23,15 @@ namespace ns3 { +EpcX2Sap::~EpcX2Sap () +{ +} + +EpcX2Sap::ErabToBeSetupItem::ErabToBeSetupItem () : + erabLevelQosParameters (EpsBearer (EpsBearer::GBR_CONV_VOICE)) +{ +} + EpcX2SapProvider::~EpcX2SapProvider () { } diff --git a/src/lte/model/epc-x2-sap.h b/src/lte/model/epc-x2-sap.h index ea34cda09..f9603673e 100644 --- a/src/lte/model/epc-x2-sap.h +++ b/src/lte/model/epc-x2-sap.h @@ -22,15 +22,84 @@ #define EPC_X2_SAP_H #include "ns3/packet.h" +#include "ns3/eps-bearer.h" +#include "ns3/ipv4-address.h" namespace ns3 { class Node; -class Packet; + +/** + * The X2 SAP defines the service offered + */ + +/** + * \brief Common structures for EpcX2SapProvider and EpcX2SapUser + */ +class EpcX2Sap +{ +public: + virtual ~EpcX2Sap (); + + struct ErabToBeSetupItem + { + uint16_t erabId; + EpsBearer erabLevelQosParameters; + bool dlForwarding; + Ipv4Address transportLayerAddress; + uint32_t gtpTeid; + + ErabToBeSetupItem (); + }; + + struct ErabAdmittedItem + { + uint16_t erabId; + uint32_t ulGtpTeid; + uint32_t dlGtpTeid; + }; + + struct ErabNotAdmittedItem + { + uint16_t erabId; + uint16_t cause; + }; + + enum IdCause + { + HandoverDesirableForRadioReason, + TimeCriticalHandover + }; + + + struct HandoverRequestParams + { + uint16_t oldEnbUeX2apId; + uint16_t cause; + uint16_t sourceCellId; + uint16_t targetCellId; + uint64_t ueAggregateMaxBitRateDownlink; + uint64_t ueAggregateMaxBitRateUplink; + std::vector bearers; + Ptr rrcContext; + }; + + struct HandoverRequestAckParams + { + uint16_t oldEnbUeX2apId; + uint16_t newEnbUeX2apId; + uint16_t sourceCellId; + uint16_t targetCellId; + std::vector admittedBearers; + std::vector notAdmittedBearers; + Ptr rrcContext; + }; + +}; -class EpcX2SapProvider +class EpcX2SapProvider : public EpcX2Sap { public: virtual ~EpcX2SapProvider (); @@ -39,24 +108,6 @@ public: * Parameters of the API primitives */ - struct HandoverRequestParams - { - uint16_t cause; - uint16_t sourceCellId; - uint16_t targetCellId; - std::list bearers; - Ptr rrcContext; - }; - - struct HandoverRequestAckParams - { - uint16_t cause; - uint16_t sourceCellId; - uint16_t targetCellId; - std::list bearers; - Ptr rrcContext; - }; - /** * SAP primitives */ @@ -72,7 +123,7 @@ public: }; -class EpcX2SapUser +class EpcX2SapUser : public EpcX2Sap { public: virtual ~EpcX2SapUser (); @@ -80,24 +131,6 @@ public: /** * Parameters of the API primitives */ - - struct HandoverRequestParams - { - uint16_t cause; - uint16_t sourceCellId; - uint16_t targetCellId; - std::list bearers; - Ptr rrcContext; - }; - - struct HandoverRequestAckParams - { - uint16_t cause; - uint16_t sourceCellId; - uint16_t targetCellId; - std::list bearers; - Ptr rrcContext; - }; /** * SAP primitives