24 #include <ns3/pointer.h> 
   25 #include <ns3/packet.h> 
   26 #include <ns3/simulator.h> 
   33 #include <ns3/lte-enb-mac.h> 
   34 #include <ns3/lte-radio-bearer-tag.h> 
   35 #include <ns3/lte-ue-phy.h> 
   37 #include "ns3/lte-mac-sap.h" 
   38 #include <ns3/lte-common.h> 
   60   virtual void ConfigureMac (uint8_t ulBandwidth, uint8_t dlBandwidth);
 
   61   virtual void AddUe (uint16_t rnti);
 
   62   virtual void RemoveUe (uint16_t rnti);
 
   65   virtual void ReleaseLc (uint16_t rnti, uint8_t lcid);
 
  319     .AddAttribute (
"NumberOfRaPreambles",
 
  320                    "how many random access preambles are available for the contention based RACH process",
 
  323                    MakeUintegerChecker<uint8_t> (4, 64))
 
  324     .AddAttribute (
"PreambleTransMax",
 
  325                    "Maximum number of random access preamble transmissions",
 
  328                    MakeUintegerChecker<uint8_t> (3, 200))
 
  329     .AddAttribute (
"RaResponseWindowSize",
 
  330                    "length of the window (in TTIs) for the reception of the random access response (RAR); the resulting RAR timeout is this value + 3 ms",
 
  333                    MakeUintegerChecker<uint8_t> (2, 10))
 
  334     .AddTraceSource (
"DlScheduling",
 
  335                      "Information regarding DL scheduling.",
 
  337                      "ns3::LteEnbMac::DlSchedulingTracedCallback")
 
  338     .AddTraceSource (
"UlScheduling",
 
  339                      "Information regarding UL scheduling.",
 
  341                      "ns3::LteEnbMac::UlSchedulingTracedCallback")
 
  450   NS_LOG_FUNCTION (
this << 
" EnbMac - frame " << frameNo << 
" subframe " << subframeNo);
 
  462       dlcqiInfoReq.
m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
 
  478       NS_ASSERT (subframeNo > 0 && subframeNo <= 10); 
 
  483           NS_LOG_INFO (
this << 
" preambleId " << (uint32_t) it->first << 
": " << it->second << 
" received");
 
  487               NS_LOG_INFO (
"preambleId " << (uint32_t) it->first << 
": collision");
 
  497                   rnti = jt->second.rnti;
 
  498                   NS_LOG_INFO (
"preambleId previously allocated for NC based RA, RNTI =" << (uint32_t) rnti << 
", sending RAR");
 
  504                   NS_LOG_INFO (
"preambleId " << (uint32_t) it->first << 
": allocated T-C-RNTI " << (uint32_t) rnti << 
", sending RAR");
 
  510               rachInfoReqParams.
m_rachList.push_back (rachLe);
 
  511               m_rapIdRntiMap.insert (std::pair <uint16_t, uint32_t> (rnti, it->first));
 
  531   dlparams.
m_sfnSf = ((0x3FF & dlSchedFrameNo) << 4) | (0xF & dlSchedSubframeNo);
 
  546   std::vector <FfMacSchedSapProvider::SchedUlCqiInfoReqParameters>::iterator itCqi;
 
  551           m_ulCqiReceived.at (i).m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & (subframeNo - 1));
 
  555           m_ulCqiReceived.at (i).m_sfnSf = ((0x3FF & (frameNo - 1)) << 4) | (0xF & 10);
 
  565       ulMacReq.
m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
 
  586   ulparams.
m_sfnSf = ((0x3FF & ulSchedFrameNo) << 4) | (0xF & ulSchedSubframeNo);
 
  622       NS_LOG_LOGIC (
this << 
" LteControlMessage type " << msg->GetMessageType () << 
" not recognized");
 
  711   uint16_t rnti = tag.
GetRnti ();
 
  713   std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt = 
m_rlcAttached.find (rnti);
 
  715   std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcid);
 
  719   if (lcidIt != rntiIt->second.end ())
 
  721       (*lcidIt).second->ReceivePdu (p);
 
  734   NS_LOG_FUNCTION (
this << 
" ulBandwidth=" << (uint16_t) ulBandwidth << 
" dlBandwidth=" << (uint16_t) dlBandwidth);
 
  749   std::map<uint8_t, LteMacSapUser*> 
empty;
 
  750   std::pair <std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator, 
bool> 
 
  751     ret = 
