24 #include <ns3/pointer.h>
25 #include <ns3/packet.h>
32 #include <ns3/lte-enb-mac.h>
33 #include <ns3/lte-radio-bearer-tag.h>
34 #include <ns3/lte-ue-phy.h>
36 #include "ns3/lte-mac-sap.h"
37 #include <ns3/lte-common.h>
60 virtual void ConfigureMac (uint8_t ulBandwidth, uint8_t dlBandwidth);
61 virtual void AddUe (uint16_t rnti);
64 virtual void ReleaseLc (uint16_t rnti, uint8_t lcid);
275 .AddConstructor<LteEnbMac> ()
276 .AddTraceSource (
"DlScheduling",
277 "Information regarding DL scheduling.",
279 .AddTraceSource (
"UlScheduling",
280 "Information regarding UL scheduling.",
384 NS_LOG_FUNCTION (
this <<
" EnbMac - frame " << frameNo <<
" subframe " << subframeNo);
396 dlcqiInfoReq.
m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
423 params.
m_sfnSf = ((0x3FF & dlSchedFrameNo) << 4) | (0xF & dlSchedSubframeNo);
429 std::vector <FfMacSchedSapProvider::SchedUlCqiInfoReqParameters>::iterator itCqi;
434 m_ulCqiReceived.at (i).m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
438 m_ulCqiReceived.at (i).m_sfnSf = ((0x3FF & (frameNo-1)) << 4) | (0xF & 10);
448 ulMacReq.
m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
469 ulparams.
m_sfnSf = ((0x3FF & ulSchedFrameNo) << 4) | (0xF & ulSchedSubframeNo);
471 std::map <uint16_t,UlInfoListElement_s>::iterator it;
484 for (uint16_t i = 0; i < (*it).second.m_ulReception.size (); i++)
486 (*it).second.m_ulReception.at (i) = 0;
489 (*it).second.m_tpc = 0;
509 NS_LOG_LOGIC (
this <<
" LteControlMessage not recognized");
557 std::map <uint16_t,UlInfoListElement_s>::iterator it;
580 NS_ASSERT_MSG ((*it).second.m_ulReception.at (tag.
GetLcid ()) == 0,
"would overwrite previously written ulReception element");
589 std::map <LteFlowId_t, LteMacSapUser* >::iterator it2;
592 (*it2).second->ReceivePdu (p);
606 NS_LOG_FUNCTION (
this <<
" ulBandwidth=" << (uint16_t) ulBandwidth <<
" dlBandwidth=" << (uint16_t) dlBandwidth);
632 std::map <LteFlowId_t, LteMacSapUser* >::iterator it;
639 m_rlcAttached.insert (std::pair<LteFlowId_t, LteMacSapUser* > (flow, msu));
726 std::map <LteFlowId_t, LteMacSapUser* >::iterator it;
730 for (
unsigned int j = 0; j < ind.
m_buildDataList.at (i).m_rlcPduList.size (); j++)
732 for (uint16_t k = 0; k < ind.
m_buildDataList.at (i).m_rlcPduList.at (j).size (); k++)
735 ind.
m_buildDataList.at (i).m_rlcPduList.at (j).at (k).m_logicalChannelIdentity);
738 NS_LOG_DEBUG (
this <<
" rnti= " << flow.m_rnti <<
" lcid= " << (uint32_t) flow.m_lcId <<
" layer= " << k);
739 (*it).second->NotifyTxOpportunity (ind.
m_buildDataList.at (i).m_rlcPduList.at (j).at (k).m_size, k);
773 NS_FATAL_ERROR (
"Found element with more than two transport blocks");
784 for (
unsigned int i = 0; i < ind.
m_dciList.size (); i++)
793 for ( uint32_t i = 0; i < ind.
m_dciList.size (); i++ )