22 #include <ns3/object-factory.h>
26 #include <ns3/simulator.h>
27 #include <ns3/attribute-accessor-helper.h>
28 #include <ns3/double.h>
39 #include <ns3/lte-common.h>
40 #include <ns3/lte-vendor-specific-parameters.h>
43 #include <ns3/node-list.h>
45 #include <ns3/lte-ue-net-device.h>
46 #include <ns3/pointer.h>
94 virtual void SetBandwidth (uint16_t ulBandwidth, uint16_t dlBandwidth);
100 virtual void SetCellId (uint16_t cellId);
155 m_enbCphySapUser (0),
158 m_srsPeriodicity (0),
160 m_currentSrsOffset (0),
161 m_interferenceSampleCounter (0)
175 .SetGroupName (
"Lte")
177 .AddAttribute (
"TxPower",
178 "Transmission power in dBm",
182 MakeDoubleChecker<double> ())
183 .AddAttribute (
"NoiseFigure",
184 "Loss (dB) in the Signal-to-Noise-Ratio due to "
185 "non-idealities in the receiver. According to Wikipedia "
186 "(http://en.wikipedia.org/wiki/Noise_figure), this is "
187 "\"the difference in decibels (dB) between"
188 " the noise output of the actual receiver to "
189 "the noise output of an ideal receiver with "
190 "the same overall gain and bandwidth when the receivers "
191 "are connected to sources at the standard noise "
192 "temperature T0.\" In this model, we consider T0 = 290K.",
196 MakeDoubleChecker<double> ())
197 .AddAttribute (
"MacToChannelDelay",
198 "The delay in TTI units that occurs between "
199 "a scheduling decision in the MAC and the actual "
200 "start of the transmission by the PHY. This is "
201 "intended to be used to model the latency of real PHY "
202 "and MAC implementations.",
206 MakeUintegerChecker<uint8_t> ())
207 .AddTraceSource (
"ReportUeSinr",
208 "Report UEs' averaged linear SINR",
210 "ns3::LteEnbPhy::ReportUeSinrTracedCallback")
211 .AddAttribute (
"UeSinrSamplePeriod",
212 "The sampling period for reporting UEs' SINR stats.",
215 MakeUintegerChecker<uint16_t> ())
216 .AddTraceSource (
"ReportInterference",
217 "Report linear interference power per PHY RB",
219 "ns3::LteEnbPhy::ReportInterferenceTracedCallback")
220 .AddAttribute (
"InterferenceSamplePeriod",
221 "The sampling period for reporting interference stats",
224 MakeUintegerChecker<uint16_t> ())
225 .AddTraceSource (
"DlPhyTransmission",
226 "DL transmission PHY layer statistics.",
228 "ns3::PhyTransmissionStatParameters::TracedCallback")
229 .AddAttribute (
"DlSpectrumPhy",
230 "The downlink LteSpectrumPhy associated to this LtePhy",
234 MakePointerChecker <LteSpectrumPhy> ())
235 .AddAttribute (
"UlSpectrumPhy",
236 "The uplink LteSpectrumPhy associated to this LtePhy",
240 MakePointerChecker <LteSpectrumPhy> ())
267 NS_ABORT_MSG_IF (node ==
nullptr,
"Node is not available in the LteNetDevice of LteEnbPhy");
268 uint32_t nodeId = node->
GetId ();
351 std::list<Ptr<LteControlMessage> > l;
353 std::list<UlDciLteControlMessage> l1;
358 std::list<UlDciLteControlMessage> l1;
385 std::set <uint16_t>::iterator it;
403 std::set <uint16_t>::iterator it;
471 std::map<uint16_t, double>::iterator it =
m_paMap.find (rnti);
530 std::list<Ptr<LteControlMessage> >::iterator it;
531 for (it = msgList.begin (); it != msgList.end (); it++)
533 switch ((*it)->GetMessageType ())
595 mibMsg->SetMib (
m_mib);
634 std::list<UlDciLteControlMessage> uldcilist =
DequeueUlDci ();
635 std::list<UlDciLteControlMessage>::iterator dciIt = uldcilist.begin ();
636 NS_LOG_DEBUG (
this <<
" eNB Expected TBs " << uldcilist.size ());
637 for (dciIt = uldcilist.begin (); dciIt != uldcilist.end (); dciIt++)
639 std::set <uint16_t>::iterator it2;
650 std::vector <int> rbMap;
651 for (
int i = (*dciIt).GetDci ().m_rbStart; i < (*dciIt).GetDci ().m_rbStart + (*dciIt).GetDci ().m_rbLen; i++)
655 m_uplinkSpectrumPhy->AddExpectedTb ((*dciIt).GetDci ().m_rnti, (*dciIt).GetDci ().m_ndi, (*dciIt).GetDci ().m_tbSize, (*dciIt).GetDci ().m_mcs, rbMap, 0 , 0 , 0 ,
false );
656 if ((*dciIt).GetDci ().m_ndi == 1)
658 NS_LOG_DEBUG (
this <<
" RNTI " << (*dciIt).GetDci ().m_rnti <<
" NEW TB");
662 NS_LOG_DEBUG (
this <<
" RNTI " << (*dciIt).GetDci ().m_rnti <<
" HARQ RETX");
671 if (ctrlMsg.size () > 0)
673 std::list<Ptr<LteControlMessage> >::iterator it;
674 it = ctrlMsg.begin ();
675 while (it != ctrlMsg.end ())
684 for (
int i = 0; i < 32; i++)
686 if (((dci->GetDci ().m_rbBitmap & mask) >> i) == 1)
698 for (uint8_t i = 0; i < dci->GetDci ().m_mcs.size (); i++)
704 params.
m_rnti = dci->GetDci ().m_rnti;
707 params.
m_mcs = dci->GetDci ().m_mcs.at (i);
708 params.
m_size = dci->GetDci ().m_tbsSize.at (i);
709 params.
m_rv = dci->GetDci ().m_rv.at (i);
710 params.
m_ndi = dci->GetDci ().m_ndi.at (i);
724 for (std::list<RarLteControlMessage::Rar>::const_iterator it = rarMsg->RarListBegin (); it != rarMsg->RarListEnd (); ++it)
726 if (it->rarPayload.m_grant.m_ulDelay ==
true)
730 UlGrant_s ulGrant = it->rarPayload.m_grant;
777 std::vector <int> dlRb;
800 std::list<Ptr<LteControlMessage> > ctrlMsgList;
801 ctrlMsgList.clear ();
874 Values::const_iterator it;
880 double sinrdb = 10 * std::log10 ((*it));
895 NS_LOG_FUNCTION (
this << (uint32_t) ulBandwidth << (uint32_t) dlBandwidth);
905 for (
int i = 0; i < 4; i++)
945 std::map<uint16_t, double>::iterator it =
m_paMap.find (rnti);
964 std::list<Ptr<LteControlMessage> >::iterator ctrlMsgListIt = ctrlMessageList.begin ();
965 while (ctrlMsgListIt != ctrlMessageList.end ())
970 auto dci = DynamicCast<DlDciLteControlMessage> (msg);
971 if (dci->GetDci ().m_rnti == rnti)
974 <<
m_cellId <<
" to RNTI : " << rnti <<
" is deleted");
975 ctrlMsgListIt = ctrlMessageList.erase (ctrlMsgListIt);
984 auto dci = DynamicCast<UlDciLteControlMessage> (msg);
985 if (dci->GetDci ().m_rnti == rnti)
988 <<
m_cellId <<
" to RNTI : " << rnti <<
" is deleted");
989 ctrlMsgListIt = ctrlMessageList.erase (ctrlMsgListIt);
1010 std::map<uint16_t, double>::iterator it =
m_paMap.find (rnti);
1014 m_paMap.insert (std::pair<uint16_t, double> (rnti, pa));
1027 Values::const_iterator it;
1031 double srsSum = 0.0;
1034 double sinrdb = 10 * log10 ((*it));
1052 (i > 0) ? (srsSum / i) : DBL_MAX);
1091 std::list<UlDciLteControlMessage>
1097 std::list<UlDciLteControlMessage> ret =
m_ulDciQueue.at (0);
1099 std::list<UlDciLteControlMessage> l;
1106 std::list<UlDciLteControlMessage> l;
1108 std::list<UlDciLteControlMessage> emptylist;
1132 std::map <uint16_t,uint16_t>::iterator it =
m_srsCounter.find (rnti);
This class can be used to hold variables of floating point type such as 'double' or 'float'.
EnbMemberLteEnbPhySapProvider(LteEnbPhy *phy)
Constructor.
virtual void SetBandwidth(uint16_t ulBandwidth, uint16_t dlBandwidth)
Set bandwidth function.
LteEnbPhy * m_phy
the ENB Phy
virtual void SendMacPdu(Ptr< Packet > p)
Send the MAC PDU to the channel.
virtual uint8_t GetMacChTtiDelay()
Get the delay from MAC to Channel expressed in TTIs.
virtual void SetCellId(uint16_t cellId)
Set Cell ID function.
virtual void SendLteControlMessage(Ptr< LteControlMessage > msg)
Send SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel.
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
LteEnbPhy models the physical layer for the eNodeB.
uint16_t m_srsPeriodicity
SRS periodicity.
double GetTxPower() const
Time m_srsStartTime
SRS start time.
int8_t DoGetReferenceSignalPower() const
void CreateSrsReport(uint16_t rnti, double srs)
Create SRS report function.
uint16_t m_interferenceSamplePeriod
The InterferenceSamplePeriod attribute.
virtual void ReportUlHarqFeedback(UlInfoListElement_s mes)
Report the uplink HARQ feedback generated by LteSpectrumPhy to MAC.
virtual void DoDispose(void)
Destructor implementation.
uint16_t m_srsSamplePeriod
The UeSinrSamplePeriod trace source.
void SetLteEnbCphySapUser(LteEnbCphySapUser *s)
Set the CPHY SAP User.
FfMacSchedSapProvider::SchedUlCqiInfoReqParameters CreatePuschCqiReport(const SpectrumValue &sinr)
Create the UL CQI feedback from SINR values perceived at the physical layer with the PUSCH signal rec...
uint32_t m_nrSubFrames
The subframe number currently served.
std::set< uint16_t > m_ueAttached
List of RNTI of attached UEs.
LteEnbPhySapProvider * GetLteEnbPhySapProvider()
Get the PHY SAP provider.
void SetLteEnbPhySapUser(LteEnbPhySapUser *s)
Set the PHY SAP User.
uint8_t GetMacChDelay(void) const
void DoSetMasterInformationBlock(LteRrcSap::MasterInformationBlock mib)
Set master information block.
bool DeleteUePhy(uint16_t rnti)
Remove the given RNTI from the list of attached UE m_ueAttached.
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 ...
double GetNoiseFigure() const
void SetTxPower(double pow)
std::vector< int > m_dlDataRbMap
DL data RB map.
virtual void DoInitialize(void)
Initialize() implementation.
virtual void ReportInterference(const SpectrumValue &interf)
generate a report based on the linear interference and noise power perceived during DATA frame NOTE: ...
TracedCallback< uint16_t, uint16_t, double, uint8_t > m_reportUeSinr
The ReportUeSinr trace source.
Ptr< LteSpectrumPhy > GetDlSpectrumPhy() const
void SendDataChannels(Ptr< PacketBurst > pb)
Send the PDSCH.
virtual void GenerateDataCqiReport(const SpectrumValue &sinr)
generate a CQI report based on the given SINR of Data frame (used for PUSCH CQIs)
void DoSetSrsConfigurationIndex(uint16_t rnti, uint16_t srcCi)
Set source configuration index.
std::list< UlDciLteControlMessage > DequeueUlDci(void)
std::vector< std::list< UlDciLteControlMessage > > m_ulDciQueue
For storing info on future receptions.
void PhyPduReceived(Ptr< Packet > p)
PhySpectrum received a new PHY-PDU.
FfMacSchedSapProvider::SchedUlCqiInfoReqParameters CreateSrsCqiReport(const SpectrumValue &sinr)
Create the UL CQI feedback from SINR values perceived at the physical layer with the SRS signal recei...
LteEnbPhySapUser * m_enbPhySapUser
ENB Phy SAP user.
void CalcChannelQualityForUe(std::vector< double > sinr, Ptr< LteSpectrumPhy > ue)
Calculate the channel quality for a given UE.
void DoSetPa(uint16_t rnti, double pa)
Set PA.
uint16_t m_currentSrsOffset
current SRS offset
void DoSetEarfcn(uint32_t dlEarfcn, uint32_t ulEarfcn)
Set EARFCN.
void DoSetTransmissionMode(uint16_t rnti, uint8_t txMode)
Set transmission mode.
LteEnbPhySapProvider * m_enbPhySapProvider
ENB Phy SAP provider.
uint8_t DoGetMacChTtiDelay()
Get MAC ch TTI delay function.
std::map< int, double > m_dlPowerAllocationMap
DL power allocation map.
void StartFrame(void)
Start a LTE frame.
std::vector< int > m_listOfDownlinkSubchannel
A vector of integers, if the i-th value is j it means that the j-th resource block is used for transm...
void GeneratePowerAllocationMap(uint16_t rnti, int rbId)
Generate power allocation map (i.e.
void QueueUlDci(UlDciLteControlMessage m)
void SetNoiseFigure(double pow)
void SetMacChDelay(uint8_t delay)
void SetHarqPhyModule(Ptr< LteHarqPhy > harq)
Set the HARQ Phy module.
std::vector< int > GetDownlinkSubChannels(void)
virtual void ReceiveLteControlMessageList(std::list< Ptr< LteControlMessage > > msgList)
PhySpectrum received a new list of LteControlMessage.
void SendControlChannels(std::list< Ptr< LteControlMessage > > ctrlMsgList)
Send the PDCCH and PCFICH in the first 3 symbols.
std::map< uint16_t, double > m_paMap
P_A per UE RNTI.
void DoRemoveUe(uint16_t rnti)
Remove UE.
void SetDownlinkSubChannelsWithPowerAllocation(std::vector< int > mask)
set the resource blocks (a.k.a.
LteRrcSap::MasterInformationBlock m_mib
The Master Information Block message to be broadcasted every frame.
std::map< uint16_t, uint16_t > m_srsSampleCounterMap
SRS sample counter map.
TracedCallback< uint16_t, Ptr< SpectrumValue > > m_reportInterferenceTrace
The ReportInterference trace source.
Ptr< LteSpectrumPhy > GetUlSpectrumPhy() const
void DoAddUe(uint16_t rnti)
Add UE.
void StartSubFrame(void)
Start a LTE sub frame.
friend class EnbMemberLteEnbPhySapProvider
allow EnbMemberLteEnbPhySapProvider class friend access
void DoSetSystemInformationBlockType1(LteRrcSap::SystemInformationBlockType1 sib1)
Set system information block.
virtual Ptr< SpectrumValue > CreateTxPowerSpectralDensity()
Create the PSD for TX.
void DoSendLteControlMessage(Ptr< LteControlMessage > msg)
Send LTE Control Message function.
virtual Ptr< SpectrumValue > CreateTxPowerSpectralDensityWithPowerAllocation()
Create the PSD for TX with power allocation for each RB.
bool AddUePhy(uint16_t rnti)
Add the given RNTI to the list of attached UE m_ueAttached.
virtual void GenerateCtrlCqiReport(const SpectrumValue &sinr)
generate a CQI report based on the given SINR of Ctrl frame
static TypeId GetTypeId(void)
Get the type ID.
void EndSubFrame(void)
End a LTE sub frame.
LteRrcSap::SystemInformationBlockType1 m_sib1
The System Information Block Type 1 message to be broadcasted.
void DoSetBandwidth(uint16_t ulBandwidth, uint16_t dlBandwidth)
Set bandwidth function.
void EndFrame(void)
End a LTE frame.
LteEnbCphySapUser * m_enbCphySapUser
ENB CPhy SAP user.
uint16_t m_interferenceSampleCounter
interference sample counter
void SetDownlinkSubChannels(std::vector< int > mask)
set the resource blocks (a.k.a.
virtual void ReceiveLteControlMessage(Ptr< LteControlMessage > msg)
Receive the control message.
void DoSendMacPdu(Ptr< Packet > p)
Queue the MAC PDU to be sent (according to m_macChTtiDelay)
uint32_t m_nrFrames
The frame number currently served.
LteEnbCphySapProvider * m_enbCphySapProvider
ENB CPhy SAP provider.
std::vector< uint16_t > m_srsUeOffset
SRS UE offset.
LteEnbCphySapProvider * GetLteEnbCphySapProvider()
Get the CPHY SAP provider.
TracedCallback< PhyTransmissionStatParameters > m_dlPhyTransmission
The DlPhyTransmission trace source.
Ptr< LteHarqPhy > m_harqPhyModule
HARQ Phy module.
std::map< uint16_t, uint16_t > m_srsCounter
SRS counter.
friend class MemberLteEnbCphySapProvider< LteEnbPhy >
allow MemberLteEnbCphySapProvider<LteEnbPhy> class friend access
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC.
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC.
virtual void ReceivePhyPdu(Ptr< Packet > p)=0
Called by the Phy to notify the MAC of the reception of a new PHY-PDU.
virtual void UlInfoListElementHarqFeeback(UlInfoListElement_s params)=0
Notify the HARQ on the UL tranmission status.
virtual void UlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)=0
Returns to MAC level the UL-CQI evaluated.
virtual void ReceiveLteControlMessage(Ptr< LteControlMessage > msg)=0
Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel.
virtual void ReceiveRachPreamble(uint32_t prachId)=0
notify the reception of a RACH preamble on the PRACH
virtual void SubframeIndication(uint32_t frameNo, uint32_t subframeNo)=0
Trigger the start from a new frame (input from Phy layer)
static uint16_t double2fpS11dot3(double val)
Convert from double to fixed point S11.3 notation.
The LtePhy models the physical layer of LTE.
void DoSetCellId(uint16_t cellId)
double m_txPower
Transmission power in dBm.
void DoDispose()
Destructor implementation.
uint8_t GetRbgSize(void) const
uint16_t GetSrsPeriodicity(uint16_t srcCi) const
std::vector< Ptr< PacketBurst > > m_packetBurstQueue
A queue of packet bursts to be sent.
uint16_t m_ulBandwidth
The UL bandwidth in number of PRBs.
Ptr< PacketBurst > GetPacketBurst(void)
uint8_t m_componentCarrierId
component carrier Id used to address sap
double m_noiseFigure
Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver.
uint32_t m_ulEarfcn
The uplink carrier frequency.
uint16_t m_dlBandwidth
The DL bandwidth in number of PRBs.
Ptr< LteSpectrumPhy > m_downlinkSpectrumPhy
The downlink LteSpectrumPhy associated to this LtePhy.
void SetMacPdu(Ptr< Packet > p)
uint16_t GetSrsSubframeOffset(uint16_t srcCi) const
Ptr< LteNetDevice > m_netDevice
Pointer to the NetDevice where this PHY layer is attached.
std::vector< std::list< Ptr< LteControlMessage > > > m_controlMessagesQueue
A queue of control messages to be sent.
uint16_t m_cellId
Cell identifier.
void SetControlMessages(Ptr< LteControlMessage > m)
std::list< Ptr< LteControlMessage > > GetControlMessages(void)
uint32_t m_dlEarfcn
The downlink carrier frequency.
Ptr< LteSpectrumPhy > m_uplinkSpectrumPhy
The uplink LteSpectrumPhy associated to this LtePhy.
double GetTti(void) const
uint8_t m_rbgSize
The RB group size according to the bandwidth.
uint8_t m_macChTtiDelay
Delay between MAC and channel layer in terms of TTIs.
static Ptr< SpectrumValue > CreateNoisePowerSpectralDensity(uint32_t earfcn, uint16_t bandwidth, double noiseFigure)
create a SpectrumValue that models the power spectral density of AWGN
static Ptr< SpectrumValue > CreateTxPowerSpectralDensity(uint32_t earfcn, uint16_t bandwidth, double powerTx, std::vector< int > activeRbs)
create a spectrum value representing the power spectral density of a signal to be transmitted.
uint32_t GetId(void) const
virtual void DoInitialize(void)
Initialize() implementation.
Hold objects of type Ptr<T>.
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
static void ScheduleWithContext(uint32_t context, Time const &delay, FUNC f, Ts &&... args)
Schedule an event with the given context.
static EventId ScheduleNow(FUNC f, Ts &&... args)
Schedule an event to expire Now.
static Time Now(void)
Return the current simulation virtual time.
Set of values corresponding to a given SpectrumModel.
Values::const_iterator ConstValuesBegin() const
Values::const_iterator ConstValuesEnd() const
Define the RNTI that has generated the.
Simulation virtual time values and global simulation resolution.
int64_t GetMilliSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
a unique identifier for an interface.
@ ATTR_GET
The attribute can be read.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Hold an unsigned integer type.
The Uplink Data Control Indicator messages defines the RB allocation for the users in the uplink.
void SetDci(UlDciListElement_s dci)
add a DCI into the message
#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.
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Time NanoSeconds(uint64_t value)
Construct a Time in the indicated unit.
Time Seconds(double value)
Construct a Time in the indicated unit.
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
#define UL_PUSCH_TTIS_DELAY
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static const Time DL_CTRL_DELAY_FROM_SUBFRAME_START
Delay from the start of a DL subframe to transmission of the data portion.
static const Time DL_DATA_DURATION
Duration of the data portion of a DL subframe.
static const int Type0AllocationRbg[4]
Type 0 RGB allocation.
See section 4.3.24 cqiListElement.
See section 4.3.23 dlInfoListElement.
Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
struct UlCqi_s m_ulCqi
UL CQI.
See section 4.3.14 macCEListElement.
PhyTransmissionStatParameters structure.
uint8_t m_ndi
new data indicator flag
int64_t m_timestamp
in millisecond
uint8_t m_layer
the layer (cw) of the transmission
uint16_t m_size
Size of transport block.
uint64_t m_imsi
IMSI of the scheduled UE.
uint16_t m_rnti
C-RNTI scheduled.
uint8_t m_txMode
the transmission Mode
uint8_t m_rv
the redundancy version (HARQ)
uint16_t m_cellId
Cell ID of the attached Enb.
uint8_t m_ccId
component carrier id
uint8_t m_mcs
MCS for transport block.
std::vector< uint16_t > m_sinr
SINR.
See section 4.3.2 ulDciListElement.
int8_t m_tpc
Tx power control command.
bool m_cqiRequest
CQI request.
Substitutive structure for specifying BuildRarListElement_s::m_grant field.
int8_t m_tpc
Tx power control command.
bool m_cqiRequest
CQI request?
See section 4.3.12 ulInfoListElement.
See section 4.3.3 vendorSpecifiListElement.
Ptr< VendorSpecificValue > m_value
value