A Discrete-Event Network Simulator
API
lte-ue-mac.h
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Nicola Baldo <nbaldo@cttc.es>
19  * Author: Marco Miozzo <mmiozzo@cttc.es>
20  */
21 
22 #ifndef LTE_UE_MAC_ENTITY_H
23 #define LTE_UE_MAC_ENTITY_H
24 
25 
26 
27 #include <map>
28 
29 #include <ns3/lte-mac-sap.h>
30 #include <ns3/lte-ue-cmac-sap.h>
31 #include <ns3/lte-ue-phy-sap.h>
32 #include <ns3/nstime.h>
33 #include <ns3/event-id.h>
34 #include <vector>
35 #include <ns3/packet.h>
36 #include <ns3/packet-burst.h>
37 #include <ns3/traced-callback.h>
38 
39 
40 namespace ns3 {
41 
42 class UniformRandomVariable;
43 
44 class LteUeMac : public Object
45 {
52 
53 public:
58  static TypeId GetTypeId (void);
59 
60  LteUeMac ();
61  virtual ~LteUeMac ();
62  virtual void DoDispose (void);
63 
75  (uint64_t imsi, bool contention, uint8_t preambleTxCounter, uint8_t maxPreambleTxLimit);
76 
92 
97  void SetComponentCarrierId (uint8_t index);
98 
104 
110 
117  void DoSubframeIndication (uint32_t frameNo, uint32_t subframeNo);
118 
127  int64_t AssignStreams (int64_t stream);
128 
129 private:
130  // forwarded from MAC SAP
143 
144  // forwarded from UE CMAC SAP
160  void DoSetRnti (uint16_t rnti);
168  void DoStartNonContentionBasedRandomAccessProcedure (uint16_t rnti, uint8_t rapId, uint8_t prachMask);
176  void DoAddLc (uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser* msu);
182  void DoRemoveLc (uint8_t lcId);
186  void DoReset ();
197  void DoSetImsi (uint64_t imsi);
198 
199  // forwarded from PHY SAP
205  void DoReceivePhyPdu (Ptr<Packet> p);
212 
213  // internal methods
221  void SendRaPreamble (bool contention);
229  void RecvRaResponse (BuildRarListElement_s raResponse);
235  void RaResponseTimeout (bool contention);
237  void SendReportBufferStatus (void);
240 
243 
244 private:
245 
247  struct LcInfo
248  {
251  };
252 
253  std::map <uint8_t, LcInfo> m_lcInfoMap;
254 
256 
259 
262 
263  std::map <uint8_t, LteMacSapProvider::ReportBufferStatusParameters> m_ulBsrReceived;
264 
265 
268 
270 
271  uint8_t m_harqProcessId;
272  std::vector < Ptr<PacketBurst> > m_miUlHarqProcessesPacket;
273  std::vector < uint8_t > m_miUlHarqProcessesPacketTimer;
274 
275  uint16_t m_rnti;
276  uint16_t m_imsi;
277 
280  uint8_t m_raPreambleId;
285 
286  uint32_t m_frameNo;
287  uint32_t m_subframeNo;
288  uint8_t m_raRnti;
290 
297 };
298 
299 } // namespace ns3
300 
301 #endif // LTE_UE_MAC_ENTITY
ns3::LteMacSapProvider::TransmitPduParameters
Parameters for LteMacSapProvider::TransmitPdu.
Definition: lte-mac-sap.h:46
ns3::LteUeMac::DoSubframeIndication
void DoSubframeIndication(uint32_t frameNo, uint32_t subframeNo)
Forwarded from LteUePhySapUser: trigger the start from a new frame.
Definition: lte-ue-mac.cc:898
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::LteUeMac::m_uePhySapUser
LteUePhySapUser * m_uePhySapUser
UE Phy SAP user.
Definition: lte-ue-mac.h:261
ns3::LteUeMac::m_bsrPeriodicity
Time m_bsrPeriodicity
BSR periodicity.
Definition: lte-ue-mac.h:266
ns3::LteUeMac::DoDispose
virtual void DoDispose(void)
Destructor implementation.
Definition: lte-ue-mac.cc:283
ns3::LteUeMac::StartWaitingForRaResponse
void StartWaitingForRaResponse()
Start waiting for RA response function.
Definition: lte-ue-mac.cc:451
ns3::LteMacSapProvider
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:37
ns3::LteUeMac::RecvRaResponse
void RecvRaResponse(BuildRarListElement_s raResponse)
Receive the RA response function.
Definition: lte-ue-mac.cc:458
ns3::LteUeMac::m_macSapProvider
LteMacSapProvider * m_macSapProvider
MAC SAP provider.
Definition: lte-ue-mac.h:255
ns3::EventId
An identifier for simulation events.
Definition: event-id.h:54
ns3::LteUeMac::LcInfo::lcConfig
LteUeCmacSapProvider::LogicalChannelConfig lcConfig
logical channel config
Definition: lte-ue-mac.h:249
ns3::LteUeMac::RandomlySelectAndSendRaPreamble
void RandomlySelectAndSendRaPreamble()
Randomly select and send RA preamble function.
Definition: lte-ue-mac.cc:417
ns3::LteUeMac::DoSetImsi
void DoSetImsi(uint64_t imsi)
Set IMSI.
Definition: lte-ue-mac.cc:557
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::LteUeMac::DoReset
void DoReset()
Reset function.
Definition: lte-ue-mac.cc:598
ns3::LteUeMac::LcInfo
LcInfo structure.
Definition: lte-ue-mac.h:248
ns3::LteUeMac::m_waitingForRaResponse
bool m_waitingForRaResponse
waiting for RA response
Definition: lte-ue-mac.h:289
ns3::LteUeMac::SetLteUePhySapProvider
void SetLteUePhySapProvider(LteUePhySapProvider *s)
Set the PHY SAP Provider.
Definition: lte-ue-mac.cc:301
ns3::LteUeMac::DoNotifyConnectionSuccessful
void DoNotifyConnectionSuccessful()
Notify MAC about the successful RRC connection establishment.
Definition: lte-ue-mac.cc:624
ns3::LteUeMac::AssignStreams
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
Definition: lte-ue-mac.cc:919
ns3::LteUeMac::SetComponentCarrierId
void SetComponentCarrierId(uint8_t index)
Set the component carried ID.
Definition: lte-ue-mac.cc:326
ns3::LteUeMac::GetLteUePhySapUser
LteUePhySapUser * GetLteUePhySapUser()
Get the PHY SAP user.
Definition: lte-ue-mac.cc:295
ns3::LteUeMac
Definition: lte-ue-mac.h:45
ns3::LteUeMac::DoStartNonContentionBasedRandomAccessProcedure
void DoStartNonContentionBasedRandomAccessProcedure(uint16_t rnti, uint8_t rapId, uint8_t prachMask)
Start non contention based random access procedure function.
Definition: lte-ue-mac.cc:565
ns3::BuildRarListElement_s
See section 4.3.10 buildRARListElement.
Definition: ff-mac-common.h:279
ns3::LteUeMac::m_miUlHarqProcessesPacketTimer
std::vector< uint8_t > m_miUlHarqProcessesPacketTimer
timer for packet life in the buffer
Definition: lte-ue-mac.h:273
ns3::LteUeMac::m_bsrLast
Time m_bsrLast
BSR last.
Definition: lte-ue-mac.h:267
ns3::LteUeMac::m_cmacSapProvider
LteUeCmacSapProvider * m_cmacSapProvider
CMAC SAP provider.
Definition: lte-ue-mac.h:258
ns3::LteUeMac::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-ue-mac.cc:233
ns3::LteUeMac::m_raResponseTimeoutTrace
TracedCallback< uint64_t, bool, uint8_t, uint8_t > m_raResponseTimeoutTrace
The RaResponseTimeout trace source.
Definition: lte-ue-mac.h:296
ns3::UeMemberLteUeCmacSapProvider
UeMemberLteUeCmacSapProvider class.
Definition: lte-ue-mac.cc:53
ns3::LteUeMac::m_rnti
uint16_t m_rnti
RNTI.
Definition: lte-ue-mac.h:275
ns3::LteUeMac::DoAddLc
void DoAddLc(uint8_t lcId, LteUeCmacSapProvider::LogicalChannelConfig lcConfig, LteMacSapUser *msu)
Add LC function.
Definition: lte-ue-mac.cc:577
ns3::LteUeMac::LteUeMac
LteUeMac()
Definition: lte-ue-mac.cc:249
ns3::LteUeMac::m_rachConfig
LteUeCmacSapProvider::RachConfig m_rachConfig
RACH configuration.
Definition: lte-ue-mac.h:279
ns3::LteUeMac::m_ulBsrReceived
std::map< uint8_t, LteMacSapProvider::ReportBufferStatusParameters > m_ulBsrReceived
BSR received from RLC (the last one)
Definition: lte-ue-mac.h:263
ns3::LteUeMac::m_raRnti
uint8_t m_raRnti
RA RNTI.
Definition: lte-ue-mac.h:288
ns3::Ptr< Packet >
ns3::LteUeMac::LcInfo::macSapUser
LteMacSapUser * macSapUser
MAC SAP user.
Definition: lte-ue-mac.h:250
ns3::LteUeMac::SendRaPreamble
void SendRaPreamble(bool contention)
Send RA preamble function.
Definition: lte-ue-mac.cc:429
ns3::LteUeMac::m_raPreambleId
uint8_t m_raPreambleId
RA preamble ID.
Definition: lte-ue-mac.h:280
ns3::LteUeMac::DoTransmitPdu
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters params)
Transmit PDU function.
Definition: lte-ue-mac.cc:332
ns3::LteMacSapProvider::ReportBufferStatusParameters
Parameters for LteMacSapProvider::ReportBufferStatus.
Definition: lte-mac-sap.h:68
ns3::LteUeMac::m_imsi
uint16_t m_imsi
IMSI.
Definition: lte-ue-mac.h:276
ns3::Object
A base class which provides memory management and object aggregation.
Definition: object.h:88
ns3::LteUeMac::m_rachConfigured
bool m_rachConfigured
is RACH configured?
Definition: lte-ue-mac.h:278
ns3::LteUeMac::m_noRaResponseReceivedEvent
EventId m_noRaResponseReceivedEvent
no RA response received event ID
Definition: lte-ue-mac.h:283
ns3::LteUeMac::DoReceivePhyPdu
void DoReceivePhyPdu(Ptr< Packet > p)
Receive Phy PDU function.
Definition: lte-ue-mac.cc:631
ns3::LteUeMac::m_cmacSapUser
LteUeCmacSapUser * m_cmacSapUser
CMAC SAP user.
Definition: lte-ue-mac.h:257
ns3::LteUeMac::SendReportBufferStatus
void SendReportBufferStatus(void)
Send report buffer status.
Definition: lte-ue-mac.cc:367
ns3::LteUeMac::DoSetRnti
void DoSetRnti(uint16_t rnti)
Set RNTI.
Definition: lte-ue-mac.cc:550
ns3::LteUeMac::m_lcInfoMap
std::map< uint8_t, LcInfo > m_lcInfoMap
logical channel info map
Definition: lte-ue-mac.h:253
ns3::LteUeMac::m_uePhySapProvider
LteUePhySapProvider * m_uePhySapProvider
UE Phy SAP provider.
Definition: lte-ue-mac.h:260
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::LteUeCmacSapProvider::RachConfig
RachConfig structure.
Definition: lte-ue-cmac-sap.h:47
ns3::LteUeMac::GetLteMacSapProvider
LteMacSapProvider * GetLteMacSapProvider(void)
Get the LTE MAC SAP provider.
Definition: lte-ue-mac.cc:308
ns3::LteUeMac::m_componentCarrierId
uint8_t m_componentCarrierId
component carrier Id --> used to address sap
Definition: lte-ue-mac.h:242
ns3::LteUeMac::m_subframeNo
uint32_t m_subframeNo
subframe number
Definition: lte-ue-mac.h:287
ns3::LteUePhySapProvider
Service Access Point (SAP) offered by the UE-PHY to the UE-MAC.
Definition: lte-ue-phy-sap.h:39
ns3::LteUeMac::m_freshUlBsr
bool m_freshUlBsr
true when a BSR has been received in the last TTI
Definition: lte-ue-mac.h:269
ns3::LteUeMac::m_preambleTransmissionCounter
uint8_t m_preambleTransmissionCounter
preamble tranamission counter
Definition: lte-ue-mac.h:281
ns3::LteUeMac::m_miUlHarqProcessesPacket
std::vector< Ptr< PacketBurst > > m_miUlHarqProcessesPacket
Packets under transmission of the UL HARQ processes.
Definition: lte-ue-mac.h:272
ns3::UeMemberLteMacSapProvider
UeMemberLteMacSapProvider class.
Definition: lte-ue-mac.cc:140
ns3::LteMacSapUser
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:96
ns3::LteUeMac::DoRemoveLc
void DoRemoveLc(uint8_t lcId)
Remove LC function.
Definition: lte-ue-mac.cc:589
ns3::LteUeCmacSapProvider::LogicalChannelConfig
LogicalChannelConfig structure.
Definition: lte-ue-cmac-sap.h:81
ns3::UeMemberLteUePhySapUser
UeMemberLteUePhySapUser.
Definition: lte-ue-mac.cc:182
ns3::LteUeCmacSapProvider
Service Access Point (SAP) offered by the UE MAC to the UE RRC.
Definition: lte-ue-cmac-sap.h:41
ns3::LteUeMac::m_backoffParameter
uint16_t m_backoffParameter
backoff parameter
Definition: lte-ue-mac.h:282
ns3::LteUeMac::m_harqProcessId
uint8_t m_harqProcessId
HARQ process ID.
Definition: lte-ue-mac.h:271
ns3::LteUeMac::DoStartContentionBasedRandomAccessProcedure
void DoStartContentionBasedRandomAccessProcedure()
Start contention based random access procedure function.
Definition: lte-ue-mac.cc:538
ns3::LteUeCmacSapUser
Service Access Point (SAP) offered by the UE MAC to the UE RRC.
Definition: lte-ue-cmac-sap.h:138
ns3::LteUeMac::m_frameNo
uint32_t m_frameNo
frame number
Definition: lte-ue-mac.h:286
ns3::LteUeMac::RaResponseTimeoutTracedCallback
void(* RaResponseTimeoutTracedCallback)(uint64_t imsi, bool contention, uint8_t preambleTxCounter, uint8_t maxPreambleTxLimit)
TracedCallback signature for RA response timeout events exporting IMSI, contention flag,...
Definition: lte-ue-mac.h:75
ns3::LteUeMac::m_raPreambleUniformVariable
Ptr< UniformRandomVariable > m_raPreambleUniformVariable
RA preamble random variable.
Definition: lte-ue-mac.h:284
ns3::TracedCallback< uint64_t, bool, uint8_t, uint8_t >
ns3::LteUeMac::SetLteUeCmacSapUser
void SetLteUeCmacSapUser(LteUeCmacSapUser *s)
Set the LTE UE CMAC SAP user.
Definition: lte-ue-mac.cc:314
ns3::LteUePhySapUser
Service Access Point (SAP) offered by the PHY to the MAC.
Definition: lte-ue-phy-sap.h:82
ns3::LteUeMac::DoReportBufferStatus
void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params)
Report buffers status function.
Definition: lte-ue-mac.cc:345
ns3::LteUeMac::~LteUeMac
virtual ~LteUeMac()
Definition: lte-ue-mac.cc:277
ns3::LteUeMac::GetLteUeCmacSapProvider
LteUeCmacSapProvider * GetLteUeCmacSapProvider(void)
Get the LTE CMAC SAP provider.
Definition: lte-ue-mac.cc:320
ns3::LteUeMac::RaResponseTimeout
void RaResponseTimeout(bool contention)
RA response timeout function.
Definition: lte-ue-mac.cc:501
ns3::LteUeMac::DoConfigureRach
void DoConfigureRach(LteUeCmacSapProvider::RachConfig rc)
Configure RACH function.
Definition: lte-ue-mac.cc:530
ns3::LteUeMac::DoReceiveLteControlMessage
void DoReceiveLteControlMessage(Ptr< LteControlMessage > msg)
Receive LTE control message function.
Definition: lte-ue-mac.cc:656
ns3::LteUeMac::RefreshHarqProcessesPacketBuffer
void RefreshHarqProcessesPacketBuffer(void)
Refresh HARQ processes packet buffer function.
Definition: lte-ue-mac.cc:873