23 #include <ns3/object-factory.h> 
   28 #include <ns3/simulator.h> 
   29 #include <ns3/double.h> 
   40 #include <ns3/lte-common.h> 
   41 #include <ns3/pointer.h> 
   42 #include <ns3/boolean.h> 
   43 #include <ns3/lte-ue-power-control.h> 
  129   return g_uePhyStateName[s];
 
  148     m_state (CELL_SEARCH),
 
  150     m_rsReceivedPowerUpdated (false),
 
  151     m_rsInterferencePowerUpdated (false),
 
  152     m_dataInterferencePowerUpdated (false),
 
  153     m_pssReceived (false),
 
  156     m_rsrpSinrSampleCounter (0)
 
  158   m_amc = CreateObject <LteAmc> ();
 
  165                  "Cannot create UE devices after simulation started");
 
  195     .AddAttribute (
"TxPower",
 
  196                    "Transmission power in dBm",
 
  200                    MakeDoubleChecker<double> ())
 
  201     .AddAttribute (
"NoiseFigure",
 
  202                    "Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver." 
  203                    " According to Wikipedia (http://en.wikipedia.org/wiki/Noise_figure), this is " 
  204                    "\"the difference in decibels (dB) between" 
  205                    " the noise output of the actual receiver to the noise output of an " 
  206                    " ideal receiver with the same overall gain and bandwidth when the receivers " 
  207                    " are connected to sources at the standard noise temperature T0.\" " 
  208                    "In this model, we consider T0 = 290K.",
 
  212                    MakeDoubleChecker<double> ())
 
  213     .AddAttribute (
"TxMode1Gain",
 
  214                    "Transmission mode 1 gain in dB",
 
  217                    MakeDoubleChecker<double> ())
 
  218     .AddAttribute (
"TxMode2Gain",
 
  219                    "Transmission mode 2 gain in dB",
 
  222                    MakeDoubleChecker<double> ())
 
  223     .AddAttribute (
"TxMode3Gain",
 
  224                    "Transmission mode 3 gain in dB",
 
  227                    MakeDoubleChecker<double> ())
 
  228     .AddAttribute (
"TxMode4Gain",
 
  229                    "Transmission mode 4 gain in dB",
 
  232                    MakeDoubleChecker<double> ())
 
  233     .AddAttribute (
"TxMode5Gain",
 
  234                    "Transmission mode 5 gain in dB",
 
  237                    MakeDoubleChecker<double> ())
 
  238     .AddAttribute (
"TxMode6Gain",
 
  239                    "Transmission mode 6 gain in dB",
 
  242                    MakeDoubleChecker<double> ())
 
  243     .AddAttribute (
"TxMode7Gain",
 
  244                    "Transmission mode 7 gain in dB",
 
  247                    MakeDoubleChecker<double> ())
 
  248     .AddTraceSource (
"ReportCurrentCellRsrpSinr",
 
  249                      "RSRP and SINR statistics.",
 
  251                      "ns3::LteUePhy::RsrpSinrTracedCallback")
 
  252     .AddAttribute (
"RsrpSinrSamplePeriod",
 
  253                    "The sampling period for reporting RSRP-SINR stats (default value 1)",
 
  256                    MakeUintegerChecker<uint16_t> ())
 
  257     .AddTraceSource (
"UlPhyTransmission",
 
  258                      "DL transmission PHY layer statistics.",
 
  260                      "ns3::PhyTransmissionStatParameters::TracedCallback")
 
  261     .AddAttribute (
"DlSpectrumPhy",
 
  262                    "The downlink LteSpectrumPhy associated to this LtePhy",
 
  266                    MakePointerChecker <LteSpectrumPhy> ())
 
  267     .AddAttribute (
"UlSpectrumPhy",
 
  268                    "The uplink LteSpectrumPhy associated to this LtePhy",
 
  272                    MakePointerChecker <LteSpectrumPhy> ())
 
  273     .AddAttribute (
"RsrqUeMeasThreshold",
 
  274                    "Receive threshold for PSS on RSRQ [dB]",
 
  277                    MakeDoubleChecker<double> ())
 
  278     .AddAttribute (
"UeMeasurementsFilterPeriod",
 
  279                    "Time period for reporting UE measurements, i.e., the" 
  280                    "length of layer-1 filtering.",
 
  284     .AddTraceSource (
"ReportUeMeasurements",
 
  285                      "Report UE measurements RSRP (dBm) and RSRQ (dB).",
 
  287                      "ns3::LteUePhy::RsrpRsrqTracedCallback")
 
  288     .AddTraceSource (
"StateTransition",
 
  289                      "Trace fired upon every UE PHY state transition",
 
  291                      "ns3::LteUePhy::StateTracedCallback")
 
  292     .AddAttribute (
"EnableUplinkPowerControl",
 
  293                    "If true, Uplink Power Control will be enabled.",
 
  305   bool haveNodeId = 
false;
 
  312           nodeId = node->
GetId ();
 
  521       Values::const_iterator it;
 
  527           double powerTxW = ((*it) * 180000.0) / 12.0;
 
  531       double rsrp = (rbNum > 0) ? (sum / rbNum) : DBL_MAX;
 
  540       double avSinr = (rbNum > 0) ? (sum / rbNum) : DBL_MAX;
 
  552       std::list <PssElement>::iterator itPss = 
m_pssList.begin ();
 
  556           double rssiSum = 0.0;
 
  566               double interfPlusNoisePowerTxW = ((*itIntN) * 180000.0) / 12.0;
 
  567               double signalPowerTxW = ((*itPj) * 180000.0) / 12.0;
 
  568               rssiSum += (2 * (interfPlusNoisePowerTxW + signalPowerTxW));
 
  572           double rsrq_dB = 10 * log10 ((*itPss).pssPsdSum / rssiSum);
 
  577                                 << 
" has RSRQ " << rsrq_dB << 
" and RBnum " << rbNum);
 
  579               std::map <uint16_t, UeMeasurementsElement>::iterator itMeasMap;
 
  583                   (*itMeasMap).second.rsrqSum += rsrq_dB;
 
  584                   (*itMeasMap).second.rsrqNum++;
 
  588                   NS_LOG_WARN (
"race condition of bug 2091 occurred");
 
  623       NS_LOG_LOGIC (
"data interf measurement available, SINR = " << mixedSinr);
 
  629       mixedSinr /= (*m_noisePsd);
 
  630       NS_LOG_LOGIC (
"no data interf measurement available, SINR = " << mixedSinr);
 
  640   double avgMixedSinr = 0;
 
  641   uint32_t usedRbgNum = 0;
 
  645       avgMixedSinr+=mixedSinr[i];
 
  647   avgMixedSinr = avgMixedSinr/usedRbgNum;
 
  648   for(uint32_t i = 0; i < modulo; i++) 
 
  684       Values::const_iterator it;
 
  687           double powerTxW = ((*it) * 180000);
 
  691       double rsrp = 10 * log10 (sum) + 30;
 
  712   std::vector<int> cqi;
 
  718       int nbSubChannels = cqi.size ();
 
  720       int activeSubChannels = 0;
 
  722       for (
int i = 0; i < nbSubChannels; i++)
 
  724           if (cqi.at (i) != -1)
 
  726               cqiSum += cqi.at (i);
 
  729           NS_LOG_DEBUG (
this << 
" subch " << i << 
" cqi " <<  cqi.at (i));
 
  736       for (
int i = 0; i < nLayer; i++)
 
  738           if (activeSubChannels > 0)
 
  740               dlcqi.m_wbCqi.push_back ((uint16_t) cqiSum / activeSubChannels);
 
  745               dlcqi.m_wbCqi.push_back (1);
 
  756       int nbSubChannels = cqi.size ();
 
  762       for (
int i = 0; i < nbSubChannels; i++)
 
  764           if (cqi.at (i) != -1)
 
  766               cqiSum += cqi.at (i);
 
  770           if (cqiNum == rbgSize)
 
  776               for (
int i = 0; i < nLayer; i++)
 
  778                   hlCqi.
m_sbCqi.push_back ((uint16_t) cqiSum / rbgSize);
 
  790       dlcqi.m_sbMeasResult = rbgMeas;
 
  793   msg->SetDlCqi (dlcqi);
 
  806   std::map <uint16_t, UeMeasurementsElement>::iterator it;
 
  809       double avg_rsrp = (*it).second.rsrpSum / (double)(*it).second.rsrpNum;
 
  810       double avg_rsrq = (*it).second.rsrqSum / (
double)(*it).second.rsrqNum;
 
  817                          << 
" RSRP " << avg_rsrp
 
  818                          << 
" (nSamples " << (uint16_t)(*it).second.rsrpNum << 
")" 
  819                          << 
" RSRQ " << avg_rsrq
 
  820                          << 
" (nSamples " << (uint16_t)(*it).second.rsrqNum << 
")");
 
  854   msg->SetRapId (raPreambleId);
 
  866   std::list<Ptr<LteControlMessage> >::iterator it;
 
  867   for (it = msgList.begin (); it != msgList.end (); it++)
 
  882           if (dci.m_resAlloc != 0)
 
  887           std::vector <int> dlRb;
 
  891           for (
int i = 0; i < 32; i++)
 
  893               if (((dci.m_rbBitmap & mask) >> i) == 1)
 
  897                       dlRb.push_back ((i * GetRbgSize ()) + k);
 
  910           NS_LOG_DEBUG (
this << 
" UE " << 
m_rnti << 
" DL-DCI " << dci.m_rnti << 
" bitmap "  << dci.m_rbBitmap);
 
  911           for (uint8_t i = 0; i < dci.m_tbsSize.size (); i++)
 
  913               m_downlinkSpectrumPhy->AddExpectedTb (dci.m_rnti, dci.m_ndi.at (i), dci.m_tbsSize.at (i), dci.m_mcs.at (i), dlRb, i, dci.m_harqProcess, dci.m_rv.at (i), 
true );
 
  931           std::vector <int> ulRb;
 
  932           for (
int i = 0; i < dci.m_rbLen; i++)
 
  934               ulRb.push_back (i + dci.m_rbStart);
 
  947           params.
