23 #include "ns3/callback.h"
24 #include "ns3/config.h"
25 #include "ns3/simple-channel.h"
26 #include "ns3/error-model.h"
28 #include "lte-simple-helper.h"
29 #include "lte-simple-net-device.h"
30 #include "lte-test-entities.h"
38 NS_OBJECT_ENSURE_REGISTERED (LteSimpleHelper);
40 LteSimpleHelper::LteSimpleHelper (
void)
43 m_enbDeviceFactory.
SetTypeId (LteSimpleNetDevice::GetTypeId ());
44 m_ueDeviceFactory.
SetTypeId (LteSimpleNetDevice::GetTypeId ());
52 m_phyChannel = CreateObject<SimpleChannel> ();
57 LteSimpleHelper::~LteSimpleHelper (
void)
62 TypeId LteSimpleHelper::GetTypeId (
void)
66 TypeId (
"ns3::LteSimpleHelper")
68 .AddConstructor<LteSimpleHelper> ()
69 .AddAttribute (
"RlcEntity",
70 "Specify which type of RLC will be used. ",
72 MakeEnumAccessor (&LteSimpleHelper::m_lteRlcEntityType),
73 MakeEnumChecker (RLC_UM,
"RlcUm",
100 for (NodeContainer::Iterator i = c.
Begin (); i != c.
End (); ++i)
104 devices.
Add (device);
114 for (NodeContainer::Iterator i = c.
Begin (); i != c.
End (); ++i)
118 devices.
Add (device);
125 LteSimpleHelper::InstallSingleEnbDevice (
Ptr<Node> n)
129 m_enbRrc = CreateObject<LteTestRrc> ();
130 m_enbPdcp = CreateObject<LtePdcp> ();
132 if (m_lteRlcEntityType == RLC_UM)
134 m_enbRlc = CreateObject<LteRlcUm> ();
138 m_enbRlc = CreateObject<LteRlcAm> ();
141 m_enbRlc->SetRnti (11);
142 m_enbRlc->SetLcId (12);
144 Ptr<LteSimpleNetDevice> enbDev = m_enbDeviceFactory.
Create<LteSimpleNetDevice> ();
146 enbDev->SetChannel (m_phyChannel);
150 m_enbMac = CreateObject<LteTestMac> ();
151 m_enbMac->SetDevice (enbDev);
153 enbDev->SetReceiveCallback (
MakeCallback (&LteTestMac::Receive, m_enbMac));
157 m_enbRrc->SetLtePdcpSapProvider (m_enbPdcp->GetLtePdcpSapProvider ());
158 m_enbPdcp->SetLtePdcpSapUser (m_enbRrc->GetLtePdcpSapUser ());
160 m_enbPdcp->SetLteRlcSapProvider (m_enbRlc->GetLteRlcSapProvider ());
161 m_enbRlc->SetLteRlcSapUser (m_enbPdcp->GetLteRlcSapUser ());
163 m_enbRlc->SetLteMacSapProvider (m_enbMac->GetLteMacSapProvider ());
164 m_enbMac->SetLteMacSapUser (m_enbRlc->GetLteMacSapUser ());
170 LteSimpleHelper::InstallSingleUeDevice (Ptr<Node> n)
174 m_ueRrc = CreateObject<LteTestRrc> ();
175 m_uePdcp = CreateObject<LtePdcp> ();
177 if (m_lteRlcEntityType == RLC_UM)
179 m_ueRlc = CreateObject<LteRlcUm> ();
183 m_ueRlc = CreateObject<LteRlcAm> ();
186 m_ueRlc->SetRnti (21);
187 m_ueRlc->SetLcId (22);
189 Ptr<LteSimpleNetDevice> ueDev = m_ueDeviceFactory.
Create<LteSimpleNetDevice> ();
191 ueDev->SetChannel (m_phyChannel);
193 n->AddDevice (ueDev);
195 m_ueMac = CreateObject<LteTestMac> ();
196 m_ueMac->SetDevice (ueDev);
198 ueDev->SetReceiveCallback (
MakeCallback (&LteTestMac::Receive, m_ueMac));
202 m_ueRrc->SetLtePdcpSapProvider (m_uePdcp->GetLtePdcpSapProvider ());
203 m_uePdcp->SetLtePdcpSapUser (m_ueRrc->GetLtePdcpSapUser ());
205 m_uePdcp->SetLteRlcSapProvider (m_ueRlc->GetLteRlcSapProvider ());
206 m_ueRlc->SetLteRlcSapUser (m_uePdcp->GetLteRlcSapUser ());
208 m_ueRlc->SetLteMacSapProvider (m_ueMac->GetLteMacSapProvider ());
209 m_ueMac->SetLteMacSapUser (m_ueRlc->GetLteMacSapUser ());
218 LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC);
250 uint16_t rnti, uint8_t lcid, uint32_t packetSize)
252 NS_LOG_FUNCTION (rlcStats << path << rnti << (uint16_t)lcid << packetSize);
254 uint16_t cellId = 222;
255 rlcStats->
DlTxPdu (cellId, imsi, rnti, lcid, packetSize);
259 LteSimpleHelperDlRxPduCallback (Ptr<RadioBearerStatsCalculator> rlcStats, std::string path,
260 uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay)
262 NS_LOG_FUNCTION (rlcStats << path << rnti << (uint16_t)lcid << packetSize << delay);
264 uint16_t cellId = 555;
265 rlcStats->DlRxPdu (cellId, imsi, rnti, lcid, packetSize, delay);
281 uint16_t rnti, uint8_t lcid, uint32_t packetSize)
283 NS_LOG_FUNCTION (rlcStats << path << rnti << (uint16_t)lcid << packetSize);
284 uint64_t imsi = 1111;
285 uint16_t cellId = 555;
286 rlcStats->
UlTxPdu (cellId, imsi, rnti, lcid, packetSize);
290 LteSimpleHelperUlRxPduCallback (Ptr<RadioBearerStatsCalculator> rlcStats, std::string path,
291 uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay)
293 NS_LOG_FUNCTION (rlcStats << path << rnti << (uint16_t)lcid << packetSize << delay);
295 uint16_t cellId = 555;
296 rlcStats->UlRxPdu (cellId, imsi, rnti, lcid, packetSize, delay);
void EnableRlcTraces(void)
#define NS_LOG_FUNCTION(parameters)
#define NS_LOG_COMPONENT_DEFINE(name)
void SetTypeId(TypeId tid)
Iterator End(void) const
Get an iterator which indicates past-the-last Node in the container.
virtual void DoDispose(void)
#define NS_LOG_FUNCTION_NOARGS()
static Mac48Address Allocate(void)
Ptr< Object > Create(void) const
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container.
holds a vector of ns3::NetDevice pointers
NetDeviceContainer InstallEnbDevice(NodeContainer c)
void UlTxPdu(uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize)
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
virtual void DoDispose(void)
keep track of a set of node pointers.
void EnableLogComponents(void)
Iterator Begin(void) const
Get an iterator which refers to the first Node in the container.
NetDeviceContainer InstallUeDevice(NodeContainer c)
void DlTxPdu(uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize)
void EnableDlRlcTraces(void)
uint32_t AddDevice(Ptr< NetDevice > device)
void EnableUlPdcpTraces(void)
void EnableDlPdcpTraces(void)
virtual void DoInitialize(void)
void EnableUlRlcTraces(void)
void EnablePdcpTraces(void)
virtual void DoInitialize(void)
void LogComponentEnable(char const *name, enum LogLevel level)