|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
26 #include <ns3/object-factory.h>
31 #include <ns3/simulator.h>
32 #include <ns3/double.h>
43 #include <ns3/lte-common.h>
44 #include <ns3/pointer.h>
45 #include <ns3/boolean.h>
46 #include <ns3/lte-ue-power-control.h>
159 m_state (CELL_SEARCH),
161 m_rsReceivedPowerUpdated (false),
162 m_rsInterferencePowerUpdated (false),
163 m_dataInterferencePowerUpdated (false),
164 m_pssReceived (false),
167 m_rsrpSinrSampleCounter (0),
170 m_amc = CreateObject <LteAmc> ();
177 "Cannot create UE devices after simulation started");
205 .SetGroupName (
"Lte")
207 .AddAttribute (
"TxPower",
208 "Transmission power in dBm",
212 MakeDoubleChecker<double> ())
213 .AddAttribute (
"NoiseFigure",
214 "Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver."
215 " According to Wikipedia (http://en.wikipedia.org/wiki/Noise_figure), this is "
216 "\"the difference in decibels (dB) between"
217 " the noise output of the actual receiver to the noise output of an "
218 " ideal receiver with the same overall gain and bandwidth when the receivers "
219 " are connected to sources at the standard noise temperature T0.\" "
220 "In this model, we consider T0 = 290K.",
224 MakeDoubleChecker<double> ())
225 .AddAttribute (
"TxMode1Gain",
226 "Transmission mode 1 gain in dB",
229 MakeDoubleChecker<double> ())
230 .AddAttribute (
"TxMode2Gain",
231 "Transmission mode 2 gain in dB",
234 MakeDoubleChecker<double> ())
235 .AddAttribute (
"TxMode3Gain",
236 "Transmission mode 3 gain in dB",
239 MakeDoubleChecker<double> ())
240 .AddAttribute (
"TxMode4Gain",
241 "Transmission mode 4 gain in dB",
244 MakeDoubleChecker<double> ())
245 .AddAttribute (
"TxMode5Gain",
246 "Transmission mode 5 gain in dB",
249 MakeDoubleChecker<double> ())
250 .AddAttribute (
"TxMode6Gain",
251 "Transmission mode 6 gain in dB",
254 MakeDoubleChecker<double> ())
255 .AddAttribute (
"TxMode7Gain",
256 "Transmission mode 7 gain in dB",
259 MakeDoubleChecker<double> ())
260 .AddTraceSource (
"ReportCurrentCellRsrpSinr",
261 "RSRP and SINR statistics.",
263 "ns3::LteUePhy::RsrpSinrTracedCallback")
264 .AddAttribute (
"RsrpSinrSamplePeriod",
265 "The sampling period for reporting RSRP-SINR stats (default value 1)",
268 MakeUintegerChecker<uint16_t> ())
269 .AddTraceSource (
"ReportUlPhyResourceBlocks",
270 "UL transmission PHY layer resource blocks.",
272 "ns3::LteUePhy::UlPhyResourceBlocksTracedCallback")
273 .AddTraceSource (
"ReportPowerSpectralDensity",
274 "Power Spectral Density data.",
276 "ns3::LteUePhy::PowerSpectralDensityTracedCallback")
277 .AddTraceSource (
"UlPhyTransmission",
278 "DL transmission PHY layer statistics.",
280 "ns3::PhyTransmissionStatParameters::TracedCallback")
281 .AddAttribute (
"DlSpectrumPhy",
282 "The downlink LteSpectrumPhy associated to this LtePhy",
286 MakePointerChecker <LteSpectrumPhy> ())
287 .AddAttribute (
"UlSpectrumPhy",
288 "The uplink LteSpectrumPhy associated to this LtePhy",
292 MakePointerChecker <LteSpectrumPhy> ())
293 .AddAttribute (
"RsrqUeMeasThreshold",
294 "Receive threshold for PSS on RSRQ [dB]",
297 MakeDoubleChecker<double> ())
298 .AddAttribute (
"UeMeasurementsFilterPeriod",
299 "Time period for reporting UE measurements, i.e., the"
300 "length of layer-1 filtering.",
304 .AddAttribute (
"DownlinkCqiPeriodicity",
305 "Periodicity in milliseconds for reporting the"
306 "wideband and subband downlink CQIs to the eNB",
310 .AddTraceSource (
"ReportUeMeasurements",
311 "Report UE measurements RSRP (dBm) and RSRQ (dB).",
313 "ns3::LteUePhy::RsrpRsrqTracedCallback")
314 .AddTraceSource (
"StateTransition",
315 "Trace fired upon every UE PHY state transition",
317 "ns3::LteUePhy::StateTracedCallback")
318 .AddAttribute (
"EnableUplinkPowerControl",
319 "If true, Uplink Power Control will be enabled.",
323 .AddAttribute (
"Qout",
324 "corresponds to 10% block error rate of a hypothetical PDCCH transmission"
325 "taking into account the PCFICH errors with transmission parameters."
326 "see 3GPP TS 36.213 4.2.1 and TS 36.133 7.6",
329 MakeDoubleChecker<double> ())
330 .AddAttribute (
"Qin",
331 "corresponds to 2% block error rate of a hypothetical PDCCH transmission"
332 "taking into account the PCFICH errors with transmission parameters."
333 "see 3GPP TS 36.213 4.2.1 and TS 36.133 7.6",
336 MakeDoubleChecker<double> ())
337 .AddAttribute (
"NumQoutEvalSf",
338 "This specifies the total number of consecutive subframes"
339 "which corresponds to the Qout evaluation period",
343 MakeUintegerChecker<uint16_t> ())
344 .AddAttribute (
"NumQinEvalSf",
345 "This specifies the total number of consecutive subframes"
346 "which corresponds to the Qin evaluation period",
350 MakeUintegerChecker<uint16_t> ())
351 .AddAttribute (
"EnableRlfDetection",
352 "If true, RLF detection will be enabled.",
367 NS_ABORT_MSG_IF (node ==
nullptr,
"Node is not available in the LteNetDevice of LteUePhy");
368 uint32_t nodeId = node->
GetId ();
465 NS_ABORT_MSG_IF (numSubframes % 10 != 0,
"Number of subframes used for Qout "
466 "evaluation must be multiple of 10");
474 NS_ABORT_MSG_IF (numSubframes % 10 != 0,
"Number of subframes used for Qin "
475 "evaluation must be multiple of 10");
622 Values::const_iterator it;
628 double powerTxW = ((*it) * 180000.0) / 12.0;
632 double rsrp = (rbNum > 0) ? (sum / rbNum) : DBL_MAX;
654 std::list <PssElement>::iterator itPss =
m_pssList.begin ();
658 double rssiSum = 0.0;
668 double interfPlusNoisePowerTxW = ((*itIntN) * 180000.0) / 12.0;
669 double signalPowerTxW = ((*itPj) * 180000.0) / 12.0;
670 rssiSum += (2 * (interfPlusNoisePowerTxW + signalPowerTxW));
674 double rsrq_dB = 10 * log10 ((*itPss).pssPsdSum / rssiSum);
679 <<
" has RSRQ " << rsrq_dB <<
" and RBnum " << rbNum);
681 std::map <uint16_t, UeMeasurementsElement>::iterator itMeasMap;
685 (*itMeasMap).second.rsrqSum += rsrq_dB;
686 (*itMeasMap).second.rsrqNum++;
690 NS_LOG_WARN (
"race condition of bug 2091 occurred");
712 Values::const_iterator it;
720 double avrgSinr = (rbNum > 0) ? (sum / rbNum) : DBL_MAX;
764 NS_LOG_LOGIC (
"data interf measurement available, SINR = " << mixedSinr);
770 mixedSinr /= (*m_noisePsd);
771 NS_LOG_LOGIC (
"no data interf measurement available, SINR = " << mixedSinr);
781 double avgMixedSinr = 0;
782 uint32_t usedRbgNum = 0;
786 avgMixedSinr += mixedSinr[i];
788 avgMixedSinr = avgMixedSinr / usedRbgNum;
789 for (uint32_t i = 0; i < modulo; i++)
825 Values::const_iterator it;
828 double powerTxW = ((*it) * 180000);
832 double rsrp = 10 * log10 (sum) + 30;
853 std::vector<int> cqi;
859 int nbSubChannels = cqi.size ();
861 int activeSubChannels = 0;
863 for (
int i = 0; i < nbSubChannels; i++)
865 if (cqi.at (i) != -1)
867 cqiSum += cqi.at (i);
870 NS_LOG_DEBUG (
this <<
" subch " << i <<
" cqi " << cqi.at (i));
877 for (
int i = 0; i < nLayer; i++)
879 if (activeSubChannels > 0)
881 dlcqi.
m_wbCqi.push_back ((uint16_t) cqiSum / activeSubChannels);
897 int nbSubChannels = cqi.size ();
903 for (
int i = 0; i < nbSubChannels; i++)
905 if (cqi.at (i) != -1)
907 cqiSum += cqi.at (i);
911 if (cqiNum == rbgSize)
917 for (
int i = 0; i < nLayer; i++)
919 hlCqi.
m_sbCqi.push_back ((uint16_t) cqiSum / rbgSize);
934 msg->SetDlCqi (dlcqi);
947 std::map <uint16_t, UeMeasurementsElement>::iterator it;
950 double avg_rsrp = (*it).second.rsrpSum / (double)(*it).second.rsrpNum;
951 double avg_rsrq = (*it).second.rsrqSum / (
double)(*it).second.rsrqNum;
958 <<
" RSRP " << avg_rsrp
959 <<
" (nSamples " << (uint16_t)(*it).second.rsrpNum <<
")"
960 <<
" RSRQ " << avg_rsrq
961 <<
" (nSamples " << (uint16_t)(*it).second.rsrqNum <<
")"
1005 msg->SetRapId (raPreambleId);
1034 std::list<Ptr<LteControlMessage> >::iterator it;
1035 NS_LOG_DEBUG (
this <<
" I am rnti = " <<
m_rnti <<
" and I received msgs " << (uint16_t) msgList.size ());
1036 for (it = msgList.begin (); it != msgList.end (); it++)
1056 std::vector <int> dlRb;
1059 uint32_t mask = 0x1;
1060 for (
int i = 0; i < 32; i++)
1080 for (uint8_t i = 0; i < dci.
m_tbsSize.size (); i++)
1100 std::vector <int> ulRb;
1101 for (
int i = 0; i < dci.
m_rbLen; i++)
1119 params.
m_rv = harqInfoList.size ();
1129 if (rarMsg->GetRaRnti () ==
m_raRnti)
1131 for (std::list<RarLteControlMessage::Rar>::const_iterator it = rarMsg->RarListBegin (); it != rarMsg->RarListEnd (); ++it)
1142 std::vector <int> ulRb;
1143 for (
int i = 0; i < it->rarPayload.m_grant.m_rbLen; i++)
1145 ulRb.push_back (i + it->rarPayload.m_grant.m_rbStart);
1191 Values::const_iterator itPi;
1195 double powerTxW = ((*itPi) * 180000.0) / 12.0;
1201 double rsrp_dBm = 10 * log10 (1000 * (sum / (
double)nRB));
1203 <<
" has RSRP " << rsrp_dBm <<
" and RBnum " << nRB);
1207 std::map <uint16_t, UeMeasurementsElement>::iterator itMeasMap =
m_ueMeasurementsMap.find (cellId);
1220 (*itMeasMap).second.rsrpSum += rsrp_dBm;
1221 (*itMeasMap).second.rsrpNum++;
1250 NS_ASSERT_MSG (frameNo > 0,
"the SRS index check code assumes that frameNo starts at 1");
1273 NS_ASSERT_MSG (subframeNo > 0 && subframeNo <= 10,
"the SRS index check code assumes that subframeNo starts at 1");
1300 if (ctrlMsg.size () > 0)
1302 NS_LOG_LOGIC (
this <<
" UE - start TX PUCCH (NO PUSCH)");
1303 std::vector <int> dlRb;
1325 if (subframeNo > 10)
1342 std::vector <int> dlRb;
1385 std::list<Ptr<LteControlMessage> > l;
1388 std::vector <int> ulRb;
1458 for (
int i = 0; i < 4; i++)
1623 <<
" ms UE PHY sending out of snyc indication to UE RRC layer");
1662 <<
" ms UE PHY sending in snyc indication to UE RRC layer");
1717 double gainLin = std::pow (10.0, (gain / 10.0));
1722 std::vector <double> temp;
1725 for (uint8_t i = 0; i < temp.size (); i++)
1727 if (i == txMode - 1)
1748 msg->SetDlHarqFeedback (m);
1774 <<
" UePhy " <<
ToString (oldState)
1775 <<
" --> " <<
ToString (newState));
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
friend class UeMemberLteUePhySapProvider
allow UeMemberLteUePhySapProvider class friend access
The LteSpectrumPhy models the physical layer of LTE.
void SetTxMode3Gain(double gain)
Set transmit mode 3 gain function.
uint8_t m_ccId
component carrier id
double GetNoiseFigure() const
Get noise figure.
static TypeId GetTypeId(void)
Get the type ID.
TracedCallback< uint16_t, Ptr< SpectrumValue > > m_reportPowerSpectralDensity
The ReportsPowerSpectralDensity trace source.
LteUeCphySapUser * m_ueCphySapUser
UE CPhy SAP user.
void ConfigureReferenceSignalPower(int8_t referenceSignalPower)
Configure reference signal power (dBm) function.
virtual void RecvMasterInformationBlock(uint16_t cellId, LteRrcSap::MasterInformationBlock mib)=0
Relay an MIB message from the PHY entity to the RRC layer.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
uint8_t m_componentCarrierId
component carrier ID
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
AttributeValue implementation for Boolean.
Values::const_iterator ConstValuesEnd() const
SpectrumValue m_rsReceivedPower
RS receive power.
SpectrumValue m_ctrlSinrForRlf
the CTRL SINR used for RLF detection
void SetRnti(uint16_t rnti)
Set the RNTI function.
static void ScheduleWithContext(uint32_t context, Time const &delay, FUNC f, Ts &&... args)
Schedule an event with the given context.
bool m_isConnected
set when UE RRC is in CONNECTED_NORMALLY state
State GetState() const
Get state of the UE physical layer.
Ptr< LteSpectrumPhy > m_uplinkSpectrumPhy
The uplink LteSpectrumPhy associated to this LtePhy.
virtual void DoSendLteControlMessage(Ptr< LteControlMessage > msg)
Send LTE control message function.
void SendSrs()
Send the SRS signal in the last symbols of the frame.
uint16_t GetNumQinEvalSf() const
Get number of Qin evaluation subframes.
uint32_t GetId(void) const
uint8_t m_txMode
the transmission Mode
Time m_srsStartTime
SRS start time.
void DoResetPhyAfterRlf()
Reset Phy after radio link failure function.
void DoConfigureReferenceSignalPower(int8_t referenceSignalPower)
Configure reference signal power function.
static Time Now(void)
Return the current simulation virtual time.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
See section 4.3.27 higherLayerSelected.
uint32_t m_dlEarfcn
The downlink carrier frequency.
void DoStartCellSearch(uint32_t dlEarfcn)
Start the cell search function.
LteUeCphySapProvider * GetLteUeCphySapProvider()
Get the CPHY SAP provider.
uint8_t GetRbgSize(void) const
Ptr< LteUePowerControl > m_powerControl
Pointer to UE Uplink Power Control entity.
uint16_t GetNumQoutEvalSf() const
Get number of Qout evaluation subframes.
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...
static const std::string & ToString(EpcUeNas::State s)
virtual void SendMacPdu(Ptr< Packet > p)
Send the MAC PDU to the channel.
void ReportUeMeasurements()
Layer-1 filtering of RSRP and RSRQ measurements and reporting to the RRC entity.
virtual void NotifyConnectionSuccessful()
Notify PHY about the successful RRC connection establishment.
Ptr< SpectrumValue > m_noisePsd
Noise power spectral density for the configured bandwidth.
void SetRsrp(double value)
Set RSRP function.
bool m_downlinkInSync
when set, DL SINR evaluation for out-of-sync indications is conducted.
void SetDownlinkCqiPeriodicity(Time cqiPeriodicity)
Set the periodicty for the downlink periodic wideband and aperiodic subband CQI reporting.
void SetTxPower(double pow)
Set transmit power.
virtual void ReportDataInterference(const SpectrumValue &interf)
Create the mixed CQI report.
void DoSetRsrpFilterCoefficient(uint8_t rsrpFilterCoefficient)
Do set RSRP filter coefficient.
std::vector< std::vector< int > > m_subChannelsForTransmissionQueue
subchannels for transmission queue
void GenerateCqiRsrpRsrq(const SpectrumValue &sinr)
Get CQI, RSRP, and RSRQ.
virtual void ReportInterference(const SpectrumValue &interf)
generate a report based on the linear interference and noise power perceived during DATA frame NOTE: ...
void SubframeIndication(uint32_t frameNo, uint32_t subframeNo)
trigger from eNB the start from a new frame
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
bool m_ulConfigured
UL configured?
double m_txPower
Transmission power in dBm.
double m_sinrDbFrame
the average SINR per radio frame
void SetTxMode7Gain(double gain)
Set transmit mode 7 gain function.
uint8_t rsrpNum
Number of RSRP samples.
void DoSetTransmissionMode(uint8_t txMode)
Set transmission mode function.
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
Hold objects of type Ptr<T>.
uint64_t m_imsi
IMSI of the scheduled UE.
std::vector< std::list< Ptr< LteControlMessage > > > m_controlMessagesQueue
A queue of control messages to be sent.
uint32_t m_raPreambleId
RA preamble ID.
@ ATTR_GET
The attribute can be read.
uint8_t m_resAlloc
The type of resource allocation.
See section 4.3.24 cqiListElement.
void DoReset()
Do Reset function.
See section 4.3.1 dlDciListElement.
TimeWithUnit As(const enum Unit unit=Time::AUTO) const
Attach a unit to a Time, to facilitate output in a specific unit.
static Ptr< SpectrumValue > CreateNoisePowerSpectralDensity(uint32_t earfcn, uint16_t bandwidth, double noiseFigure)
create a SpectrumValue that models the power spectral density of AWGN
void SetRsrpFilterCoefficient(uint8_t rsrpFilterCoefficient)
Set RSRP function.
uint16_t m_srsSubframeOffset
SRS subframe offset.
Ptr< LteNetDevice > GetDevice() const
Get the device where the phy layer is attached.
uint16_t m_dlBandwidth
The DL bandwidth in number of PRBs.
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
uint16_t GetSrsPeriodicity(uint16_t srcCi) const
SpectrumValue m_rsInterferencePower
RS interference power.
uint8_t rsrqNum
Number of RSRQ samples.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
uint16_t m_numOfQinEvalSf
the downlink radio link quality is estimated over this period for detecting in-syncs
Ptr< LteNetDevice > m_netDevice
Pointer to the NetDevice where this PHY layer is attached.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
uint16_t m_rsrpSinrSamplePeriod
The RsrpSinrSamplePeriod attribute.
std::list< Ptr< LteControlMessage > > GetControlMessages(void)
void DoSetSrsConfigurationIndex(uint16_t srcCi)
Set SRS configuration index function.
uint8_t GetMacChDelay(void) const
Get MAC to Channel delay.
void SetCellId(uint16_t cellId)
Set the cell ID function.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
virtual void GenerateDataCqiReport(const SpectrumValue &sinr)
generate a CQI report based on the given SINR of Data frame (used for PUSCH CQIs)
Time m_a30CqiPeriodicity
SubBand Aperiodic CQI.
virtual void GenerateCtrlCqiReport(const SpectrumValue &sinr)
generate a CQI report based on the given SINR of Ctrl frame
virtual Ptr< SpectrumValue > CreateTxPowerSpectralDensity()
Create the PSD for the TX.
double GetPuschTxPower(std::vector< int > rb)
Get PUSCH transmit power function.
#define UL_PUSCH_TTIS_DELAY
TracedCallback< PhyTransmissionStatParameters > m_ulPhyTransmission
The UlPhyTransmission trace source.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
State m_state
The current UE PHY state.
void SetSubChannelsForTransmission(std::vector< int > mask)
Set a list of sub channels to use in TX.
Time m_p10CqiPeriodicity
Wideband Periodic CQI. 2, 5, 10, 16, 20, 32, 40, 64, 80 or 160 ms.
EventId m_sendSrsEvent
send SRS event
uint8_t m_macChTtiDelay
Delay between MAC and channel layer in terms of TTIs.
virtual void EnqueueDlHarqFeedback(DlInfoListElement_s mes)
Enqueue the downlink HARQ feedback generated by LteSpectrumPhy.
static const Time UL_DATA_DURATION
Duration of the data portion of a UL subframe.
uint8_t m_rv
the redundancy version (HARQ)
virtual void NotifyInSync()=0
Send an in sync indication to UE RRC.
uint16_t m_rsrpSinrSampleCounter
The RsrpSinrSampleCounter attribute.
This class defines all functions to create spectrum model for lte.
std::vector< uint16_t > m_tbsSize
The TBs size.
void SetTxMode5Gain(double gain)
Set transmit mode 5 gain function.
virtual void RecvSystemInformationBlockType1(uint16_t cellId, LteRrcSap::SystemInformationBlockType1 sib1)=0
Relay an SIB1 message from the PHY entity to the RRC layer.
void SetTxMode6Gain(double gain)
Set transmit mode 6 gain function.
See section 4.3.2 ulDciListElement.
Time NanoSeconds(uint64_t value)
Construct a Time in the indicated unit.
TracedCallback< uint16_t, const std::vector< int > & > m_reportUlPhyResourceBlocks
The ReportUlPhyResourceBlocks trace source.
std::vector< uint8_t > m_sbCqi
sb CQI
The LtePhy models the physical layer of LTE.
void SetTxPower(double value)
Set transmit power function.
virtual void ReceivePss(uint16_t cellId, Ptr< SpectrumValue > p)
Receive PSS function.
void SetLteUePhySapUser(LteUePhySapUser *s)
Set the PHY SAP User.
LteUePhySapUser * m_uePhySapUser
UE Phy SAP user.
LteUePhySapProvider * m_uePhySapProvider
UE Phy SAP provider.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
virtual void DoInitialize(void)
Initialize() implementation.
void SetHarqPhyModule(Ptr< LteHarqPhy > harq)
Set the HARQ PHY module.
std::vector< Ptr< PacketBurst > > m_packetBurstQueue
A queue of packet bursts to be sent.
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
SpectrumValue m_dataInterferencePower
data interference power
double GetTti(void) const
virtual void DoDispose(void)
Destructor implementation.
UeMeasurementsParameters structure.
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
The LteUeNetDevice class implements the UE net device.
virtual void SendRachPreamble(uint32_t prachId, uint32_t raRnti)
Send a preamble on the PRACH.
void DoSetRnti(uint16_t rnti)
Set RNTI function.
void DoConfigureUplink(uint32_t ulEarfcn, uint16_t ulBandwidth)
Configure UL uplink function.
Ptr< const AttributeChecker > MakeBooleanChecker(void)
virtual void GenerateMixedCqiReport(const SpectrumValue &sinr)
Create the mixed CQI report.
void RlfDetection(double sinrdB)
Radio link failure detection function.
double GetTxPower() const
Get transmit power.
Set of values corresponding to a given SpectrumModel.
std::vector< int > GetSubChannelsForReception(void)
Get a list of sub channels to use in RX.
uint8_t m_componentCarrierId
component carrier Id used to address sap
Simulation virtual time values and global simulation resolution.
uint64_t m_imsi
the IMSI of the UE
void DoSetPa(double pa)
Set PA function.
static const Time UL_SRS_DELAY_FROM_SUBFRAME_START
Delay from subframe start to transmission of SRS.
void ReportTpc(uint8_t tpc)
Set RSRP function.
uint32_t m_raRnti
RA RNTI.
Ptr< LteSpectrumPhy > m_downlinkSpectrumPhy
The downlink LteSpectrumPhy associated to this LtePhy.
uint16_t GetSrsSubframeOffset(uint16_t srcCi) const
struct SbMeasResult_s m_sbMeasResult
sb measure result
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
void InitializeRlfParams()
Initialize radio link failure parameters.
virtual void ReceiveLteControlMessageList(std::list< Ptr< LteControlMessage > > msgList)
Receive LTE control message list function.
UeMemberLteUePhySapProvider(LteUePhy *phy)
Constructor.
static Ptr< SpectrumValue > CreateUlTxPowerSpectralDensity(uint16_t earfcn, uint16_t bandwidth, double powerTx, std::vector< int > activeRbs)
create a spectrum value representing the uplink power spectral density of a signal to be transmitted.
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
bool m_enableRlfDetection
Flag to enable/disable RLF detection.
virtual void NotifyOutOfSync()=0
Send an out of sync indication to UE RRC.
void SwitchToState(State s)
Switch the UE PHY to the given state.
uint8_t m_mcs
MCS for transport block.
virtual void DoInitialize(void)
Initialize() implementation.
std::vector< HarqProcessInfoElement_t > HarqProcessInfoList_t
HarqProcessInfoList_t typedef.
void DoDispose()
Destructor implementation.
uint16_t m_size
Size of transport block.
Time m_a30CqiLast
last aperiodic CQI
uint16_t m_cellId
Cell ID of the attached Enb.
uint8_t m_rbgSize
The RB group size according to the bandwidth.
virtual void SendLteControlMessage(Ptr< LteControlMessage > msg)
Send SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel.
bool m_pssReceived
PSS received?
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
static const int Type0AllocationRbg[4]
Type 0 RGB allocation.
std::vector< struct HigherLayerSelected_s > m_higherLayerSelected
higher layer selected
Service Access Point (SAP) offered by the UE-PHY to the UE-MAC.
std::vector< uint8_t > m_wbCqi
wb CQI
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
void QueueSubChannelsForTransmission(std::vector< int > rbMap)
Queue subchannels for transmission function.
int64_t GetMilliSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
uint16_t m_ulBandwidth
The UL bandwidth in number of PRBs.
uint16_t m_srsConfigured
SRS configured.
void SetTxMode1Gain(double gain)
Set transmit mode 1 gain function.
double rsrpSum
Sum of RSRP sample values in linear unit.
TracedCallback< uint16_t, uint16_t, double, double, uint8_t > m_reportCurrentCellRsrpSinrTrace
The ReportCurrentCellRsrpSinr trace source.
TracedCallback< uint16_t, uint16_t, double, double, bool, uint8_t > m_reportUeMeasurements
The ReportUeMeasurements trace source.
uint8_t m_transmissionMode
the transmission mode
See section 4.3.25 sbMeasResult.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
std::vector< uint8_t > m_mcs
MCS.
double m_noiseFigure
Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver.
void DoSetDlBandwidth(uint16_t dlBandwidth)
Set DL bandwidth function.
bool m_rsInterferencePowerUpdated
RS interference power updated?
std::map< uint16_t, UeMeasurementsElement > m_ueMeasurementsMap
Store measurement results during the last layer-1 filtering period.
void DoResetRlfParams()
Reset radio link failure parameters.
Ptr< LteSpectrumPhy > GetDlSpectrumPhy() const
Get Downlink spectrum phy.
Time Seconds(double value)
Construct a Time in the indicated unit.
std::vector< int > GetSubChannelsForTransmission(void)
Get a list of sub channels to use in RX.
virtual void ResetSyncIndicationCounter()=0
Reset the sync indication counter.
uint8_t m_layer
the layer (cw) of the transmission
uint16_t m_cellId
Cell identifier.
Summary results of measuring a specific cell. Used for layer-1 filtering.
Parameters of the ReportUeMeasurements primitive: RSRP [dBm] and RSRQ [dB] See section 5....
std::vector< int > m_subChannelsForReception
A list of sub channels to use in RX.
void SetNumQoutEvalSf(uint16_t numSubframes)
Set number of Qout evaluation subframes.
void DoStartInSnycDetection()
Start in Snyc detection function.
AttributeValue implementation for Time.
std::vector< double > m_txModeGain
the transmit mode gain
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
void DoSynchronizeWithEnb(uint16_t cellId)
Synchronize with ENB function.
State
The states of the UE PHY entity.
Time m_p10CqiLast
last periodic CQI
uint16_t m_numOfQoutEvalSf
the downlink radio link quality is estimated over this period for detecting out-of-syncs
uint8_t m_ndi
new data indicator flag
void SetMacPdu(Ptr< Packet > p)
bool m_dlConfigured
DL configured?
void SetNumQinEvalSf(uint16_t numSubframes)
Set number of Qin evaluation subframes.
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 ...
uint16_t m_rnti
C-RNTI scheduled.
bool m_rsReceivedPowerUpdated
RS receive power updated?
std::vector< struct UeMeasurementsElement > m_ueMeasurementsList
UE measurement list.
Ptr< DlCqiLteControlMessage > CreateDlCqiFeedbackMessage(const SpectrumValue &sinr)
Create the DL CQI feedback from SINR values perceived at the physical layer with the signal received ...
Hold an unsigned integer type.
uint8_t m_tpc
Tx power control command.
uint32_t m_ulEarfcn
The uplink carrier frequency.
Ptr< LteUePowerControl > GetUplinkPowerControl() const
Get Uplink power control.
double ComputeAvgSinr(const SpectrumValue &sinr)
Compute average SINR among the RBs.
void SetLteUeCphySapUser(LteUeCphySapUser *s)
Set the CPHY SAP User.
TracedCallback< uint16_t, uint16_t, State, State > m_stateTransitionTrace
The StateTransition trace source.
int64_t m_timestamp
in millisecond
double rsrqSum
Sum of RSRQ sample values in linear unit.
void PhyPduReceived(Ptr< Packet > p)
PhySpectrum received a new PHY-PDU.
double GetPucchTxPower(std::vector< int > rb)
Get PUCCH transmit power function.
LteUeCphySapProvider * m_ueCphySapProvider
UE CPhy SAP provider.
PhyTransmissionStatParameters structure.
double m_qOut
The 'Qout' attribute.
void SetTxModeGain(uint8_t txMode, double gain)
Set transmit mode gain function.
See section 4.3.23 dlInfoListElement.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
void SetNoiseFigure(double nf)
Set noise figure.
double pssPsdSum
PSS PSD sum.
virtual void SubframeIndication(uint32_t frameNo, uint32_t subframeNo)=0
Trigger the start from a new frame (input from Phy layer)
LteUePhySapProvider * GetLteUePhySapProvider()
Get the PHY SAP provider.
static uint8_t TxMode2LayerNum(uint8_t txMode)
Transmit mode 2 layer number.
uint32_t m_rbBitmap
RB bitmap.
Service Access Point (SAP) offered by the PHY to the MAC.
uint16_t m_numOfSubframes
count the number of subframes for which the downlink radio link quality is estimated
virtual void DoNotifyConnectionSuccessful()
Notify PHY about the successful RRC connection establishment.
std::vector< uint8_t > m_ndi
New data indicator.
double m_paLinear
PA linear.
double m_pssReceptionThreshold
The RsrqUeMeasThreshold attribute.
virtual void ReceivePhyPdu(Ptr< Packet > p)=0
Receive Phy Pdu funtion.
virtual void DoSendMacPdu(Ptr< Packet > p)
Queue the MAC PDU to be sent (according to m_macChTtiDelay)
std::vector< int > m_subChannelsForTransmission
A list of sub channels to use in TX.
void SetControlMessages(Ptr< LteControlMessage > m)
UeMemberLteUePhySapProvider class.
void SetSubChannelsForReception(std::vector< int > mask)
Get a list of sub channels to use in RX.
std::vector< uint8_t > m_rv
Redundancy version.
Ptr< LteSpectrumPhy > GetUlSpectrumPhy() const
Get Uplink spectrum phy.
Values::const_iterator ConstValuesBegin() const
std::list< PssElement > m_pssList
PSS list.
void SetTxMode4Gain(double gain)
Set transmit mode 4 gain function.
void SetTxMode2Gain(double gain)
Set transmit mode 2 gain function.
virtual void ReceiveLteControlMessage(Ptr< LteControlMessage > msg)=0
Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel.
Ptr< LteHarqPhy > m_harqPhyModule
HARQ phy module.
uint16_t m_numOfFrames
count the number of frames for which the downlink radio link quality is estimated
double m_qIn
The 'Qin' attribute.
uint16_t m_srsPeriodicity
SRS periodicity.
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Time m_ueMeasurementsFilterPeriod
The UeMeasurementsFilterPeriod attribute.
static const std::string g_uePhyStateName[LteUePhy::NUM_STATES]
Map each of UE PHY states to its string representation.
double GetSrsTxPower(std::vector< int > rb)
Get SRS transmit power function.
Ptr< PacketBurst > GetPacketBurst(void)
bool m_enableUplinkPowerControl
The EnableUplinkPowerControl attribute.
uint8_t m_harqProcess
HARQ process.
bool m_dataInterferencePowerUpdated
data interference power updated?
void DoSetImsi(uint64_t imsi)
Set IMSI.
virtual void DoSendRachPreamble(uint32_t prachId, uint32_t raRnti)
Send RACH preamble function.
friend class MemberLteUeCphySapProvider< LteUePhy >
allow MemberLteUeCphySapProvider<LteUePhy> class friend access