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)