A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
lena-fading.cc
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Marco Miozzo <marco.miozzo@cttc.es>
19  */
20 
21 
22 #include "ns3/core-module.h"
23 #include "ns3/network-module.h"
24 #include "ns3/mobility-module.h"
25 #include "ns3/lte-module.h"
26 #include "ns3/config-store.h"
27 #include <ns3/string.h>
28 #include <fstream>
29 #include <ns3/buildings-helper.h>
30 //#include "ns3/gtk-config-store.h"
31 
32 using namespace ns3;
33 
34 int main (int argc, char *argv[])
35 {
36  CommandLine cmd;
37  cmd.Parse (argc, argv);
38 
39  // to save a template default attribute file run it like this:
40  // ./waf --command-template="%s --ns3::ConfigStore::Filename=input-defaults.txt --ns3::ConfigStore::Mode=Save --ns3::ConfigStore::FileFormat=RawText" --run src/lte/examples/lena-first-sim
41  //
42  // to load a previously created default attribute file
43  // ./waf --command-template="%s --ns3::ConfigStore::Filename=input-defaults.txt --ns3::ConfigStore::Mode=Load --ns3::ConfigStore::FileFormat=RawText" --run src/lte/examples/lena-first-sim
44 
45  //ConfigStore inputConfig;
46  //inputConfig.ConfigureDefaults ();
47 
48  // parse again so you can override default values from the command line
49  //cmd.Parse (argc, argv);
50 
51  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
52  // Uncomment to enable logging
53  //lteHelper->EnableLogComponents ();
54 
55 
56  lteHelper->SetAttribute ("FadingModel", StringValue ("ns3::TraceFadingLossModel"));
57 
58  std::ifstream ifTraceFile;
59  ifTraceFile.open ("../../src/lte/model/fading-traces/fading_trace_EPA_3kmph.fad", std::ifstream::in);
60  if (ifTraceFile.good ())
61  {
62  // script launched by test.py
63  lteHelper->SetFadingModelAttribute ("TraceFilename", StringValue ("../../src/lte/model/fading-traces/fading_trace_EPA_3kmph.fad"));
64  }
65  else
66  {
67  // script launched as an example
68  lteHelper->SetFadingModelAttribute ("TraceFilename", StringValue ("src/lte/model/fading-traces/fading_trace_EPA_3kmph.fad"));
69  }
70 
71  // these parameters have to setted only in case of the trace format
72  // differs from the standard one, that is
73  // - 10 seconds length trace
74  // - 10,000 samples
75  // - 0.5 seconds for window size
76  // - 100 RB
77  lteHelper->SetFadingModelAttribute ("TraceLength", TimeValue (Seconds (10.0)));
78  lteHelper->SetFadingModelAttribute ("SamplesNum", UintegerValue (10000));
79  lteHelper->SetFadingModelAttribute ("WindowSize", TimeValue (Seconds (0.5)));
80  lteHelper->SetFadingModelAttribute ("RbNum", UintegerValue (100));
81 
82  // Create Nodes: eNodeB and UE
83  NodeContainer enbNodes;
84  NodeContainer ueNodes;
85  enbNodes.Create (1);
86  ueNodes.Create (1);
87 
88  // Install Mobility Model
89  MobilityHelper mobility;
90  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
91  mobility.Install (enbNodes);
92  BuildingsHelper::Install (enbNodes);
93  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
94  mobility.Install (ueNodes);
95  BuildingsHelper::Install (ueNodes);
96 
97  // Create Devices and install them in the Nodes (eNB and UE)
98  NetDeviceContainer enbDevs;
99  NetDeviceContainer ueDevs;
100  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
101  ueDevs = lteHelper->InstallUeDevice (ueNodes);
102 
103  // Attach a UE to a eNB
104  lteHelper->Attach (ueDevs, enbDevs.Get (0));
105 
106  // Activate an EPS bearer
108  EpsBearer bearer (q);
109  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
110 
111 
112  Simulator::Stop (Seconds (0.005));
113 
114  Simulator::Run ();
115 
116  //GtkConfigStore config;
117  //config.ConfigureAttributes ();
118 
120  return 0;
121 }
smart pointer class similar to boost::intrusive_ptr
Definition: ptr.h:59
NetDeviceContainer InstallEnbDevice(NodeContainer c)
create a set of eNB devices
Definition: lte-helper.cc:347
hold variables of type string
Definition: string.h:19
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
static void Run(void)
Run the simulation until one of:
Definition: simulator.cc:157
void Attach(NetDeviceContainer ueDevices)
Enables automatic attachment of a set of UE devices to a suitable cell using Idle mode initial cell s...
Definition: lte-helper.cc:647
void ActivateDataRadioBearer(NetDeviceContainer ueDevices, EpsBearer bearer)
Call ActivateDataRadioBearer (ueDevice, bearer) for each UE device in a given set.
Definition: lte-helper.cc:901
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:71
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
hold objects of type ns3::Time
Definition: nstime.h:961
Hold an unsigned integer type.
Definition: uinteger.h:46
holds a vector of ns3::NetDevice pointers
Parse command-line arguments.
Definition: command-line.h:152
static void Destroy(void)
Every event scheduled by the Simulator::insertAtDestroy method is invoked.
Definition: simulator.cc:121
void SetFadingModelAttribute(std::string n, const AttributeValue &v)
set an attribute of the fading model
Definition: lte-helper.cc:327
keep track of a set of node pointers.
void SetMobilityModel(std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue())
NetDeviceContainer InstallUeDevice(NodeContainer c)
create a set of UE devices
Definition: lte-helper.cc:362
Helper class used to assign positions and mobility models to nodes.
static void Stop(void)
If an event invokes this method, it will be the last event scheduled by the Simulator::run method bef...
Definition: simulator.cc:165
void Parse(int argc, char *argv[])
Parse the program arguments.
int main(int argc, char *argv[])
Definition: lena-fading.cc:34
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void SetAttribute(std::string name, const AttributeValue &value)
Definition: object-base.cc:161
Qci
QoS Class Indicator.
Definition: eps-bearer.h:77
static void Install(Ptr< Node > node)
Install the MobilityBuildingInfo to a node.