#include <lte-ue-phy.h>
Public Member Functions | |
LteUePhy () | |
LteUePhy (Ptr< LteSpectrumPhy > dlPhy, Ptr< LteSpectrumPhy > ulPhy) | |
Ptr< DlCqiLteControlMessage > | CreateDlCqiFeedbackMessage (const SpectrumValue &sinr) |
Create the DL CQI feedback from SINR values perceived at the physical layer with the signal received from eNB. More... | |
virtual Ptr< SpectrumValue > | CreateTxPowerSpectralDensity () |
Create the PSD for the TX. More... | |
virtual void | DoDispose (void) |
virtual void | DoInitialize (void) |
virtual void | GenerateCtrlCqiReport (const SpectrumValue &sinr) |
virtual void | GenerateDataCqiReport (const SpectrumValue &sinr) |
Ptr< LteSpectrumPhy > | GetDlSpectrumPhy () const |
LteUeCphySapProvider * | GetLteUeCphySapProvider () |
Get the CPHY SAP provider. More... | |
LteUePhySapProvider * | GetLteUePhySapProvider () |
Get the PHY SAP provider. More... | |
uint8_t | GetMacChDelay (void) const |
double | GetNoiseFigure () const |
std::vector< int > | GetSubChannelsForReception (void) |
Get a list of sub channels to use in RX. More... | |
std::vector< int > | GetSubChannelsForTransmission (void) |
Get a list of sub channels to use in RX. More... | |
double | GetTxPower () const |
Ptr< LteSpectrumPhy > | GetUlSpectrumPhy () const |
void | PhyPduReceived (Ptr< Packet > p) |
PhySpectrum received a new PHY-PDU. | |
virtual void | ReceiveLteControlMessageList (std::list< Ptr< LteControlMessage > >) |
virtual void | ReceiveLteDlHarqFeedback (DlInfoListElement_s mes) |
PhySpectrum generated a new DL HARQ feedback. | |
virtual void | ReportInterference (const SpectrumValue &interf) |
virtual void | ReportRsReceivedPower (const SpectrumValue &power) |
void | SendSrs () |
Send the SRS signal in the last symbols of the frame. | |
void | SetHarqPhyModule (Ptr< LteHarqPhy > harq) |
Set the HARQ PHY module. | |
void | SetLteUeCphySapUser (LteUeCphySapUser *s) |
Set the CPHY SAP User. More... | |
void | SetLteUePhySapUser (LteUePhySapUser *s) |
Set the PHY SAP User. More... | |
void | SetNoiseFigure (double pow) |
void | SetSubChannelsForReception (std::vector< int > mask) |
Get a list of sub channels to use in RX. More... | |
void | SetSubChannelsForTransmission (std::vector< int > mask) |
Set a list of sub channels to use in TX. More... | |
void | SetTxPower (double pow) |
void | SubframeIndication (uint32_t frameNo, uint32_t subframeNo) |
trigger from eNB the start from a new frame More... | |
Public Member Functions inherited from ns3::LtePhy | |
LtePhy () | |
LtePhy (Ptr< LteSpectrumPhy > dlPhy, Ptr< LteSpectrumPhy > ulPhy) | |
void | DoSetCellId (uint16_t cellId) |
std::list< Ptr < LteControlMessage > > | GetControlMessages (void) |
Ptr< LteNetDevice > | GetDevice () |
Get the device where the phy layer is attached. More... | |
Ptr< LteSpectrumPhy > | GetDownlinkSpectrumPhy () |
Ptr< PacketBurst > | GetPacketBurst (void) |
uint8_t | GetRbgSize (void) const |
uint16_t | GetSrsPeriodicity (uint16_t srcCi) const |
uint16_t | GetSrsSubframeOffset (uint16_t srcCi) const |
double | GetTti (void) const |
Ptr< LteSpectrumPhy > | GetUplinkSpectrumPhy () |
void | SetControlMessages (Ptr< LteControlMessage > m) |
void | SetDevice (Ptr< LteNetDevice > d) |
Set the device where the phy layer is attached. More... | |
void | SetDownlinkChannel (Ptr< SpectrumChannel > c) |
void | SetMacPdu (Ptr< Packet > p) |
void | SetTti (double tti) |
Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel. More... | |
void | SetUplinkChannel (Ptr< SpectrumChannel > c) |
Public Member Functions inherited from ns3::Object | |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
Public Member Functions inherited from ns3::ObjectBase | |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::LtePhy | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
static void | Cleanup (void) |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId (void) |
Private Member Functions | |
void | DoConfigureUplink (uint16_t ulEarfcn, uint8_t ulBandwidth) |
void | DoReset () |
virtual void | DoSendLteControlMessage (Ptr< LteControlMessage > msg) |
virtual void | DoSendMacPdu (Ptr< Packet > p) |
Queue the MAC PDU to be sent (according to m_macChTtiDelay) More... | |
virtual void | DoSendRachPreamble (uint32_t prachId, uint32_t raRnti) |
void | DoSetDlBandwidth (uint8_t ulBandwidth) |
void | DoSetRnti (uint16_t rnti) |
void | DoSetSrsConfigurationIndex (uint16_t srcCi) |
void | DoSetTransmissionMode (uint8_t txMode) |
void | DoSyncronizeWithEnb (uint16_t cellId, uint16_t dlEarfcn) |
void | QueueSubChannelsForTransmission (std::vector< int > rbMap) |
void | SetTxMode1Gain (double gain) |
void | SetTxMode2Gain (double gain) |
void | SetTxMode3Gain (double gain) |
void | SetTxMode4Gain (double gain) |
void | SetTxMode5Gain (double gain) |
void | SetTxMode6Gain (double gain) |
void | SetTxMode7Gain (double gain) |
void | SetTxModeGain (uint8_t txMode, double gain) |
Private Attributes | |
Time | m_a30CqiLast |
Time | m_a30CqiPeriocity |
Ptr< LteAmc > | m_amc |
bool | m_dlConfigured |
Ptr< LteHarqPhy > | m_harqPhyModule |
Time | m_p10CqiLast |
Time | m_p10CqiPeriocity |
uint32_t | m_raPreambleId |
uint32_t | m_raRnti |
TracedCallback< uint16_t, uint16_t, double, double > | m_reportCurrentCellRsrpSinrTrace |
uint16_t | m_rnti |
SpectrumValue | m_rsReceivedPower |
bool | m_rsReceivedPowerUpdated |
uint16_t | m_rsrpSinrSampleCounter |
uint16_t | m_rsrpSinrSamplePeriod |
EventId | m_sendSrsEvent |
uint16_t | m_srsConfigured |
uint16_t | m_srsPeriodicity |
Time | m_srsStartTime |
uint16_t | m_srsSubframeOffset |
std::vector< int > | m_subChannelsForReception |
std::vector< int > | m_subChannelsForTransmission |
std::vector< std::vector< int > > | m_subChannelsForTransmissionQueue |
uint8_t | m_transmissionMode |
std::vector< double > | m_txModeGain |
LteUeCphySapProvider * | m_ueCphySapProvider |
LteUeCphySapUser * | m_ueCphySapUser |
LteUePhySapProvider * | m_uePhySapProvider |
LteUePhySapUser * | m_uePhySapUser |
bool | m_ulConfigured |
TracedCallback < PhyTransmissionStatParameters > | m_ulPhyTransmission |
Friends | |
class | MemberLteUeCphySapProvider< LteUePhy > |
class | UeMemberLteUePhySapProvider |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
virtual void | NotifyNewAggregate (void) |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
Protected Attributes inherited from ns3::LtePhy | |
uint16_t | m_cellId |
std::vector< std::list< Ptr < LteControlMessage > > > | m_controlMessagesQueue |
uint8_t | m_dlBandwidth |
uint16_t | m_dlEarfcn |
Ptr< LteSpectrumPhy > | m_downlinkSpectrumPhy |
uint8_t | m_macChTtiDelay |
Ptr< LteNetDevice > | m_netDevice |
double | m_noiseFigure |
std::vector< Ptr< PacketBurst > > | m_packetBurstQueue |
uint8_t | m_rbgSize |
double | m_tti |
double | m_txPower |
uint8_t | m_ulBandwidth |
uint16_t | m_ulEarfcn |
Ptr< LteSpectrumPhy > | m_uplinkSpectrumPhy |
The LteSpectrumPhy models the physical layer of LTE
ns3::LteUePhy is accessible through the following paths with Config::Set and Config::Connect:
Definition at line 48 of file lte-ue-phy.h.
ns3::LteUePhy::LteUePhy | ( | ) |
Definition at line 112 of file lte-ue-phy.cc.
References NS_FATAL_ERROR, and NS_LOG_FUNCTION.
ns3::LteUePhy::LteUePhy | ( | Ptr< LteSpectrumPhy > | dlPhy, |
Ptr< LteSpectrumPhy > | ulPhy | ||
) |
dlPhy | the downlink LteSpectrumPhy instance |
ulPhy | the uplink LteSpectrumPhy instance |
Definition at line 118 of file lte-ue-phy.cc.
References ns3::Simulator::Now(), NS_ASSERT_MSG, ns3::Simulator::ScheduleNow(), and SubframeIndication().
Ptr< DlCqiLteControlMessage > ns3::LteUePhy::CreateDlCqiFeedbackMessage | ( | const SpectrumValue & | sinr | ) |
Create the DL CQI feedback from SINR values perceived at the physical layer with the signal received from eNB.
sinr | SINR values vector |
Definition at line 443 of file lte-ue-phy.cc.
References ns3::SpectrumValue::ConstValuesBegin(), ns3::SpectrumValue::ConstValuesEnd(), ns3::LtePhy::GetRbgSize(), m_p10CqiLast, m_p10CqiPeriocity, m_reportCurrentCellRsrpSinrTrace, ns3::Simulator::Now(), NS_ASSERT, NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by GenerateCtrlCqiReport().
|
virtual |
Create the PSD for the TX.
Implements ns3::LtePhy.
Definition at line 377 of file lte-ue-phy.cc.
References ns3::LteSpectrumValueHelper::CreateTxPowerSpectralDensity(), GetSubChannelsForTransmission(), and NS_LOG_FUNCTION.
Referenced by SetSubChannelsForTransmission().
|
virtual |
This method is called by Object::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::LtePhy.
Definition at line 146 of file lte-ue-phy.cc.
References ns3::LtePhy::DoDispose(), and NS_LOG_FUNCTION.
|
virtual |
This method is called only once by Object::Initialize. If the user calls Object::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 243 of file lte-ue-phy.cc.
References ns3::Object::DoInitialize(), and NS_LOG_FUNCTION.
Queue the MAC PDU to be sent (according to m_macChTtiDelay)
p | the MAC PDU to sent |
Implements ns3::LtePhy.
Definition at line 326 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION, and ns3::LtePhy::SetMacPdu().
Referenced by ns3::UeMemberLteUePhySapProvider::SendMacPdu().
|
virtual |
generate a CQI report based on the given SINR of Ctrl frame
sinr | the SINR vs frequency measured by the device |
Implements ns3::LtePhy.
Definition at line 387 of file lte-ue-phy.cc.
References CreateDlCqiFeedbackMessage(), ns3::LtePhy::GetDevice(), m_p10CqiLast, m_p10CqiPeriocity, ns3::Simulator::Now(), and NS_LOG_FUNCTION.
|
virtual |
generate a CQI report based on the given SINR of Data frame (used for PUSCH CQIs)
sinr | the SINR vs frequency measured by the device |
Implements ns3::LtePhy.
Definition at line 421 of file lte-ue-phy.cc.
Ptr< LteSpectrumPhy > ns3::LteUePhy::GetDlSpectrumPhy | ( | ) | const |
Definition at line 314 of file lte-ue-phy.cc.
LteUeCphySapProvider * ns3::LteUePhy::GetLteUeCphySapProvider | ( | ) |
Get the CPHY SAP provider.
Definition at line 272 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
LteUePhySapProvider * ns3::LteUePhy::GetLteUePhySapProvider | ( | ) |
Get the PHY SAP provider.
Definition at line 257 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
uint8_t ns3::LteUePhy::GetMacChDelay | ( | void | ) | const |
Definition at line 308 of file lte-ue-phy.cc.
double ns3::LteUePhy::GetNoiseFigure | ( | ) | const |
Definition at line 286 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
std::vector< int > ns3::LteUePhy::GetSubChannelsForReception | ( | void | ) |
Get a list of sub channels to use in RX.
Definition at line 369 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
std::vector< int > ns3::LteUePhy::GetSubChannelsForTransmission | ( | void | ) |
Get a list of sub channels to use in RX.
Definition at line 361 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
Referenced by CreateTxPowerSpectralDensity().
double ns3::LteUePhy::GetTxPower | ( | ) | const |
Definition at line 300 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
Ptr< LteSpectrumPhy > ns3::LteUePhy::GetUlSpectrumPhy | ( | ) | const |
Definition at line 320 of file lte-ue-phy.cc.
|
virtual |
generate a report based on the linear interference and noise power perceived during DATA frame NOTE: used only by eNB
sinr | the interference + noise power measured by the device |
Implements ns3::LtePhy.
Definition at line 427 of file lte-ue-phy.cc.
|
virtual |
generate a report based on the linear RS power perceived during CTRL frame NOTE: used only by UE for evaluating RSRP
sinr | the RS power measured by the device |
Implements ns3::LtePhy.
Definition at line 433 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
void ns3::LteUePhy::SetLteUeCphySapUser | ( | LteUeCphySapUser * | s | ) |
Set the CPHY SAP User.
s | a pointer to the SAP user |
Definition at line 265 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
void ns3::LteUePhy::SetLteUePhySapUser | ( | LteUePhySapUser * | s | ) |
Set the PHY SAP User.
s | a pointer to the SAP user |
Definition at line 250 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
void ns3::LteUePhy::SetNoiseFigure | ( | double | pow | ) |
pw | the noise figure in dB |
Definition at line 279 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
void ns3::LteUePhy::SetSubChannelsForReception | ( | std::vector< int > | mask | ) |
Get a list of sub channels to use in RX.
mask | list of sub channels |
Definition at line 353 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
void ns3::LteUePhy::SetSubChannelsForTransmission | ( | std::vector< int > | mask | ) |
Set a list of sub channels to use in TX.
mask | a list of sub channels |
Definition at line 341 of file lte-ue-phy.cc.
References CreateTxPowerSpectralDensity(), and NS_LOG_FUNCTION.
Referenced by SendSrs(), and SubframeIndication().
void ns3::LteUePhy::SetTxPower | ( | double | pow | ) |
pw | the transmission power in dBm |
Definition at line 293 of file lte-ue-phy.cc.
References NS_LOG_FUNCTION.
void ns3::LteUePhy::SubframeIndication | ( | uint32_t | frameNo, |
uint32_t | subframeNo | ||
) |
trigger from eNB the start from a new frame
frameNo | frame number |
subframeNo | subframe number |
Definition at line 752 of file lte-ue-phy.cc.
References ns3::LtePhy::GetControlMessages(), ns3::LtePhy::GetPacketBurst(), ns3::LtePhy::GetTti(), ns3::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::Simulator::Schedule(), ns3::Seconds(), SendSrs(), SetSubChannelsForTransmission(), and ns3::LteUePhySapUser::SubframeIndication().
Referenced by LteUePhy().
|
private |
SubBand Aperiodic CQI: activated by DCI format 0 or Random Access Response Grant
Definition at line 252 of file lte-ue-phy.h.
Referenced by CreateDlCqiFeedbackMessage(), and GenerateCtrlCqiReport().
|
private |
Wideband Periodic CQI: 2, 5, 10, 16, 20, 32, 40, 64, 80 or 160 ms
Definition at line 251 of file lte-ue-phy.h.
Referenced by CreateDlCqiFeedbackMessage(), and GenerateCtrlCqiReport().
|
private |
Trace information regarding RSRP and average SINR (see TS 36.214) uint16_t cellId, uint16_t rnti, double rsrp, double sinr
Definition at line 290 of file lte-ue-phy.h.
Referenced by CreateDlCqiFeedbackMessage().
|
private |
Trace information regarding PHY stats from DL Tx perspective PhyTrasmissionStatParameters see lte-common.h
Definition at line 300 of file lte-ue-phy.h.