27 #include <ns3/pointer.h> 28 #include <ns3/packet.h> 29 #include <ns3/simulator.h> 36 #include <ns3/lte-enb-mac.h> 37 #include <ns3/lte-radio-bearer-tag.h> 38 #include <ns3/lte-ue-phy.h> 40 #include "ns3/lte-mac-sap.h" 41 #include "ns3/lte-enb-cmac-sap.h" 42 #include <ns3/lte-common.h> 70 virtual void ConfigureMac (uint8_t ulBandwidth, uint8_t dlBandwidth);
71 virtual void AddUe (uint16_t rnti);
72 virtual void RemoveUe (uint16_t rnti);
75 virtual void ReleaseLc (uint16_t rnti, uint8_t lcid);
343 .AddAttribute (
"NumberOfRaPreambles",
344 "how many random access preambles are available for the contention based RACH process",
347 MakeUintegerChecker<uint8_t> (4, 64))
348 .AddAttribute (
"PreambleTransMax",
349 "Maximum number of random access preamble transmissions",
352 MakeUintegerChecker<uint8_t> (3, 200))
353 .AddAttribute (
"RaResponseWindowSize",
354 "length of the window (in TTIs) for the reception of the random access response (RAR); the resulting RAR timeout is this value + 3 ms",
357 MakeUintegerChecker<uint8_t> (2, 10))
358 .AddTraceSource (
"DlScheduling",
359 "Information regarding DL scheduling.",
361 "ns3::LteEnbMac::DlSchedulingTracedCallback")
362 .AddTraceSource (
"UlScheduling",
363 "Information regarding UL scheduling.",
365 "ns3::LteEnbMac::UlSchedulingTracedCallback")
366 .AddAttribute (
"ComponentCarrierId",
367 "ComponentCarrier Id, needed to reply on the appropriate sap.",
370 MakeUintegerChecker<uint8_t> (0,4))
498 NS_LOG_FUNCTION (
this <<
" EnbMac - frame " << frameNo <<
" subframe " << subframeNo);
510 dlcqiInfoReq.
m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
520 NS_ASSERT (subframeNo > 0 && subframeNo <= 10);
525 NS_LOG_INFO (
this <<
" preambleId " << (uint32_t) it->first <<
": " << it->second <<
" received");
529 NS_LOG_INFO (
"preambleId " << (uint32_t) it->first <<
": collision");
539 rnti = jt->second.rnti;
540 NS_LOG_INFO (
"preambleId previously allocated for NC based RA, RNTI =" << (uint32_t) rnti <<
", sending RAR");
546 NS_LOG_INFO (
"preambleId " << (uint32_t) it->first <<
": allocated T-C-RNTI " << (uint32_t) rnti <<
", sending RAR");
552 rachInfoReqParams.
m_rachList.push_back (rachLe);
553 m_rapIdRntiMap.insert (std::pair <uint16_t, uint32_t> (rnti, it->first));
573 dlparams.
m_sfnSf = ((0x3FF & dlSchedFrameNo) << 4) | (0xF & dlSchedSubframeNo);
592 m_ulCqiReceived.at (i).m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & (subframeNo - 1));
596 m_ulCqiReceived.at (i).m_sfnSf = ((0x3FF & (frameNo - 1)) << 4) | (0xF & 10);
606 ulMacReq.
m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
627 ulparams.
m_sfnSf = ((0x3FF & ulSchedFrameNo) << 4) | (0xF & ulSchedSubframeNo);
663 NS_LOG_LOGIC (
this <<
" LteControlMessage type " << msg->GetMessageType () <<
" not recognized");
761 uint16_t rnti = tag.
GetRnti ();
763 std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt =
m_rlcAttached.find (rnti);
765 std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcid);
769 if (lcidIt != rntiIt->second.end ())
771 (*lcidIt).second->ReceivePdu (p, rnti, lcid);
784 NS_LOG_FUNCTION (
this <<
" ulBandwidth=" << (uint16_t) ulBandwidth <<
" dlBandwidth=" << (uint16_t) dlBandwidth);
799 std::map<uint8_t, LteMacSapUser*>
empty;
800 std::pair <std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator,
bool>
801 ret =
m_rlcAttached.insert (std::pair <uint16_t, std::map<uint8_t, LteMacSapUser*> >
803 NS_ASSERT_MSG (ret.second,
"element already present, RNTI already existed");
812 std::vector < Ptr<PacketBurst> > dlHarqLayer0pkt;
813 dlHarqLayer0pkt.resize (8);
814 for (uint8_t i = 0; i < 8; i++)
817 dlHarqLayer0pkt.at (i) = pb;
819 std::vector < Ptr<PacketBurst> > dlHarqLayer1pkt;
820 dlHarqLayer1pkt.resize (8);
821 for (uint8_t i = 0; i < 8; i++)
824 dlHarqLayer1pkt.at (i) = pb;
827 buf.push_back (dlHarqLayer0pkt);
828 buf.push_back (dlHarqLayer1pkt);
848 std::map <LteFlowId_t, LteMacSapUser* >::iterator it;
852 std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt =
m_rlcAttached.find (lcinfo.
rnti);
854 std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcinfo.
lcId);
855 if (lcidIt == rntiIt->second.end ())
857 rntiIt->second.insert (std::pair<uint8_t, LteMacSapUser*> (lcinfo.
lcId, msu));
868 if (lcinfo.
lcId != 0)
902 std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt =
m_rlcAttached.find (rnti);
903 rntiIt->second.erase (lcid);
950 preambleInfo.
rnti = rnti;
951 NS_LOG_INFO (
"allocated preamble for NC based RA: preamble " << preambleId <<
", RNTI " << preambleInfo.
rnti <<
", exiryTime " << preambleInfo.
expiryTime);
1025 std::map <LteFlowId_t, LteMacSapUser* >::iterator it;
1029 for (uint16_t layer = 0; layer < ind.
m_buildDataList.at (i).m_dci.m_ndi.size (); layer++)
1036 for (uint16_t lcId = 0; lcId < (*it).second.size (); lcId++)
1039 (*it).second.at (lcId).at (ind.
m_buildDataList.at (i).m_dci.m_harqProcess) = pb;
1043 for (
unsigned int j = 0; j < ind.
m_buildDataList.at (i).m_rlcPduList.size (); j++)
1045 for (uint16_t k = 0; k < ind.
m_buildDataList.at (i).m_rlcPduList.at (j).size (); k++)
1051 uint8_t lcid = ind.
m_buildDataList.at (i).m_rlcPduList.at (j).at (k).m_logicalChannelIdentity;
1052 std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt =
m_rlcAttached.find (rnti);
1054 std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcid);
1056 NS_LOG_DEBUG (
this <<
" rnti= " << rnti <<
" lcid= " << (uint32_t) lcid <<
" layer= " << k);
1094 dlSchedulingCallbackInfo.
mcsTb2 = 0;
1095 dlSchedulingCallbackInfo.
sizeTb2 = 0;
1115 NS_FATAL_ERROR (
"Found element with more than two transport blocks");
1132 rarMsg->SetRaRnti (raRnti);
1141 rar.
rapId = itRapId->second;
1143 rarMsg->AddRar (rar);
1159 for (
unsigned int i = 0; i < ind.
m_dciList.size (); i++)
1168 for ( uint32_t i = 0; i < ind.
m_dciList.size (); i++ )
1249 for (uint8_t layer = 0; layer < params.
m_harqStatus.size (); layer++)
Service Access Point (SAP) offered by the component carrier manager (CCM) by MAC to CCM...
std::vector< struct UlInfoListElement_s > m_ulInfoList
UL info list.
void DoConfigureMac(uint8_t ulBandwidth, uint8_t dlBandwidth)
Configure MAC function.
void DoReconfigureLc(LteEnbCmacSapProvider::LcInfo lcinfo)
Reconfigure LC function.
FfMacSchedSapUser * m_schedSapUser
the Sched SAP user
Parameters of the CSCHED_LC_CONFIG_CNF primitive.
AllocateNcRaPreambleReturnValue structure.
virtual void UlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)
Returns to MAC level the UL-CQI evaluated.
EnbMacMemberFfMacCschedSapUser(LteEnbMac *mac)
Constructor.
void DoDlInfoListElementHarqFeeback(DlInfoListElement_s params)
DL Info List ELements HARQ Feedback function.
EnbMacMemberLteMacSapProvider class.
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
UL-CQI received.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
uint8_t m_logicalChannelIdentity
logical channel indentity
uint16_t m_rnti
UE id within this cell.
virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters ¶ms)=0
CSCHED_UE_CONFIG_REQ.
NS_ASSERT_MSG(false, "Ipv4AddressGenerator::MaskToIndex(): Impossible")
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)
legacy public for use the Phy callback
virtual void ReconfigureLc(LcInfo lcinfo)
Reconfigure an existing logical channel.
uint32_t frameNo
frame number
uint8_t preambleTransMax
preamble transmit maximum
Parameters of the CSCHED_CELL_CONFIG_UPDATE_IND primitive.
void DoUlInfoListElementHarqFeeback(UlInfoListElement_s params)
UL Info List ELements HARQ Feedback 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...
LteEnbCmacSapProvider * m_cmacSapProvider
the CMAC SAP provider
std::map< uint16_t, std::map< uint8_t, LteMacSapUser * > > m_rlcAttached
rnti, lcid, SAP of the RLC instance
enum ns3::UlCqi_s::Type_e m_type
type
void DoAddLc(LteEnbCmacSapProvider::LcInfo lcinfo, LteMacSapUser *msu)
Add LC function.
LteEnbCmacSapProvider::RachConfig DoGetRachConfig()
Get RACH configuration function.
virtual void SchedDlConfigInd(const struct SchedDlConfigIndParameters ¶ms)
SCHED_DL_CONFIG_IND.
void DoCschedCellConfigUpdateInd(FfMacCschedSapUser::CschedCellConfigUpdateIndParameters params)
CSched Cell Config Update Indication function.
void DoReleaseLc(uint16_t rnti, uint8_t lcid)
Release LC function.
void SetLteEnbCmacSapUser(LteEnbCmacSapUser *s)
Set the control MAC SAP user.
void SetComponentCarrierId(uint8_t index)
Set the component carrier ID.
void DoSchedUlConfigInd(FfMacSchedSapUser::SchedUlConfigIndParameters params)
Sched UL Config Indication function.
uint8_t raResponseWindowSize
RA response window size.
void DoReportMacCeToScheduler(MacCeListElement_s bsr)
Report MAC CE to scheduler.
std::vector< struct LogicalChannelConfigListElement_s > m_logicalChannelConfigList
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
SCHED_UL_TRIGGER_REQ.
virtual void ReceiveRachPreamble(uint32_t prachId)
notify the reception of a RACH preamble on the PRACH
uint8_t m_preambleTransMax
preamble transmit maximum
uint8_t m_transmissionMode
Transmission mode 1..7
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters params)
Transmit PDU function.
virtual uint8_t GetMacChTtiDelay()=0
Get the delay from MAC to Channel expressed in TTIs.
std::vector< struct UlDciListElement_s > m_dciList
DCI list.
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.
LteCcmMacSapProvider * GetLteCcmMacSapProvider()
Get the eNB-ComponentCarrierManager SAP User.
Parameters of the CSCHED_UE_CONFIG_UPDATE_IND primitive.
uint8_t m_ulBandwidth
UL bandwidth.
virtual void AddLc(LcInfo lcinfo, LteMacSapUser *msu)
Add a new logical channel.
uint64_t mbrDl
maximum bitrate in downlink
Parameters of the CSCHED_LC_RELEASE_REQ primitive.
friend class EnbMacMemberFfMacCschedSapUser
allow EnbMacMemberFfMacCschedSapUser class friend access
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC.
uint32_t m_rlcRetransmissionQueueSize
RLC retransmission queue size.
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters ¶ms)=0
SCHED_DL_TRIGGER_REQ.
uint8_t m_transmissionMode
transmission mode
See section 4.3.12 ulInfoListElement.
void DoAddUe(uint16_t rnti)
Add UE function.
virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters ¶ms)=0
SCHED_DL_RLC_BUFFER_REQ.
Parameters of the SCHED_DL_TRIGGER_REQ primitive.
uint8_t lcid
the logical channel id corresponding to the sending RLC instance
uint8_t componentCarrierId
the component carrier id corresponding to the sending Mac istance
uint8_t m_logicalChannelIdentity
logical channel identity
uint8_t m_componentCarrierId
component carrier Id used to address sap
void SetLteCcmMacSapUser(LteCcmMacSapUser *s)
Set the ComponentCarrierManager SAP user.
virtual void ConfigureMac(uint8_t ulBandwidth, uint8_t dlBandwidth)
uint8_t componentCarrierId
component carrier ID
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
ERAB guaranteed bit rate DL.
virtual AllocateNcRaPreambleReturnValue AllocateNcRaPreamble(uint16_t rnti)
Allocate a random access preamble for non-contention based random access (e.g., for handover)...
bool m_reconfigureFlag
reconfigure flag
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
received RACH preamble count
FfMacCschedSapUser * m_cschedSapUser
the CSched SAP user
See section 4.3.4 logicalChannelConfigListElement.
Service Access Point (SAP) offered by the MAC to the RRC See Femto Forum MAC Scheduler Interface Spec...
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...
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.
uint8_t m_dlBandwidth
DL badnwidth.
uint16_t m_rnti
UE id within this cell.
bool m_reconfigureFlag
reconfigure flag
LteEnbPhySapProvider * m_enbPhySapProvider
the ENB Phy SAP provider
enum ns3::LogicalChannelConfigListElement_s::Direction_e m_direction
the direction
virtual void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters ¶ms)
CSCHED_LC_CONFIG_CNF.
uint16_t GetRnti(void) const
Get RNTI function.
LteEnbPhySapUser * m_enbPhySapUser
the ENB Phy SAP user
FfMacSchedSapUser * GetFfMacSchedSapUser(void)
Get the scheduler SAP user.
make Callback use a separate empty type
void DoCschedUeConfigCnf(FfMacCschedSapUser::CschedUeConfigCnfParameters params)
CSched UE Config configure function.
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)
CSCHED_LC_RELEASE_CNF.
EnbMacMemberFfMacSchedSapUser class.
void DoUeUpdateConfigurationReq(LteEnbCmacSapProvider::UeConfig params)
UE Update configuration request function.
Parameters of the SCHED_UL_TRIGGER_REQ primitive.
Hold an unsigned integer type.
EnbMacMemberLteEnbCmacSapProvider(LteEnbMac *mac)
Constructor.
Logical Channel information to be passed to CmacSapProvider::ConfigureLc.
std::map< uint8_t, uint32_t > m_rapIdRntiMap
RAPID RNTI map.
EnbMacMemberFfMacCschedSapUser class.
uint16_t rnti
rnti previously allocated for this non-contention based RA procedure
uint8_t m_macChTtiDelay
delay of MAC, PHY and channel in terms of TTIs
uint16_t rnti
the C-RNTI identifying the UE
void DoCschedLcReleaseCnf(FfMacCschedSapUser::CschedLcReleaseCnfParameters params)
CSched LC Release configure function.
Parameters of the API primitives.
static TypeId GetTypeId(void)
Get the type ID.
void DoUlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)
UL CQI report.
virtual void UlInfoListElementHarqFeeback(UlInfoListElement_s params)
Notify the HARQ on the UL tranmission status.
virtual void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters ¶ms)=0
SCHED_DL_RACH_INFO_REQ.
virtual void AddUe(uint16_t rnti)
Add UE function.
uint64_t m_eRabGuaranteedBitrateUl
ERAB guaranteed bit rate UL.
friend class EnbMacMemberLteEnbCmacSapProvider
allow EnbMacMemberLteEnbCmacSapProvider class friend access
virtual void DoDispose(void)
Destructor implementation.
enum ns3::LogicalChannelConfigListElement_s::QosBearerType_e m_qosBearerType
the QOS bearer type
void ReceiveBsrMessage(MacCeListElement_s bsr)
Receive a CE element containing the buffer status report.
struct UlCqi_s m_ulCqi
UL CQI.
uint32_t subframeNo
subframe number
virtual RachConfig GetRachConfig()
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
virtual void SchedUlConfigInd(const struct SchedUlConfigIndParameters ¶ms)
SCHED_UL_CONFIG_IND.
MemberLteCcmMacSapProvider class.
uint16_t m_rlcRetransmissionHolDelay
RLC retransmission HOL delay.
std::vector< struct CqiListElement_s > m_cqiList
CQI list.
uint8_t m_raResponseWindowSize
RA response window size.
std::vector< struct DlInfoListElement_s > m_dlInfoList
DL info list.
See section 4.3.23 dlInfoListElement.
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters ¶ms)=0
CSCHED_CELL_CONFIG_REQ.
BuildRarListElement_s rarPayload
RAR payload.
void DoReceiveRachPreamble(uint8_t prachId)
Receive RACH Preamble function.
void DoRemoveUe(uint16_t rnti)
Remove UE function.
See section 4.3.14 macCEListElement.
Parameters for [re]configuring the UE.
virtual void ReleaseLc(uint16_t rnti, uint8_t lcid)
release an existing logical channel
uint32_t m_subframeNo
subframe number of current subframe indication
uint64_t m_eRabMaximulBitrateUl
ERAB maximum bit rate UL.
LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue DoAllocateNcRaPreamble(uint16_t rnti)
Allocate NC RA preamble function.
uint8_t m_numberOfRaPreambles
number of RA preambles
Parameters of the API primitives.
uint8_t numberOfRaPreambles
number of RA preambles
uint8_t GetLayer(void) const
Get layer function.
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)
CSCHED_UE_CONFIG_CNF.
virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters ¶ms)=0
CSCHED_UE_RELEASE_REQ.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t lcGroup
logical channel group
uint64_t m_eRabMaximulBitrateDl
ERAB mqximum bit rate DL.
virtual void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters ¶ms)
CSCHED_UE_RELEASE_CNF.
Ptr< Packet > Copy(void) const
performs a COW copy of the packet.
Parameters of the CSCHED_LC_CONFIG_REQ primitive.
std::vector< enum HarqStatus_e > m_harqStatus
HARQ status.
virtual void CschedCellConfigUpdateInd(const struct CschedCellConfigUpdateIndParameters ¶ms)
CSCHED_UE_CONFIG_IND.
LteEnbCmacSapProvider * GetLteEnbCmacSapProvider(void)
Get the control MAC SAP provider.
Service Access Point (SAP) offered by MAC to the component carrier manager (CCM). ...
uint32_t m_rlcTransmissionQueueSize
RLC transmission queue size.
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
UL HARQ feedback received.
uint32_t txQueueSize
the current size of the RLC transmission queue
static Time Now(void)
Return the current simulation virtual time.
EnbMacMemberLteEnbPhySapUser(LteEnbMac *mac)
Constructor.
See section 4.3.6 rachListElement.
LteMacSapProvider * m_macSapProvider
the MAC SAP provider
std::vector< CqiListElement_s > m_dlCqiReceived
DL-CQI received.
virtual void CschedCellConfigCnf(const struct CschedCellConfigCnfParameters ¶ms)
CSCHED_CELL_CONFIG_CNF.
NS_LOG_LOGIC("Net device "<< nd<< " is not bridged")
virtual void UeUpdateConfigurationReq(UeConfig params)
update the configuration of the UE
uint8_t m_harqProcessId
HARQ process ID.
FfMacCschedSapUser class.
virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters ¶ms)=0
SCHED_UL_CQI_INFO_REQ.
uint16_t rnti
C-RNTI identifying the UE.
LteCcmMacSapUser * m_ccmMacSapUser
CCM MAC SAP user.
std::vector< MacCeListElement_s > m_ulCeReceived
CE received (BSR up to now)
Parameters of the SCHED_DL_CQI_INFO_REQ primitive.
std::vector< struct MacCeListElement_s > m_macCeList
MAC CE list.
virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters ¶ms)=0
SCHED_UL_MAC_CTRL_INFO_REQ.
Parameters of the API primitives.
std::vector< std::vector< Ptr< PacketBurst > > > DlHarqProcessesBuffer_t
DlHarqProcessesBuffer_t typedef.
uint64_t mbrUl
maximum bitrate in uplink
void DoCschedUeReleaseCnf(FfMacCschedSapUser::CschedUeReleaseCnfParameters params)
CSched UE Release configure function.
std::vector< struct RachListElement_s > m_rachList
RACH list.
EnbMacMemberLteEnbCmacSapProvider class.
std::vector< DlInfoListElement_s > m_dlInfoListReceived
DL HARQ feedback received.
void SetLteEnbPhySapProvider(LteEnbPhySapProvider *s)
Set the PHY SAP Provider.
LteEnbCmacSapUser * m_cmacSapUser
the CMAC SAP user
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
uint8_t GetLcid(void) const
Get LCID function.
Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
LteEnbPhySapUser * GetLteEnbPhySapUser()
Get the eNB-PHY SAP User.
void AddPacketTag(const Tag &tag) const
Add a packet tag.
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
uint8_t m_transmissionMode
transmission mode
struct defining the RACH configuration of the MAC
FfMacSchedSapProvider * m_schedSapProvider
the Sched SAP provider
void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params)
Report Buffer Status function.
bool RemovePacketTag(Tag &tag)
Remove a packet tag.
uint8_t raPrachMaskIndex
PRACH mask index.
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.
LteCcmMacSapProvider * m_ccmMacSapProvider
CCM MAC SAP provider.
void DoCschedUeConfigUpdateInd(FfMacCschedSapUser::CschedUeConfigUpdateIndParameters params)
CSched UE Config Update Indication function.
LteMacSapUser * m_macSapUser
the MAC SAP user
void DoSchedDlConfigInd(FfMacSchedSapUser::SchedDlConfigIndParameters ind)
Sched DL Config Indication function.
uint16_t retxQueueHolDelay
the Head Of Line delay of the retransmission queue
virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters ¶ms)=0
CSCHED_LC_CONFIG_REQ.
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.
uint16_t m_estimatedSize
estimated size
TracedCallback< DlSchedulingCallbackInfo > m_dlScheduling
Trace information regarding DL scheduling Frame number, Subframe number, RNTI, MCS of TB1...
bool valid
true if a valid RA config was allocated, false otherwise
uint16_t m_rlcStatusPduSize
RLC status PDU size.
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.
uint32_t m_frameNo
frame number of current subframe indication
#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)
CSched LC Config configure function.
Parameters of the SCHED_UL_CONFIG_IND primitive.
virtual void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters ¶ms)=0
SCHED_DL_CQI_INFO_REQ.
void DoReceiveLteControlMessage(Ptr< LteControlMessage > msg)
Receive a DL CQI ideal control message.
A base class which provides memory management and object aggregation.
uint16_t m_rlcTransmissionQueueHolDelay
RLC transmission queue HOL delay.
virtual void CschedUeConfigUpdateInd(const struct CschedUeConfigUpdateIndParameters ¶ms)
CSCHED_UE_UPDATE_IND.
friend class EnbMacMemberLteEnbPhySapUser
allow EnbMacMemberLteEnbPhySapUser class friend access
DlSchedulingCallbackInfo structure.
Parameters of the CSCHED_UE_CONFIG_REQ primitive.
std::map< uint8_t, NcRaPreambleInfo > m_allocatedNcRaPreambleMap
map storing as key the random access 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
allow EnbMacMemberFfMacSchedSapUser class friend access
uint8_t raPreambleId
random access preamble id
virtual void DlInfoListElementHarqFeeback(DlInfoListElement_s params)
Notify the HARQ on the DL tranmission status.
std::vector< struct BuildRarListElement_s > m_buildRarList
build rar list
std::map< uint16_t, DlHarqProcessesBuffer_t > m_miDlHarqProcessesPackets
Packet under transmission of the DL HARQ process.
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)
Subrame Indication function.
EnbMacMemberFfMacSchedSapUser(LteEnbMac *mac)
Constructor.
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
the Csched SAP provider
bool isGbr
true if the bearer is GBR, false if the bearer is NON-GBR
std::vector< struct BuildDataListElement_s > m_buildDataList
build data list
virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters ¶ms)=0
CSCHED_LC_RELEASE_REQ.
#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)
CSched Cell Config configure function.
uint8_t m_logicalChannelGroup
logical channel group
Parameters for LteMacSapProvider::TransmitPdu.