This class realizes Uplink Power Control functionality. More...
#include <lte-ue-power-control.h>
Public Types | |
typedef void(* | TxPowerTracedCallback) (const uint16_t cellId, const uint16_t rnti, const double power) |
TracedCallback signature for uplink transmit power. More... | |
Public Member Functions | |
LteUePowerControl () | |
virtual | ~LteUePowerControl () |
void | CalculatePucchTxPower () |
void | CalculatePuschTxPower () |
void | CalculateSrsTxPower () |
void | ConfigureReferenceSignalPower (int8_t referenceSignalPower) |
virtual void | DoDispose (void) |
Destructor implementation. More... | |
virtual void | DoInitialize (void) |
Initialize() implementation. More... | |
double | GetPcmax () |
double | GetPucchTxPower (std::vector< int > rb) |
double | GetPuschTxPower (std::vector< int > rb) |
double | GetSrsTxPower (std::vector< int > rb) |
void | ReportTpc (uint8_t tpc) |
void | SetAlpha (double value) |
void | SetCellId (uint16_t cellId) |
void | SetPcmax (double value) |
void | SetPoNominalPusch (int16_t value) |
void | SetPoUePusch (int16_t value) |
void | SetRnti (uint16_t rnti) |
void | SetRsrp (double value) |
void | SetTxPower (double value) |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Implement the GetInstanceTypeId method defined in ObjectBase. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
![]() | |
SimpleRefCount () | |
Constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static void | Cleanup (void) |
Noop. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Private Member Functions | |
void | SetSubChannelMask (std::vector< int > mask) |
Private Attributes | |
bool | m_accumulationEnabled |
std::vector< double > | m_alpha |
uint16_t | m_cellId |
bool | m_closedLoop |
double | m_curPucchTxPower |
double | m_curPuschTxPower |
double | m_curSrsTxPower |
std::vector< int8_t > | m_deltaPusch |
double | m_deltaTF |
double | m_fc |
uint16_t | m_M_Pusch |
double | m_pathLoss |
double | m_Pcmax |
double | m_Pcmin |
std::vector< int16_t > | m_PoNominalPusch |
std::vector< int16_t > | m_PoUePusch |
int16_t | m_PsrsOffset |
double | m_referenceSignalPower |
TracedCallback< uint16_t, uint16_t, double > | m_reportPucchTxPower |
TracedCallback< uint16_t, uint16_t, double > | m_reportPuschTxPower |
Trace information regarding Uplink TxPower uint16_t cellId, uint16_t rnti, double txPower. More... | |
TracedCallback< uint16_t, uint16_t, double > | m_reportSrsTxPower |
uint16_t | m_rnti |
double | m_rsrp |
bool | m_rsrpSet |
uint16_t | m_srsBandwidth |
double | m_txPower |
Additional Inherited Members | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
This class realizes Uplink Power Control functionality.
Introspection did not find any typical Config paths.
When LteUePhy is about sending PUSCH/PUCCH/SRS it should ask LteUePowerControl for current channel TX power level and then use it while creating SpectrumValue for Uplink Transmission
LteUePowerControl computes TX power level for PUSCH and SRS. PUCCH is realized in ideal way and PUSCH do not use any resources, so there is no need to compute power for that channel
LteUePowerControlcomputes TX power based on some preconfigured parameters and current Path-loss. Path-loss is computed as difference between current RSRP and referenceSignalPower level. Current RSRP is passed to LteUePowerControl by LteUePhy. referenceSignalPower is configurable by attribute system
Moreover, LteUePhy pass all received TPC values to LteUePowerControl, what is a part of Closed Loop Power Control functionality
Size of this type is 288 bytes (on a 64-bit architecture).
Definition at line 54 of file lte-ue-power-control.h.
typedef void(* ns3::LteUePowerControl::TxPowerTracedCallback) (const uint16_t cellId, const uint16_t rnti, const double power) |
TracedCallback signature for uplink transmit power.
[in] | cellId | Cell identifier. |
[in] | rnti | The C-RNTI identifying the UE. |
[in] | power | The current TX power. |
Definition at line 98 of file lte-ue-power-control.h.
ns3::LteUePowerControl::LteUePowerControl | ( | ) |
Definition at line 35 of file lte-ue-power-control.cc.
References m_cellId, m_curPucchTxPower, m_curPuschTxPower, m_curSrsTxPower, m_deltaTF, m_fc, m_M_Pusch, m_pathLoss, m_rnti, m_rsrpSet, m_txPower, and NS_LOG_FUNCTION.
|
virtual |
Definition at line 53 of file lte-ue-power-control.cc.
References NS_LOG_FUNCTION.
void ns3::LteUePowerControl::CalculatePucchTxPower | ( | ) |
Definition at line 390 of file lte-ue-power-control.cc.
References m_curPucchTxPower, m_curPuschTxPower, NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by GetPucchTxPower().
void ns3::LteUePowerControl::CalculatePuschTxPower | ( | ) |
Definition at line 362 of file lte-ue-power-control.cc.
References m_alpha, m_curPuschTxPower, m_deltaTF, m_fc, m_M_Pusch, m_pathLoss, m_Pcmax, m_Pcmin, m_PoNominalPusch, m_PoUePusch, NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by GetPuschTxPower().
void ns3::LteUePowerControl::CalculateSrsTxPower | ( | ) |
Definition at line 398 of file lte-ue-power-control.cc.
References m_alpha, m_curSrsTxPower, m_deltaTF, m_fc, m_M_Pusch, m_pathLoss, m_Pcmax, m_Pcmin, m_PoNominalPusch, m_PoUePusch, m_PsrsOffset, m_srsBandwidth, NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by GetSrsTxPower().
void ns3::LteUePowerControl::ConfigureReferenceSignalPower | ( | int8_t | referenceSignalPower | ) |
Definition at line 160 of file lte-ue-power-control.cc.
References m_referenceSignalPower, and NS_LOG_FUNCTION.
Referenced by ns3::LteUePhy::DoConfigureReferenceSignalPower().
|
virtual |
Destructor implementation.
This method is called by Dispose() or by the Object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.
It is safe to call GetObject() from within this method.
Reimplemented from ns3::Object.
Definition at line 65 of file lte-ue-power-control.cc.
References NS_LOG_FUNCTION.
|
virtual |
Initialize() implementation.
This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.
Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.
Reimplemented from ns3::Object.
Definition at line 59 of file lte-ue-power-control.cc.
References NS_LOG_FUNCTION.
double ns3::LteUePowerControl::GetPcmax | ( | ) |
Definition at line 143 of file lte-ue-power-control.cc.
References m_Pcmax, and NS_LOG_FUNCTION.
double ns3::LteUePowerControl::GetPucchTxPower | ( | std::vector< int > | rb | ) |
Definition at line 435 of file lte-ue-power-control.cc.
References CalculatePucchTxPower(), m_cellId, m_curPucchTxPower, m_reportPucchTxPower, m_rnti, and NS_LOG_FUNCTION.
Referenced by ns3::LteUePhy::SubframeIndication().
double ns3::LteUePowerControl::GetPuschTxPower | ( | std::vector< int > | rb | ) |
Definition at line 422 of file lte-ue-power-control.cc.
References CalculatePuschTxPower(), m_cellId, m_curPuschTxPower, m_M_Pusch, m_reportPuschTxPower, m_rnti, and NS_LOG_FUNCTION.
Referenced by ns3::LteUePhy::SubframeIndication().
double ns3::LteUePowerControl::GetSrsTxPower | ( | std::vector< int > | rb | ) |
Definition at line 447 of file lte-ue-power-control.cc.
References CalculateSrsTxPower(), m_cellId, m_curSrsTxPower, m_reportSrsTxPower, m_rnti, m_srsBandwidth, and NS_LOG_FUNCTION.
Referenced by ns3::LteUePhy::SendSrs().
|
static |
Definition at line 71 of file lte-ue-power-control.cc.
References m_accumulationEnabled, m_closedLoop, m_Pcmax, m_Pcmin, m_PsrsOffset, m_reportPucchTxPower, m_reportPuschTxPower, m_reportSrsTxPower, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeDoubleAccessor(), ns3::MakeIntegerAccessor(), ns3::MakeTraceSourceAccessor(), SetAlpha(), ns3::TypeId::SetParent(), SetPoNominalPusch(), and SetPoUePusch().
void ns3::LteUePowerControl::ReportTpc | ( | uint8_t | tpc | ) |
Definition at line 269 of file lte-ue-power-control.cc.
References m_accumulationEnabled, m_closedLoop, m_curPuschTxPower, m_deltaPusch, m_fc, m_Pcmax, m_Pcmin, NS_FATAL_ERROR, NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by ns3::LteUePhy::ReceiveLteControlMessageList().
void ns3::LteUePowerControl::SetAlpha | ( | double | value | ) |
Definition at line 216 of file lte-ue-power-control.cc.
References m_alpha, NS_FATAL_ERROR, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::LteUePowerControl::SetCellId | ( | uint16_t | cellId | ) |
Definition at line 167 of file lte-ue-power-control.cc.
References m_cellId, and NS_LOG_FUNCTION.
Referenced by ns3::LteUePhy::DoSetRnti().
void ns3::LteUePowerControl::SetPcmax | ( | double | value | ) |
Definition at line 136 of file lte-ue-power-control.cc.
References m_Pcmax, and NS_LOG_FUNCTION.
void ns3::LteUePowerControl::SetPoNominalPusch | ( | int16_t | value | ) |
Definition at line 180 of file lte-ue-power-control.cc.
References m_PoNominalPusch, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::LteUePowerControl::SetPoUePusch | ( | int16_t | value | ) |
Definition at line 199 of file lte-ue-power-control.cc.
References m_PoUePusch, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::LteUePowerControl::SetRnti | ( | uint16_t | rnti | ) |
Definition at line 173 of file lte-ue-power-control.cc.
References m_rnti, and NS_LOG_FUNCTION.
Referenced by ns3::LteUePhy::DoSetRnti().
void ns3::LteUePowerControl::SetRsrp | ( | double | value | ) |
Definition at line 252 of file lte-ue-power-control.cc.
References m_pathLoss, m_referenceSignalPower, m_rsrp, m_rsrpSet, and NS_LOG_FUNCTION.
Referenced by ns3::LteUePhy::ReportRsReceivedPower().
|
private |
Definition at line 355 of file lte-ue-power-control.cc.
References m_M_Pusch, and NS_LOG_FUNCTION.
void ns3::LteUePowerControl::SetTxPower | ( | double | value | ) |
Definition at line 150 of file lte-ue-power-control.cc.
References m_curPucchTxPower, m_curPuschTxPower, m_curSrsTxPower, m_txPower, and NS_LOG_FUNCTION.
Referenced by ns3::LteUePhy::SetTxPower().
|
private |
Definition at line 131 of file lte-ue-power-control.h.
Referenced by GetTypeId(), and ReportTpc().
|
private |
Definition at line 121 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), and SetAlpha().
|
private |
Definition at line 133 of file lte-ue-power-control.h.
Referenced by GetPucchTxPower(), GetPuschTxPower(), GetSrsTxPower(), LteUePowerControl(), and SetCellId().
|
private |
Definition at line 130 of file lte-ue-power-control.h.
Referenced by GetTypeId(), and ReportTpc().
|
private |
Definition at line 108 of file lte-ue-power-control.h.
Referenced by CalculatePucchTxPower(), GetPucchTxPower(), LteUePowerControl(), and SetTxPower().
|
private |
Definition at line 107 of file lte-ue-power-control.h.
Referenced by CalculatePucchTxPower(), CalculatePuschTxPower(), GetPuschTxPower(), LteUePowerControl(), ReportTpc(), and SetTxPower().
|
private |
Definition at line 109 of file lte-ue-power-control.h.
Referenced by CalculateSrsTxPower(), GetSrsTxPower(), LteUePowerControl(), and SetTxPower().
|
private |
Definition at line 125 of file lte-ue-power-control.h.
Referenced by ReportTpc().
|
private |
Definition at line 123 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), and LteUePowerControl().
|
private |
Definition at line 126 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), LteUePowerControl(), and ReportTpc().
|
private |
Definition at line 120 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), GetPuschTxPower(), LteUePowerControl(), and SetSubChannelMask().
|
private |
Definition at line 122 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), LteUePowerControl(), and SetRsrp().
|
private |
Definition at line 104 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), GetPcmax(), GetTypeId(), ReportTpc(), and SetPcmax().
|
private |
Definition at line 105 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), GetTypeId(), and ReportTpc().
|
private |
Definition at line 115 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), and SetPoNominalPusch().
|
private |
Definition at line 116 of file lte-ue-power-control.h.
Referenced by CalculatePuschTxPower(), CalculateSrsTxPower(), and SetPoUePusch().
|
private |
Definition at line 118 of file lte-ue-power-control.h.
Referenced by CalculateSrsTxPower(), and GetTypeId().
|
private |
Definition at line 111 of file lte-ue-power-control.h.
Referenced by ConfigureReferenceSignalPower(), and SetRsrp().
|
private |
Definition at line 140 of file lte-ue-power-control.h.
Referenced by GetPucchTxPower(), and GetTypeId().
|
private |
Trace information regarding Uplink TxPower uint16_t cellId, uint16_t rnti, double txPower.
Definition at line 139 of file lte-ue-power-control.h.
Referenced by GetPuschTxPower(), and GetTypeId().
|
private |
Definition at line 141 of file lte-ue-power-control.h.
Referenced by GetSrsTxPower(), and GetTypeId().
|
private |
Definition at line 134 of file lte-ue-power-control.h.
Referenced by GetPucchTxPower(), GetPuschTxPower(), GetSrsTxPower(), LteUePowerControl(), and SetRnti().
|
private |
Definition at line 113 of file lte-ue-power-control.h.
Referenced by SetRsrp().
|
private |
Definition at line 112 of file lte-ue-power-control.h.
Referenced by LteUePowerControl(), and SetRsrp().
|
private |
Definition at line 128 of file lte-ue-power-control.h.
Referenced by CalculateSrsTxPower(), and GetSrsTxPower().
|
private |
Definition at line 103 of file lte-ue-power-control.h.
Referenced by LteUePowerControl(), and SetTxPower().