m_mcs = dci.m_mcs;
 
  948           params.
m_size = dci.m_tbSize;
 
  949           params.
m_rv = harqInfoList.size ();
 
  950           params.
m_ndi = dci.m_ndi;
 
  958           if (rarMsg->GetRaRnti () == 
m_raRnti)
 
  960               for (std::list<RarLteControlMessage::Rar>::const_iterator it = rarMsg->RarListBegin (); it != rarMsg->RarListEnd (); ++it)
 
  971                       std::vector <int> ulRb;
 
  972                       for (
int i = 0; i < it->rarPayload.m_grant.m_rbLen; i++)
 
  974                           ulRb.push_back (i + it->rarPayload.m_grant.m_rbStart);
 
 1020   Values::const_iterator itPi;
 
 1024       double powerTxW = ((*itPi) * 180000.0) / 12.0;
 
 1030   double rsrp_dBm = 10 * log10 (1000 * (sum / (
double)nRB));
 
 1032                     << 
" has RSRP " << rsrp_dBm << 
" and RBnum " << nRB);
 
 1036   std::map <uint16_t, UeMeasurementsElement>::iterator itMeasMap = 
m_ueMeasurementsMap.find (cellId);
 
 1049       (*itMeasMap).second.rsrpSum += rsrp_dBm;
 
 1050       (*itMeasMap).second.rsrpNum++;
 
 1079   NS_ASSERT_MSG (frameNo > 0, 
"the SRS index check code assumes that frameNo starts at 1");
 
 1102           NS_ASSERT_MSG (subframeNo > 0 && subframeNo <= 10, 
"the SRS index check code assumes that subframeNo starts at 1");
 
 1129           if (ctrlMsg.size ()>0)
 
 1131               NS_LOG_LOGIC (
this << 
" UE - start TX PUCCH (NO PUSCH)");
 
 1132               std::vector <int> dlRb;
 
 1154   if (subframeNo > 10)
 
 1171   std::vector <int> dlRb;
 
 1212       std::list<Ptr<LteControlMessage> > l;
 
 1215   std::vector <int> ulRb;
 
 1278       for (
int i = 0; i < 4; i++)
 
 1280           if (dlBandwidth < Type0AllocationRbg[i])
 
 1397   double gainLin = std::pow (10.0, (gain / 10.0));
 
 1402   std::vector <double> temp;
 
 1405   for (uint8_t i = 0; i < temp.size (); i++)
 
 1428   msg->SetDlHarqFeedback (m);
 
 1454                     << 