m_rlcAttached.insert (std::pair <uint16_t,  std::map<uint8_t, LteMacSapUser*> > 
 
  753   NS_ASSERT_MSG (ret.second, 
"element already present, RNTI already existed");
 
  762   std::vector < Ptr<PacketBurst> > dlHarqLayer0pkt;
 
  763   dlHarqLayer0pkt.resize (8);
 
  764   for (uint8_t i = 0; i < 8; i++)
 
  767       dlHarqLayer0pkt.at (i) = pb;
 
  769   std::vector < Ptr<PacketBurst> > dlHarqLayer1pkt;
 
  770   dlHarqLayer1pkt.resize (8);
 
  771   for (uint8_t i = 0; i < 8; i++)
 
  774       dlHarqLayer1pkt.at (i) = pb;
 
  777   buf.push_back (dlHarqLayer0pkt);
 
  778   buf.push_back (dlHarqLayer1pkt);
 
  798   std::map <LteFlowId_t, LteMacSapUser* >::iterator it;
 
  802   std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt = 
m_rlcAttached.find (lcinfo.
rnti);
 
  804   std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcinfo.
lcId);
 
  805   if (lcidIt == rntiIt->second.end ())
 
  807       rntiIt->second.insert (std::pair<uint8_t, LteMacSapUser*> (lcinfo.
lcId, msu));
 
  818   if (lcinfo.
lcId != 0)
 
  852   std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt = 
m_rlcAttached.find (rnti);
 
  853   rntiIt->second.erase (lcid);
 
  900           preambleInfo.
rnti = rnti;
 
  901           NS_LOG_INFO (
"allocated preamble for NC based RA: preamble " << preambleId << 
", RNTI " << preambleInfo.
rnti << 
", exiryTime " << preambleInfo.
expiryTime);
 
  974   std::map <LteFlowId_t, LteMacSapUser* >::iterator it;
 
  978       for (uint16_t layer = 0; layer < ind.
m_buildDataList.at (i).m_dci.m_ndi.size (); layer++)
 
  985               for (uint16_t lcId = 0; lcId < (*it).second.size (); lcId++)
 
  988                   (*it).second.at (lcId).at (ind.
m_buildDataList.at (i).m_dci.m_harqProcess) = pb;
 
  992       for (
unsigned int j = 0; j < ind.
m_buildDataList.at (i).m_rlcPduList.size (); j++)
 
  994           for (uint16_t k = 0; k < ind.
m_buildDataList.at (i).m_rlcPduList.at (j).size (); k++)
 
 1000                   uint8_t lcid = ind.
m_buildDataList.at (i).m_rlcPduList.at (j).at (k).m_logicalChannelIdentity;
 
 1001                   std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt = 
m_rlcAttached.find (rnti);
 
 1003                   std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcid);
 
 1004                   NS_ASSERT_MSG (lcidIt != rntiIt->second.end (), 
"could not find LCID" << lcid);
 
 1005                   NS_LOG_DEBUG (
this << 
" rnti= " << rnti << 
" lcid= " << (uint32_t) lcid << 
" layer= " << k);
 
 1006                   (*lcidIt).second->NotifyTxOpportunity (ind.
m_buildDataList.at (i).m_rlcPduList.at (j).at (k).m_size, k, ind.
m_buildDataList.at (i).m_dci.m_harqProcess);
 
 1056           NS_FATAL_ERROR (
"Found element with more than two transport blocks");
 
 1073   rarMsg->SetRaRnti (raRnti);
 
 1082       rar.
rapId = itRapId->second;
 
 1084       rarMsg->AddRar (rar);
 
 1100   for (
unsigned int i = 0; i < ind.
m_dciList.size (); i++)
 
 1109   for (  uint32_t i  = 0; i < ind.
m_dciList.size (); i++ )
 
 1190   for (uint8_t layer = 0; layer < params.
m_harqStatus.size (); layer++)
 
std::vector< struct UlInfoListElement_s > m_ulInfoList
 
void DoConfigureMac(uint8_t ulBandwidth, uint8_t dlBandwidth)
 
void DoReconfigureLc(LteEnbCmacSapProvider::LcInfo lcinfo)
 
FfMacSchedSapUser * m_schedSapUser
 
Parameters of the CSCHED_LC_CONFIG_CNF primitive. 
 
virtual void UlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)
Returns to MAC level the UL-CQI evaluated. 
 
uint8_t GetLcid(void) const 
 
