5G-LENA nr-v4.0
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-epc-x2-header.h
1// Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4//
5// Author: Manuel Requena <manuel.requena@cttc.es>
6
7#ifndef NR_EPC_X2_HEADER_H
8#define NR_EPC_X2_HEADER_H
9
10#include "nr-epc-x2-sap.h"
11
12#include "ns3/header.h"
13
14#include <vector>
15
16namespace ns3
17{
18class NrEpcX2Header : public Header
19{
20 public:
22 ~NrEpcX2Header() override;
23
28 static TypeId GetTypeId();
29 TypeId GetInstanceTypeId() const override;
30 uint32_t GetSerializedSize() const override;
31 void Serialize(Buffer::Iterator start) const override;
32 uint32_t Deserialize(Buffer::Iterator start) override;
33 void Print(std::ostream& os) const override;
34
39 uint8_t GetMessageType() const;
44 void SetMessageType(uint8_t messageType);
45
50 uint8_t GetProcedureCode() const;
55 void SetProcedureCode(uint8_t procedureCode);
56
61 void SetLengthOfIes(uint32_t lengthOfIes);
66 void SetNumberOfIes(uint32_t numberOfIes);
67
70 {
71 HandoverPreparation = 0,
72 HandoverCancel = 1,
73 LoadIndication = 2,
74 SnStatusTransfer = 4,
75 UeContextRelease = 5,
76 ResourceStatusReporting = 10
77 };
78
81 {
82 InitiatingMessage = 0,
83 SuccessfulOutcome = 1,
84 UnsuccessfulOutcome = 2
85 };
86
87 private:
88 uint8_t m_messageType;
89 uint8_t m_procedureCode;
90
91 uint32_t m_lengthOfIes;
92 uint32_t m_numberOfIes;
93};
94
98class NrEpcX2HandoverRequestHeader : public Header
99{
100 public:
103
108 static TypeId GetTypeId();
109 TypeId GetInstanceTypeId() const override;
110 uint32_t GetSerializedSize() const override;
111 void Serialize(Buffer::Iterator start) const override;
112 uint32_t Deserialize(Buffer::Iterator start) override;
113 void Print(std::ostream& os) const override;
114
119 uint16_t GetOldGnbUeX2apId() const;
124 void SetOldGnbUeX2apId(uint16_t x2apId);
125
130 uint16_t GetCause() const;
135 void SetCause(uint16_t cause);
136
141 uint16_t GetTargetCellId() const;
146 void SetTargetCellId(uint16_t targetCellId);
147
152 uint32_t GetMmeUeS1apId() const;
157 void SetMmeUeS1apId(uint32_t mmeUeS1apId);
158
163 std::vector<NrEpcX2Sap::ErabToBeSetupItem> GetBearers() const;
168 void SetBearers(std::vector<NrEpcX2Sap::ErabToBeSetupItem> bearers);
169
174 uint64_t GetUeAggregateMaxBitRateDownlink() const;
179 void SetUeAggregateMaxBitRateDownlink(uint64_t bitRate);
180
185 uint64_t GetUeAggregateMaxBitRateUplink() const;
190 void SetUeAggregateMaxBitRateUplink(uint64_t bitRate);
191
196 uint32_t GetLengthOfIes() const;
201 uint32_t GetNumberOfIes() const;
202
203 private:
204 uint32_t m_numberOfIes;
205 uint32_t m_headerLength;
206
207 uint16_t m_oldGnbUeX2apId;
208 uint16_t m_cause;
209 uint16_t m_targetCellId;
210 uint32_t m_mmeUeS1apId;
211 uint64_t m_ueAggregateMaxBitRateDownlink;
212 uint64_t m_ueAggregateMaxBitRateUplink;
213 std::vector<NrEpcX2Sap::ErabToBeSetupItem> m_erabsToBeSetupList;
214};
215
220{
221 public:
224
229 static TypeId GetTypeId();
230 TypeId GetInstanceTypeId() const override;
231 uint32_t GetSerializedSize() const override;
232 void Serialize(Buffer::Iterator start) const override;
233 uint32_t Deserialize(Buffer::Iterator start) override;
234 void Print(std::ostream& os) const override;
235
240 uint16_t GetOldGnbUeX2apId() const;
245 void SetOldGnbUeX2apId(uint16_t x2apId);
246
251 uint16_t GetNewGnbUeX2apId() const;
256 void SetNewGnbUeX2apId(uint16_t x2apId);
257
262 std::vector<NrEpcX2Sap::ErabAdmittedItem> GetAdmittedBearers() const;
267 void SetAdmittedBearers(std::vector<NrEpcX2Sap::ErabAdmittedItem> bearers);
268
273 std::vector<NrEpcX2Sap::ErabNotAdmittedItem> GetNotAdmittedBearers() const;
278 void SetNotAdmittedBearers(std::vector<NrEpcX2Sap::ErabNotAdmittedItem> bearers);
279
284 uint32_t GetLengthOfIes() const;
289 uint32_t GetNumberOfIes() const;
290
291 private:
292 uint32_t m_numberOfIes;
293 uint32_t m_headerLength;
294
295 uint16_t m_oldGnbUeX2apId;
296 uint16_t m_newGnbUeX2apId;
297 std::vector<NrEpcX2Sap::ErabAdmittedItem> m_erabsAdmittedList;
298 std::vector<NrEpcX2Sap::ErabNotAdmittedItem>
299 m_erabsNotAdmittedList;
300};
301
306{
307 public:
310
315 static TypeId GetTypeId();
316 TypeId GetInstanceTypeId() const override;
317 uint32_t GetSerializedSize() const override;
318 void Serialize(Buffer::Iterator start) const override;
319 uint32_t Deserialize(Buffer::Iterator start) override;
320 void Print(std::ostream& os) const override;
321
326 uint16_t GetOldGnbUeX2apId() const;
331 void SetOldGnbUeX2apId(uint16_t x2apId);
332
337 uint16_t GetCause() const;
342 void SetCause(uint16_t cause);
343
348 uint16_t GetCriticalityDiagnostics() const;
353 void SetCriticalityDiagnostics(uint16_t criticalityDiagnostics);
354
359 uint32_t GetLengthOfIes() const;
364 uint32_t GetNumberOfIes() const;
365
366 private:
367 uint32_t m_numberOfIes;
368 uint32_t m_headerLength;
369
370 uint16_t m_oldGnbUeX2apId;
371 uint16_t m_cause;
372 uint16_t m_criticalityDiagnostics;
373};
374
378class NrEpcX2SnStatusTransferHeader : public Header
379{
380 public:
383
388 static TypeId GetTypeId();
389 TypeId GetInstanceTypeId() const override;
390 uint32_t GetSerializedSize() const override;
391 void Serialize(Buffer::Iterator start) const override;
392 uint32_t Deserialize(Buffer::Iterator start) override;
393 void Print(std::ostream& os) const override;
394
399 uint16_t GetOldGnbUeX2apId() const;
404 void SetOldGnbUeX2apId(uint16_t x2apId);
405
410 uint16_t GetNewGnbUeX2apId() const;
415 void SetNewGnbUeX2apId(uint16_t x2apId);
416
421 std::vector<NrEpcX2Sap::ErabsSubjectToStatusTransferItem> GetErabsSubjectToStatusTransferList()
422 const;
428 std::vector<NrEpcX2Sap::ErabsSubjectToStatusTransferItem> erabs);
429
434 uint32_t GetLengthOfIes() const;
439 uint32_t GetNumberOfIes() const;
440
441 private:
442 uint32_t m_numberOfIes;
443 uint32_t m_headerLength;
444
445 uint16_t m_oldGnbUeX2apId;
446 uint16_t m_newGnbUeX2apId;
447 std::vector<NrEpcX2Sap::ErabsSubjectToStatusTransferItem>
448 m_erabsSubjectToStatusTransferList;
449};
450
454class NrEpcX2UeContextReleaseHeader : public Header
455{
456 public:
459
464 static TypeId GetTypeId();
465 TypeId GetInstanceTypeId() const override;
466 uint32_t GetSerializedSize() const override;
467 void Serialize(Buffer::Iterator start) const override;
468 uint32_t Deserialize(Buffer::Iterator start) override;
469 void Print(std::ostream& os) const override;
470
475 uint16_t GetOldGnbUeX2apId() const;
480 void SetOldGnbUeX2apId(uint16_t x2apId);
481
486 uint16_t GetNewGnbUeX2apId() const;
491 void SetNewGnbUeX2apId(uint16_t x2apId);
492
497 uint32_t GetLengthOfIes() const;
502 uint32_t GetNumberOfIes() const;
503
504 private:
505 uint32_t m_numberOfIes;
506 uint32_t m_headerLength;
507
508 uint16_t m_oldGnbUeX2apId;
509 uint16_t m_newGnbUeX2apId;
510};
511
515class NrEpcX2LoadInformationHeader : public Header
516{
517 public:
520
525 static TypeId GetTypeId();
526 TypeId GetInstanceTypeId() const override;
527 uint32_t GetSerializedSize() const override;
528 void Serialize(Buffer::Iterator start) const override;
529 uint32_t Deserialize(Buffer::Iterator start) override;
530 void Print(std::ostream& os) const override;
531
536 std::vector<NrEpcX2Sap::CellInformationItem> GetCellInformationList() const;
541 void SetCellInformationList(std::vector<NrEpcX2Sap::CellInformationItem> cellInformationList);
542
547 uint32_t GetLengthOfIes() const;
552 uint32_t GetNumberOfIes() const;
553
554 private:
555 uint32_t m_numberOfIes;
556 uint32_t m_headerLength;
557
558 std::vector<NrEpcX2Sap::CellInformationItem> m_cellInformationList;
559};
560
565{
566 public:
569
574 static TypeId GetTypeId();
575 TypeId GetInstanceTypeId() const override;
576 uint32_t GetSerializedSize() const override;
577 void Serialize(Buffer::Iterator start) const override;
578 uint32_t Deserialize(Buffer::Iterator start) override;
579 void Print(std::ostream& os) const override;
580
585 uint16_t GetGnb1MeasurementId() const;
590 void SetGnb1MeasurementId(uint16_t gnb1MeasurementId);
591
596 uint16_t GetGnb2MeasurementId() const;
601 void SetGnb2MeasurementId(uint16_t gnb2MeasurementId);
602
607 std::vector<NrEpcX2Sap::CellMeasurementResultItem> GetCellMeasurementResultList() const;
613 std::vector<NrEpcX2Sap::CellMeasurementResultItem> cellMeasurementResultList);
614
619 uint32_t GetLengthOfIes() const;
624 uint32_t GetNumberOfIes() const;
625
626 private:
627 uint32_t m_numberOfIes;
628 uint32_t m_headerLength;
629
630 uint16_t m_gnb1MeasurementId;
631 uint16_t m_gnb2MeasurementId;
632 std::vector<NrEpcX2Sap::CellMeasurementResultItem>
633 m_cellMeasurementResultList;
634};
635
639class NrEpcX2HandoverCancelHeader : public Header
640{
641 public:
644
649 static TypeId GetTypeId();
650 TypeId GetInstanceTypeId() const override;
651 uint32_t GetSerializedSize() const override;
652 void Serialize(Buffer::Iterator start) const override;
653 uint32_t Deserialize(Buffer::Iterator start) override;
654 void Print(std::ostream& os) const override;
655
660 uint16_t GetOldGnbUeX2apId() const;
665 void SetOldGnbUeX2apId(uint16_t x2apId);
666
671 uint16_t GetNewGnbUeX2apId() const;
676 void SetNewGnbUeX2apId(uint16_t x2apId);
677
682 uint16_t GetCause() const;
687 void SetCause(uint16_t cause);
688
693 uint32_t GetLengthOfIes() const;
698 uint32_t GetNumberOfIes() const;
699
700 private:
701 uint32_t m_numberOfIes;
702 uint32_t m_headerLength;
703
704 uint16_t m_oldGnbUeX2apId;
705 uint16_t m_newGnbUeX2apId;
706 uint16_t m_cause;
707};
708
709} // namespace ns3
710
711#endif // NR_EPC_X2_HEADER_H
uint32_t GetLengthOfIes() const
Get length of IEs function.
void SetNewGnbUeX2apId(uint16_t x2apId)
Set new gNB UE X2 AP ID function.
uint32_t GetNumberOfIes() const
Get number of IEs function.
void SetOldGnbUeX2apId(uint16_t x2apId)
Set old gNB UE X2 AP ID function.
uint16_t GetNewGnbUeX2apId() const
Get new gNB UE X2 AP ID function.
static TypeId GetTypeId()
Get the type ID.
void SetCause(uint16_t cause)
Set cause function.
uint16_t GetCause() const
Get cause function.
uint16_t GetOldGnbUeX2apId() const
Get old gNB UE X2 AP ID function.
static TypeId GetTypeId()
Get the type ID.
void SetCriticalityDiagnostics(uint16_t criticalityDiagnostics)
std::vector< NrEpcX2Sap::ErabAdmittedItem > GetAdmittedBearers() const
void SetNotAdmittedBearers(std::vector< NrEpcX2Sap::ErabNotAdmittedItem > bearers)
void SetAdmittedBearers(std::vector< NrEpcX2Sap::ErabAdmittedItem > bearers)
std::vector< NrEpcX2Sap::ErabNotAdmittedItem > GetNotAdmittedBearers() const
static TypeId GetTypeId()
Get the type ID.
void SetTargetCellId(uint16_t targetCellId)
void SetUeAggregateMaxBitRateDownlink(uint64_t bitRate)
void SetOldGnbUeX2apId(uint16_t x2apId)
void SetMmeUeS1apId(uint32_t mmeUeS1apId)
void SetBearers(std::vector< NrEpcX2Sap::ErabToBeSetupItem > bearers)
void SetUeAggregateMaxBitRateUplink(uint64_t bitRate)
static TypeId GetTypeId()
Get the type ID.
uint64_t GetUeAggregateMaxBitRateDownlink() const
std::vector< NrEpcX2Sap::ErabToBeSetupItem > GetBearers() const
uint8_t GetProcedureCode() const
void SetLengthOfIes(uint32_t lengthOfIes)
ProcedureCode_t
Procedure code enumeration 9.3.7.
TypeOfMessage_t
Type of message enumeration.
static TypeId GetTypeId()
Get the type ID.
void SetProcedureCode(uint8_t procedureCode)
void SetNumberOfIes(uint32_t numberOfIes)
uint8_t GetMessageType() const
void SetMessageType(uint8_t messageType)
std::vector< NrEpcX2Sap::CellInformationItem > GetCellInformationList() const
void SetCellInformationList(std::vector< NrEpcX2Sap::CellInformationItem > cellInformationList)
static TypeId GetTypeId()
Get the type ID.
void SetGnb2MeasurementId(uint16_t gnb2MeasurementId)
static TypeId GetTypeId()
Get the type ID.
void SetCellMeasurementResultList(std::vector< NrEpcX2Sap::CellMeasurementResultItem > cellMeasurementResultList)
std::vector< NrEpcX2Sap::CellMeasurementResultItem > GetCellMeasurementResultList() const
void SetGnb1MeasurementId(uint16_t gnb1MeasurementId)
static TypeId GetTypeId()
Get the type ID.
std::vector< NrEpcX2Sap::ErabsSubjectToStatusTransferItem > GetErabsSubjectToStatusTransferList() const
void SetErabsSubjectToStatusTransferList(std::vector< NrEpcX2Sap::ErabsSubjectToStatusTransferItem > erabs)
static TypeId GetTypeId()
Get the type ID.