" UePhy " << 
ToString (oldState)
 
 1455                     << 
" --> " << 
ToString (newState));
 
Values::const_iterator ConstValuesEnd() const 
 
See section 4.3.1 dlDciListElement. 
 
double GetNoiseFigure() const 
 
void SetTxPower(double value)
 
Ptr< LteSpectrumPhy > GetUlSpectrumPhy() const 
 
virtual void DoInitialize(void)
Initialize() implementation. 
 
Simulation virtual time values and global simulation resolution. 
 
uint8_t m_txMode
the transmission Mode 
 
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
 
virtual void ReceiveLteControlMessage(Ptr< LteControlMessage > msg)=0
Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel. 
 
double m_noiseFigure
Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. 
 
See section 4.3.25 sbMeasResult. 
 
AttributeValue implementation for Boolean. 
 
double m_txPower
Transmission power in dBm. 
 
std::vector< struct UeMeasurementsElement > m_ueMeasurementsList
 
uint16_t m_dlEarfcn
The downlink carrier frequency. 
 
virtual void GenerateMixedCqiReport(const SpectrumValue &sinr)
 
LteUePhySapUser * m_uePhySapUser
 
void SetTxMode5Gain(double gain)
 
void SetCellId(uint16_t cellId)
 
virtual void SendMacPdu(Ptr< Packet > p)
Send the MAC PDU to the channel. 
 
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system. 
 