EnbMacMemberFfMacCschedSapUser(LteEnbMac *mac)
 
void DoDlInfoListElementHarqFeeback(DlInfoListElement_s params)
 
a MAC RAR and the corresponding RAPID subheader 
 
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
 
std::vector< FfMacSchedSapProvider::SchedUlCqiInfoReqParameters > m_ulCqiReceived
 
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system. 
 
uint8_t m_logicalChannelIdentity
 
uint16_t m_rnti
UE id within this cell. 
 
virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters ¶ms)=0
 
Parameters of the CSCHED_UE_CONFIG_CNF primitive. 
 
Parameters of the CSCHED_UE_RELEASE_REQ primitive. 
 
uint8_t m_transmissionMode
Transmission mode 1..7 
 
void DoReceivePhyPdu(Ptr< Packet > p)
 
virtual void ReconfigureLc(LcInfo lcinfo)
Reconfigure an existing logical channel. 
 
uint16_t GetRnti(void) const 
 
Parameters of the CSCHED_CELL_CONFIG_UPDATE_IND primitive. 
 
void DoUlInfoListElementHarqFeeback(UlInfoListElement_s params)
 
LteEnbCmacSapProvider * m_cmacSapProvider
 
std::map< uint16_t, std::map< uint8_t, LteMacSapUser * > > m_rlcAttached
 
enum ns3::UlCqi_s::Type_e m_type
 
void DoAddLc(LteEnbCmacSapProvider::LcInfo lcinfo, LteMacSapUser *msu)
 
LteEnbCmacSapProvider::RachConfig DoGetRachConfig()
 
virtual void SchedDlConfigInd(const struct SchedDlConfigIndParameters ¶ms)
 
void DoCschedCellConfigUpdateInd(FfMacCschedSapUser::CschedCellConfigUpdateIndParameters params)
 
void DoReleaseLc(uint16_t rnti, uint8_t lcid)
 
void SetLteEnbCmacSapUser(LteEnbCmacSapUser *s)
Set the control MAC SAP user. 
 
void AddPacketTag(const Tag &tag) const 
Add a packet tag. 
 
void DoSchedUlConfigInd(FfMacSchedSapUser::SchedUlConfigIndParameters params)
 
uint8_t raResponseWindowSize
 
std::vector< struct LogicalChannelConfigListElement_s > m_logicalChannelConfigList
 
uint8_t qci
QoS Class Identifier. 
 
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
 
#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. 
 
virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters ¶ms)=0
 
virtual void ReceiveRachPreamble(uint32_t prachId)
notify the reception of a RACH preamble on the PRACH 
 
uint8_t m_preambleTransMax
 
uint8_t m_transmissionMode
Transmission mode 1..7 
 
virtual uint8_t GetMacChTtiDelay()=0
Get the delay from MAC to Channel expressed in TTIs. 
 
std::vector< struct UlDciListElement_s > m_dciList
 
See section 4.3.24 cqiListElement. 
 
uint32_t retxQueueSize
the current size of the RLC retransmission queue in bytes 
 
#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. 
 
TracedCallback< uint32_t, uint32_t, uint16_t, uint8_t, uint16_t > m_ulScheduling
Trace information regarding UL scheduling Frame number, Subframe number, RNTI, MCS of TB...
 
Parameters of the CSCHED_UE_CONFIG_UPDATE_IND primitive. 
 
virtual void AddLc(LcInfo lcinfo, LteMacSapUser *msu)
Add a new logical channel. 
 
uint64_t mbrDl
maximum bitrate in downlink 
 
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters)
 
Parameters of the CSCHED_LC_RELEASE_REQ primitive. 
 
friend class EnbMacMemberFfMacCschedSapUser
 
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC. 
 
uint32_t m_rlcRetransmissionQueueSize
 
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters ¶ms)=0
 
uint8_t m_transmissionMode
 
See section 4.3.12 ulInfoListElement. 
 
void DoAddUe(uint16_t rnti)
 
virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters ¶ms)=0
 
Parameters of the SCHED_DL_TRIGGER_REQ primitive. 
 
uint8_t lcid
the logical channel id corresponding to the sending RLC instance 
 
uint8_t m_logicalChannelIdentity
 
virtual void ConfigureMac(uint8_t ulBandwidth, uint8_t dlBandwidth)
 
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC. 
 
uint16_t rnti
the C-RNTI identifying the UE 
 
FfMacCschedSapUser * GetFfMacCschedSapUser(void)
Get the control scheduler SAP user. 
 
