A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
lena-uplink-power-control.cc
Go to the documentation of this file.
1
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2014 Piotr Gawlowicz
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: Piotr Gawlowicz <gawlowicz.p@gmail.com>
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/buildings-helper.h>
28
29
using namespace
ns3
;
30
31
/*
32
* This example show how to configure and how Uplink Power Control works.
33
*/
34
35
int
main (
int
argc,
char
*argv[])
36
{
37
Config::SetDefault
(
"ns3::LteHelper::UseIdealRrc"
,
BooleanValue
(
false
));
38
39
double
eNbTxPower = 30;
40
Config::SetDefault
(
"ns3::LteEnbPhy::TxPower"
,
DoubleValue
(eNbTxPower));
41
Config::SetDefault
(
"ns3::LteUePhy::TxPower"
,
DoubleValue
(10.0));
42
Config::SetDefault
(
"ns3::LteUePhy::EnableUplinkPowerControl"
,
BooleanValue
(
true
));
43
44
Config::SetDefault
(
"ns3::LteUePowerControl::ClosedLoop"
,
BooleanValue
(
true
));
45
Config::SetDefault
(
"ns3::LteUePowerControl::AccumulationEnabled"
,
BooleanValue
(
true
));
46
Config::SetDefault
(
"ns3::LteUePowerControl::Alpha"
,
DoubleValue
(1.0));
47
48
CommandLine
cmd
(__FILE__);
49
cmd
.Parse (argc, argv);
50
51
Ptr<LteHelper>
lteHelper = CreateObject<LteHelper> ();
52
53
uint16_t bandwidth = 25;
54
double
d1 = 0;
55
56
// Create Nodes: eNodeB and UE
57
NodeContainer
enbNodes;
58
NodeContainer
ueNodes;
59
enbNodes.
Create
(1);
60
ueNodes.
Create
(1);
61
NodeContainer
allNodes =
NodeContainer
( enbNodes, ueNodes);
62
63
/* the topology is the following:
64
*
65
* eNB1-------------------------UE
66
* d1
67
*/
68
69
// Install Mobility Model
70
Ptr<ListPositionAllocator>
positionAlloc = CreateObject<ListPositionAllocator> ();
71
positionAlloc->
Add
(Vector (0.0, 0.0, 0.0));
// eNB1
72
positionAlloc->
Add
(Vector (d1, 0.0, 0.0));
// UE1
73
74
MobilityHelper
mobility
;
75
mobility
.SetMobilityModel (
"ns3::ConstantPositionMobilityModel"
);
76
mobility
.SetPositionAllocator (positionAlloc);
77
mobility
.Install (allNodes);
78
79
// Create Devices and install them in the Nodes (eNB and UE)
80
NetDeviceContainer
enbDevs;
81
NetDeviceContainer
ueDevs;
82
lteHelper->
SetSchedulerType
(
"ns3::PfFfMacScheduler"
);
83
84
lteHelper->
SetEnbDeviceAttribute
(
"DlBandwidth"
,
UintegerValue
(bandwidth));
85
lteHelper->
SetEnbDeviceAttribute
(
"UlBandwidth"
,
UintegerValue
(bandwidth));
86
87
enbDevs = lteHelper->
InstallEnbDevice
(enbNodes);
88
ueDevs = lteHelper->
InstallUeDevice
(ueNodes);
89
90
// Attach a UE to a eNB
91
lteHelper->
Attach
(ueDevs, enbDevs.
Get
(0));
92
93
// Activate a data radio bearer
94
enum
EpsBearer::Qci
q =
EpsBearer::GBR_CONV_VOICE
;
95
EpsBearer
bearer (q);
96
lteHelper->
ActivateDataRadioBearer
(ueDevs, bearer);
97
98
Simulator::Stop
(
Seconds
(0.500));
99
Simulator::Run
();
100
101
Simulator::Destroy
();
102
return
0;
103
}
ns3::NetDeviceContainer
holds a vector of ns3::NetDevice pointers
Definition:
net-device-container.h:42
ns3::CommandLine
Parse command-line arguments.
Definition:
command-line.h:228
ns3::ListPositionAllocator::Add
void Add(Vector v)
Add a position to the list of positions.
Definition:
position-allocator.cc:70
ns3::BooleanValue
AttributeValue implementation for Boolean.
Definition:
boolean.h:37
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::LteHelper::SetEnbDeviceAttribute
void SetEnbDeviceAttribute(std::string n, const AttributeValue &v)
Set an attribute for the eNodeB devices (LteEnbNetDevice) to be created.
Definition:
lte-helper.cc:400
ns3::LteHelper::InstallEnbDevice
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices.
Definition:
lte-helper.cc:474
ns3::LteHelper::InstallUeDevice
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Definition:
lte-helper.cc:489
ns3::EpsBearer::Qci
Qci
QoS Class Indicator.
Definition:
eps-bearer.h:107
ns3::DoubleValue
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Definition:
double.h:41
ns3::NodeContainer::Create
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Definition:
node-container.cc:98
ns3::Ptr< LteHelper >
ns3::Simulator::Stop
static void Stop(void)
Tell the Simulator the calling event should be the last one executed.
Definition:
simulator.cc:180
second.cmd
cmd
Definition:
second.py:35
ns3::Simulator::Run
static void Run(void)
Run the simulation.
Definition:
simulator.cc:172
ns3::EpsBearer
This class contains the specification of EPS Bearers.
Definition:
eps-bearer.h:92
ns3::Seconds
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition:
nstime.h:1289
ns3::EpsBearer::GBR_CONV_VOICE
@ GBR_CONV_VOICE
GBR Conversational Voice.
Definition:
eps-bearer.h:108
ns3::Simulator::Destroy
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
Definition:
simulator.cc:136
ns3::NodeContainer
keep track of a set of node pointers.
Definition:
node-container.h:39
ns3::LteHelper::Attach
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:961
ns3::UintegerValue
Hold an unsigned integer type.
Definition:
uinteger.h:44
ns3::Config::SetDefault
void SetDefault(std::string name, const AttributeValue &value)
Definition:
config.cc:849
ns3::LteHelper::SetSchedulerType
void SetSchedulerType(std::string type)
Set the type of scheduler to be used by eNodeB devices.
Definition:
lte-helper.cc:279
ns3::NetDeviceContainer::Get
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
Definition:
net-device-container.cc:62
ns3::MobilityHelper
Helper class used to assign positions and mobility models to nodes.
Definition:
mobility-helper.h:43
third.mobility
mobility
Definition:
third.py:108
ns3::LteHelper::ActivateDataRadioBearer
void ActivateDataRadioBearer(NetDeviceContainer ueDevices, EpsBearer bearer)
Activate a Data Radio Bearer on a given UE devices (for LTE-only simulation).
Definition:
lte-helper.cc:1314
src
lte
examples
lena-uplink-power-control.cc
Generated on Fri Oct 1 2021 17:03:15 for ns-3 by
1.8.20