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
31namespace ns3
32{
33
39class 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
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
156
160
162};
163
165
171class 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
233class 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
363
364 private:
365 // forwarded from LteMacSapProvider
376
380
381 std::string m_receivedData;
382
386
388
389 // TxOpportunity configuration
393 std::list<EventId> m_nextTxOppList;
394
395 // Stats
400};
401
407class 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:100
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:78
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
a unique identifier for an interface.
Definition: type-id.h:60
Every class exported by the ns3 library is enclosed in the ns3 namespace.
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