diff --git a/src/lte/model/epc-x2-header.h b/src/lte/model/epc-x2-header.h index 84e934ceb..dbd476d86 100644 --- a/src/lte/model/epc-x2-header.h +++ b/src/lte/model/epc-x2-header.h @@ -21,10 +21,15 @@ #ifndef EPC_X2_HEADER_H #define EPC_X2_HEADER_H +#include "ns3/epc-x2-sap.h" #include "ns3/header.h" +#include + + namespace ns3 { + class EpcX2Header : public Header { public: @@ -45,20 +50,28 @@ public: uint8_t GetProcedureCode () const; void SetProcedureCode (uint8_t procedureCode); + void SetLengthOfIes (uint32_t lengthOfIes); + void SetNumberOfIes (uint32_t numberOfIes); + enum ProcedureCode_t { - HANDOVER_PREPARATION_TYPE = 0 + HandoverPreparation = 0 }; enum TypeOfMessage_t { - INITIATING_MESSAGE = 0, - SUCCESSFUL_OUTCOME = 1, - UNSUCCESSFUL_OUTCOME = 2 + InitiatingMessage = 0, + SuccessfulOutcome = 1, + UnsuccessfulOutcome = 2 }; private: + uint32_t m_headerLength; + uint8_t m_messageType; uint8_t m_procedureCode; + + uint32_t m_lengthOfIes; + uint32_t m_numberOfIes; }; @@ -74,7 +87,10 @@ public: virtual void Serialize (Buffer::Iterator start) const; virtual uint32_t Deserialize (Buffer::Iterator start); virtual void Print (std::ostream &os) const; - + + + uint16_t GetOldEnbUeX2apId () const; + void SetOldEnbUeX2apId (uint16_t x2apId); uint16_t GetCause () const; void SetCause (uint16_t cause); @@ -82,11 +98,28 @@ public: uint16_t GetTargetCellId () const; void SetTargetCellId (uint16_t targetCellId); + std::vector GetBearers () const; + void SetBearers (std::vector bearers); + + uint64_t GetUeAggregateMaxBitRateDownlink () const; + void SetUeAggregateMaxBitRateDownlink (uint64_t bitRate); + + uint64_t GetUeAggregateMaxBitRateUplink () const; + void SetUeAggregateMaxBitRateUplink (uint64_t bitRate); + + uint32_t GetLengthOfIes () const; + uint32_t GetNumberOfIes () const; + private: - uint16_t m_oldEnbUeX2apId; // TODO MRE When and why this is used? + uint32_t m_numberOfIes; + uint32_t m_headerLength; + + uint16_t m_oldEnbUeX2apId; uint16_t m_cause; uint16_t m_targetCellId; - std::list m_erabsList; + uint64_t m_ueAggregateMaxBitRateDownlink; + uint64_t m_ueAggregateMaxBitRateUplink; + std::vector m_erabsToBeSetupList; }; @@ -104,17 +137,23 @@ public: virtual void Print (std::ostream &os) const; - uint16_t GetCause () const; - void SetCause (uint16_t cause); + uint16_t GetOldEnbUeX2apId () const; + void SetOldEnbUeX2apId (uint16_t x2apId); - uint16_t GetTargetCellId () const; - void SetTargetCellId (uint16_t targetCellId); + uint16_t GetNewEnbUeX2apId () const; + void SetNewEnbUeX2apId (uint16_t x2apId); + + std::vector GetAdmittedBearers () const; + void SetAdmittedBearers (std::vector bearers); + + std::vector GetNotAdmittedBearers () const; + void SetNotAdmittedBearers (std::vector bearers); private: - uint16_t m_oldEnbUeX2apId; // TODO MRE When and why this is used? - uint16_t m_cause; - uint16_t m_targetCellId; - std::list m_erabsList; + uint16_t m_oldEnbUeX2apId; + uint16_t m_newEnbUeX2apId; + std::vector m_erabsAdmittedList; + std::vector m_erabsNotAdmittedList; };