21 #include <ns3/fatal-error.h>
23 #include <ns3/nstime.h>
24 #include <ns3/node-list.h>
26 #include <ns3/simulator.h>
45 : m_ueRrcSapProvider (0),
46 m_enbRrcSapProvider (0)
66 static TypeId tid =
TypeId (
"ns3::LteUeRrcProtocolIdeal")
68 .AddConstructor<LteUeRrcProtocolIdeal> ()
171 uint16_t cellId =
m_rrc->GetCellId ();
178 (i != listEnd) && (!found);
184 (j < nDevs) && (!found);
194 if (enbDev->GetCellId () == cellId)
202 NS_ASSERT_MSG (found,
" Unable to find eNB with CellId =" << cellId);
212 : m_enbRrcSapProvider (0)
233 static TypeId tid =
TypeId (
"ns3::LteEnbRrcProtocolIdeal")
235 .AddConstructor<LteEnbRrcProtocolIdeal> ()
261 std::map<uint16_t, LteUeRrcSapProvider*>::const_iterator it;
270 std::map<uint16_t, LteUeRrcSapProvider*>::iterator it;
350 for (
int j = 0; j < nDevs; ++j)
357 if (ueRrc->GetCellId () ==
m_cellId)
361 ueRrc->GetLteUeRrcSapProvider (),
379 for (
int j = 0; j < nDevs; ++j)
385 NS_LOG_LOGIC (
"considering UE IMSI " << ueDev->GetImsi () <<
" that has cellId " << ueRrc->GetCellId ());
386 if (ueRrc->GetCellId () ==
m_cellId)
388 NS_LOG_LOGIC (
"sending SI to IMSI " << ueDev->GetImsi ());
389 ueRrc->GetLteUeRrcSapProvider ()->RecvSystemInformation (msg);
392 ueRrc->GetLteUeRrcSapProvider (),
481 virtual void Print (std::ostream &os)
const;
506 static TypeId tid =
TypeId (
"ns3::IdealHandoverPreparationInfoHeader")
508 .AddConstructor<IdealHandoverPreparationInfoHeader> ()
587 virtual void Print (std::ostream &os)
const;
612 static TypeId tid =
TypeId (
"ns3::IdealHandoverCommandHeader")
614 .AddConstructor<IdealHandoverCommandHeader> ()
669 std::map<uint32_t, LteRrcSap::RrcConnectionReconfiguration>::iterator it =
g_handoverCommandMsgMap.find (msgId);
uint32_t RemoveHeader(Header &header)
LteUeRrcSapProvider * m_ueRrcSapProvider
void DoSendRrcConnectionReestablishmentReject(uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentReject msg)
LteEnbRrcSapProvider * m_enbRrcSapProvider
keep track of time values and allow control of global simulation resolution
smart pointer class similar to boost::intrusive_ptr
#define NS_LOG_FUNCTION(parameters)
virtual void RecvMasterInformationBlock(MasterInformationBlock msg)=0
virtual void RecvRrcConnectionSetupCompleted(uint16_t rnti, RrcConnectionSetupCompleted msg)=0
void DoSendRrcConnectionReconfigurationCompleted(LteRrcSap::RrcConnectionReconfigurationCompleted msg)
void DoSendRrcConnectionReestablishmentRequest(LteRrcSap::RrcConnectionReestablishmentRequest msg)
std::map< uint32_t, LteRrcSap::HandoverPreparationInfo > g_handoverPreparationInfoMsgMap
virtual void DoDispose(void)
void DoSendRrcConnectionReconfiguration(uint16_t rnti, LteRrcSap::RrcConnectionReconfiguration msg)
void DoSendRrcConnectionRelease(uint16_t rnti, LteRrcSap::RrcConnectionRelease msg)
#define NS_LOG_COMPONENT_DEFINE(name)
virtual uint32_t GetSerializedSize(void) const
void SetUeRrc(Ptr< LteUeRrc > rrc)
void SetLteEnbRrcSapProvider(LteEnbRrcSapProvider *p)
void DoSendMasterInformationBlock(LteRrcSap::MasterInformationBlock msg)
LteEnbRrcSapUser * m_enbRrcSapUser
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
void DoSendRrcConnectionSetup(uint16_t rnti, LteRrcSap::RrcConnectionSetup msg)
void SetMsgId(uint32_t id)
uint32_t g_handoverPreparationInfoMsgIdCounter
void SetLteUeRrcSapProvider(LteUeRrcSapProvider *p)
static TypeId GetTypeId(void)
virtual void RecvRrcConnectionRelease(RrcConnectionRelease msg)=0
iterator in a Buffer instance
void DoSetupUe(uint16_t rnti, LteEnbRrcSapUser::SetupUeParameters params)
virtual ~LteEnbRrcProtocolIdeal()
virtual void RecvRrcConnectionReestablishmentReject(RrcConnectionReestablishmentReject msg)=0
virtual void RecvRrcConnectionReject(RrcConnectionReject msg)=0
const Time RRC_IDEAL_MSG_DELAY
void DoSendSystemInformation(LteRrcSap::SystemInformation msg)
virtual void Serialize(Buffer::Iterator start) const
virtual void RecvSystemInformationBlockType1(SystemInformationBlockType1 msg)=0
Ptr< Packet > DoEncodeHandoverPreparationInformation(LteRrcSap::HandoverPreparationInfo msg)
void DoSendRrcConnectionSetupCompleted(LteRrcSap::RrcConnectionSetupCompleted msg)
static TypeId GetTypeId(void)
static Iterator End(void)
virtual void RecvRrcConnectionReconfiguration(RrcConnectionReconfiguration msg)=0
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
virtual void RecvRrcConnectionReestablishment(RrcConnectionReestablishment msg)=0
virtual void Print(std::ostream &os) const
Ptr< NetDevice > GetDevice(uint32_t index) const
void SetCellId(uint16_t cellId)
virtual uint32_t Deserialize(Buffer::Iterator start)
void DoSendRrcConnectionRequest(LteRrcSap::RrcConnectionRequest msg)
virtual void Print(std::ostream &os) const
#define NS_LOG_LOGIC(msg)
std::map< uint16_t, LteUeRrcSapProvider * > m_enbRrcSapProviderMap
LteUeRrcSapUser * m_ueRrcSapUser
LteRrcSap::HandoverPreparationInfo DoDecodeHandoverPreparationInformation(Ptr< Packet > p)
virtual void Serialize(Buffer::Iterator start) const
void SetEnbRrcSapProvider()
uint32_t GetNDevices(void) const
void SetMsgId(uint32_t id)
LteUeRrcSapUser * GetLteUeRrcSapUser()
virtual void RecvRrcConnectionSetup(RrcConnectionSetup msg)=0
std::vector< Ptr< Node > >::const_iterator Iterator
virtual void RecvRrcConnectionRequest(uint16_t rnti, RrcConnectionRequest msg)=0
static TypeId GetTypeId(void)
virtual void RecvSystemInformation(SystemInformation msg)=0
LteUeRrcSapProvider * GetUeRrcSapProvider(uint16_t rnti)
#define NS_ASSERT_MSG(condition, message)
LteRrcSap::RrcConnectionReconfiguration DoDecodeHandoverCommand(Ptr< Packet > p)
void DoSendRrcConnectionReject(uint16_t rnti, LteRrcSap::RrcConnectionReject msg)
std::map< uint32_t, LteRrcSap::RrcConnectionReconfiguration > g_handoverCommandMsgMap
void DoSetup(LteUeRrcSapUser::SetupParameters params)
virtual void RecvRrcConnectionReestablishmentRequest(uint16_t rnti, RrcConnectionReestablishmentRequest msg)=0
void DoSendRrcConnectionReestablishmentComplete(LteRrcSap::RrcConnectionReestablishmentComplete msg)
static Iterator Begin(void)
void DoSendRrcConnectionReestablishment(uint16_t rnti, LteRrcSap::RrcConnectionReestablishment msg)
void SetUeRrcSapProvider(uint16_t rnti, LteUeRrcSapProvider *p)
virtual void RecvMeasurementReport(uint16_t rnti, MeasurementReport msg)=0
virtual void DoDispose(void)
virtual uint32_t Deserialize(Buffer::Iterator start)
LteEnbRrcSapProvider * m_enbRrcSapProvider
static TypeId GetTypeId(void)
virtual TypeId GetInstanceTypeId(void) const
uint32_t g_handoverCommandMsgIdCounter
virtual void RecvRrcConnectionReestablishmentComplete(uint16_t rnti, RrcConnectionReestablishmentComplete msg)=0
a base class which provides memory management and object aggregation
Ptr< Packet > DoEncodeHandoverCommand(LteRrcSap::RrcConnectionReconfiguration msg)
virtual TypeId GetInstanceTypeId(void) const
LteEnbRrcSapUser * GetLteEnbRrcSapUser()
void WriteU32(uint32_t data)
virtual void RecvRrcConnectionReconfigurationCompleted(uint16_t rnti, RrcConnectionReconfigurationCompleted msg)=0
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
virtual ~LteUeRrcProtocolIdeal()
void DoSendSystemInformationBlockType1(LteRrcSap::SystemInformationBlockType1 msg)
void DoSendMeasurementReport(LteRrcSap::MeasurementReport msg)
void DoRemoveUe(uint16_t rnti)
void AddHeader(const Header &header)
virtual uint32_t GetSerializedSize(void) const