A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
lte-enb-mac.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Marco Miozzo <marco.miozzo@cttc.es>
18 * Nicola Baldo <nbaldo@cttc.es>
19 * Modified by:
20 * Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015)
21 * Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
22 */
23
24#ifndef LTE_ENB_MAC_H
25#define LTE_ENB_MAC_H
26
27#include "ff-mac-csched-sap.h"
28#include "ff-mac-sched-sap.h"
29#include "lte-ccm-mac-sap.h"
30#include "lte-common.h"
31#include "lte-enb-cmac-sap.h"
32#include "lte-enb-phy-sap.h"
33#include "lte-mac-sap.h"
34
35#include <ns3/nstime.h>
36#include <ns3/packet-burst.h>
37#include <ns3/packet.h>
38#include <ns3/trace-source-accessor.h>
39#include <ns3/traced-value.h>
40
41#include <map>
42#include <vector>
43
44namespace ns3
45{
46
47class DlCqiLteControlMessage;
48class UlCqiLteControlMessage;
49class PdcchMapLteControlMessage;
50
52typedef std::vector<std::vector<Ptr<PacketBurst>>> DlHarqProcessesBuffer_t;
53
57class LteEnbMac : public Object
58{
71
72 public:
77 static TypeId GetTypeId();
78
79 LteEnbMac();
80 ~LteEnbMac() override;
81 void DoDispose() override;
82
87 void SetComponentCarrierId(uint8_t index);
108
129
135
141
147
153
166 typedef void (*DlSchedulingTracedCallback)(const uint32_t frame,
167 const uint32_t subframe,
168 const uint16_t rnti,
169 const uint8_t mcs0,
170 const uint16_t tbs0Size,
171 const uint8_t mcs1,
172 const uint16_t tbs1Size,
173 const uint8_t ccId);
174
184 typedef void (*UlSchedulingTracedCallback)(const uint32_t frame,
185 const uint32_t subframe,
186 const uint16_t rnti,
187 const uint8_t mcs,
188 const uint16_t tbsSize);
189
190 private:
196
202
208
214
215 // forwarded from LteEnbCmacSapProvider
221 void DoConfigureMac(uint16_t ulBandwidth, uint16_t dlBandwidth);
226 void DoAddUe(uint16_t rnti);
231 void DoRemoveUe(uint16_t rnti);
248 void DoReleaseLc(uint16_t rnti, uint8_t lcid);
265
266 // forwarded from LteMacSapProvider
277
278 // forwarded from FfMacCchedSapUser
315
316 // forwarded from FfMacSchedSapUser
327
328 // forwarded from LteEnbPhySapUser
334 void DoSubframeIndication(uint32_t frameNo, uint32_t subframeNo);
339 void DoReceiveRachPreamble(uint8_t prachId);
340
341 // forwarded by LteCcmMacSapProvider
347
354 void DoReportSrToScheduler(uint16_t rnti [[maybe_unused]])
355 {
356 }
357
358 public:
364
365 private:
376
378 std::map<uint16_t, std::map<uint8_t, LteMacSapUser*>> m_rlcAttached;
379
380 std::vector<CqiListElement_s> m_dlCqiReceived;
381 std::vector<FfMacSchedSapProvider::SchedUlCqiInfoReqParameters>
383 std::vector<MacCeListElement_s> m_ulCeReceived;
384
385 std::vector<DlInfoListElement_s> m_dlInfoListReceived;
386
387 std::vector<UlInfoListElement_s> m_ulInfoListReceived;
388
389 /*
390 * Map of UE's info element (see 4.3.12 of FF MAC Scheduler API)
391 */
392 // std::map <uint16_t,UlInfoListElement_s> m_ulInfoListElements;
393
398
403
404 // PHY-SAP
407
408 // Sap For ComponentCarrierManager 'Uplink case'
425
431
433
434 std::map<uint16_t, DlHarqProcessesBuffer_t>
436
441
447 {
448 uint16_t rnti;
451 };
452
458 std::map<uint8_t, NcRaPreambleInfo> m_allocatedNcRaPreambleMap;
459
460 std::map<uint8_t, uint32_t> m_receivedRachPreambleCount;
461
462 std::map<uint16_t, uint32_t> m_rapIdRntiMap;
463
466};
467
468} // end namespace ns3
469
470#endif /* LTE_ENB_MAC_ENTITY_H */
EnbMacMemberFfMacCschedSapUser class.
Definition: lte-enb-mac.cc:170
EnbMacMemberFfMacSchedSapUser class.
Definition: lte-enb-mac.cc:135
EnbMacMemberLteEnbCmacSapProvider class.
Definition: lte-enb-mac.cc:50
EnbMacMemberLteMacSapProvider class.
Definition: lte-mac-sap.h:203
Provides the CSCHED SAP.
FfMacCschedSapUser class.
Provides the SCHED SAP.
FfMacSchedSapUser class.
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).
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...
This class implements the MAC layer of the eNodeB device.
Definition: lte-enb-mac.h:58
void SetFfMacCschedSapProvider(FfMacCschedSapProvider *s)
Set the control scheduler SAP provider.
Definition: lte-enb-mac.cc:416
~LteEnbMac() override
Definition: lte-enb-mac.cc:374
void DoReceivePhyPdu(Ptr< Packet > p)
legacy public for use the Phy callback
Definition: lte-enb-mac.cc:711
void DoSchedDlConfigInd(FfMacSchedSapUser::SchedDlConfigIndParameters ind)
Sched DL Config Indication function.
FfMacSchedSapUser * m_schedSapUser
the Sched SAP user
Definition: lte-enb-mac.h:401
void DoCschedCellConfigCnf(FfMacCschedSapUser::CschedCellConfigCnfParameters params)
CSched Cell Config configure function.
FfMacCschedSapProvider * m_cschedSapProvider
the Csched SAP provider
Definition: lte-enb-mac.h:400
void SetLteEnbPhySapProvider(LteEnbPhySapProvider *s)
Set the PHY SAP Provider.
Definition: lte-enb-mac.cc:452
uint32_t m_frameNo
frame number of current subframe indication
Definition: lte-enb-mac.h:414
void DoDispose() override
Destructor implementation.
Definition: lte-enb-mac.cc:380
LteEnbPhySapProvider * m_enbPhySapProvider
the ENB Phy SAP provider
Definition: lte-enb-mac.h:405
void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params)
Report Buffer Status function.
FfMacCschedSapUser * GetFfMacCschedSapUser()
Get the control scheduler SAP user.
Definition: lte-enb-mac.cc:422
void(* DlSchedulingTracedCallback)(const uint32_t frame, const uint32_t subframe, const uint16_t rnti, const uint8_t mcs0, const uint16_t tbs0Size, const uint8_t mcs1, const uint16_t tbs1Size, const uint8_t ccId)
TracedCallback signature for DL scheduling events.
Definition: lte-enb-mac.h:166
FfMacCschedSapUser * m_cschedSapUser
the CSched SAP user
Definition: lte-enb-mac.h:402
static TypeId GetTypeId()
Get the type ID.
Definition: lte-enb-mac.cc:316
LteCcmMacSapUser * m_ccmMacSapUser
CCM MAC SAP user.
Definition: lte-enb-mac.h:410
void DoCschedUeReleaseCnf(FfMacCschedSapUser::CschedUeReleaseCnfParameters params)
CSched UE Release configure function.
void SetLteEnbCmacSapUser(LteEnbCmacSapUser *s)
Set the control MAC SAP user.
Definition: lte-enb-mac.cc:440
LteEnbPhySapUser * GetLteEnbPhySapUser()
Get the eNB-PHY SAP User.
Definition: lte-enb-mac.cc:458
void DoUlInfoListElementHarqFeedback(UlInfoListElement_s params)
UL Info List ELements HARQ Feedback function.
std::vector< CqiListElement_s > m_dlCqiReceived
DL-CQI received.
Definition: lte-enb-mac.h:380
std::map< uint8_t, uint32_t > m_receivedRachPreambleCount
received RACH preamble count
Definition: lte-enb-mac.h:460
LteCcmMacSapProvider * m_ccmMacSapProvider
CCM MAC SAP provider.
Definition: lte-enb-mac.h:409
FfMacSchedSapProvider * m_schedSapProvider
the Sched SAP provider
Definition: lte-enb-mac.h:399
void DoReceiveRachPreamble(uint8_t prachId)
Receive RACH Preamble function.
Definition: lte-enb-mac.cc:660
void DoCschedLcConfigCnf(FfMacCschedSapUser::CschedLcConfigCnfParameters params)
CSched LC Config configure function.
uint8_t m_componentCarrierId
component carrier Id used to address sap
Definition: lte-enb-mac.h:465
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,...
Definition: lte-enb-mac.h:430
void DoReleaseLc(uint16_t rnti, uint8_t lcid)
Release LC function.
Definition: lte-enb-mac.cc:926
void DoReceiveLteControlMessage(Ptr< LteControlMessage > msg)
Receive a DL CQI ideal control message.
Definition: lte-enb-mac.cc:633
void SetLteCcmMacSapUser(LteCcmMacSapUser *s)
Set the ComponentCarrierManager SAP user.
Definition: lte-enb-mac.cc:464
std::map< uint16_t, std::map< uint8_t, LteMacSapUser * > > m_rlcAttached
RNTI, LC ID, SAP of the RLC instance.
Definition: lte-enb-mac.h:378
LteMacSapUser * m_macSapUser
the MAC SAP user
Definition: lte-enb-mac.h:396
std::vector< MacCeListElement_s > m_ulCeReceived
CE received (BSR up to now)
Definition: lte-enb-mac.h:383
LteEnbPhySapUser * m_enbPhySapUser
the ENB Phy SAP user
Definition: lte-enb-mac.h:406
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters params)
Transmit PDU function.
std::vector< FfMacSchedSapProvider::SchedUlCqiInfoReqParameters > m_ulCqiReceived
UL-CQI received.
Definition: lte-enb-mac.h:382
LteEnbCmacSapProvider * m_cmacSapProvider
the CMAC SAP provider
Definition: lte-enb-mac.h:395
TracedCallback< DlSchedulingCallbackInfo > m_dlScheduling
Trace information regarding DL scheduling Frame number, Subframe number, RNTI, MCS of TB1,...
Definition: lte-enb-mac.h:424
void SetFfMacSchedSapProvider(FfMacSchedSapProvider *s)
Set the scheduler SAP provider.
Definition: lte-enb-mac.cc:404
void ReceiveBsrMessage(MacCeListElement_s bsr)
Receive a CE element containing the buffer status report.
Definition: lte-enb-mac.cc:693
uint8_t m_connEstFailCount
the counter value for T300 timer expiration
Definition: lte-enb-mac.h:440
LteMacSapProvider * m_macSapProvider
the MAC SAP provider
Definition: lte-enb-mac.h:394
uint8_t m_raResponseWindowSize
RA response window size.
Definition: lte-enb-mac.h:439
void DoUeUpdateConfigurationReq(LteEnbCmacSapProvider::UeConfig params)
UE Update configuration request function.
Definition: lte-enb-mac.cc:942
void DoReconfigureLc(LteEnbCmacSapProvider::LcInfo lcinfo)
Reconfigure LC function.
Definition: lte-enb-mac.cc:920
uint8_t m_macChTtiDelay
delay of MAC, PHY and channel in terms of TTIs
Definition: lte-enb-mac.h:432
FfMacSchedSapUser * GetFfMacSchedSapUser()
Get the scheduler SAP user.
Definition: lte-enb-mac.cc:410
LteCcmMacSapProvider * GetLteCcmMacSapProvider()
Get the eNB-ComponentCarrierManager SAP User.
Definition: lte-enb-mac.cc:470
void(* UlSchedulingTracedCallback)(const uint32_t frame, const uint32_t subframe, const uint16_t rnti, const uint8_t mcs, const uint16_t tbsSize)
TracedCallback signature for UL scheduling events.
Definition: lte-enb-mac.h:184
void DoDlInfoListElementHarqFeedback(DlInfoListElement_s params)
DL Info List ELements HARQ Feedback function.
uint8_t m_preambleTransMax
preamble transmit maximum
Definition: lte-enb-mac.h:438
void DoConfigureMac(uint16_t ulBandwidth, uint16_t dlBandwidth)
Configure MAC function.
Definition: lte-enb-mac.cc:775
std::map< uint8_t, NcRaPreambleInfo > m_allocatedNcRaPreambleMap
map storing as key the random access preamble IDs allocated for non-contention based access,...
Definition: lte-enb-mac.h:458
uint8_t m_numberOfRaPreambles
number of RA preambles
Definition: lte-enb-mac.h:437
LteEnbCmacSapProvider * GetLteEnbCmacSapProvider()
Get the control MAC SAP provider.
Definition: lte-enb-mac.cc:446
std::map< uint16_t, DlHarqProcessesBuffer_t > m_miDlHarqProcessesPackets
Packet under transmission of the DL HARQ process.
Definition: lte-enb-mac.h:435
void DoCschedCellConfigUpdateInd(FfMacCschedSapUser::CschedCellConfigUpdateIndParameters params)
CSched Cell Config Update Indication function.
void DoAddLc(LteEnbCmacSapProvider::LcInfo lcinfo, LteMacSapUser *msu)
Add LC function.
Definition: lte-enb-mac.cc:870
void DoCschedUeConfigUpdateInd(FfMacCschedSapUser::CschedUeConfigUpdateIndParameters params)
CSched UE Config Update Indication function.
void DoSubframeIndication(uint32_t frameNo, uint32_t subframeNo)
Subrame Indication function.
Definition: lte-enb-mac.cc:476
void SetLteMacSapUser(LteMacSapUser *s)
Set the MAC SAP user.
Definition: lte-enb-mac.cc:428
void ReceiveDlCqiLteControlMessage(Ptr< DlCqiLteControlMessage > msg)
Receive a DL CQI ideal control message.
Definition: lte-enb-mac.cc:682
LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue DoAllocateNcRaPreamble(uint16_t rnti)
Allocate NC RA preamble function.
Definition: lte-enb-mac.cc:966
void DoReportSrToScheduler(uint16_t rnti)
Report SR to scheduler.
Definition: lte-enb-mac.h:354
void DoRemoveUe(uint16_t rnti)
Remove UE function.
Definition: lte-enb-mac.cc:825
LteEnbCmacSapProvider::RachConfig DoGetRachConfig() const
Get RACH configuration function.
Definition: lte-enb-mac.cc:955
std::vector< DlInfoListElement_s > m_dlInfoListReceived
DL HARQ feedback received.
Definition: lte-enb-mac.h:385
void DoSchedUlConfigInd(FfMacSchedSapUser::SchedUlConfigIndParameters params)
Sched UL Config Indication function.
LteMacSapProvider * GetLteMacSapProvider()
Get the MAC SAP provider.
Definition: lte-enb-mac.cc:434
LteEnbCmacSapUser * m_cmacSapUser
the CMAC SAP user
Definition: lte-enb-mac.h:397
uint32_t m_subframeNo
subframe number of current subframe indication
Definition: lte-enb-mac.h:418
void DoCschedLcReleaseCnf(FfMacCschedSapUser::CschedLcReleaseCnfParameters params)
CSched LC Release configure function.
void DoAddUe(uint16_t rnti)
Add UE function.
Definition: lte-enb-mac.cc:788
void DoReportMacCeToScheduler(MacCeListElement_s bsr)
Report MAC CE to scheduler.
Definition: lte-enb-mac.cc:700
void SetComponentCarrierId(uint8_t index)
Set the component carrier ID.
Definition: lte-enb-mac.cc:398
void DoUlCqiReport(FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi)
UL CQI report.
Definition: lte-enb-mac.cc:668
std::vector< UlInfoListElement_s > m_ulInfoListReceived
UL HARQ feedback received.
Definition: lte-enb-mac.h:387
std::map< uint16_t, uint32_t > m_rapIdRntiMap
RAPID RNTI map.
Definition: lte-enb-mac.h:462
Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC.
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...
Definition: lte-mac-sap.h:36
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:96
MemberLteCcmMacSapProvider class.
A base class which provides memory management and object aggregation.
Definition: object.h:89
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:78
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
Forward calls to a chain of Callback.
a unique identifier for an interface.
Definition: type-id.h:59
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::vector< std::vector< Ptr< PacketBurst > > > DlHarqProcessesBuffer_t
DlHarqProcessesBuffer_t typedef.
Definition: lte-enb-mac.h:52
See section 4.3.23 dlInfoListElement.
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_UL_CQI_INFO_REQ primitive.
Parameters of the SCHED_UL_CONFIG_IND primitive.
AllocateNcRaPreambleReturnValue structure.
Logical Channel information to be passed to CmacSapProvider::ConfigureLc.
struct defining the RACH configuration of the MAC
Parameters for [re]configuring the UE.
info associated with a preamble allocated for non-contention based RA
Definition: lte-enb-mac.h:447
Time expiryTime
value the expiration time of this allocation (so that stale preambles can be reused)
Definition: lte-enb-mac.h:449
uint16_t rnti
rnti previously allocated for this non-contention based RA procedure
Definition: lte-enb-mac.h:448
Parameters for LteMacSapProvider::ReportBufferStatus.
Definition: lte-mac-sap.h:69
Parameters for LteMacSapProvider::TransmitPdu.
Definition: lte-mac-sap.h:45
See section 4.3.14 macCEListElement.
See section 4.3.12 ulInfoListElement.