5G-LENA nr-v3.3-81-g75c7590d
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-gnb-rrc.h
1// Copyright (c) 2011, 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2// Copyright (c) 2018 Fraunhofer ESK : RLF extensions
3//
4// SPDX-License-Identifier: GPL-2.0-only
5//
6// Authors:
7// Nicola Baldo <nbaldo@cttc.es>
8// Marco Miozzo <mmiozzo@cttc.es>
9// Manuel Requena <manuel.requena@cttc.es>
10// Modified by:
11// Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015)
12// Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
13// Vignesh Babu <ns3-dev@esk.fraunhofer.de> (RLF extensions)
14
15#ifndef NR_GNB_RRC_H
16#define NR_GNB_RRC_H
17
18#include "nr-anr-sap.h"
19#include "nr-ccm-rrc-sap.h"
20#include "nr-component-carrier.h"
21#include "nr-epc-gnb-s1-sap.h"
22#include "nr-epc-x2-sap.h"
23#include "nr-gnb-cmac-sap.h"
24#include "nr-gnb-cphy-sap.h"
25#include "nr-handover-management-sap.h"
26#include "nr-mac-sap.h"
27#include "nr-pdcp-sap.h"
28#include "nr-rrc-sap.h"
29
30#include <ns3/event-id.h>
31#include <ns3/nstime.h>
32#include <ns3/object.h>
33#include <ns3/traced-callback.h>
34
35#include <map>
36#include <set>
37#include <vector>
38
39namespace ns3
40{
42
46class NrGnbRrc;
47class Packet;
48
54class NrUeManager : public Object
55{
58
59 public:
64 enum State
65 {
66 INITIAL_RANDOM_ACCESS = 0,
67 CONNECTION_SETUP,
68 CONNECTION_REJECTED,
69 ATTACH_REQUEST,
70 CONNECTED_NORMALLY,
71 CONNECTION_RECONFIGURATION,
72 CONNECTION_REESTABLISHMENT,
73 HANDOVER_PREPARATION,
74 HANDOVER_JOINING,
75 HANDOVER_PATH_SWITCH,
76 HANDOVER_LEAVING,
77 NUM_STATES
78 };
79
81
90 NrUeManager(Ptr<NrGnbRrc> rrc, uint16_t rnti, State s, uint8_t componentCarrierId);
91
92 ~NrUeManager() override;
93
102 void Configure();
103
104 protected:
105 // inherited from Object
106 void DoDispose() override;
107
108 public:
113 static TypeId GetTypeId();
114
122 void SetSource(uint16_t sourceCellId, uint16_t sourceX2apId);
123
129 void SetImsi(uint64_t imsi);
130
136
140 void ConfigureSap();
141
145 void ConfigureSrb0();
146
150 void ConfigureSrb1();
151
161 void ConfigureMacPhy();
162
174 uint8_t bearerId,
175 uint32_t gtpTeid,
176 Ipv4Address transportLayerAddress);
177
184
191
198 void ReleaseDataRadioBearer(uint8_t drbid);
199
205
211 void PrepareHandover(uint16_t cellId);
212
219
226
238 uint8_t componentCarrierId);
239
251 void SendData(uint8_t bid, Ptr<Packet> p);
252
257 std::vector<NrEpcX2Sap::ErabToBeSetupItem> GetErabList();
258
265
272 void RecvHandoverPreparationFailure(uint16_t cellId);
273
280
287
294
295 // METHODS FORWARDED FROM gNB RRC SAP ///////////////////////////////////////
296
339 void RecvIdealUeContextRemoveRequest(uint16_t rnti);
340
341 // METHODS FORWARDED FROM gNB CMAC SAP //////////////////////////////////////
342
348
349 // METHODS FORWARDED FROM gNB PDCP SAP //////////////////////////////////////
350
356
362 uint16_t GetRnti() const;
363
368 uint64_t GetImsi() const;
369
374 uint8_t GetComponentCarrierId() const;
375
380 uint16_t GetSrsConfigurationIndex() const;
381
387 void SetSrsConfigurationIndex(uint16_t srsConfIndex);
388
393 State GetState() const;
394
402
407 void CancelPendingEvents();
408
415
421
427
437 typedef void (*StateTracedCallback)(const uint64_t imsi,
438 const uint16_t cellId,
439 const uint16_t rnti,
440 const State oldState,
441 const State newState);
442
443 private:
451 uint8_t AddDataRadioBearerInfo(Ptr<NrDataRadioBearerInfo> radioBearerInfo);
452
458 Ptr<NrDataRadioBearerInfo> GetDataRadioBearerInfo(uint8_t drbid);
459
465 void RemoveDataRadioBearerInfo(uint8_t drbid);
466
472 NrRrcSap::RrcConnectionReconfiguration BuildRrcConnectionReconfiguration();
473
479 NrRrcSap::NonCriticalExtensionConfiguration BuildNonCriticalExtensionConfigurationCa();
480
486 NrRrcSap::RadioResourceConfigDedicated BuildRadioResourceConfigDedicated();
487
492 uint8_t GetNewRrcTransactionIdentifier();
493
499 uint8_t Lcid2Drbid(uint8_t lcid);
500
506 uint8_t Drbid2Lcid(uint8_t drbid);
507
513 uint8_t Lcid2Bid(uint8_t lcid);
514
520 uint8_t Bid2Lcid(uint8_t bid);
521
527 uint8_t Drbid2Bid(uint8_t drbid);
528
534 uint8_t Bid2Drbid(uint8_t bid);
535
545 void SendPacket(uint8_t bid, Ptr<Packet> p);
546
552 void SwitchToState(State s);
553
554 uint8_t m_lastAllocatedDrbid;
555
560 std::map<uint8_t, Ptr<NrDataRadioBearerInfo>> m_drbMap;
561
565 Ptr<NrSignalingRadioBearerInfo> m_srb0;
569 Ptr<NrSignalingRadioBearerInfo> m_srb1;
570
574 uint16_t m_rnti;
579 uint64_t m_imsi;
583 uint8_t m_componentCarrierId;
584
585 uint8_t m_lastRrcTransactionIdentifier;
586
587 NrRrcSap::PhysicalConfigDedicated m_physicalConfigDedicated;
589 Ptr<NrGnbRrc> m_rrc;
591 State m_state;
592
593 NrPdcpSapUser* m_drbPdcpSapUser;
594
595 bool m_pendingRrcConnectionReconfiguration;
596
602 TracedCallback<uint64_t, uint16_t, uint16_t, State, State> m_stateTransitionTrace;
603
609 TracedCallback<uint64_t, uint16_t, uint16_t, uint8_t> m_drbCreatedTrace;
610
611 uint16_t m_sourceX2apId;
612 uint16_t m_targetX2apId;
613 uint16_t m_sourceCellId;
614 uint16_t m_targetCellId;
615 std::list<uint8_t> m_drbsToBeStarted;
616 bool m_needPhyMacConfiguration;
617
624 EventId m_connectionRequestTimeout;
630 EventId m_connectionSetupTimeout;
636 EventId m_connectionRejectedTimeout;
643 EventId m_handoverJoiningTimeout;
650 EventId m_handoverLeavingTimeout;
651
653 bool m_caSupportConfigured;
654
656 bool m_pendingStartDataRadioBearers;
657
667 std::list<std::pair<uint8_t, Ptr<Packet>>> m_packetBuffer;
668
669}; // end of `class NrUeManager`
670
676class NrGnbRrc : public Object
677{
683 friend class MemberNrAnrSapUser<NrGnbRrc>;
687 friend class NrMemberEpcGnbS1SapUser<NrGnbRrc>;
691 friend class NrUeManager;
693 friend class MemberNrCcmRrcSapUser<NrGnbRrc>;
694
695 public:
700 NrGnbRrc();
701
705 ~NrGnbRrc() override;
706
707 // inherited from Object
708 protected:
709 void DoDispose() override;
710
711 public:
716 static TypeId GetTypeId();
717
723
729
736
743 void SetNrGnbCmacSapProvider(NrGnbCmacSapProvider* s, uint8_t pos);
744
750
757
764
771
778
785
792
799
806
813
822
829
835
842
849 void SetNrGnbCphySapProvider(NrGnbCphySapProvider* s, uint8_t pos);
850
857
865
873 bool HasUeManager(uint16_t rnti) const;
874
882 Ptr<NrUeManager> GetUeManager(uint16_t rnti);
883
896 std::vector<uint8_t> AddUeMeasReportConfig(NrRrcSap::ReportConfigEutra config);
897
920 void ConfigureCell(const std::map<uint8_t, Ptr<BandwidthPartGnb>>& ccPhyConf);
921
926 void ConfigureCarriers(std::map<uint8_t, Ptr<BandwidthPartGnb>> ccPhyConf);
927
933 void SetCellId(uint16_t m_cellId);
934
941 void SetCellId(uint16_t m_cellId, uint8_t ccIndex);
942
950 uint8_t CellToComponentCarrierId(uint16_t cellId);
951
959 uint16_t ComponentCarrierToCellId(uint8_t componentCarrierId);
960
965 bool HasCellId(uint16_t cellId) const;
966
976 bool SendData(Ptr<Packet> p);
977
983 void SetForwardUpCallback(Callback<void, Ptr<Packet>> cb);
984
991 void ConnectionRequestTimeout(uint16_t rnti);
992
1000 void ConnectionSetupTimeout(uint16_t rnti);
1001
1008 void ConnectionRejectedTimeout(uint16_t rnti);
1009
1017 void HandoverJoiningTimeout(uint16_t rnti);
1018
1026 void HandoverLeavingTimeout(uint16_t rnti);
1027
1036 void SendHandoverRequest(uint16_t rnti, uint16_t cellId);
1037
1045 void DoSendReleaseDataRadioBearer(uint64_t imsi, uint16_t rnti, uint8_t bearerId);
1046
1054
1060 {
1061 RLC_SM_ALWAYS = 1,
1062 RLC_UM_ALWAYS = 2,
1063 RLC_AM_ALWAYS = 3,
1064 PER_BASED = 4
1065 };
1066
1073 typedef void (*NewUeContextTracedCallback)(const uint16_t cellId, const uint16_t rnti);
1074
1082 typedef void (*ConnectionHandoverTracedCallback)(const uint64_t imsi,
1083 const uint16_t cellId,
1084 const uint16_t rnti);
1085
1094 typedef void (*HandoverStartTracedCallback)(const uint64_t imsi,
1095 const uint16_t cellId,
1096 const uint16_t rnti,
1097 const uint16_t targetCid);
1098
1109 typedef void (*ReceiveReportTracedCallback)(const uint64_t imsi,
1110 const uint16_t cellId,
1111 const uint16_t rnti,
1112 const NrRrcSap::MeasurementReport report);
1113
1122 typedef void (*TimerExpiryTracedCallback)(const uint64_t imsi,
1123 const uint16_t rnti,
1124 const uint16_t cellId,
1125 const std::string cause);
1126
1134 typedef void (*HandoverFailureTracedCallback)(const uint64_t imsi,
1135 const uint16_t rnti,
1136 const uint16_t cellId);
1137
1138 private:
1139 // RRC SAP methods
1140
1147 void DoCompleteSetupUe(uint16_t rnti, NrGnbRrcSapProvider::CompleteSetupUeParameters params);
1155 void DoRecvRrcConnectionRequest(uint16_t rnti, NrRrcSap::RrcConnectionRequest msg);
1163 void DoRecvRrcConnectionSetupCompleted(uint16_t rnti,
1173 void DoRecvRrcConnectionReconfigurationCompleted(
1174 uint16_t rnti,
1184 void DoRecvRrcConnectionReestablishmentRequest(
1185 uint16_t rnti,
1195 void DoRecvRrcConnectionReestablishmentComplete(
1196 uint16_t rnti,
1205 void DoRecvMeasurementReport(uint16_t rnti, NrRrcSap::MeasurementReport msg);
1218 void DoRecvIdealUeContextRemoveRequest(uint16_t rnti);
1219
1220 // S1 SAP methods
1221
1227 void DoInitialContextSetupRequest(
1234 void DoDataRadioBearerSetupRequest(
1241 void DoPathSwitchRequestAcknowledge(
1243
1244 // X2 SAP methods
1245
1251 void DoRecvHandoverRequest(NrEpcX2SapUser::HandoverRequestParams params);
1257 void DoRecvHandoverRequestAck(NrEpcX2SapUser::HandoverRequestAckParams params);
1263 void DoRecvHandoverPreparationFailure(NrEpcX2SapUser::HandoverPreparationFailureParams params);
1269 void DoRecvSnStatusTransfer(NrEpcX2SapUser::SnStatusTransferParams params);
1275 void DoRecvUeContextRelease(NrEpcX2SapUser::UeContextReleaseParams params);
1281 void DoRecvLoadInformation(NrEpcX2SapUser::LoadInformationParams params);
1287 void DoRecvResourceStatusUpdate(NrEpcX2SapUser::ResourceStatusUpdateParams params);
1293 void DoRecvUeData(NrEpcX2SapUser::UeDataParams params);
1299 void DoRecvHandoverCancel(NrEpcX2SapUser::HandoverCancelParams params);
1300
1301 // CMAC SAP methods
1302
1309 uint16_t DoAllocateTemporaryCellRnti(uint8_t componentCarrierId);
1317 void DoNotifyLcConfigResult(uint16_t rnti, uint8_t lcid, bool success);
1323 void DoRrcConfigurationUpdateInd(NrGnbCmacSapUser::UeConfig params);
1324
1325 // Handover Management SAP methods
1326
1333 std::vector<uint8_t> DoAddUeMeasReportConfigForHandover(
1334 NrRrcSap::ReportConfigEutra reportConfig);
1341 uint8_t DoAddUeMeasReportConfigForComponentCarrier(NrRrcSap::ReportConfigEutra reportConfig);
1346 void DoSetNumberOfComponentCarriers(uint16_t numberOfComponentCarriers);
1347
1354 void DoTriggerHandover(uint16_t rnti, uint16_t targetCellId);
1355
1356 // ANR SAP methods
1357
1364 uint8_t DoAddUeMeasReportConfigForAnr(NrRrcSap::ReportConfigEutra reportConfig);
1365
1372 void DoSetPdschConfigDedicated(uint16_t rnti, NrRrcSap::PdschConfigDedicated pa);
1378 void DoSendLoadInformation(NrEpcX2Sap::LoadInformationParams params);
1379
1380 // Internal methods
1381
1392 uint16_t AddUe(NrUeManager::State state, uint8_t componentCarrierId);
1393
1399 void RemoveUe(uint16_t rnti);
1400
1407 TypeId GetRlcType(NrEpsBearer bearer);
1408
1421 bool IsRandomAccessCompleted(uint16_t rnti);
1422
1423 public:
1429 void AddX2Neighbour(uint16_t cellId);
1430
1435 void SetSrsPeriodicity(uint32_t p);
1436
1441 uint32_t GetSrsPeriodicity() const;
1442
1462 void SetCsgId(uint32_t csgId, bool csgIndication);
1463
1464 private:
1473 uint16_t GetNewSrsConfigurationIndex();
1474
1483 void RemoveSrsConfigurationIndex(uint16_t srcCi);
1484
1488 bool IsMaxSrsReached();
1489
1497 uint8_t GetLogicalChannelGroup(NrEpsBearer bearer);
1498
1507 uint8_t GetLogicalChannelPriority(NrEpsBearer bearer);
1508
1513 void SendSystemInformation();
1514
1515 Callback<void, Ptr<Packet>> m_forwardUpCallback;
1516
1518 NrEpcX2SapUser* m_x2SapUser;
1520 NrEpcX2SapProvider* m_x2SapProvider;
1521
1523 std::vector<NrGnbCmacSapUser*> m_cmacSapUser;
1525 std::vector<NrGnbCmacSapProvider*> m_cmacSapProvider;
1526
1528 NrHandoverManagementSapUser* m_handoverManagementSapUser;
1530 NrHandoverManagementSapProvider* m_handoverManagementSapProvider;
1531
1533 NrCcmRrcSapUser* m_ccmRrcSapUser;
1535 NrCcmRrcSapProvider* m_ccmRrcSapProvider;
1536
1538 NrAnrSapUser* m_anrSapUser;
1540 NrAnrSapProvider* m_anrSapProvider;
1541
1543 NrGnbRrcSapUser* m_rrcSapUser;
1545 NrGnbRrcSapProvider* m_rrcSapProvider;
1546
1548 NrMacSapProvider* m_macSapProvider;
1549
1551 NrEpcGnbS1SapProvider* m_s1SapProvider;
1553 NrEpcGnbS1SapUser* m_s1SapUser;
1554
1556 std::vector<NrGnbCphySapUser*> m_cphySapUser;
1558 std::vector<NrGnbCphySapProvider*> m_cphySapProvider;
1559
1561 bool m_configured;
1563 uint32_t m_dlEarfcn;
1565 uint32_t m_ulEarfcn;
1567 uint16_t m_dlBandwidth;
1569 uint16_t m_ulBandwidth;
1571 uint16_t m_lastAllocatedRnti;
1572
1574 std::vector<NrRrcSap::SystemInformationBlockType1> m_sib1;
1575
1579 std::map<uint16_t, Ptr<NrUeManager>> m_ueMap;
1580
1585 NrRrcSap::MeasConfig m_ueMeasConfig;
1586
1588 std::set<uint8_t> m_handoverMeasIds;
1590 std::set<uint8_t> m_anrMeasIds;
1592 std::set<uint8_t> m_componentCarrierMeasIds;
1593
1595 struct X2uTeidInfo
1596 {
1597 uint16_t rnti;
1598 uint8_t drbid;
1599 };
1600
1602 std::map<uint32_t, X2uTeidInfo> m_x2uTeidInfoMap;
1603
1608 uint8_t m_defaultTransmissionMode;
1613 NrEpsBearerToRlcMapping_t m_epsBearerToRlcMapping;
1618 Time m_systemInformationPeriodicity;
1622 uint16_t m_srsCurrentPeriodicityId;
1623 std::set<uint16_t> m_ueSrsConfigurationIndexSet;
1624 uint16_t m_lastAllocatedConfigurationIndex;
1625 bool m_reconfigureUes;
1626
1632 int8_t m_qRxLevMin;
1637 bool m_admitHandoverRequest;
1642 bool m_admitRrcConnectionRequest;
1648 uint8_t m_rsrpFilterCoefficient;
1654 uint8_t m_rsrqFilterCoefficient;
1661 Time m_connectionRequestTimeoutDuration;
1668 Time m_connectionSetupTimeoutDuration;
1673 Time m_connectionRejectedTimeoutDuration;
1682 Time m_handoverJoiningTimeoutDuration;
1688 Time m_handoverLeavingTimeoutDuration;
1689
1694 TracedCallback<uint16_t, uint16_t> m_newUeContextTrace;
1699 TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionEstablishedTrace;
1704 TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionReconfigurationTrace;
1709 TracedCallback<uint64_t, uint16_t, uint16_t, uint16_t> m_handoverStartTrace;
1714 TracedCallback<uint64_t, uint16_t, uint16_t> m_handoverEndOkTrace;
1719 TracedCallback<uint64_t, uint16_t, uint16_t, NrRrcSap::MeasurementReport>
1720 m_recvMeasurementReportTrace;
1726 TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionReleaseTrace;
1732 TracedCallback<uint64_t, uint16_t, uint16_t, std::string> m_rrcTimeoutTrace;
1739 TracedCallback<uint64_t, uint16_t, uint16_t> m_handoverFailureNoPreambleTrace;
1745 TracedCallback<uint64_t, uint16_t, uint16_t> m_handoverFailureMaxRachTrace;
1751 TracedCallback<uint64_t, uint16_t, uint16_t> m_handoverFailureLeavingTrace;
1757 TracedCallback<uint64_t, uint16_t, uint16_t> m_handoverFailureJoiningTrace;
1758
1759 uint16_t m_numberOfComponentCarriers;
1760
1761 bool m_carriersConfigured;
1762
1763 std::map<uint8_t, Ptr<BandwidthPartGnb>>
1764 m_componentCarrierPhyConf;
1765
1766}; // end of `class NrGnbRrc`
1767
1768} // namespace ns3
1769
1770#endif // NR_GNB_RRC_H
GNB bandwidth part representation.
Template for the implementation of the NrAnrSapUser as a member of an owner class of type C to which ...
Definition nr-anr-sap.h:181
MemberNrCcmRrcSapUser class.
Template for the implementation of the NrHandoverManagementSapUser as a member of an owner class of t...
Service Access Point (SAP) offered by the ANR instance to the eNodeB RRC instance.
Definition nr-anr-sap.h:23
Service Access Point (SAP) offered by the eNodeB RRC instance to the ANR instance.
Definition nr-anr-sap.h:81
Service Access Point (SAP) offered by the Component Carrier Manager (CCM) instance to the eNodeB RRC ...
Service Access Point (SAP) offered by the eNodeB RRC instance to the component carrier manager (CCM) ...
This class contains the specification of EPS Bearers.
void SetForwardUpCallback(Callback< void, Ptr< Packet > > cb)
void ConfigureCarriers(std::map< uint8_t, Ptr< BandwidthPartGnb > > ccPhyConf)
Configure carriers.
NrGnbRrcSapProvider * GetNrGnbRrcSapProvider()
void(* HandoverFailureTracedCallback)(const uint64_t imsi, const uint16_t rnti, const uint16_t cellId)
void ConnectionRejectedTimeout(uint16_t rnti)
Ptr< NrUeManager > GetUeManager(uint16_t rnti)
void SetNrAnrSapProvider(NrAnrSapProvider *s)
NrCcmRrcSapUser * GetNrCcmRrcSapUser()
void SendRrcConnectionRelease()
Send RRC connection release function.
uint8_t CellToComponentCarrierId(uint16_t cellId)
std::vector< uint8_t > AddUeMeasReportConfig(NrRrcSap::ReportConfigEutra config)
Add a new UE measurement reporting configuration.
friend class GnbRrcMemberNrGnbCmacSapUser
allow GnbRrcMemberNrGnbCmacSapUser class friend access
Definition nr-gnb-rrc.h:679
void AddX2Neighbour(uint16_t cellId)
NrHandoverManagementSapUser * GetNrHandoverManagementSapUser()
void SetNrCcmRrcSapProvider(NrCcmRrcSapProvider *s)
void HandoverJoiningTimeout(uint16_t rnti)
void ConnectionSetupTimeout(uint16_t rnti)
void SetNrGnbCphySapProvider(NrGnbCphySapProvider *s)
bool HasUeManager(uint16_t rnti) const
bool HasCellId(uint16_t cellId) const
void(* ReceiveReportTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti, const NrRrcSap::MeasurementReport report)
NrGnbCmacSapUser * GetNrGnbCmacSapUser()
void SetEpcX2SapProvider(NrEpcX2SapProvider *s)
void DoSendReleaseDataRadioBearer(uint64_t imsi, uint16_t rnti, uint8_t bearerId)
This function acts as an interface to trigger Release indication messages towards gNB and EPC.
void SetCellId(uint16_t m_cellId)
bool SendData(Ptr< Packet > p)
static TypeId GetTypeId()
Get the type ID.
void SendHandoverRequest(uint16_t rnti, uint16_t cellId)
uint32_t GetSrsPeriodicity() const
uint16_t ComponentCarrierToCellId(uint8_t componentCarrierId)
NrGnbCphySapUser * GetNrGnbCphySapUser()
NrAnrSapUser * GetNrAnrSapUser()
void SetSrsPeriodicity(uint32_t p)
void(* NewUeContextTracedCallback)(const uint16_t cellId, const uint16_t rnti)
void ConnectionRequestTimeout(uint16_t rnti)
NrEpcGnbS1SapUser * GetS1SapUser()
void(* TimerExpiryTracedCallback)(const uint64_t imsi, const uint16_t rnti, const uint16_t cellId, const std::string cause)
void(* ConnectionHandoverTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti)
void(* HandoverStartTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti, const uint16_t targetCid)
void SetNrGnbRrcSapUser(NrGnbRrcSapUser *s)
void ConfigureCell(const std::map< uint8_t, Ptr< BandwidthPartGnb > > &ccPhyConf)
Configure cell-specific parameters.
NrEpcX2SapUser * GetEpcX2SapUser()
void SetCsgId(uint32_t csgId, bool csgIndication)
Associate this RRC entity with a particular CSG information.
void HandoverLeavingTimeout(uint16_t rnti)
void SetNrMacSapProvider(NrMacSapProvider *s)
~NrGnbRrc() override
void SetS1SapProvider(NrEpcGnbS1SapProvider *s)
void SetNrHandoverManagementSapProvider(NrHandoverManagementSapProvider *s)
void SetNrGnbCmacSapProvider(NrGnbCmacSapProvider *s)
Part of the RRC protocol. This Service Access Point (SAP) is used to let the gNB RRC receive a messag...
Part of the RRC protocol. This Service Access Point (SAP) is used by the gNB RRC to send messages to ...
Service Access Point (SAP) offered by the handover algorithm instance to the eNodeB RRC instance.
Service Access Point (SAP) offered by the eNodeB RRC instance to the handover algorithm instance.
NrPdcpSpecificNrPdcpSapUser class.
NrRrcSap::RrcConnectionReconfiguration GetRrcConnectionReconfigurationForHandover(uint8_t componentCarrierId)
State GetState() const
std::vector< NrEpcX2Sap::ErabToBeSetupItem > GetErabList()
void RecvRrcConnectionSetupCompleted(NrRrcSap::RrcConnectionSetupCompleted msg)
void SetSource(uint16_t sourceCellId, uint16_t sourceX2apId)
uint16_t GetSrsConfigurationIndex() const
void PrepareHandover(uint16_t cellId)
void RecvRrcConnectionRequest(NrRrcSap::RrcConnectionRequest msg)
void RecvHandoverCancel(NrEpcX2SapUser::HandoverCancelParams params)
void DoReceivePdcpSdu(NrPdcpSapUser::ReceivePdcpSduParameters params)
uint64_t GetImsi() const
void(* StateTracedCallback)(const uint64_t imsi, const uint16_t cellId, const uint16_t rnti, const State oldState, const State newState)
Definition nr-gnb-rrc.h:437
NrEpcX2Sap::HandoverPreparationFailureParams BuildHoPrepFailMsg()
build handover preparation failure message
void CancelPendingEvents()
void ScheduleRrcConnectionReconfiguration()
void SendData(uint8_t bid, Ptr< Packet > p)
void ConfigureMacPhy()
Configure MAC and PHY aspects.
void ReleaseDataRadioBearer(uint8_t drbid)
uint16_t GetRnti() const
void Configure()
Perform post-creation configuration steps.
uint8_t GetComponentCarrierId() const
void CmacUeConfigUpdateInd(NrGnbCmacSapUser::UeConfig cmacParams)
void ConfigureSrb0()
Initialize the gNB side of SRB0.
void StartDataRadioBearers()
void RecvHandoverPreparationFailure(uint16_t cellId)
void InitialContextSetupRequest()
NrEpcX2Sap::HandoverCancelParams BuildHoCancelMsg()
build handover cancel message
void RecvRrcConnectionReestablishmentComplete(NrRrcSap::RrcConnectionReestablishmentComplete msg)
void SetImsi(uint64_t imsi)
void ConfigureSrb1()
Initialize the gNB side of SRB1.
void RecvRrcConnectionReconfigurationCompleted(NrRrcSap::RrcConnectionReconfigurationCompleted msg)
void SendRrcConnectionRelease()
This function acts as an interface to trigger the connection release towards gNB, EPC and UE.
void RecvHandoverRequestAck(NrEpcX2SapUser::HandoverRequestAckParams params)
void RecvUeContextRelease(NrEpcX2SapUser::UeContextReleaseParams params)
void RecvSnStatusTransfer(NrEpcX2SapUser::SnStatusTransferParams params)
void CompleteSetupUe(NrGnbRrcSapProvider::CompleteSetupUeParameters params)
void ConfigureSap()
Initialize the SAP objects.
void RecvRrcConnectionReestablishmentRequest(NrRrcSap::RrcConnectionReestablishmentRequest msg)
void SetSrsConfigurationIndex(uint16_t srsConfIndex)
void RecordDataRadioBearersToBeStarted()
void RecvMeasurementReport(NrRrcSap::MeasurementReport msg)
void SendUeContextRelease()
static TypeId GetTypeId()
Get the type ID.
void SetPdschConfigDedicated(NrRrcSap::PdschConfigDedicated pdschConfigDedicated)
NrRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigForHandoverPreparationInfo()
void RecvIdealUeContextRemoveRequest(uint16_t rnti)
void SetupDataRadioBearer(NrEpsBearer bearer, uint8_t bearerId, uint32_t gtpTeid, Ipv4Address transportLayerAddress)
static void SendPacket(Ptr< NetDevice > device, Address &addr, uint32_t packetSize)
PathSwitchRequestAcknowledgeParameters structure.
Parameters of the HANDOVER CANCEL message.
Parameters of the HANDOVER PREPARATION FAILURE message.
Parameters of the HANDOVER REQUEST ACKNOWLEDGE message.
Parameters of the HANDOVER REQUEST message.
Parameters of the LOAD INFORMATION message.
Parameters of the RESOURCE STATUS UPDATE message.
Parameters of the SN STATUS TRANSFER message.
Parameters of the UE CONTEXT RELEASE message.
Parameters of the UE DATA primitive.
Parameters for [re]configuring the UE.
CompleteSetupUeParameters structure.
MeasConfig structure.
Definition nr-rrc-sap.h:558
MeasurementReport structure.
Definition nr-rrc-sap.h:953
NonCriticalExtensionConfiguration structure.
Definition nr-rrc-sap.h:879
PdschConfigDedicated structure.
Definition nr-rrc-sap.h:150
PhysicalConfigDedicated structure.
Definition nr-rrc-sap.h:213
RadioResourceConfigDedicated structure.
Definition nr-rrc-sap.h:283
Specifies criteria for triggering of an E-UTRA measurement reporting event.
Definition nr-rrc-sap.h:360
RrcConnectionReconfigurationCompleted structure.
Definition nr-rrc-sap.h:903
RrcConnectionReconfiguration structure.
Definition nr-rrc-sap.h:886
RrcConnectionReestablishmentComplete structure.
Definition nr-rrc-sap.h:924
RrcConnectionReestablishmentRequest structure.
Definition nr-rrc-sap.h:909
RrcConnectionRequest structure.
Definition nr-rrc-sap.h:735
RrcConnectionSetupCompleted structure.
Definition nr-rrc-sap.h:749