virtual void GenerateDataCqiReport(const SpectrumValue &sinr)
generate a CQI report based on the given SINR of Data frame (used for PUSCH CQIs) ...
 
std::list< PssElement > m_pssList
 
void SetTxMode2Gain(double gain)
 
uint8_t GetMacChDelay(void) const 
 
void DoConfigureUplink(uint16_t ulEarfcn, uint8_t ulBandwidth)
 
std::vector< Ptr< PacketBurst > > m_packetBurstQueue
A queue of packet bursts to be sent. 
 
std::vector< int > GetSubChannelsForTransmission(void)
Get a list of sub channels to use in RX. 
 
virtual void GenerateCtrlCqiReport(const SpectrumValue &sinr)
generate a CQI report based on the given SINR of Ctrl frame 
 
TracedCallback< uint16_t, uint16_t, double, double > m_reportCurrentCellRsrpSinrTrace
The ReportCurrentCellRsrpSinr trace source. 
 
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
 
double GetPuschTxPower(std::vector< int > rb)
 
void SetSubChannelsForTransmission(std::vector< int > mask)
Set a list of sub channels to use in TX. 
 
uint16_t GetSrsPeriodicity(uint16_t srcCi) const 
 
double GetTti(void) const 
 
LteUePhySapProvider * m_uePhySapProvider
 
uint8_t rsrqNum
Number of RSRQ samples. 
 
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
 
void SetTxMode6Gain(double gain)
 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
 
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit. 
 
Ptr< LteSpectrumPhy > m_downlinkSpectrumPhy
The downlink LteSpectrumPhy associated to this LtePhy. 
 
See section 4.3.2 ulDciListElement. 
 
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes. 
 
virtual void SendLteControlMessage(Ptr< LteControlMessage > msg)
Send SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel. 
 
See section 4.3.24 cqiListElement. 
 
std::vector< double > m_txModeGain
 
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO. 
 
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate. 
 
Summary results of measuring a specific cell. Used for layer-1 filtering. 
 
SpectrumValue m_dataInterferencePower
 
void QueueSubChannelsForTransmission(std::vector< int > rbMap)
 
uint8_t m_rv
the redundancy version (HARQ) 
 
Service Access Point (SAP) offered by the PHY to the MAC. 
 
void SetTxModeGain(uint8_t txMode, double gain)
 
State
The states of the UE PHY entity. 
 
Ptr< LteUePowerControl > m_powerControl
Pointer to UE Uplink Power Control entity. 
 
virtual void DoSendMacPdu(Ptr< Packet > p)
Queue the MAC PDU to be sent (according to m_macChTtiDelay) 
 
std::vector< int > GetSubChannelsForReception(void)
Get a list of sub channels to use in RX. 
 
