Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(316)

Unified Diff: examples/lte/lte-phy-uplink.cc

Issue 1869054: LTE module for ns-3
Patch Set: Created 13 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: examples/lte/lte-phy-uplink.cc
===================================================================
new file mode 100644
--- /dev/null
+++ b/examples/lte/lte-phy-uplink.cc
@@ -0,0 +1,172 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Giuseppe Piro <g.piro@poliba.it>
+ */
+
+/*
+ * Test for LTE PHY layer in the downlink
+ *
+ * /\ +
+ * /--\ __|
+ * /....\ | |
+ * /------\ |__|
+ * eNB UE
+ *
+ * SendPacket(Pb)
+ * |
+ * V
+ * |+++++++++++++++++++++++++++++| |+++++++++++++++++++++++++++++|
+ * | EnbLtePhy | | EnbLtePhy |
+ * |+++++++++++++++++++++++++++++| |+++++++++++++++++++++++++++++|
+ * | SpectrumPhy | SpectrumPhy | | SpectrumPhy | SpectrumPhy |
+ * | dl | ul | | dl | ul |
+ * |+++++++++++++++++++++++++++++| |+++++++++++++++++++++++++++++|
+ * \ |
+ * | |
+ * | |
+ * StartRx (pb) StartTx(bb)
+ * | |
+ * | V
+ * |+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|
+ * | Uplink Spectrum Channel |
+ * |+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|
+ */
+
+
+#include <iostream>
+#include <ns3/core-module.h>
+#include <ns3/common-module.h>
+#include <ns3/node-module.h>
+#include <ns3/simulator-module.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/log.h>
+#include <string>
+#include <ns3/mobility-module.h>
+#include <ns3/spectrum-helper.h>
+#include <ns3/helper-module.h>
+#include <ns3/lte-helper.h>
+#include <ns3/enb-phy.h>
+#include <ns3/ue-phy.h>
+#include <ns3/packet-burst.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/constant-velocity-mobility-model.h>
+#include <vector>
+
+NS_LOG_COMPONENT_DEFINE ("TestSimpleLtePhy");
+
+using namespace ns3;
+
+
+int main (int argc, char** argv)
+{
+ LteHelper lte;
+
+ lte.EnableLogComponents ();
+
+ // CREATE NODE CONTAINER AND CREATE LTE NODES
+ NodeContainer ueNodes;
+ NodeContainer enbNodes;
+ ueNodes.Create (1);
+ enbNodes.Create (1);
+
+
+ // CREATE DEVICE CONTAINER, INSTALL DEVICE TO NODE
+ NetDeviceContainer ueDevs, enbDevs;
+ ueDevs = lte.Install (ueNodes, LteHelper::DEVICE_TYPE_USER_EQUIPMENT);
+ enbDevs = lte.Install (enbNodes, LteHelper::DEVICE_TYPE_ENODEB);
+
+
+
+ // INSTALL INTERNET STACKS
+ InternetStackHelper stack;
+ stack.Install (ueNodes);
+ stack.Install (enbNodes);
+ Ipv4AddressHelper address;
+ address.SetBase ("10.1.1.0", "255.255.255.0");
+ Ipv4InterfaceContainer UEinterfaces = address.Assign (ueDevs);
+ Ipv4InterfaceContainer ENBinterface = address.Assign (enbDevs);
+
+
+
+ // MANAGE LTE NET DEVICES
+ Ptr<EnbNetDevice> enb;
+ enb = enbDevs.Get (0)->GetObject<EnbNetDevice> ();
+
+ Ptr<UeNetDevice> ue = ueDevs.Get (0)->GetObject<UeNetDevice> ();
+ lte.RegisterUeToTheEnb (ue, enb);
+
+
+
+
+ // CONFIGURE DL and UL SUB CHANNELS
+ // Define a list of sub channels for the downlink
+ std::vector<int> dlSubChannels;
+ for (int i = 0; i < 25; i++)
+ {
+ dlSubChannels.push_back (i);
+ }
+ // Define a list of sub channels for the uplink
+ std::vector<int> ulSubChannels;
+ for (int i = 50; i < 100; i++)
+ {
+ ulSubChannels.push_back (i);
+ }
+
+ enb->GetPhy ()->SetDownlinkSubChannels (dlSubChannels);
+ enb->GetPhy ()->SetUplinkSubChannels (ulSubChannels);
+
+ ue->GetPhy ()->SetDownlinkSubChannels (dlSubChannels);
+ ue->GetPhy ()->SetUplinkSubChannels (ulSubChannels);
+
+
+
+ // CONFIGURE MOBILITY
+ Ptr<ConstantPositionMobilityModel> enbMobility = new ConstantPositionMobilityModel ();
+ enbMobility->SetPosition (Vector (0.0, 0.0, 0.0));
+ lte.AddMobility (enb->GetPhy (), enbMobility);
+
+ Ptr<ConstantVelocityMobilityModel> ueMobility = new ConstantVelocityMobilityModel ();
+ ueMobility->SetPosition (Vector (30.0, 0.0, 0.0));
+ ueMobility->SetVelocity (Vector (30.0, 0.0, 0.0));
+
+ lte.AddMobility (ue->GetPhy (), ueMobility);
+
+ lte.AddDownlinkChannelRealization (enbMobility, ueMobility, ue->GetPhy ());
+
+
+ // ****** simulate a packet transmission in the downlink ******
+
+ Ptr<PacketBurst> pb = new PacketBurst ();
+ Ptr<Packet> p1 = new Packet (500);
+ Ptr<Packet> p2 = new Packet (500);
+ pb->AddPacket (p1);
+ pb->AddPacket (p2);
+
+
+ ue->GetPhy ()->SendPacket (pb);
+
+
+ Simulator::Stop (Seconds (.1));
+
+
+ Simulator::Run ();
+
+ Simulator::Destroy ();
+
+ return 0;
+}
« no previous file with comments | « examples/lte/lte-phy-downlink.cc ('k') | examples/lte/waf » ('j') | src/helper/lte-helper.h » ('J')

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b