A Discrete-Event Network Simulator
API
lte-ue-power-control.h
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 #ifndef LTE_UE_POWER_CONTROL_H
23 #define LTE_UE_POWER_CONTROL_H
24 
25 #include <ns3/ptr.h>
26 #include <ns3/traced-callback.h>
27 #include <ns3/object.h>
28 #include <vector>
29 
30 
31 namespace ns3 {
32 
54 class LteUePowerControl : public Object
55 {
56 public:
57 
59  virtual ~LteUePowerControl ();
60 
65  static TypeId GetTypeId (void);
66  // inherited from Object
67  virtual void DoInitialize (void);
68  virtual void DoDispose (void);
69 
75  void SetPcmax (double value);
81  double GetPcmax ();
82 
88  void SetTxPower (double value);
94  void ConfigureReferenceSignalPower (int8_t referenceSignalPower);
95 
101  void SetCellId (uint16_t cellId);
107  void SetRnti (uint16_t rnti);
108 
114  void SetPoNominalPusch (int16_t value);
120  void SetPoUePusch (int16_t value);
126  void SetAlpha (double value);
127 
133  void SetRsrp (double value);
142  void SetRsrpFilterCoefficient (uint8_t rsrpFilterCoefficient);
148  void ReportTpc (uint8_t tpc);
149 
151  void CalculatePuschTxPower ();
153  void CalculatePucchTxPower ();
155  void CalculateSrsTxPower ();
156 
163  double GetPuschTxPower (std::vector <int> rb);
170  double GetPucchTxPower (std::vector <int> rb);
177  double GetSrsTxPower (std::vector <int> rb);
178 
186  typedef void (* TxPowerTracedCallback)
187  (uint16_t cellId, uint16_t rnti, double power);
188 
189 private:
195  void SetSubChannelMask (std::vector <int> mask);
196 
197  double m_txPower;
198  double m_Pcmax;
199  double m_Pcmin;
200 
204 
206  bool m_rsrpSet;
207  double m_rsrp;
208 
209  std::vector<int16_t> m_PoNominalPusch;
210  std::vector<int16_t> m_PoUePusch;
211 
212  int16_t m_PsrsOffset;
213 
214  uint16_t m_M_Pusch;
215  std::vector<double> m_alpha;
216  double m_pathLoss;
217  double m_deltaTF;
218 
219  std::vector<int8_t> m_deltaPusch;
220  double m_fc;
221 
222  uint16_t m_srsBandwidth;
223 
226 
227  uint16_t m_cellId;
228  uint16_t m_rnti;
229 
250 
251 };
252 
253 
254 }
255 
256 #endif /* LTE_UE_POWER_CONTROL_H */
ns3::LteUePowerControl::m_accumulationEnabled
bool m_accumulationEnabled
accumulation enabled
Definition: lte-ue-power-control.h:225
ns3::LteUePowerControl::m_rsrpSet
bool m_rsrpSet
is RSRP set?
Definition: lte-ue-power-control.h:206
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::LteUePowerControl::ConfigureReferenceSignalPower
void ConfigureReferenceSignalPower(int8_t referenceSignalPower)
Configure reference signal power (dBm) function.
Definition: lte-ue-power-control.cc:161
ns3::LteUePowerControl::m_deltaTF
double m_deltaTF
delta TF
Definition: lte-ue-power-control.h:217
ns3::LteUePowerControl::m_reportPuschTxPower
TracedCallback< uint16_t, uint16_t, double > m_reportPuschTxPower
Trace information regarding Uplink TxPower uint16_t cellId, uint16_t rnti, double txPower.
Definition: lte-ue-power-control.h:239
ns3::LteUePowerControl::SetRnti
void SetRnti(uint16_t rnti)
Set the RNTI function.
Definition: lte-ue-power-control.cc:174
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::LteUePowerControl::m_txPower
double m_txPower
transmit power
Definition: lte-ue-power-control.h:197
ns3::LteUePowerControl::m_reportSrsTxPower
TracedCallback< uint16_t, uint16_t, double > m_reportSrsTxPower
Trace information regarding Uplink TxPower uint16_t cellId, uint16_t rnti, double txPower.
Definition: lte-ue-power-control.h:249
ns3::LteUePowerControl::SetRsrp
void SetRsrp(double value)
Set RSRP function.
Definition: lte-ue-power-control.cc:253
ns3::LteUePowerControl::LteUePowerControl
LteUePowerControl()
Definition: lte-ue-power-control.cc:35
ns3::LteUePowerControl::CalculateSrsTxPower
void CalculateSrsTxPower()
Calculate SRS transmit power function.
Definition: lte-ue-power-control.cc:407
ns3::LteUePowerControl::TxPowerTracedCallback
void(* TxPowerTracedCallback)(uint16_t cellId, uint16_t rnti, double power)
TracedCallback signature for uplink transmit power.
Definition: lte-ue-power-control.h:187
ns3::LteUePowerControl::GetPcmax
double GetPcmax()
Get PC maximum function.
Definition: lte-ue-power-control.cc:144
ns3::LteUePowerControl::SetRsrpFilterCoefficient
void SetRsrpFilterCoefficient(uint8_t rsrpFilterCoefficient)
Set RSRP function.
Definition: lte-ue-power-control.cc:271
ns3::LteUePowerControl::m_cellId
uint16_t m_cellId
cell ID
Definition: lte-ue-power-control.h:227
ns3::LteUePowerControl::SetCellId
void SetCellId(uint16_t cellId)
Set the cell ID function.
Definition: lte-ue-power-control.cc:168
ns3::LteUePowerControl
This class realizes Uplink Power Control functionality.
Definition: lte-ue-power-control.h:55
ns3::LteUePowerControl::CalculatePuschTxPower
void CalculatePuschTxPower()
Calculate PUSCH transmit power function.
Definition: lte-ue-power-control.cc:371
ns3::LteUePowerControl::GetPuschTxPower
double GetPuschTxPower(std::vector< int > rb)
Get PUSCH transmit power function.
Definition: lte-ue-power-control.cc:431
ns3::LteUePowerControl::SetPcmax
void SetPcmax(double value)
Set PC maximum function.
Definition: lte-ue-power-control.cc:137
ns3::LteUePowerControl::SetSubChannelMask
void SetSubChannelMask(std::vector< int > mask)
Set subchannel mask function.
Definition: lte-ue-power-control.cc:364
ns3::LteUePowerControl::DoDispose
virtual void DoDispose(void)
Destructor implementation.
Definition: lte-ue-power-control.cc:66
ns3::LteUePowerControl::m_pathLoss
double m_pathLoss
path loss value in dB
Definition: lte-ue-power-control.h:216
ns3::LteUePowerControl::m_curPucchTxPower
double m_curPucchTxPower
current PUCCH transmit power
Definition: lte-ue-power-control.h:202
ns3::LteUePowerControl::SetTxPower
void SetTxPower(double value)
Set transmit power function.
Definition: lte-ue-power-control.cc:151
ns3::Object
A base class which provides memory management and object aggregation.
Definition: object.h:88
ns3::LteUePowerControl::~LteUePowerControl
virtual ~LteUePowerControl()
Definition: lte-ue-power-control.cc:54
ns3::LteUePowerControl::m_M_Pusch
uint16_t m_M_Pusch
size of DL RB list
Definition: lte-ue-power-control.h:214
ns3::LteUePowerControl::m_closedLoop
bool m_closedLoop
is closed loop
Definition: lte-ue-power-control.h:224
ns3::LteUePowerControl::m_referenceSignalPower
double m_referenceSignalPower
reference signal power in dBm
Definition: lte-ue-power-control.h:205
ns3::LteUePowerControl::m_PoNominalPusch
std::vector< int16_t > m_PoNominalPusch
PO nominal PUSCH.
Definition: lte-ue-power-control.h:209
ns3::LteUePowerControl::m_Pcmin
double m_Pcmin
PC minimum.
Definition: lte-ue-power-control.h:199
ns3::LteUePowerControl::SetPoNominalPusch
void SetPoNominalPusch(int16_t value)
Set PO nominal PUSCH function.
Definition: lte-ue-power-control.cc:181
ns3::LteUePowerControl::ReportTpc
void ReportTpc(uint8_t tpc)
Set RSRP function.
Definition: lte-ue-power-control.cc:278
ns3::LteUePowerControl::m_deltaPusch
std::vector< int8_t > m_deltaPusch
delta PUSCH
Definition: lte-ue-power-control.h:219
ns3::LteUePowerControl::m_PoUePusch
std::vector< int16_t > m_PoUePusch
PO US PUSCH.
Definition: lte-ue-power-control.h:210
ns3::LteUePowerControl::m_Pcmax
double m_Pcmax
PC maximum.
Definition: lte-ue-power-control.h:198
ns3::LteUePowerControl::m_PsrsOffset
int16_t m_PsrsOffset
PSRS offset.
Definition: lte-ue-power-control.h:212
ns3::LteUePowerControl::m_srsBandwidth
uint16_t m_srsBandwidth
SRS bandwidth.
Definition: lte-ue-power-control.h:222
ns3::LteUePowerControl::CalculatePucchTxPower
void CalculatePucchTxPower()
Calculate PUCCH transmit power function.
Definition: lte-ue-power-control.cc:399
ns3::LteUePowerControl::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-ue-power-control.cc:72
ns3::LteUePowerControl::m_curPuschTxPower
double m_curPuschTxPower
current PUSCH transmit power
Definition: lte-ue-power-control.h:201
ns3::LteUePowerControl::m_alpha
std::vector< double > m_alpha
alpha values
Definition: lte-ue-power-control.h:215
ns3::LteUePowerControl::SetPoUePusch
void SetPoUePusch(int16_t value)
Set PO UE PUSCH function.
Definition: lte-ue-power-control.cc:200
ns3::LteUePowerControl::m_fc
double m_fc
FC.
Definition: lte-ue-power-control.h:220
ns3::TracedCallback< uint16_t, uint16_t, double >
ns3::LteUePowerControl::DoInitialize
virtual void DoInitialize(void)
Initialize() implementation.
Definition: lte-ue-power-control.cc:60
ns3::LteUePowerControl::SetAlpha
void SetAlpha(double value)
Set alpha function.
Definition: lte-ue-power-control.cc:217
ns3::LteUePowerControl::m_pcRsrpFilterCoefficient
uint8_t m_pcRsrpFilterCoefficient
The RsrpFilterCoefficient attribute.
Definition: lte-ue-power-control.h:234
ns3::LteUePowerControl::GetPucchTxPower
double GetPucchTxPower(std::vector< int > rb)
Get PUCCH transmit power function.
Definition: lte-ue-power-control.cc:444
ns3::LteUePowerControl::m_rnti
uint16_t m_rnti
RNTI.
Definition: lte-ue-power-control.h:228
ns3::LteUePowerControl::m_reportPucchTxPower
TracedCallback< uint16_t, uint16_t, double > m_reportPucchTxPower
Trace information regarding Uplink TxPower uint16_t cellId, uint16_t rnti, double txPower.
Definition: lte-ue-power-control.h:244
ns3::LteUePowerControl::m_rsrp
double m_rsrp
RSRP value in dBm.
Definition: lte-ue-power-control.h:207
ns3::LteUePowerControl::m_curSrsTxPower
double m_curSrsTxPower
current SRS transmit power
Definition: lte-ue-power-control.h:203
ns3::LteUePowerControl::GetSrsTxPower
double GetSrsTxPower(std::vector< int > rb)
Get SRS transmit power function.
Definition: lte-ue-power-control.cc:456