|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
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 (uint16_t ulBandwidth, uint16_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 .AddAttribute (
"ConnEstFailCount",
359 "how many time T300 timer can expire on the same cell",
362 MakeUintegerChecker<uint8_t> (1, 4))
363 .AddTraceSource (
"DlScheduling",
364 "Information regarding DL scheduling.",
366 "ns3::LteEnbMac::DlSchedulingTracedCallback")
367 .AddTraceSource (
"UlScheduling",
368 "Information regarding UL scheduling.",
370 "ns3::LteEnbMac::UlSchedulingTracedCallback")
371 .AddAttribute (
"ComponentCarrierId",
372 "ComponentCarrier Id, needed to reply on the appropriate sap.",
375 MakeUintegerChecker<uint8_t> (0,4))
503 NS_LOG_FUNCTION (
this <<
" EnbMac - frame " << frameNo <<
" subframe " << subframeNo);
515 dlcqiInfoReq.
m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
525 NS_ASSERT (subframeNo > 0 && subframeNo <= 10);
530 NS_LOG_INFO (
this <<
" preambleId " << (uint32_t) it->first <<
": " << it->second <<
" received");
534 NS_LOG_INFO (
"preambleId " << (uint32_t) it->first <<
": collision");
544 rnti = jt->second.rnti;
545 NS_LOG_INFO (
"preambleId previously allocated for NC based RA, RNTI =" << (uint32_t) rnti <<
", sending RAR");
551 NS_LOG_INFO (
"preambleId " << (uint32_t) it->first <<
": allocated T-C-RNTI " << (uint32_t) rnti <<
", sending RAR");
557 rachInfoReqParams.
m_rachList.push_back (rachLe);
558 m_rapIdRntiMap.insert (std::pair <uint16_t, uint32_t> (rnti, it->first));
578 dlparams.
m_sfnSf = ((0x3FF & dlSchedFrameNo) << 4) | (0xF & dlSchedSubframeNo);
597 m_ulCqiReceived.at (i).m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & (subframeNo - 1));
601 m_ulCqiReceived.at (i).m_sfnSf = ((0x3FF & (frameNo - 1)) << 4) | (0xF & 10);
611 ulMacReq.
m_sfnSf = ((0x3FF & frameNo) << 4) | (0xF & subframeNo);
632 ulparams.
m_sfnSf = ((0x3FF & ulSchedFrameNo) << 4) | (0xF & ulSchedSubframeNo);
668 NS_LOG_LOGIC (
this <<
" LteControlMessage type " << msg->GetMessageType () <<
" not recognized");
766 uint16_t rnti = tag.
GetRnti ();
768 std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt =
m_rlcAttached.find (rnti);
770 std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcid);
775 rxPduParams.
rnti = rnti;
776 rxPduParams.
lcid = lcid;
779 if (lcidIt != rntiIt->second.end ())
781 (*lcidIt).second->ReceivePdu (rxPduParams);
794 NS_LOG_FUNCTION (
this <<
" ulBandwidth=" << ulBandwidth <<
" dlBandwidth=" << dlBandwidth);
809 std::map<uint8_t, LteMacSapUser*>
empty;
810 std::pair <std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator,
bool>
811 ret =
m_rlcAttached.insert (std::pair <uint16_t, std::map<uint8_t, LteMacSapUser*> >
813 NS_ASSERT_MSG (ret.second,
"element already present, RNTI already existed");
822 std::vector < Ptr<PacketBurst> > dlHarqLayer0pkt;
823 dlHarqLayer0pkt.resize (8);
824 for (uint8_t i = 0; i < 8; i++)
827 dlHarqLayer0pkt.at (i) = pb;
829 std::vector < Ptr<PacketBurst> > dlHarqLayer1pkt;
830 dlHarqLayer1pkt.resize (8);
831 for (uint8_t i = 0; i < 8; i++)
834 dlHarqLayer1pkt.at (i) = pb;
837 buf.push_back (dlHarqLayer0pkt);
838 buf.push_back (dlHarqLayer1pkt);
852 NS_LOG_DEBUG (
"start checking for unprocessed preamble for rnti: " << rnti);
857 if (jt->second.rnti == rnti)
872 std::vector<MacCeListElement_s>::iterator itCeRxd =
m_ulCeReceived.begin ();
875 if (itCeRxd->m_rnti == rnti)
891 std::map <LteFlowId_t, LteMacSapUser* >::iterator it;
895 std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt =
m_rlcAttached.find (lcinfo.
rnti);
897 std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcinfo.
lcId);
898 if (lcidIt == rntiIt->second.end ())
900 rntiIt->second.insert (std::pair<uint8_t, LteMacSapUser*> (lcinfo.
lcId, msu));
911 if (lcinfo.
lcId != 0)
945 std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt =
m_rlcAttached.find (rnti);
946 rntiIt->second.erase (lcid);
1014 preambleInfo.
rnti = rnti;
1015 NS_LOG_INFO (
"allocated preamble for NC based RA: preamble " << preambleId <<
", RNTI " << preambleInfo.
rnti <<
", exiryTime " << preambleInfo.
expiryTime);
1089 std::map <LteFlowId_t, LteMacSapUser* >::iterator it;
1094 for (uint16_t layer = 0; layer < ind.
m_buildDataList.at (i).m_dci.m_ndi.size (); layer++)
1101 for (uint16_t lcId = 0; lcId < (*it).second.size (); lcId++)
1104 (*it).second.at (lcId).at (ind.
m_buildDataList.at (i).m_dci.m_harqProcess) = pb;
1108 for (
unsigned int j = 0; j < ind.
m_buildDataList.at (i).m_rlcPduList.size (); j++)
1110 for (uint16_t
k = 0;
k < ind.
m_buildDataList.at (i).m_rlcPduList.at (j).size ();
k++)
1116 uint8_t lcid = ind.
m_buildDataList.at (i).m_rlcPduList.at (j).at (
k).m_logicalChannelIdentity;
1117 std::map <uint16_t, std::map<uint8_t, LteMacSapUser*> >::iterator rntiIt =
m_rlcAttached.find (rnti);
1119 std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcid);
1121 NS_LOG_DEBUG (
this <<
" rnti= " << rnti <<
" lcid= " << (uint32_t) lcid <<
" layer= " <<
k);
1126 txOpParams.
rnti = rnti;
1127 txOpParams.
lcid = lcid;
1128 (*lcidIt).second->NotifyTxOpportunity (txOpParams);
1165 dlSchedulingCallbackInfo.
mcsTb2 = 0;
1166 dlSchedulingCallbackInfo.
sizeTb2 = 0;
1186 NS_FATAL_ERROR (
"Found element with more than two transport blocks");
1203 rarMsg->SetRaRnti (raRnti);
1212 rar.
rapId = itRapId->second;
1214 rarMsg->AddRar (rar);
1230 for (
unsigned int i = 0; i < ind.
m_dciList.size (); i++)
1239 for ( uint32_t i = 0; i < ind.
m_dciList.size (); i++ )
1320 for (uint8_t layer = 0; layer < params.
m_harqStatus.size (); layer++)
std::vector< struct BuildRarListElement_s > m_buildRarList
build rar list
Parameters for LteMacSapProvider::TransmitPdu.
Parameters of the CSCHED_UE_RELEASE_REQ primitive.
void DoDlInfoListElementHarqFeeback(DlInfoListElement_s params)
DL Info List ELements HARQ Feedback function.
uint8_t harqProcessId
the HARQ process id that was passed by the MAC in the call to NotifyTxOpportunity that generated this...
a unique identifier for an interface.
uint8_t raResponseWindowSize
RA response window size.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Service Access Point (SAP) offered by the MAC to the RRC See Femto Forum MAC Scheduler Interface Spec...
std::vector< struct LogicalChannelConfigListElement_s > m_logicalChannelConfigList
logicalChannelConfigList
void DoUlInfoListElementHarqFeeback(UlInfoListElement_s params)
UL Info List ELements HARQ Feedback function.
std::vector< struct UlDciListElement_s > m_dciList
DCI list.
Parameters of the CSCHED_LC_CONFIG_REQ primitive.
uint32_t retxQueueSize
the current size of the RLC retransmission queue in bytes
uint8_t m_logicalChannelIdentity
logical channel identity
uint16_t m_rnti
UE id within this cell.
std::map< uint16_t, uint32_t > m_rapIdRntiMap
RAPID RNTI map.
LteEnbCmacSapProvider * m_cmacSapProvider
the CMAC SAP provider
friend class EnbMacMemberLteEnbCmacSapProvider
allow EnbMacMemberLteEnbCmacSapProvider class friend access
uint16_t rnti
the C-RNTI identifying the UE
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
std::vector< struct UlInfoListElement_s > m_ulInfoList
UL info list.
void DoCschedLcConfigCnf(FfMacCschedSapUser::CschedLcConfigCnfParameters params)
CSched LC Config configure function.
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Ptr< Packet > p
the RLC PDU to be received
FfMacSchedSapProvider * m_schedSapProvider
the Sched SAP provider
uint8_t lcId
logical channel identifier
void DoRemoveUe(uint16_t rnti)
Remove UE function.
Tag used to define the RNTI and LC id for each MAC packet trasmitted.
uint8_t m_connEstFailCount
the counter value for T300 timer expiration
Parameters of the SCHED_DL_CQI_INFO_REQ primitive.
virtual void CschedCellConfigCnf(const struct CschedCellConfigCnfParameters ¶ms)
CSCHED_CELL_CONFIG_CNF.
virtual void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters ¶ms)
CSCHED_LC_CONFIG_CNF.
FfMacSchedSapUser * GetFfMacSchedSapUser(void)
Get the scheduler SAP user.
static Time Now(void)
Return the current simulation virtual time.
Parameters of the SCHED_DL_RACH_INFO_REQ primitive.
virtual void SchedUlConfigInd(const struct SchedUlConfigIndParameters ¶ms)
SCHED_UL_CONFIG_IND.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t m_componentCarrierId
component carrier Id used to address sap
Parameters for LteMacSapUser::NotifyTxOpportunity.
void DoCschedUeConfigCnf(FfMacCschedSapUser::CschedUeConfigCnfParameters params)
CSched UE Config configure function.
friend class EnbMacMemberLteMacSapProvider< LteEnbMac >
allow EnbMacMemberLteMacSapProvider<LteEnbMac> class friend access
void DoSchedUlConfigInd(FfMacSchedSapUser::SchedUlConfigIndParameters params)
Sched UL Config Indication function.
virtual uint16_t AllocateTemporaryCellRnti()=0
request the allocation of a Temporary C-RNTI
Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
Parameters of the SCHED_UL_CONFIG_IND primitive.
uint16_t m_estimatedSize
estimated size
EnbMacMemberFfMacCschedSapUser(LteEnbMac *mac)
Constructor.
LteEnbPhySapUser * GetLteEnbPhySapUser()
Get the eNB-PHY SAP User.
FfMacCschedSapUser * m_cschedSapUser
the CSched SAP user
void DoUlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)
UL CQI report.
uint8_t m_transmissionMode
transmission mode
void DoCschedCellConfigUpdateInd(FfMacCschedSapUser::CschedCellConfigUpdateIndParameters params)
CSched Cell Config Update Indication function.
virtual void CschedUeConfigUpdateInd(const struct CschedUeConfigUpdateIndParameters ¶ms)
CSCHED_UE_UPDATE_IND.
a MAC RAR and the corresponding RAPID subheader
uint8_t raPreambleId
random access preamble id
Parameters of the CSCHED_CELL_CONFIG_UPDATE_IND primitive.
uint16_t GetRnti(void) const
Get RNTI function.
uint8_t m_raResponseWindowSize
RA response window size.
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC.
FfMacCschedSapProvider * m_cschedSapProvider
the Csched SAP provider
virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters ¶ms)=0
CSCHED_UE_RELEASE_REQ.
void DoSubframeIndication(uint32_t frameNo, uint32_t subframeNo)
Subrame Indication function.
This class implements the MAC layer of the eNodeB device.
uint16_t m_rnti
UE id within this cell.
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,...
uint8_t m_transmissionMode
Transmission mode 1..7
Parameters of the CSCHED_UE_CONFIG_CNF primitive.
See section 4.3.24 cqiListElement.
uint16_t rnti
the C-RNTI identifying the UE
Logical Channel information to be passed to CmacSapProvider::ConfigureLc.
uint8_t lcid
the logical channel id
bool m_reconfigureFlag
reconfigure flag
virtual void UeUpdateConfigurationReq(UeConfig params)
update the configuration of the UE
Ptr< Packet > pdu
the RLC PDU
std::vector< FfMacSchedSapProvider::SchedUlCqiInfoReqParameters > m_ulCqiReceived
UL-CQI received.
uint16_t m_rlcTransmissionQueueHolDelay
RLC transmission queue HOL delay.
void DoSchedDlConfigInd(FfMacSchedSapUser::SchedDlConfigIndParameters ind)
Sched DL Config Indication function.
virtual void ReceiveRachPreamble(uint32_t prachId)
notify the reception of a RACH preamble on the PRACH
TypeId SetParent(TypeId tid)
Set the parent TypeId.
virtual RachConfig GetRachConfig()
void SetComponentCarrierId(uint8_t index)
Set the component carrier ID.
uint8_t m_logicalChannelGroup
logical channel group
struct defining the RACH configuration of the MAC
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.
uint8_t lcGroup
logical channel group
uint64_t m_eRabGuaranteedBitrateDl
ERAB guaranteed bit rate DL.
struct UlCqi_s m_ulCqi
UL CQI.
virtual void AddUe(uint16_t rnti)
Add UE function.
Parameters of the API primitives.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
std::map< uint16_t, std::map< uint8_t, LteMacSapUser * > > m_rlcAttached
RNTI, LC ID, SAP of the RLC instance.
void DoCschedUeConfigUpdateInd(FfMacCschedSapUser::CschedUeConfigUpdateIndParameters params)
CSched UE Config Update Indication function.
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters ¶ms)=0
CSCHED_CELL_CONFIG_REQ.
uint8_t componentCarrierId
the component carrier id corresponding to the sending Mac istance
void DoReceiveRachPreamble(uint8_t prachId)
Receive RACH Preamble function.
virtual void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters ¶ms)
CSCHED_UE_RELEASE_CNF.
void SetLteEnbPhySapProvider(LteEnbPhySapProvider *s)
Set the PHY SAP Provider.
uint64_t mbrUl
maximum bitrate in uplink
Parameters of the CSCHED_UE_CONFIG_UPDATE_IND primitive.
uint32_t frameNo
frame number
void DoAddLc(LteEnbCmacSapProvider::LcInfo lcinfo, LteMacSapUser *msu)
Add LC function.
uint8_t lcid
the logical channel id
void DoCschedLcReleaseCnf(FfMacCschedSapUser::CschedLcReleaseCnfParameters params)
CSched LC Release configure function.
virtual void AddLc(LcInfo lcinfo, LteMacSapUser *msu)
Add a new logical channel.
virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters ¶ms)=0
CSCHED_LC_RELEASE_REQ.
virtual void UlInfoListElementHarqFeeback(UlInfoListElement_s params)
Notify the HARQ on the UL tranmission status.
void ReceiveBsrMessage(MacCeListElement_s bsr)
Receive a CE element containing the buffer status report.
std::vector< struct CqiListElement_s > m_cqiList
CQI list.
#define UL_PUSCH_TTIS_DELAY
std::vector< UlInfoListElement_s > m_ulInfoListReceived
UL HARQ feedback received.
virtual AllocateNcRaPreambleReturnValue AllocateNcRaPreamble(uint16_t rnti)
Allocate a random access preamble for non-contention based random access (e.g., for handover).
std::vector< std::vector< Ptr< PacketBurst > > > DlHarqProcessesBuffer_t
DlHarqProcessesBuffer_t typedef.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
virtual void SendMacPdu(Ptr< Packet > p)=0
Send the MAC PDU to the channel.
uint8_t GetLcid(void) const
Get LCID function.
LteMacSapProvider * m_macSapProvider
the MAC SAP provider
virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters ¶ms)=0
SCHED_UL_CQI_INFO_REQ.
Parameters for LteMacSapProvider::ReportBufferStatus.
virtual void ReleaseLc(uint16_t rnti, uint8_t lcid)
release an existing logical channel
std::vector< enum HarqStatus_e > m_harqStatus
HARQ status.
bool m_reconfigureFlag
reconfigure flag
uint8_t GetLayer(void) const
Get layer function.
uint8_t componentCarrierId
component carrier ID
virtual void ConfigureMac(uint16_t ulBandwidth, uint16_t dlBandwidth)
virtual uint8_t GetMacChTtiDelay()=0
Get the delay from MAC to Channel expressed in TTIs.
uint64_t gbrUl
guaranteed bitrate in uplink
std::vector< struct MacCeListElement_s > m_macCeList
MAC CE list.
A base class which provides memory management and object aggregation.
Time expiryTime
value the expiration time of this allocation (so that stale preambles can be reused)
std::vector< struct DlInfoListElement_s > m_dlInfoList
DL info list.
std::map< uint16_t, DlHarqProcessesBuffer_t > m_miDlHarqProcessesPackets
Packet under transmission of the DL HARQ process.
uint16_t txQueueHolDelay
the Head Of Line delay of the transmission queue
uint32_t m_rlcRetransmissionQueueSize
RLC retransmission queue size.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
uint32_t m_subframeNo
subframe number of current subframe indication
EnbMacMemberFfMacSchedSapUser class.
void DoReceiveLteControlMessage(Ptr< LteControlMessage > msg)
Receive a DL CQI ideal control message.
virtual void CschedUeConfigCnf(const struct CschedUeConfigCnfParameters ¶ms)
CSCHED_UE_CONFIG_CNF.
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
uint8_t raPrachMaskIndex
PRACH mask index.
FfMacSchedSapUser * m_schedSapUser
the Sched SAP user
See section 4.3.14 macCEListElement.
uint32_t txQueueSize
the current size of the RLC transmission queue
void SetLteEnbCmacSapUser(LteEnbCmacSapUser *s)
Set the control MAC SAP user.
Parameters for LteMacSapUser::ReceivePdu.
uint16_t retxQueueHolDelay
the Head Of Line delay of the retransmission queue
void DoAddUe(uint16_t rnti)
Add UE function.
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC.
void DoUeUpdateConfigurationReq(LteEnbCmacSapProvider::UeConfig params)
UE Update configuration request function.
void DoConfigureMac(uint16_t ulBandwidth, uint16_t dlBandwidth)
Configure MAC function.
uint64_t gbrDl
guaranteed bitrate in downlink
virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters ¶ms)=0
SCHED_DL_RLC_BUFFER_REQ.
BuildRarListElement_s rarPayload
RAR payload.
Parameters for [re]configuring the UE.
LteEnbCmacSapUser * m_cmacSapUser
the CMAC SAP user
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
friend class MemberLteCcmMacSapProvider< LteEnbMac >
allow MemberLteCcmMacSapProvider<LteEnbMac> class friend access
void SetLteCcmMacSapUser(LteCcmMacSapUser *s)
Set the ComponentCarrierManager SAP user.
LteCcmMacSapUser * m_ccmMacSapUser
CCM MAC SAP user.
EnbMacMemberLteEnbCmacSapProvider class.
AllocateNcRaPreambleReturnValue structure.
LteMacSapProvider * GetLteMacSapProvider(void)
Get the MAC SAP provider.
Parameters of the SCHED_DL_TRIGGER_REQ primitive.
EnbMacMemberFfMacSchedSapUser(LteEnbMac *mac)
Constructor.
See section 4.3.12 ulInfoListElement.
virtual void ReconfigureLc(LcInfo lcinfo)
Reconfigure an existing logical channel.
Parameters of the CSCHED_LC_CONFIG_CNF primitive.
Service Access Point (SAP) offered by the eNB MAC to the eNB RRC See Femto Forum MAC Scheduler Interf...
uint32_t m_rlcTransmissionQueueSize
RLC transmission queue size.
void DoCschedCellConfigCnf(FfMacCschedSapUser::CschedCellConfigCnfParameters params)
CSched Cell Config configure function.
virtual void SchedDlConfigInd(const struct SchedDlConfigIndParameters ¶ms)
SCHED_DL_CONFIG_IND.
uint16_t m_dlBandwidth
DL badnwidth.
void SetLteMacSapUser(LteMacSapUser *s)
Set the MAC SAP user.
uint8_t harqId
the HARQ ID
uint8_t layer
the layer value that was passed by the MAC in the call to NotifyTxOpportunity that generated this PDU
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Parameters of the API primitives.
void DoReconfigureLc(LteEnbCmacSapProvider::LcInfo lcinfo)
Reconfigure LC function.
void ReceiveDlCqiLteControlMessage(Ptr< DlCqiLteControlMessage > msg)
Receive a DL CQI ideal control message.
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
See section 4.3.6 rachListElement.
void AddPacketTag(const Tag &tag) const
Add a packet tag.
virtual void CschedLcReleaseCnf(const struct CschedLcReleaseCnfParameters ¶ms)
CSCHED_LC_RELEASE_CNF.
Parameters of the CSCHED_UE_CONFIG_REQ primitive.
uint8_t preambleTransMax
preamble transmit maximum
uint8_t m_transmissionMode
Transmission mode 1..7
static TypeId GetTypeId(void)
Get the type ID.
uint16_t m_rlcStatusPduSize
RLC status PDU size.
Parameters of the SCHED_UL_MAC_CTRL_INFO_REQ primitive.
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters ¶ms)=0
SCHED_UL_TRIGGER_REQ.
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.
uint64_t m_eRabGuaranteedBitrateUl
ERAB guaranteed bit rate UL.
EnbMacMemberFfMacCschedSapUser class.
std::vector< struct BuildDataListElement_s > m_buildDataList
build data list
uint8_t m_preambleTransMax
preamble transmit maximum
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
uint8_t m_transmissionMode
transmission mode
LteMacSapUser * m_macSapUser
the MAC SAP user
bool isGbr
true if the bearer is GBR, false if the bearer is NON-GBR
std::vector< CqiListElement_s > m_dlCqiReceived
DL-CQI received.
virtual void SendLteControlMessage(Ptr< LteControlMessage > msg)=0
Send SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel.
Ptr< Packet > Copy(void) const
performs a COW copy of the packet.
uint8_t m_macChTtiDelay
delay of MAC, PHY and channel in terms of TTIs
uint16_t m_rlcRetransmissionHolDelay
RLC retransmission HOL delay.
Parameters of the SCHED_UL_TRIGGER_REQ primitive.
void DoCschedUeReleaseCnf(FfMacCschedSapUser::CschedUeReleaseCnfParameters params)
CSched UE Release configure function.
virtual bool IsRandomAccessCompleted(uint16_t rnti)=0
Is random access completed function.
uint8_t m_logicalChannelIdentity
logical channel identity
LteEnbCmacSapProvider * GetLteEnbCmacSapProvider(void)
Get the control MAC SAP provider.
info associated with a preamble allocated for non-contention based RA
uint8_t componentCarrierId
the component carrier id
bool RemovePacketTag(Tag &tag)
Remove a packet tag.
virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters ¶ms)=0
CSCHED_LC_CONFIG_REQ.
void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params)
Report Buffer Status function.
Parameters of the CSCHED_LC_RELEASE_REQ primitive.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters ¶ms)=0
CSCHED_UE_CONFIG_REQ.
LteEnbPhySapProvider * m_enbPhySapProvider
the ENB Phy SAP provider
void SetFfMacCschedSapProvider(FfMacCschedSapProvider *s)
Set the control scheduler SAP provider.
uint32_t bytes
the number of bytes to transmit
FfMacCschedSapUser class.
LteCcmMacSapProvider * GetLteCcmMacSapProvider()
Get the eNB-ComponentCarrierManager SAP User.
uint16_t rnti
the C-RNTI identifying the UE
friend class EnbMacMemberFfMacSchedSapUser
allow EnbMacMemberFfMacSchedSapUser class friend access
Service Access Point (SAP) offered by the component carrier manager (CCM) by MAC to CCM.
DlSchedulingCallbackInfo structure.
void SetFfMacSchedSapProvider(FfMacSchedSapProvider *s)
Set the scheduler SAP provider.
virtual void DlInfoListElementHarqFeeback(DlInfoListElement_s params)
Notify the HARQ on the DL tranmission status.
uint32_t m_frameNo
frame number of current subframe indication
Parameters of the CSCHED_LC_RELEASE_CNF primitive.
uint8_t m_numberOfRaPreambles
number of RA preambles
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters params)
Transmit PDU function.
std::vector< MacCeListElement_s > m_ulCeReceived
CE received (BSR up to now)
Hold an unsigned integer type.
Parameters of the API primitives.
void DoReleaseLc(uint16_t rnti, uint8_t lcid)
Release LC function.
uint8_t lcid
the logical channel id corresponding to the sending RLC instance
uint8_t numberOfRaPreambles
number of RA preambles
TracedCallback< DlSchedulingCallbackInfo > m_dlScheduling
Trace information regarding DL scheduling Frame number, Subframe number, RNTI, MCS of TB1,...
uint8_t connEstFailCount
the counter value for T300 timer expiration
uint64_t m_eRabMaximulBitrateDl
ERAB maximum bit rate DL.
virtual void SubframeIndication(uint32_t frameNo, uint32_t subframeNo)
Trigger the start from a new frame (input from Phy layer)
std::map< uint8_t, uint32_t > m_receivedRachPreambleCount
received RACH preamble count
Service Access Point (SAP) offered by MAC to the component carrier manager (CCM).
uint8_t layer
the layer of transmission (MIMO)
See section 4.3.23 dlInfoListElement.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
virtual void RemoveUe(uint16_t rnti)
remove the UE, e.g., after handover or termination of the RRC connection
uint32_t subframeNo
subframe number
uint8_t lcid
the logical channel id corresponding to the sending RLC instance
std::vector< DlInfoListElement_s > m_dlInfoListReceived
DL HARQ feedback received.
void DoReportMacCeToScheduler(MacCeListElement_s bsr)
Report MAC CE to scheduler.
FfMacCschedSapUser * GetFfMacCschedSapUser(void)
Get the control scheduler SAP user.
virtual void DoDispose(void)
Destructor implementation.
std::vector< struct RachListElement_s > m_rachList
RACH list.
uint8_t qci
QoS Class Identifier.
uint64_t m_eRabMaximulBitrateUl
ERAB maximum bit rate UL.
uint16_t m_ulBandwidth
UL bandwidth.
virtual void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters ¶ms)=0
SCHED_DL_CQI_INFO_REQ.
uint16_t rnti
C-RNTI identifying the UE.
uint64_t mbrDl
maximum bitrate in downlink
friend class EnbMacMemberLteEnbPhySapUser
allow EnbMacMemberLteEnbPhySapUser class friend access
LteEnbPhySapUser * m_enbPhySapUser
the ENB Phy SAP user
uint16_t statusPduSize
the current size of the pending STATUS RLC PDU message in bytes
virtual void ReceiveLteControlMessage(Ptr< LteControlMessage > msg)
Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel.
EnbMacMemberLteEnbCmacSapProvider(LteEnbMac *mac)
Constructor.
LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue DoAllocateNcRaPreamble(uint16_t rnti)
Allocate NC RA preamble function.
LteEnbCmacSapProvider::RachConfig DoGetRachConfig()
Get RACH configuration function.
virtual void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters ¶ms)=0
SCHED_DL_RACH_INFO_REQ.
See section 4.3.4 logicalChannelConfigListElement.
EnbMacMemberLteEnbPhySapUser(LteEnbMac *mac)
Constructor.
virtual void CschedCellConfigUpdateInd(const struct CschedCellConfigUpdateIndParameters ¶ms)
CSCHED_UE_CONFIG_IND.
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters ¶ms)=0
SCHED_DL_TRIGGER_REQ.
virtual void UlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)
Returns to MAC level the UL-CQI evaluated.
virtual void RrcConfigurationUpdateInd(UeConfig params)=0
Notify the RRC of a UE config updated requested by the MAC (normally, by the scheduler)
virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters ¶ms)=0
SCHED_UL_MAC_CTRL_INFO_REQ.
bool valid
true if a valid RA config was allocated, false otherwise
Parameters of the CSCHED_UE_RELEASE_CNF primitive.
make Callback use a separate empty type
Parameters for [re]configuring the UE.
void DoReceivePhyPdu(Ptr< Packet > p)
legacy public for use the Phy callback
uint8_t m_harqProcessId
HARQ process ID.
Parameters of the API primitives.
std::map< uint8_t, NcRaPreambleInfo > m_allocatedNcRaPreambleMap
map storing as key the random access preamble IDs allocated for non-contention based access,...
uint16_t rnti
the C-RNTI identifying the UE
friend class EnbMacMemberFfMacCschedSapUser
allow EnbMacMemberFfMacCschedSapUser class friend access
uint16_t rnti
rnti previously allocated for this non-contention based RA procedure