uint64_t m_eRabGuaranteedBitrateDl
 
virtual AllocateNcRaPreambleReturnValue AllocateNcRaPreamble(uint16_t rnti)
Allocate a random access preamble for non-contention based random access (e.g., for handover)...
 
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source. 
 
LteMacSapProvider * GetLteMacSapProvider(void)
Get the MAC SAP provider. 
 
Parameters for LteMacSapProvider::ReportBufferStatus. 
 
std::map< uint8_t, uint32_t > m_receivedRachPreambleCount
 
FfMacCschedSapUser * m_cschedSapUser
 
See section 4.3.4 logicalChannelConfigListElement. 
 
Service Access Point (SAP) offered by the MAC to the RRC See Femto Forum MAC Scheduler Interface Spec...
 
uint16_t txQueueHolDelay
the Head Of Line delay of the transmission queue 
 
void SetFfMacCschedSapProvider(FfMacCschedSapProvider *s)
Set the control scheduler SAP provider. 
 
uint8_t lcId
logical channel identifier 
 
Parameters of the CSCHED_LC_RELEASE_CNF primitive. 
 
uint16_t m_rnti
UE id within this cell. 
 
LteEnbPhySapProvider * m_enbPhySapProvider
 
enum ns3::LogicalChannelConfigListElement_s::Direction_e m_direction
 
virtual void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters ¶ms)
 
LteEnbPhySapUser * m_enbPhySapUser
 
FfMacSchedSapUser * GetFfMacSchedSapUser(void)
Get the scheduler SAP user. 
 
make Callback use a separate empty type 
 
void DoCschedUeConfigCnf(FfMacCschedSapUser::CschedUeConfigCnfParameters params)
 
virtual void RrcConfigurationUpdateInd(UeConfig params)=0
Notify the RRC of a UE config updated requested by the MAC (normally, by the scheduler) ...
 
virtual void SendMacPdu(Ptr< Packet > p)=0
Send the MAC PDU to the channel. 
 
virtual void CschedLcReleaseCnf(const struct CschedLcReleaseCnfParameters ¶ms)
 
void DoUeUpdateConfigurationReq(LteEnbCmacSapProvider::UeConfig params)
 
Parameters of the SCHED_UL_TRIGGER_REQ primitive. 
 
Hold an unsigned integer type. 
 
EnbMacMemberLteEnbCmacSapProvider(LteEnbMac *mac)
 
Logical Channel information to be passed to CmacSapProvider::ConfigureLc. 
 
std::map< uint8_t, uint32_t > m_rapIdRntiMap
 
uint16_t rnti
rnti previously allocated for this non-contention based RA procedure 
 
uint16_t rnti
the C-RNTI identifying the UE 
 
void DoCschedLcReleaseCnf(FfMacCschedSapUser::CschedLcReleaseCnfParameters params)
 
Parameters of the API primitives. 
 
static TypeId GetTypeId(void)
 
void DoUlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)
 
virtual void UlInfoListElementHarqFeeback(UlInfoListElement_s params)
Notify the HARQ on the UL tranmission status. 
 
virtual void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters ¶ms)=0
 
virtual void AddUe(uint16_t rnti)
 
uint64_t m_eRabGuaranteedBitrateUl
 
friend class EnbMacMemberLteEnbCmacSapProvider
 
virtual void DoDispose(void)
Destructor implementation. 
 
enum ns3::LogicalChannelConfigListElement_s::QosBearerType_e m_qosBearerType
 
void ReceiveBsrMessage(MacCeListElement_s bsr)
Receive a CE element containing the buffer status report. 
 
virtual RachConfig GetRachConfig()
 
std::vector< uint8_t > m_logicalChannelIdentity
 
virtual void SchedUlConfigInd(const struct SchedUlConfigIndParameters ¶ms)
 
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC. 
 
uint16_t m_rlcRetransmissionHolDelay
 
std::vector< struct CqiListElement_s > m_cqiList
 
uint8_t m_raResponseWindowSize
 
std::vector< struct DlInfoListElement_s > m_dlInfoList
 
See section 4.3.23 dlInfoListElement. 
 
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters ¶ms)=0
CSCHED_CELL_CONFIG_REQ. 
 
BuildRarListElement_s rarPayload
 
void DoReceiveRachPreamble(uint8_t prachId)
 
void DoRemoveUe(uint16_t rnti)
 
See section 4.3.14 macCEListElement. 
 
