22#include "ns3/packet.h"
23#include "ns3/pointer.h"
24#include "ns3/simulator.h"
49 void ConfigureMac(uint16_t ulBandwidth, uint16_t dlBandwidth)
override;
50 void AddUe(uint16_t rnti)
override;
51 void RemoveUe(uint16_t rnti)
override;
54 void ReleaseLc(uint16_t rnti, uint8_t lcid)
override;
312 .AddAttribute(
"NumberOfRaPreambles",
313 "how many random access preambles are available for the contention based "
318 .AddAttribute(
"PreambleTransMax",
319 "Maximum number of random access preamble transmissions",
323 .AddAttribute(
"RaResponseWindowSize",
324 "length of the window (in TTIs) for the reception of the random access "
325 "response (RAR); the resulting RAR timeout is this value + 3 ms",
329 .AddAttribute(
"ConnEstFailCount",
330 "how many time T300 timer can expire on the same cell",
334 .AddTraceSource(
"DlScheduling",
335 "Information regarding DL scheduling.",
337 "ns3::LteEnbMac::DlSchedulingTracedCallback")
338 .AddTraceSource(
"UlScheduling",
339 "Information regarding UL scheduling.",
341 "ns3::LteEnbMac::UlSchedulingTracedCallback")
342 .AddAttribute(
"ComponentCarrierId",
343 "ComponentCarrier Id, needed to reply on the appropriate sap.",
352 : m_ccmMacSapUser(nullptr)
467 NS_LOG_FUNCTION(
this <<
" EnbMac - frame " << frameNo <<
" subframe " << subframeNo);
490 NS_ASSERT(subframeNo > 0 && subframeNo <= 10);
509 rnti =
jt->second.rnti;
510 NS_LOG_INFO(
"preambleId previously allocated for NC based RA, RNTI ="
511 << (
uint32_t)rnti <<
", sending RAR");
521 NS_LOG_INFO(
"UE context not created, no RAR to send");
525 << (
uint32_t)rnti <<
", sending RAR");
530 rachLe.m_estimatedSize = 144;
570 m_ulCqiReceived.at(
i).m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & (subframeNo - 1));
574 m_ulCqiReceived.at(
i).m_sfnSf = ((0x3FF & (frameNo - 1)) << 4) | (0xF & 10);
641 NS_LOG_LOGIC(
this <<
" LteControlMessage type " <<
msg->GetMessageType()
642 <<
" not recognized");
702 p->RemovePacketTag(
tag);
736 uint16_t rnti =
tag.GetRnti();
737 uint8_t lcid =
tag.GetLcid();
762 NS_LOG_FUNCTION(
this <<
" ulBandwidth=" << ulBandwidth <<
" dlBandwidth=" << dlBandwidth);
765 params.m_ulBandwidth = ulBandwidth;
766 params.m_dlBandwidth = dlBandwidth;
776 std::map<uint8_t, LteMacSapUser*> empty;
778 m_rlcAttached.insert(std::pair<uint16_t, std::map<uint8_t, LteMacSapUser*>>(rnti, empty));
782 params.m_rnti = rnti;
783 params.m_transmissionMode =
791 for (uint8_t
i = 0;
i < 8;
i++)
798 for (uint8_t
i = 0;
i < 8;
i++)
814 params.m_rnti = rnti;
819 NS_LOG_DEBUG(
"start checking for unprocessed preamble for rnti: " << rnti);
824 if (
jt->second.rnti == rnti)
865 rntiIt->second.insert(std::pair<uint8_t, LteMacSapUser*>(
lcinfo.lcId, msu));
879 params.m_rnti =
lcinfo.rnti;
880 params.m_reconfigureFlag =
false;
891 lccle.m_qosBearerType =
894 params.m_logicalChannelConfigList.push_back(
lccle);
913 rntiIt->second.erase(lcid);
916 params.m_rnti = rnti;
917 params.m_logicalChannelIdentity.push_back(lcid);
929 req.m_transmissionMode = params.m_transmissionMode;
930 req.m_reconfigureFlag =
true;
981 preambleInfo.
rnti = rnti;
982 NS_LOG_INFO(
"allocated preamble for NC based RA: preamble "
995 ret.raPrachMaskIndex = 0;
1000 ret.raPreambleId = 0;
1001 ret.raPrachMaskIndex = 0;
1015 params.pdu->AddPacketTag(
tag);
1020 NS_LOG_DEBUG(
this <<
" LAYER " << (uint16_t)
tag.GetLayer() <<
" HARQ ID "
1021 << (uint16_t)params.harqProcessId);
1024 (*it).second.at(params.layer).at(params.harqProcessId)->AddPacket(params.pdu);
1034 req.m_logicalChannelIdentity = params.lcid;
1035 req.m_rlcTransmissionQueueSize = params.txQueueSize;
1036 req.m_rlcTransmissionQueueHolDelay = params.txQueueHolDelay;
1037 req.m_rlcRetransmissionQueueSize = params.retxQueueSize;
1038 req.m_rlcRetransmissionHolDelay = params.retxQueueHolDelay;
1039 req.m_rlcStatusPduSize = params.statusPduSize;
1055 for (std::size_t
i = 0;
i <
ind.m_buildDataList.size();
i++)
1057 for (std::size_t layer = 0; layer <
ind.m_buildDataList.at(
i).m_dci.m_ndi.size(); layer++)
1059 if (
ind.m_buildDataList.at(
i).m_dci.m_ndi.at(layer) == 1)
1064 for (std::size_t lcId = 0; lcId < (*it).second.size(); lcId++)
1067 (*it).second.at(lcId).at(
ind.m_buildDataList.at(
i).m_dci.m_harqProcess) = pb;
1071 for (std::size_t
j = 0;
j <
ind.m_buildDataList.at(
i).m_rlcPduList.size();
j++)
1073 for (std::size_t k = 0; k <
ind.m_buildDataList.at(
i).m_rlcPduList.at(
j).size(); k++)
1075 if (
ind.m_buildDataList.at(
i).m_dci.m_ndi.at(k) == 1)
1078 uint16_t rnti =
ind.m_buildDataList.at(
i).m_rnti;
1080 ind.m_buildDataList.at(
i).m_rlcPduList.at(
j).at(k).m_logicalChannelIdentity;
1085 "could not find LCID" << (
uint32_t)lcid <<
" carrier id:"
1088 <<
" layer= " << k);
1089 txOpParams.bytes =
ind.m_buildDataList.at(
i).m_rlcPduList.at(
j).at(k).m_size;
1091 txOpParams.harqId =
ind.m_buildDataList.at(
i).m_dci.m_harqProcess;
1095 (*lcidIt).second->NotifyTxOpportunity(
txOpParams);
1099 if (
ind.m_buildDataList.at(
i).m_dci.m_tbsSize.at(k) > 0)
1105 (*it).second.at(k).at(
ind.m_buildDataList.at(
i).m_dci.m_harqProcess);
1106 for (
auto j = pb->Begin();
j != pb->End(); ++
j)
1117 msg->SetDci(
ind.m_buildDataList.at(
i).m_dci);
1125 if (
ind.m_buildDataList.at(
i).m_dci.m_tbsSize.size() == 1)
1139 else if (
ind.m_buildDataList.at(
i).m_dci.m_tbsSize.size() == 2)
1154 NS_FATAL_ERROR(
"Found element with more than two transport blocks");
1172 for (
unsigned int i = 0;
i <
ind.m_buildRarList.size();
i++)
1181 rar.rarPayload =
ind.m_buildRarList.at(
i);
1183 NS_LOG_INFO(
this <<
" Send RAR message to RNTI " <<
ind.m_buildRarList.at(
i).m_rnti
1184 <<
" rapId " <<
itRapId->second);
1186 if (!
ind.m_buildRarList.empty())
1198 for (
unsigned int i = 0;
i <
ind.m_dciList.size();
i++)
1202 msg->SetDci(
ind.m_dciList.at(
i));
1211 ind.m_dciList.at(
i).m_rnti,
1212 ind.m_dciList.at(
i).m_mcs,
1213 ind.m_dciList.at(
i).m_tbSize,
1286 for (std::size_t layer = 0; layer < params.m_harqStatus.size(); layer++)
1292 (*it).second.at(layer).at(params.m_harqProcessId) =
emptyBuf;
1293 NS_LOG_DEBUG(
this <<
" HARQ-ACK UE " << params.m_rnti <<
" harqId "
1294 << (uint16_t)params.m_harqProcessId <<
" layer " << (uint16_t)layer);
1298 NS_LOG_DEBUG(
this <<
" HARQ-NACK UE " << params.m_rnti <<
" harqId "
1299 << (uint16_t)params.m_harqProcessId <<
" layer " << (uint16_t)layer);
EnbMacMemberFfMacCschedSapUser class.
void CschedLcReleaseCnf(const CschedLcReleaseCnfParameters ¶ms) override
CSCHED_LC_RELEASE_CNF.
void CschedUeConfigCnf(const CschedUeConfigCnfParameters ¶ms) override
CSCHED_UE_CONFIG_CNF.
EnbMacMemberFfMacCschedSapUser(LteEnbMac *mac)
Constructor.
void CschedLcConfigCnf(const CschedLcConfigCnfParameters ¶ms) override
CSCHED_LC_CONFIG_CNF.
void CschedCellConfigUpdateInd(const CschedCellConfigUpdateIndParameters ¶ms) override
CSCHED_UE_CONFIG_IND.
void CschedUeReleaseCnf(const CschedUeReleaseCnfParameters ¶ms) override
CSCHED_UE_RELEASE_CNF.
void CschedCellConfigCnf(const CschedCellConfigCnfParameters ¶ms) override
CSCHED_CELL_CONFIG_CNF.
void CschedUeConfigUpdateInd(const CschedUeConfigUpdateIndParameters ¶ms) override
CSCHED_UE_UPDATE_IND.
EnbMacMemberFfMacSchedSapUser class.
void SchedDlConfigInd(const SchedDlConfigIndParameters ¶ms) override
SCHED_DL_CONFIG_IND.
EnbMacMemberFfMacSchedSapUser(LteEnbMac *mac)
Constructor.
void SchedUlConfigInd(const SchedUlConfigIndParameters ¶ms) override
SCHED_UL_CONFIG_IND.
EnbMacMemberLteEnbCmacSapProvider class.
RachConfig GetRachConfig() override
void AddLc(LcInfo lcinfo, LteMacSapUser *msu) override
Add a new logical channel.
void UeUpdateConfigurationReq(UeConfig params) override
update the configuration of the UE
void RemoveUe(uint16_t rnti) override
remove the UE, e.g., after handover or termination of the RRC connection
void AddUe(uint16_t rnti) override
Add UE function.
void ReconfigureLc(LcInfo lcinfo) override
Reconfigure an existing logical channel.
AllocateNcRaPreambleReturnValue AllocateNcRaPreamble(uint16_t rnti) override
Allocate a random access preamble for non-contention based random access (e.g., for handover).
void ConfigureMac(uint16_t ulBandwidth, uint16_t dlBandwidth) override
EnbMacMemberLteEnbCmacSapProvider(LteEnbMac *mac)
Constructor.
void ReleaseLc(uint16_t rnti, uint8_t lcid) override
release an existing logical channel
void SubframeIndication(uint32_t frameNo, uint32_t subframeNo) override
Trigger the start from a new frame (input from Phy layer)
void ReceivePhyPdu(Ptr< Packet > p) override
Called by the Phy to notify the MAC of the reception of a new PHY-PDU.
void ReceiveLteControlMessage(Ptr< LteControlMessage > msg) override
Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel.
void ReceiveRachPreamble(uint32_t prachId) override
notify the reception of a RACH preamble on the PRACH
EnbMacMemberLteEnbPhySapUser(LteEnbMac *mac)
Constructor.
void DlInfoListElementHarqFeedback(DlInfoListElement_s params) override
Notify the HARQ on the DL transmission status.
void UlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi) override
Returns to MAC level the UL-CQI evaluated.
void UlInfoListElementHarqFeedback(UlInfoListElement_s params) override
Notify the HARQ on the UL transmission status.
virtual void CschedLcConfigReq(const CschedLcConfigReqParameters ¶ms)=0
CSCHED_LC_CONFIG_REQ.
virtual void CschedLcReleaseReq(const CschedLcReleaseReqParameters ¶ms)=0
CSCHED_LC_RELEASE_REQ.
virtual void CschedUeConfigReq(const CschedUeConfigReqParameters ¶ms)=0
CSCHED_UE_CONFIG_REQ.
virtual void CschedUeReleaseReq(const CschedUeReleaseReqParameters ¶ms)=0
CSCHED_UE_RELEASE_REQ.
virtual void CschedCellConfigReq(const CschedCellConfigReqParameters ¶ms)=0
CSCHED_CELL_CONFIG_REQ.
FfMacCschedSapUser class.
virtual void SchedDlTriggerReq(const SchedDlTriggerReqParameters ¶ms)=0
SCHED_DL_TRIGGER_REQ.
virtual void SchedDlRachInfoReq(const SchedDlRachInfoReqParameters ¶ms)=0
SCHED_DL_RACH_INFO_REQ.
virtual void SchedUlMacCtrlInfoReq(const SchedUlMacCtrlInfoReqParameters ¶ms)=0
SCHED_UL_MAC_CTRL_INFO_REQ.
virtual void SchedUlCqiInfoReq(const SchedUlCqiInfoReqParameters ¶ms)=0
SCHED_UL_CQI_INFO_REQ.
virtual void SchedUlTriggerReq(const SchedUlTriggerReqParameters ¶ms)=0
SCHED_UL_TRIGGER_REQ.
virtual void SchedDlRlcBufferReq(const SchedDlRlcBufferReqParameters ¶ms)=0
SCHED_DL_RLC_BUFFER_REQ.
virtual void SchedDlCqiInfoReq(const SchedDlCqiInfoReqParameters ¶ms)=0
SCHED_DL_CQI_INFO_REQ.
Service Access Point (SAP) offered by the component carrier manager (CCM) by MAC to CCM.
Service Access Point (SAP) offered by MAC to the component carrier manager (CCM).
virtual void UlReceiveMacCe(MacCeListElement_s bsr, uint8_t componentCarrierId)=0
When the Primary Component carrier receive a buffer status report it is sent to the CCM.
Service Access Point (SAP) offered by the eNB MAC to the eNB RRC See Femto Forum MAC Scheduler Interf...
Service Access Point (SAP) offered by the MAC to the RRC See Femto Forum MAC Scheduler Interface Spec...
virtual bool IsRandomAccessCompleted(uint16_t rnti)=0
Is random access completed function.
virtual void RrcConfigurationUpdateInd(UeConfig params)=0
Notify the RRC of a UE config updated requested by the MAC (normally, by the scheduler)
virtual uint16_t AllocateTemporaryCellRnti()=0
request the allocation of a Temporary C-RNTI
This class implements the MAC layer of the eNodeB device.
void SetFfMacCschedSapProvider(FfMacCschedSapProvider *s)
Set the control scheduler SAP provider.
void DoReceivePhyPdu(Ptr< Packet > p)
legacy public for use the Phy callback
void DoSchedDlConfigInd(FfMacSchedSapUser::SchedDlConfigIndParameters ind)
Sched DL Config Indication function.
FfMacSchedSapUser * m_schedSapUser
the Sched SAP user
void DoCschedCellConfigCnf(FfMacCschedSapUser::CschedCellConfigCnfParameters params)
CSched Cell Config configure function.
FfMacCschedSapProvider * m_cschedSapProvider
the Csched SAP provider
void SetLteEnbPhySapProvider(LteEnbPhySapProvider *s)
Set the PHY SAP Provider.
uint32_t m_frameNo
frame number of current subframe indication
void DoDispose() override
Destructor implementation.
LteEnbPhySapProvider * m_enbPhySapProvider
the ENB Phy SAP provider
void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params)
Report Buffer Status function.
FfMacCschedSapUser * GetFfMacCschedSapUser()
Get the control scheduler SAP user.
FfMacCschedSapUser * m_cschedSapUser
the CSched SAP user
static TypeId GetTypeId()
Get the type ID.
friend class EnbMacMemberFfMacCschedSapUser
allow EnbMacMemberFfMacCschedSapUser class friend access
LteCcmMacSapUser * m_ccmMacSapUser
CCM MAC SAP user.
void DoCschedUeReleaseCnf(FfMacCschedSapUser::CschedUeReleaseCnfParameters params)
CSched UE Release configure function.
void SetLteEnbCmacSapUser(LteEnbCmacSapUser *s)
Set the control MAC SAP user.
LteEnbPhySapUser * GetLteEnbPhySapUser()
Get the eNB-PHY SAP User.
void DoUlInfoListElementHarqFeedback(UlInfoListElement_s params)
UL Info List Elements HARQ Feedback function.
std::vector< CqiListElement_s > m_dlCqiReceived
DL-CQI received.
std::map< uint8_t, uint32_t > m_receivedRachPreambleCount
received RACH preamble count
LteCcmMacSapProvider * m_ccmMacSapProvider
CCM MAC SAP provider.
FfMacSchedSapProvider * m_schedSapProvider
the Sched SAP provider
void DoReceiveRachPreamble(uint8_t prachId)
Receive RACH Preamble function.
void DoCschedLcConfigCnf(FfMacCschedSapUser::CschedLcConfigCnfParameters params)
CSched LC Config configure function.
uint8_t m_componentCarrierId
component carrier Id used to address sap
void DoCschedUeConfigCnf(FfMacCschedSapUser::CschedUeConfigCnfParameters params)
CSched UE Config configure function.
TracedCallback< uint32_t, uint32_t, uint16_t, uint8_t, uint16_t, uint8_t > m_ulScheduling
Trace information regarding UL scheduling Frame number, Subframe number, RNTI, MCS of TB,...
void DoReleaseLc(uint16_t rnti, uint8_t lcid)
Release LC function.
void DoReceiveLteControlMessage(Ptr< LteControlMessage > msg)
Receive a DL CQI ideal control message.
friend class EnbMacMemberLteEnbCmacSapProvider
allow EnbMacMemberLteEnbCmacSapProvider class friend access
void SetLteCcmMacSapUser(LteCcmMacSapUser *s)
Set the ComponentCarrierManager SAP user.
std::map< uint16_t, std::map< uint8_t, LteMacSapUser * > > m_rlcAttached
RNTI, LC ID, SAP of the RLC instance.
LteMacSapUser * m_macSapUser
the MAC SAP user
std::vector< MacCeListElement_s > m_ulCeReceived
CE received (BSR up to now)
LteEnbPhySapUser * m_enbPhySapUser
the ENB Phy SAP user
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters params)
Transmit PDU function.
std::vector< FfMacSchedSapProvider::SchedUlCqiInfoReqParameters > m_ulCqiReceived
UL-CQI received.
LteEnbCmacSapProvider * m_cmacSapProvider
the CMAC SAP provider
friend class EnbMacMemberFfMacSchedSapUser
allow EnbMacMemberFfMacSchedSapUser class friend access
TracedCallback< DlSchedulingCallbackInfo > m_dlScheduling
Trace information regarding DL scheduling Frame number, Subframe number, RNTI, MCS of TB1,...
void SetFfMacSchedSapProvider(FfMacSchedSapProvider *s)
Set the scheduler SAP provider.
void ReceiveBsrMessage(MacCeListElement_s bsr)
Receive a CE element containing the buffer status report.
uint8_t m_connEstFailCount
the counter value for T300 timer expiration
LteMacSapProvider * m_macSapProvider
the MAC SAP provider
uint8_t m_raResponseWindowSize
RA response window size.
void DoUeUpdateConfigurationReq(LteEnbCmacSapProvider::UeConfig params)
UE Update configuration request function.
void DoReconfigureLc(LteEnbCmacSapProvider::LcInfo lcinfo)
Reconfigure LC function.
uint8_t m_macChTtiDelay
delay of MAC, PHY and channel in terms of TTIs
FfMacSchedSapUser * GetFfMacSchedSapUser()
Get the scheduler SAP user.
LteCcmMacSapProvider * GetLteCcmMacSapProvider()
Get the eNB-ComponentCarrierManager SAP User.
void DoDlInfoListElementHarqFeedback(DlInfoListElement_s params)
DL Info List Elements HARQ Feedback function.
uint8_t m_preambleTransMax
preamble transmit maximum
void DoConfigureMac(uint16_t ulBandwidth, uint16_t dlBandwidth)
Configure MAC function.
std::map< uint8_t, NcRaPreambleInfo > m_allocatedNcRaPreambleMap
map storing as key the random access preamble IDs allocated for non-contention based access,...
uint8_t m_numberOfRaPreambles
number of RA preambles
LteEnbCmacSapProvider * GetLteEnbCmacSapProvider()
Get the control MAC SAP provider.
std::map< uint16_t, DlHarqProcessesBuffer_t > m_miDlHarqProcessesPackets
Packet under transmission of the DL HARQ process.
void DoCschedCellConfigUpdateInd(FfMacCschedSapUser::CschedCellConfigUpdateIndParameters params)
CSched Cell Config Update Indication function.
void DoAddLc(LteEnbCmacSapProvider::LcInfo lcinfo, LteMacSapUser *msu)
Add LC function.
void DoCschedUeConfigUpdateInd(FfMacCschedSapUser::CschedUeConfigUpdateIndParameters params)
CSched UE Config Update Indication function.
void DoSubframeIndication(uint32_t frameNo, uint32_t subframeNo)
Subrame Indication function.
void SetLteMacSapUser(LteMacSapUser *s)
Set the MAC SAP user.
void ReceiveDlCqiLteControlMessage(Ptr< DlCqiLteControlMessage > msg)
Receive a DL CQI ideal control message.
LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue DoAllocateNcRaPreamble(uint16_t rnti)
Allocate NC RA preamble function.
void DoRemoveUe(uint16_t rnti)
Remove UE function.
friend class EnbMacMemberLteMacSapProvider< LteEnbMac >
allow EnbMacMemberLteMacSapProvider<LteEnbMac> class friend access
LteEnbCmacSapProvider::RachConfig DoGetRachConfig() const
Get RACH configuration function.
std::vector< DlInfoListElement_s > m_dlInfoListReceived
DL HARQ feedback received.
void DoSchedUlConfigInd(FfMacSchedSapUser::SchedUlConfigIndParameters params)
Sched UL Config Indication function.
LteMacSapProvider * GetLteMacSapProvider()
Get the MAC SAP provider.
LteEnbCmacSapUser * m_cmacSapUser
the CMAC SAP user
uint32_t m_subframeNo
subframe number of current subframe indication
friend class MemberLteCcmMacSapProvider< LteEnbMac >
allow MemberLteCcmMacSapProvider<LteEnbMac> class friend access
void DoCschedLcReleaseCnf(FfMacCschedSapUser::CschedLcReleaseCnfParameters params)
CSched LC Release configure function.
void DoAddUe(uint16_t rnti)
Add UE function.
friend class EnbMacMemberLteEnbPhySapUser
allow EnbMacMemberLteEnbPhySapUser class friend access
void DoReportMacCeToScheduler(MacCeListElement_s bsr)
Report MAC CE to scheduler.
void SetComponentCarrierId(uint8_t index)
Set the component carrier ID.
void DoUlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)
UL CQI report.
std::vector< UlInfoListElement_s > m_ulInfoListReceived
UL HARQ feedback received.
std::map< uint16_t, uint32_t > m_rapIdRntiMap
RAPID RNTI map.
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC.
virtual void SendLteControlMessage(Ptr< LteControlMessage > msg)=0
Send SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel.
virtual uint8_t GetMacChTtiDelay()=0
Get the delay from MAC to Channel expressed in TTIs.
virtual void SendMacPdu(Ptr< Packet > p)=0
Send the MAC PDU to the channel.
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC.
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Tag used to define the RNTI and LC id for each MAC packet transmitted.
A base class which provides memory management and object aggregation.
Smart pointer class similar to boost::intrusive_ptr.
static Time Now()
Return the current simulation virtual time.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Hold an unsigned integer type.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
#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.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
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.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
std::vector< std::vector< Ptr< PacketBurst > > > DlHarqProcessesBuffer_t
DlHarqProcessesBuffer_t typedef.
See section 4.3.24 cqiListElement.
See section 4.3.23 dlInfoListElement.
DlSchedulingCallbackInfo structure.
uint32_t frameNo
frame number
Parameters of the API primitives.
Parameters of the CSCHED_LC_CONFIG_REQ primitive.
Parameters of the CSCHED_LC_RELEASE_REQ primitive.
Parameters of the CSCHED_UE_CONFIG_REQ primitive.
Parameters of the CSCHED_UE_RELEASE_REQ primitive.
Parameters of the API primitives.
Parameters of the CSCHED_CELL_CONFIG_UPDATE_IND primitive.
Parameters of the CSCHED_LC_CONFIG_CNF primitive.
Parameters of the CSCHED_LC_RELEASE_CNF primitive.
Parameters of the CSCHED_UE_CONFIG_CNF primitive.
Parameters of the CSCHED_UE_CONFIG_UPDATE_IND primitive.
Parameters of the CSCHED_UE_RELEASE_CNF primitive.
Parameters of the SCHED_DL_CQI_INFO_REQ primitive.
Parameters of the SCHED_DL_RACH_INFO_REQ primitive.
Parameters of the API primitives.
Parameters of the SCHED_DL_TRIGGER_REQ primitive.
Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
Parameters of the SCHED_UL_MAC_CTRL_INFO_REQ primitive.
Parameters of the SCHED_UL_TRIGGER_REQ primitive.
Parameters of the API primitives.
Parameters of the SCHED_UL_CONFIG_IND primitive.
See section 4.3.4 logicalChannelConfigListElement.
QosBearerType_e
QosBearerType enum.
uint8_t m_logicalChannelIdentity
logical channel identity
AllocateNcRaPreambleReturnValue structure.
bool valid
true if a valid RA config was allocated, false otherwise
Logical Channel information to be passed to CmacSapProvider::ConfigureLc.
struct defining the RACH configuration of the MAC
Parameters for [re]configuring the UE.
Parameters for [re]configuring the UE.
uint16_t m_rnti
UE id within this cell.
info associated with a preamble allocated for non-contention based RA
Time expiryTime
value the expiration time of this allocation (so that stale preambles can be reused)
uint16_t rnti
rnti previously allocated for this non-contention based RA procedure
Parameters for LteMacSapProvider::ReportBufferStatus.
Parameters for LteMacSapProvider::TransmitPdu.
Parameters for LteMacSapUser::ReceivePdu.
Ptr< Packet > p
the RLC PDU to be received
Parameters for LteMacSapUser::NotifyTxOpportunity.
See section 4.3.14 macCEListElement.
See section 4.3.6 rachListElement.
a MAC RAR and the corresponding RAPID subheader
See section 4.3.12 ulInfoListElement.