A Discrete-Event Network Simulator
API
lte-test-entities.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: Manuel Requena <manuel.requena@cttc.es>
18  */
19 
20 #ifndef LTE_TEST_ENTITIES_H
21 #define LTE_TEST_ENTITIES_H
22 
23 #include "ns3/lte-mac-sap.h"
24 #include "ns3/lte-pdcp-sap.h"
25 #include "ns3/lte-rlc-sap.h"
26 #include "ns3/net-device.h"
27 #include "ns3/simulator.h"
28 #include "ns3/test.h"
29 #include <ns3/epc-enb-s1-sap.h>
30 
31 namespace ns3
32 {
33 
39 class LteTestRrc : public Object
40 {
43  // friend class EnbMacMemberLteEnbCmacSapProvider;
44  // friend class EnbMacMemberLteMacSapProvider<LteTestMac>;
45  // friend class EnbMacMemberFfMacSchedSapUser;
46  // friend class EnbMacMemberFfMacCschedSapUser;
47  // friend class EnbMacMemberLteEnbPhySapUser;
48 
49  public:
54  static TypeId GetTypeId();
55 
56  LteTestRrc();
57  ~LteTestRrc() override;
58  void DoDispose() override;
59 
70 
72  void Start();
74  void Stop();
75 
81  void SendData(Time at, std::string dataToSend);
86  std::string GetDataReceived();
87 
88  // Stats
93  uint32_t GetTxPdus();
98  uint32_t GetTxBytes();
103  uint32_t GetRxPdus();
108  uint32_t GetRxBytes();
109 
120 
125  void SetArrivalTime(Time arrivalTime);
130  void SetPduSize(uint32_t pduSize);
131 
136  void SetDevice(Ptr<NetDevice> device);
137 
138  private:
144 
147 
148  std::string m_receivedData;
149 
150  uint32_t m_txPdus;
151  uint32_t m_txBytes;
152  uint32_t m_rxPdus;
153  uint32_t m_rxBytes;
156 
159  uint32_t m_pduSize;
160 
162 };
163 
165 
171 class LteTestPdcp : public Object
172 {
175 
176  public:
181  static TypeId GetTypeId();
182 
183  LteTestPdcp();
184  ~LteTestPdcp() override;
185  void DoDispose() override;
186 
197 
199  void Start();
200 
206  void SendData(Time time, std::string dataToSend);
211  std::string GetDataReceived();
212 
213  private:
218  virtual void DoReceivePdcpPdu(Ptr<Packet> p);
219 
222 
223  std::string m_receivedData;
224 };
225 
227 
233 class LteTestMac : public Object
234 {
235  // friend class EnbMacMemberLteEnbCmacSapProvider;
238  // friend class EnbMacMemberFfMacSchedSapUser;
239  // friend class EnbMacMemberFfMacCschedSapUser;
240  // friend class EnbMacMemberLteEnbPhySapUser;
241 
242  public:
247  static TypeId GetTypeId();
248 
249  LteTestMac();
250  ~LteTestMac() override;
251  void DoDispose() override;
252 
257  void SetDevice(Ptr<NetDevice> device);
258 
264  void SendTxOpportunity(Time time, uint32_t bytes);
269  std::string GetDataReceived();
270 
279  bool Receive(Ptr<NetDevice> nd, Ptr<const Packet> p, uint16_t protocol, const Address& addr);
280 
291 
297 
302  void SetPdcpHeaderPresent(bool present);
303 
308  void SetRlcHeaderType(uint8_t rlcHeaderType);
309 
312  {
315  };
316 
321  void SetTxOpportunityMode(uint8_t mode);
322 
325  {
328  RANDOM_MODE = 2
329  };
330 
335  void SetTxOppTime(Time txOppTime);
340  void SetTxOppSize(uint32_t txOppSize);
341 
342  // Stats
347  uint32_t GetTxPdus();
352  uint32_t GetTxBytes();
357  uint32_t GetRxPdus();
362  uint32_t GetRxBytes();
363 
364  private:
365  // forwarded from LteMacSapProvider
376 
380 
381  std::string m_receivedData;
382 
383  uint8_t m_rlcHeaderType;
386 
388 
389  // TxOpportunity configuration
392  uint32_t m_txOppSize;
393  std::list<EventId> m_nextTxOppList;
394 
395  // Stats
396  uint32_t m_txPdus;
397  uint32_t m_txBytes;
398  uint32_t m_rxPdus;
399  uint32_t m_rxBytes;
400 };
401 
407 class EpcTestRrc : public Object
408 {
410  friend class MemberEpcEnbS1SapUser<EpcTestRrc>;
411 
412  public:
413  EpcTestRrc();
414  ~EpcTestRrc() override;
415 
416  // inherited from Object
417  void DoDispose() override;
422  static TypeId GetTypeId();
423 
430 
436 
437  private:
438  // S1 SAP methods
456 
459 };
460 
461 } // namespace ns3
462 
463 #endif /* LTE_TEST_MAC_H */
a polymophic address class
Definition: address.h:101
EnbMacMemberLteMacSapProvider class.
Definition: lte-mac-sap.h:203
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication.
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication.
RRC stub providing a testing S1 SAP user to be used with the EpcEnbApplication.
EpcEnbS1SapUser * m_s1SapUser
S1 SAP user.
static TypeId GetTypeId()
Get the type ID.
void SetS1SapProvider(EpcEnbS1SapProvider *s)
Set the S1 SAP Provider.
void DoPathSwitchRequestAcknowledge(EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters params)
Path switch request acknowledge function.
void DoDispose() override
Destructor implementation.
EpcEnbS1SapProvider * m_s1SapProvider
S1 SAP provider.
EpcEnbS1SapUser * GetS1SapUser()
void DoInitialContextSetupRequest(EpcEnbS1SapUser::InitialContextSetupRequestParameters params)
Initial context setup request.
void DoDataRadioBearerSetupRequest(EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params)
Data radio bearer setup request.
An identifier for simulation events.
Definition: event-id.h:55
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
Service Access Point (SAP) offered by the PDCP entity to the RRC entity See 3GPP 36....
Definition: lte-pdcp-sap.h:36
Service Access Point (SAP) offered by the PDCP entity to the RRC entity See 3GPP 36....
Definition: lte-pdcp-sap.h:69
LtePdcpSpecificLtePdcpSapUser class.
Definition: lte-pdcp-sap.h:129
Service Access Point (SAP) offered by the UM-RLC and AM-RLC entities to the PDCP entity See 3GPP 36....
Definition: lte-rlc-sap.h:36
Service Access Point (SAP) offered by the UM-RLC and AM-RLC entities to the PDCP entity See 3GPP 36....
Definition: lte-rlc-sap.h:67
LteRlcSpecificLteRlcSapUser class.
Definition: lte-rlc-sap.h:120
This class implements a testing loopback MAC layer.
TxOpportunityMode_t
Transmit opportunity mode enumeration.
uint32_t GetTxPdus()
Get the transmit PDUs.
void SendTxOpportunity(Time time, uint32_t bytes)
Send transmit opportunity function.
RlcHeaderType_t
RCL Header Type enumeration.
uint8_t m_txOpportunityMode
transmit opportunity mode
void SetLteMacSapUser(LteMacSapUser *s)
Set the MAC SAP user.
uint32_t GetRxPdus()
Get the receive PDUs.
uint32_t m_txOppSize
transmit opportunity size
void SetPdcpHeaderPresent(bool present)
Set PDCP header present function.
uint32_t m_rxBytes
the number of receive bytes
void SetLteMacLoopback(Ptr< LteTestMac > s)
Set the other side of the MAC Loopback.
uint32_t GetRxBytes()
Get the receive bytes.
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters params)
Transmit PDU.
void SetTxOppSize(uint32_t txOppSize)
Set transmit opportunity time.
void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params)
Report buffer status function.
std::list< EventId > m_nextTxOppList
next transmit opportunity list
Time m_txOppTime
transmit opportunity time
LteMacSapProvider * GetLteMacSapProvider()
Get the MAC SAP provider.
std::string GetDataReceived()
Get data received function.
std::string m_receivedData
the received data string
EventId m_nextTxOpp
next transmit opportunity event
bool m_pdcpHeaderPresent
PDCP header present?
LteMacSapUser * m_macSapUser
MAC SAP user.
bool Receive(Ptr< NetDevice > nd, Ptr< const Packet > p, uint16_t protocol, const Address &addr)
the Receive function
void SetDevice(Ptr< NetDevice > device)
Set the device function.
void SetRlcHeaderType(uint8_t rlcHeaderType)
Set RLC header type.
uint8_t m_rlcHeaderType
RLC header type.
uint32_t m_rxPdus
the number of receive PDUs
static TypeId GetTypeId()
Get the type ID.
void DoDispose() override
Destructor implementation.
void SetTxOppTime(Time txOppTime)
Set transmit opportunity time.
LteMacSapProvider * m_macSapProvider
MAC SAP provider.
uint32_t m_txPdus
the number of transmit PDUs
void SetTxOpportunityMode(uint8_t mode)
Set transmit opportunity mode.
Ptr< LteTestMac > m_macLoopback
MAC loopback.
uint32_t m_txBytes
the number of transmit bytes
uint32_t GetTxBytes()
Get the transmit bytes.
Ptr< NetDevice > m_device
the device
This class implements a testing PDCP entity.
std::string GetDataReceived()
Get data received function.
LteRlcSapProvider * m_rlcSapProvider
RLC SAP provider.
void SetLteRlcSapProvider(LteRlcSapProvider *s)
Set the RLC SAP provider.
virtual void DoReceivePdcpPdu(Ptr< Packet > p)
Interface forwarded by LteRlcSapUser.
void DoDispose() override
Destructor implementation.
LteRlcSapUser * m_rlcSapUser
RLC SAP user.
LteRlcSapUser * GetLteRlcSapUser()
Get the RLC SAP user.
void Start()
Start function.
void SendData(Time time, std::string dataToSend)
Send data function.
std::string m_receivedData
the received data
static TypeId GetTypeId()
Get the type ID.
This class implements a testing RRC entity.
~LteTestRrc() override
void SendData(Time at, std::string dataToSend)
Send data function.
uint32_t GetTxPdus()
Get the transmit PDUs.
uint32_t GetRxPdus()
Get the receive PDUs.
uint32_t m_rxPdus
number of receive PDUs
uint32_t m_pduSize
PDU size.
static TypeId GetTypeId()
Get the type ID.
void SetDevice(Ptr< NetDevice > device)
Set the device.
Time m_arrivalTime
next arrival time
LtePdcpSapUser * m_pdcpSapUser
PDCP SAP user.
void SetLtePdcpSapProvider(LtePdcpSapProvider *s)
Set the PDCP SAP provider.
void DoDispose() override
Destructor implementation.
void Stop()
Stop function.
Time m_rxLastTime
last reeive time
uint32_t m_rxBytes
number of receive bytes
uint32_t m_txBytes
number of transmit bytes
void Start()
Start function.
Time m_txLastTime
last transmit time
void SetArrivalTime(Time arrivalTime)
Set the arrival time.
std::string m_receivedData
the received data
uint32_t m_txPdus
number of transmit PDUs
uint32_t GetTxBytes()
Get the transmit bytes.
LtePdcpSapUser * GetLtePdcpSapUser()
Get the PDCP SAP user.
void SetPduSize(uint32_t pduSize)
Set the PDU size.
Time GetRxLastTime()
Get the last receive time.
virtual void DoReceivePdcpSdu(LtePdcpSapUser::ReceivePdcpSduParameters params)
Interface forwarded by LtePdcpSapUser.
EventId m_nextPdu
next PDU event
std::string GetDataReceived()
Get data received function.
LtePdcpSapProvider * m_pdcpSapProvider
PDCP SAP provider.
Time GetTxLastTime()
Get the last transmit time.
Ptr< NetDevice > m_device
the device
uint32_t GetRxBytes()
Get the receive bytes.
Template for the implementation of the EpcEnbS1SapUser as a member of an owner class of type C to whi...
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:77
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
a unique identifier for an interface.
Definition: type-id.h:59
Every class exported by the ns3 library is enclosed in the ns3 namespace.
params
Fit Fluctuating Two Ray model to the 3GPP TR 38.901 using the Anderson-Darling goodness-of-fit ##.
Parameters passed to DataRadioBearerSetupRequest ()
Parameters passed to InitialContextSetupRequest ()
PathSwitchRequestAcknowledgeParameters structure.
Parameters for LteMacSapProvider::ReportBufferStatus.
Definition: lte-mac-sap.h:69
Parameters for LteMacSapProvider::TransmitPdu.
Definition: lte-mac-sap.h:45
Parameters for LtePdcpSapUser::ReceivePdcpSdu.
Definition: lte-pdcp-sap.h:77