This class defines all functions to create spectrum model for lte. 
 
uint8_t m_transmissionMode
 
void SetHarqPhyModule(Ptr< LteHarqPhy > harq)
Set the HARQ PHY module. 
 
uint8_t m_ulBandwidth
The UL bandwidth in number of PRBs. 
 
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source. 
 
void DoSetSrsConfigurationIndex(uint16_t srcCi)
 
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range. 
 
static const int Type0AllocationRbg[4]
 
void DoSetTransmissionMode(uint8_t txMode)
 
UeMemberLteUePhySapProvider(LteUePhy *phy)
 
Template for the implementation of the LteUeCphySapProvider as a member of an owner class of type C t...
 
double m_pssReceptionThreshold
The RsrqUeMeasThreshold attribute. 
 
TracedCallback< uint16_t, uint16_t, double, double, bool > m_reportUeMeasurements
The ReportUeMeasurements trace source. 
 
uint16_t GetSrsSubframeOffset(uint16_t srcCi) const 
 
void DoSynchronizeWithEnb(uint16_t cellId)
 
uint8_t rsrpNum
Number of RSRP samples. 
 
LteUeCphySapUser * m_ueCphySapUser
 
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
 
static EventId Schedule(Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event to expire after delay. 
 
void DoSetDlBandwidth(uint8_t ulBandwidth)
 
void DoDispose()
Destructor implementation. 
 
AttributeValue implementation for Time. 
 
uint8_t GetRbgSize(void) const 
 
uint16_t m_rsrpSinrSamplePeriod
The RsrpSinrSamplePeriod attribute. 
 
Time NanoSeconds(uint64_t value)
Construct a Time in the indicated unit. 
 
uint64_t m_imsi
IMSI of the scheduled UE. 
 
See section 4.3.27 higherLayerSelected. 
 
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes. 
 
void SetLteUePhySapUser(LteUePhySapUser *s)
Set the PHY SAP User. 
 
Hold an unsigned integer type. 
 
void DoConfigureReferenceSignalPower(int8_t referenceSignalPower)
 
void SetTxMode3Gain(double gain)
 
static uint8_t TxMode2LayerNum(uint8_t txMode)
 
Ptr< DlCqiLteControlMessage > CreateDlCqiFeedbackMessage(const SpectrumValue &sinr)
Create the DL CQI feedback from SINR values perceived at the physical layer with the signal received ...
 
void SetTxMode4Gain(double gain)
 
void SwitchToState(State s)
Switch the UE PHY to the given state. 
 
TracedCallback< uint16_t, uint16_t, State, State > m_stateTransitionTrace
The StateTransition trace source. 
 
void SendSrs()
Send the SRS signal in the last symbols of the frame. 
 
uint16_t m_ulEarfcn
The uplink carrier frequency. 
 
bool m_rsInterferencePowerUpdated
 
virtual void RecvSystemInformationBlockType1(uint16_t cellId, LteRrcSap::SystemInformationBlockType1 sib1)=0
Relay an SIB1 message from the PHY entity to the RRC layer. 
 
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC. 
 
std::vector< uint8_t > m_sbCqi
 
void SetTxMode7Gain(double gain)
 
Ptr< LteUePowerControl > GetUplinkPowerControl() const 
 
virtual void RecvMasterInformationBlock(uint16_t cellId, LteRrcSap::MasterInformationBlock mib)=0
Relay an MIB message from the PHY entity to the RRC layer. 
 
See section 4.3.23 dlInfoListElement. 
 
Ptr< LteNetDevice > GetDevice() const 
Get the device where the phy layer is attached. 
 
double rsrpSum
Sum of RSRP sample values in linear unit. 
 
virtual void DoSendRachPreamble(uint32_t prachId, uint32_t raRnti)
 
uint8_t m_mcs
MCS for transport block. 
 
virtual void ReportDataInterference(const SpectrumValue &interf)
 
virtual void ReceiveLteDlHarqFeedback(DlInfoListElement_s mes)
PhySpectrum generated a new DL HARQ feedback. 
 
bool m_enableUplinkPowerControl
The EnableUplinkPowerControl attribute. 
 
uint8_t m_macChTtiDelay
Delay between MAC and channel layer in terms of TTIs. 
 
static const Time UL_DATA_DURATION
Duration of the data portion of a UL subframe. 
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
Ptr< LteHarqPhy > m_harqPhyModule
 
Hold objects of type Ptr. 
 
void DoStartCellSearch(uint16_t dlEarfcn)
 
void SetControlMessages(Ptr< LteControlMessage > m)
 
Ptr< const AttributeChecker > MakeBooleanChecker(void)
 
uint16_t m_rsrpSinrSampleCounter
 
SpectrumValue m_rsReceivedPower
 
double GetTxPower() const 
 
double rsrqSum
Sum of RSRQ sample values in linear unit. 
 
uint16_t m_srsSubframeOffset
 
uint8_t m_dlBandwidth
The DL bandwidth in number of PRBs. 
 
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
Schedule an event to expire Now. 
 
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
 
uint16_t m_size
Size of transport block. 
 
static Time Now(void)
Return the current simulation virtual time. 
 
uint16_t m_cellId
Cell identifier. 
 
uint8_t m_ndi
new data indicator flag 
 
void SubframeIndication(uint32_t frameNo, uint32_t subframeNo)
trigger from eNB the start from a new frame 
 
virtual void DoInitialize(void)
Initialize() implementation. 
 
void SetRnti(uint16_t rnti)
 
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
 
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
 
static Ptr< SpectrumValue > CreateTxPowerSpectralDensity(uint16_t earfcn, uint8_t bandwidth, double powerTx, std::vector< int > activeRbs)
create a spectrum value representing the power spectral density of a signal to be transmitted...
 
void SetTxMode1Gain(double gain)
 
std::vector< int > m_subChannelsForTransmission
A list of sub channels to use in TX. 
 
Time m_p10CqiPeriocity
Wideband Periodic CQI. 2, 5, 10, 16, 20, 32, 40, 64, 80 or 160 ms. 
 
static void ScheduleWithContext(uint32_t context, Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event with the given context. 
 
Ptr< LteNetDevice > m_netDevice
Pointer to the NetDevice where this PHY layer is attached. 
 
std::vector< std::vector< int > > m_subChannelsForTransmissionQueue
 
The attribute can be read. 
 
std::list< Ptr< LteControlMessage > > GetControlMessages(void)
 
static const std::string & ToString(EpcUeNas::State s)
 
uint32_t GetId(void) const 
 
Time m_a30CqiPeriocity
SubBand Aperiodic CQI. 
 
LteUeCphySapProvider * m_ueCphySapProvider
 
std::map< uint16_t, UeMeasurementsElement > m_ueMeasurementsMap
Store measurement results during the last layer-1 filtering period. 
 
Ptr< PacketBurst > GetPacketBurst(void)
 
uint16_t m_cellId
Cell ID of the attached Enb. 
 
static const std::string g_uePhyStateName[LteUePhy::NUM_STATES]
Map each of UE PHY states to its string representation. 
 
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN. 
 
std::vector< int > m_subChannelsForReception
A list of sub channels to use in RX. 
 
Service Access Point (SAP) offered by the UE-PHY to the UE-MAC. 
 
static const Time UL_SRS_DELAY_FROM_SUBFRAME_START
Delay from subframe start to transmission of SRS. 
 
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG. 
 
uint8_t m_layer
the layer (cw) of the transmission 
 
Time Seconds(double value)
Construct a Time in the indicated unit. 
 
virtual void ReceiveLteControlMessageList(std::list< Ptr< LteControlMessage > >)
 
void SetTxPower(double pow)
 
virtual void ReceivePss(uint16_t cellId, Ptr< SpectrumValue > p)
 
double GetPucchTxPower(std::vector< int > rb)
 
uint16_t m_srsPeriodicity
 
LteUePhySapProvider * GetLteUePhySapProvider()
Get the PHY SAP provider. 
 
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method. 
 
virtual void SendRachPreamble(uint32_t prachId, uint32_t raRnti)
send a preamble on the PRACH 
 
uint8_t m_rbgSize
The RB gruop size according to the bandwidth. 
 
void SetLteUeCphySapUser(LteUeCphySapUser *s)
Set the CPHY SAP User. 
 
SpectrumValue m_rsInterferencePower
 
friend class UeMemberLteUePhySapProvider
 
double GetSrsTxPower(std::vector< int > rb)
 
void PhyPduReceived(Ptr< Packet > p)
PhySpectrum received a new PHY-PDU. 
 
Values::const_iterator ConstValuesBegin() const 
 
void SetRsrp(double value)
 
virtual void DoSendLteControlMessage(Ptr< LteControlMessage > msg)
 
std::vector< std::list< Ptr< LteControlMessage > > > m_controlMessagesQueue
A queue of control messages to be sent. 
 
bool m_rsReceivedPowerUpdated
 
void ConfigureReferenceSignalPower(int8_t referenceSignalPower)
 
void GenerateCqiRsrpRsrq(const SpectrumValue &sinr)
internal method that takes care of generating CQI reports, calculating the RSRP and RSRQ metrics...
 
The LteSpectrumPhy models the physical layer of LTE. 
 
Ptr< LteSpectrumPhy > GetDlSpectrumPhy() const 
 
Ptr< LteSpectrumPhy > m_uplinkSpectrumPhy
The uplink LteSpectrumPhy associated to this LtePhy. 
 
virtual void ReportRsReceivedPower(const SpectrumValue &power)
generate a report based on the linear RS power perceived during CTRL frame NOTE: used only by UE for ...
 
Parameters of the ReportUeMeasurements primitive: RSRP [dBm] and RSRQ [dB] See section 5...
 
LteUeCphySapProvider * GetLteUeCphySapProvider()
Get the CPHY SAP provider. 
 
This class can be used to hold variables of floating point type such as 'double' or 'float'...
 
State m_state
The current UE PHY state. 
 
Set of values corresponding to a given SpectrumModel. 
 
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
 
void SetMacPdu(Ptr< Packet > p)
 
std::vector< struct HigherLayerSelected_s > m_higherLayerSelected
 
a unique identifier for an interface. 
 
int64_t GetMilliSeconds(void) const 
Get an approximation of the time stored in this instance in the indicated unit. 
 
TypeId SetParent(TypeId tid)
Set the parent TypeId. 
 
bool m_dataInterferencePowerUpdated
 
void SetNoiseFigure(double nf)
 
TracedCallback< PhyTransmissionStatParameters > m_ulPhyTransmission
The UlPhyTransmission trace source. 
 
uint16_t m_rnti
C-RNTI scheduled. 
 
static TypeId GetTypeId(void)
 
The LtePhy models the physical layer of LTE. 
 
void ReportUeMeasurements()
Layer-1 filtering of RSRP and RSRQ measurements and reporting to the RRC entity. 
 
virtual void ReportInterference(const SpectrumValue &interf)
generate a report based on the linear interference and noise power perceived during DATA frame NOTE: ...
 
virtual void ReceivePhyPdu(Ptr< Packet > p)=0
Called by the Phy to notify the MAC of the reception of a new PHY-PDU. 
 
static Ptr< SpectrumValue > CreateNoisePowerSpectralDensity(uint16_t earfcn, uint8_t bandwidth, double noiseFigure)
create a SpectrumValue that models the power spectral density of AWGN 
 
virtual Ptr< SpectrumValue > CreateTxPowerSpectralDensity()
Create the PSD for the TX. 
 
void ReportTpc(uint8_t tpc)
 
#define UL_PUSCH_TTIS_DELAY
 
Ptr< SpectrumValue > m_noisePsd
Noise power spectral density for the configured bandwidth. 
 
void DoSetRnti(uint16_t rnti)
 
virtual void SubframeIndication(uint32_t frameNo, uint32_t subframeNo)=0
Trigger the start from a new frame (input from Phy layer) 
 
virtual void ReportUeMeasurements(UeMeasurementsParameters params)=0
Send a report of RSRP and RSRQ values perceived from PSS by the PHY entity (after applying layer-1 fi...
 
std::vector< HarqProcessInfoElement_t > HarqProcessInfoList_t
 
void SetSubChannelsForReception(std::vector< int > mask)
Get a list of sub channels to use in RX. 
 
The LteUeNetDevice class implements the UE net device. 
 
virtual void DoDispose(void)
Destructor implementation. 
 
Time m_ueMeasurementsFilterPeriod
The UeMeasurementsFilterPeriod attribute.