Parameters for [re]configuring the UE. 
 
Ptr< Packet > Copy(void) const 
performs a COW copy of the packet. 
 
virtual void ReleaseLc(uint16_t rnti, uint8_t lcid)
release an existing logical channel 
 
uint64_t m_eRabMaximulBitrateUl
 
LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue DoAllocateNcRaPreamble(uint16_t rnti)
 
uint8_t m_numberOfRaPreambles
 
Parameters of the API primitives. 
 
uint8_t numberOfRaPreambles
 
uint8_t layer
the layer value that was passed by the MAC in the call to NotifyTxOpportunity that generated this PDU...
 
virtual void CschedUeConfigCnf(const struct CschedUeConfigCnfParameters ¶ms)
 
virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters ¶ms)=0
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
uint8_t lcGroup
logical channel group 
 
uint64_t m_eRabMaximulBitrateDl
 
void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters)
 
virtual void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters ¶ms)
 
Parameters of the CSCHED_LC_CONFIG_REQ primitive. 
 
std::vector< enum HarqStatus_e > m_harqStatus
 
virtual void CschedCellConfigUpdateInd(const struct CschedCellConfigUpdateIndParameters ¶ms)
 
LteEnbCmacSapProvider * GetLteEnbCmacSapProvider(void)
Get the control MAC SAP provider. 
 
uint32_t m_rlcTransmissionQueueSize
 
Parameters for [re]configuring the UE. 
 
uint8_t lcid
the logical channel id corresponding to the sending RLC instance 
 
std::vector< UlInfoListElement_s > m_ulInfoListReceived
 
uint32_t txQueueSize
the current size of the RLC transmission queue 
 
static Time Now(void)
Return the current simulation virtual time. 
 
EnbMacMemberLteEnbPhySapUser(LteEnbMac *mac)
 
See section 4.3.6 rachListElement. 
 
LteMacSapProvider * m_macSapProvider
 
std::vector< CqiListElement_s > m_dlCqiReceived
 
virtual void CschedCellConfigCnf(const struct CschedCellConfigCnfParameters ¶ms)
 
virtual void UeUpdateConfigurationReq(UeConfig params)
update the configuration of the UE 
 
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
 
virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters ¶ms)=0
 
uint16_t rnti
C-RNTI identifying the UE. 
 
std::vector< MacCeListElement_s > m_ulCeReceived
 
Parameters of the SCHED_DL_CQI_INFO_REQ primitive. 
 
std::vector< struct MacCeListElement_s > m_macCeList
 
virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters ¶ms)=0
 
Parameters of the API primitives. 
 
std::vector< std::vector< Ptr< PacketBurst > > > DlHarqProcessesBuffer_t
 
uint64_t mbrUl
maximum bitrate in uplink 
 
void DoCschedUeReleaseCnf(FfMacCschedSapUser::CschedUeReleaseCnfParameters params)
 
std::vector< struct RachListElement_s > m_rachList
 
std::vector< DlInfoListElement_s > m_dlInfoListReceived
 
void SetLteEnbPhySapProvider(LteEnbPhySapProvider *s)
Set the PHY SAP Provider. 
 
LteEnbCmacSapUser * m_cmacSapUser
 
uint64_t gbrUl
guaranteed bitrate in uplink 
 
virtual void SubframeIndication(uint32_t frameNo, uint32_t subframeNo)
Trigger the start from a new frame (input from Phy layer) 
 
uint16_t statusPduSize
the current size of the pending STATUS RLC PDU message in bytes 
 
Parameters of the SCHED_UL_CQI_INFO_REQ primitive. 
 
LteEnbPhySapUser * GetLteEnbPhySapUser()
Get the eNB-PHY SAP User. 
 
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
 
uint8_t m_transmissionMode
 
struct defining the RACH configuration of the MAC 
 
FfMacSchedSapProvider * m_schedSapProvider
 
bool RemovePacketTag(Tag &tag)
Remove a packet tag. 
 
Parameters of the API primitives. 
 
Parameters of the SCHED_UL_MAC_CTRL_INFO_REQ primitive. 
 
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG. 
 
virtual void ReceivePhyPdu(Ptr< Packet > p)
Called by the Phy to notify the MAC of the reception of a new PHY-PDU. 
 
void DoCschedUeConfigUpdateInd(FfMacCschedSapUser::CschedUeConfigUpdateIndParameters params)
 
LteMacSapUser * m_macSapUser
 
void DoSchedDlConfigInd(FfMacSchedSapUser::SchedDlConfigIndParameters ind)
 
uint16_t retxQueueHolDelay
the Head Of Line delay of the retransmission queue 
 
virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters ¶ms)=0
 
Ptr< Packet > pdu
the RLC PDU 
 
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 trasmitted. 
 
bool valid
true if a valid RA config was allocated, false otherwise 
 
uint16_t m_rlcStatusPduSize
 
void SetLteMacSapUser(LteMacSapUser *s)
Set the MAC SAP user. 
 
virtual void SendLteControlMessage(Ptr< LteControlMessage > msg)=0
Send SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel. 
 
virtual void ReceiveLteControlMessage(Ptr< LteControlMessage > msg)
Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel. 
 
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR. 
 
Parameters of the SCHED_DL_RACH_INFO_REQ primitive. 
 
void DoCschedLcConfigCnf(FfMacCschedSapUser::CschedLcConfigCnfParameters params)
 
Parameters of the SCHED_UL_CONFIG_IND primitive. 
 
virtual void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters ¶ms)=0
 
void DoReceiveLteControlMessage(Ptr< LteControlMessage > msg)
 
A base class which provides memory management and object aggregation. 
 
uint16_t m_rlcTransmissionQueueHolDelay
 
virtual void CschedUeConfigUpdateInd(const struct CschedUeConfigUpdateIndParameters ¶ms)
 
friend class EnbMacMemberLteEnbPhySapUser
 
Parameters of the CSCHED_UE_CONFIG_REQ primitive. 
 
std::map< uint8_t, NcRaPreambleInfo > m_allocatedNcRaPreambleMap
map storing as key the random acccess preamble IDs allocated for non-contention based access...
 
Service Access Point (SAP) offered by the eNB MAC to the eNB RRC See Femto Forum MAC Scheduler Interf...
 
uint64_t gbrDl
guaranteed bitrate in downlink 
 
uint8_t harqProcessId
the HARQ process id that was passed by the MAC in the call to NotifyTxOpportunity that generated this...
 
friend class EnbMacMemberFfMacSchedSapUser
 
uint8_t raPreambleId
random access preamble id 
 
TracedCallback< uint32_t, uint32_t, uint16_t, uint8_t, uint16_t, uint8_t, uint16_t > m_dlScheduling
Trace information regarding DL scheduling Frame number, Subframe number, RNTI, MCS of TB1...
 
virtual void DlInfoListElementHarqFeeback(DlInfoListElement_s params)
Notify the HARQ on the DL tranmission status. 
 
std::vector< struct BuildRarListElement_s > m_buildRarList
 
std::map< uint16_t, DlHarqProcessesBuffer_t > m_miDlHarqProcessesPackets
 
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
 
info associated with a preamble allocated for non-contention based RA 
 
a unique identifier for an interface. 
 
void DoSubframeIndication(uint32_t frameNo, uint32_t subframeNo)
 
EnbMacMemberFfMacSchedSapUser(LteEnbMac *mac)
 
uint8_t GetLayer(void) const 
 
TypeId SetParent(TypeId tid)
Set the parent TypeId. 
 
virtual uint16_t AllocateTemporaryCellRnti()=0
request the allocation of a Temporary C-RNTI 
 
This class implements the MAC layer of the eNodeB device. 
 
Parameters of the CSCHED_UE_RELEASE_CNF primitive. 
 
void SetFfMacSchedSapProvider(FfMacSchedSapProvider *s)
Set the scheduler SAP provider. 
 
virtual void RemoveUe(uint16_t rnti)
remove the UE, e.g., after handover or termination of the RRC connection 
 
FfMacCschedSapProvider * m_cschedSapProvider
 
bool isGbr
true if the bearer is GBR, false if the bearer is NON-GBR 
 
std::vector< struct BuildDataListElement_s > m_buildDataList
 
virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters ¶ms)=0
 
#define UL_PUSCH_TTIS_DELAY
 
Time expiryTime
value the expiration time of this allocation (so that stale preambles can be reused) ...
 
void ReceiveDlCqiLteControlMessage(Ptr< DlCqiLteControlMessage > msg)
Receive a DL CQI ideal control message. 
 
void DoCschedCellConfigCnf(FfMacCschedSapUser::CschedCellConfigCnfParameters params)
 
uint8_t m_logicalChannelGroup
 
Parameters for LteMacSapProvider::TransmitPdu.