A Discrete-Event Network Simulator
API
lte-test-entities.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: Manuel Requena <manuel.requena@cttc.es>
19  */
20 
21 #ifndef LTE_TEST_ENTITIES_H
22 #define LTE_TEST_ENTITIES_H
23 
24 #include "ns3/simulator.h"
25 #include "ns3/test.h"
26 
27 #include "ns3/lte-mac-sap.h"
28 #include "ns3/lte-rlc-sap.h"
29 #include "ns3/lte-pdcp-sap.h"
30 
31 #include "ns3/net-device.h"
32 #include <ns3/epc-enb-s1-sap.h>
33 
34 namespace ns3 {
35 
42 class LteTestRrc : public Object
43 {
46 // friend class EnbMacMemberLteEnbCmacSapProvider;
47 // friend class EnbMacMemberLteMacSapProvider<LteTestMac>;
48 // friend class EnbMacMemberFfMacSchedSapUser;
49 // friend class EnbMacMemberFfMacCschedSapUser;
50 // friend class EnbMacMemberLteEnbPhySapUser;
51 
52  public:
57  static TypeId GetTypeId (void);
58 
59  LteTestRrc (void);
60  virtual ~LteTestRrc (void);
61  virtual void DoDispose (void);
62 
63 
74 
76  void Start ();
78  void Stop ();
79 
85  void SendData (Time at, std::string dataToSend);
90  std::string GetDataReceived (void);
91 
92  // Stats
97  uint32_t GetTxPdus (void);
102  uint32_t GetTxBytes (void);
107  uint32_t GetRxPdus (void);
112  uint32_t GetRxBytes (void);
113 
118  Time GetTxLastTime (void);
123  Time GetRxLastTime (void);
124 
129  void SetArrivalTime (Time arrivalTime);
134  void SetPduSize (uint32_t pduSize);
135 
140  void SetDevice (Ptr<NetDevice> device);
141 
142  private:
148 
151 
152  std::string m_receivedData;
153 
154  uint32_t m_txPdus;
155  uint32_t m_txBytes;
156  uint32_t m_rxPdus;
157  uint32_t m_rxBytes;
160 
163  uint32_t m_pduSize;
164 
166 };
167 
169 
176 class LteTestPdcp : public Object
177 {
180 
181  public:
186  static TypeId GetTypeId (void);
187 
188  LteTestPdcp (void);
189  virtual ~LteTestPdcp (void);
190  virtual void DoDispose (void);
191 
192 
203 
205  void Start ();
206 
212  void SendData (Time time, std::string dataToSend);
217  std::string GetDataReceived (void);
218 
219  private:
224  virtual void DoReceivePdcpPdu (Ptr<Packet> p);
225 
228 
229  std::string m_receivedData;
230 };
231 
233 
240 class LteTestMac : public Object
241 {
242 // friend class EnbMacMemberLteEnbCmacSapProvider;
245 // friend class EnbMacMemberFfMacSchedSapUser;
246 // friend class EnbMacMemberFfMacCschedSapUser;
247 // friend class EnbMacMemberLteEnbPhySapUser;
248 
249  public:
254  static TypeId GetTypeId (void);
255 
256  LteTestMac (void);
257  virtual ~LteTestMac (void);
258  virtual void DoDispose (void);
259 
264  void SetDevice (Ptr<NetDevice> device);
265 
271  void SendTxOpportunity (Time time, uint32_t bytes);
276  std::string GetDataReceived (void);
277 
286  bool Receive (Ptr<NetDevice> nd, Ptr<const Packet> p, uint16_t protocol, const Address& addr);
287 
298 
304 
309  void SetPdcpHeaderPresent (bool present);
310 
315  void SetRlcHeaderType (uint8_t rlcHeaderType);
316 
318  typedef enum {
321  } RlcHeaderType_t;
322 
327  void SetTxOpportunityMode (uint8_t mode);
328 
330  typedef enum {
335 
340  void SetTxOppTime (Time txOppTime);
345  void SetTxOppSize (uint32_t txOppSize);
346 
347  // Stats
352  uint32_t GetTxPdus (void);
357  uint32_t GetTxBytes (void);
362  uint32_t GetRxPdus (void);
367  uint32_t GetRxBytes (void);
368 
369  private:
370  // forwarded from LteMacSapProvider
381 
385 
386  std::string m_receivedData;
387 
388  uint8_t m_rlcHeaderType;
391 
393 
394  // TxOpportunity configuration
397  uint32_t m_txOppSize;
398  std::list<EventId> m_nextTxOppList;
399 
400  // Stats
401  uint32_t m_txPdus;
402  uint32_t m_txBytes;
403  uint32_t m_rxPdus;
404  uint32_t m_rxBytes;
405 
406 };
407 
408 
409 
416 class EpcTestRrc : public Object
417 {
420 
421 public:
422  EpcTestRrc ();
423  virtual ~EpcTestRrc ();
424 
425  // inherited from Object
426  virtual void DoDispose (void);
431  static TypeId GetTypeId (void);
432 
439 
445 
446 private:
447 
448  // S1 SAP methods
464 
467 
468 
469 };
470 
471 
472 } // namespace ns3
473 
474 #endif /* LTE_TEST_MAC_H */
Time GetTxLastTime(void)
Get the last transmit time.
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
Time GetRxLastTime(void)
Get the last receive time.
Parameters passed to DataRadioBearerSetupRequest ()
Template for the implementation of the EpcEnbS1SapUser as a member of an owner class of type C to whi...
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication...
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
EnbMacMemberLteMacSapProvider class.
Definition: lte-mac-sap.h:190
LteRlcSapUser * m_rlcSapUser
RLC SAP user.
uint32_t GetTxBytes(void)
Get the transmit bytes.
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:73
void SetPduSize(uint32_t pduSize)
Set the PDU size.
std::string m_receivedData
the received data string
static TypeId GetTypeId(void)
Get the type ID.
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication...
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:35
static TypeId GetTypeId(void)
Get the type ID.
uint32_t m_rxBytes
number of receive bytes
LteRlcSpecificLteRlcSapUser class.
Definition: lte-rlc-sap.h:124
virtual void DoDispose(void)
Destructor implementation.
LteMacSapProvider * m_macSapProvider
MAC SAP provider.
virtual void DoDispose(void)
Destructor implementation.
void SetTxOpportunityMode(uint8_t mode)
Set transmit opportunity mode.
void SetLteMacLoopback(Ptr< LteTestMac > s)
Set the other side of the MAC Loopback.
virtual void DoReceivePdcpSdu(LtePdcpSapUser::ReceivePdcpSduParameters params)
Interface forwarded by LtePdcpSapUser.
uint8_t m_txOpportunityMode
transmit opportunity mode
EpcEnbS1SapUser * m_s1SapUser
S1 SAP user.
Time m_arrivalTime
next arrival time
a polymophic address class
Definition: address.h:90
virtual ~LteTestPdcp(void)
EpcEnbS1SapProvider * m_s1SapProvider
S1 SAP provider.
Parameters for LteMacSapProvider::ReportBufferStatus.
Definition: lte-mac-sap.h:67
void DoReportBufferStatus(LteMacSapProvider::ReportBufferStatusParameters params)
Report buffer status function.
void SendTxOpportunity(Time time, uint32_t bytes)
Send transmit opportunity function.
Parameters for LtePdcpSapUser::ReceivePdcpSdu.
Definition: lte-pdcp-sap.h:76
Time m_rxLastTime
last reeive time
void SetLteMacSapUser(LteMacSapUser *s)
Set the MAC SAP user.
LtePdcpSapUser * m_pdcpSapUser
PDCP SAP user.
LtePdcpSapProvider * m_pdcpSapProvider
PDCP SAP provider.
static TypeId GetTypeId(void)
Get the type ID.
LtePdcpSapUser * GetLtePdcpSapUser(void)
Get the PDCP SAP user.
void Start()
Start function.
void SendData(Time at, std::string dataToSend)
Send data function.
void SetLteRlcSapProvider(LteRlcSapProvider *s)
Set the RLC SAP provider.
Ptr< NetDevice > m_device
the device
uint32_t GetTxBytes(void)
Get the transmit bytes.
uint32_t m_txBytes
number of transmit bytes
EventId m_nextTxOpp
next transmit opportunity event
void DoTransmitPdu(LteMacSapProvider::TransmitPduParameters params)
Transmit PDU.
void DoInitialContextSetupRequest(EpcEnbS1SapUser::InitialContextSetupRequestParameters params)
Initial context setup request.
void SetS1SapProvider(EpcEnbS1SapProvider *s)
Set the S1 SAP Provider.
uint32_t GetRxPdus(void)
Get the receive PDUs.
void Stop()
Stop function.
void SetTxOppTime(Time txOppTime)
Set transmit opportunity time.
uint32_t GetRxPdus(void)
Get the receive PDUs.
EpcEnbS1SapUser * GetS1SapUser()
LteRlcSapProvider * m_rlcSapProvider
RLC SAP provider.
RRC stub providing a testing S1 SAP user to be used with the EpcEnbApplication.
uint32_t GetTxPdus(void)
Get the transmit PDUs.
virtual ~LteTestRrc(void)
LteMacSapProvider * GetLteMacSapProvider(void)
Get the MAC SAP provider.
virtual void DoDispose(void)
Destructor implementation.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint32_t m_txPdus
number of transmit PDUs
This class implements a testing PDCP entity.
bool m_pdcpHeaderPresent
PDCP header present?
std::string m_receivedData
the received data
void SetArrivalTime(Time arrivalTime)
Set the arrival time.
LtePdcpSpecificLtePdcpSapUser class.
Definition: lte-pdcp-sap.h:132
uint32_t GetTxPdus(void)
Get the transmit PDUs.
PathSwitchRequestAcknowledgeParameters structure.
uint32_t m_pduSize
PDU size.
void Start()
Start function.
std::string m_receivedData
the received data
std::string GetDataReceived(void)
Get data received function.
void SetTxOppSize(uint32_t txOppSize)
Set transmit opportunity time.
virtual void DoDispose(void)
Destructor implementation.
uint32_t m_txPdus
the number of transmit PDUs
Ptr< NetDevice > m_device
the device
void DoPathSwitchRequestAcknowledge(EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters params)
Path switch request acknowledge function.
uint8_t m_rlcHeaderType
RLC header type.
TxOpportunityMode_t
Transmit opportunity mode enumeration.
Service Access Point (SAP) offered by the PDCP entity to the RRC entity See 3GPP 36.323 Packet Data Convergence Protocol (PDCP) specification.
Definition: lte-pdcp-sap.h:35
An identifier for simulation events.
Definition: event-id.h:53
std::string GetDataReceived(void)
Get data received function.
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:95
Service Access Point (SAP) offered by the PDCP entity to the RRC entity See 3GPP 36.323 Packet Data Convergence Protocol (PDCP) specification.
Definition: lte-pdcp-sap.h:68
Parameters passed to InitialContextSetupRequest ()
void SetDevice(Ptr< NetDevice > device)
Set the device function.
std::list< EventId > m_nextTxOppList
next transmit opportunity list
uint32_t m_rxPdus
number of receive PDUs
void SendData(Time time, std::string dataToSend)
Send data function.
uint32_t m_txBytes
the number of transmit bytes
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:36
std::string GetDataReceived(void)
Get data received function.
uint32_t GetRxBytes(void)
Get the receive bytes.
This class implements a testing loopback MAC layer.
uint32_t m_txOppSize
transmit opportunity size
uint32_t GetRxBytes(void)
Get the receive bytes.
A base class which provides memory management and object aggregation.
Definition: object.h:87
void DoDataRadioBearerSetupRequest(EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params)
Data radio bearer setup request.
virtual ~LteTestMac(void)
uint32_t m_rxPdus
the number of receive PDUs
void SetPdcpHeaderPresent(bool present)
Set PDCP header present function.
Ptr< LteTestMac > m_macLoopback
MAC loopback.
a unique identifier for an interface.
Definition: type-id.h:58
RlcHeaderType_t
RCL Header Type enumeration.
uint32_t m_rxBytes
the number of receive bytes
void SetDevice(Ptr< NetDevice > device)
Set the device.
Time m_txLastTime
last transmit time
LteMacSapUser * m_macSapUser
MAC SAP user.
virtual void DoReceivePdcpPdu(Ptr< Packet > p)
Interface forwarded by LteRlcSapUser.
Time m_txOppTime
transmit opportunity time
void SetLtePdcpSapProvider(LtePdcpSapProvider *s)
Set the PDCP SAP provider.
static TypeId GetTypeId(void)
Get the type ID.
void SetRlcHeaderType(uint8_t rlcHeaderType)
Set RLC header type.
This class implements a testing RRC entity.
EventId m_nextPdu
next PDU event
bool Receive(Ptr< NetDevice > nd, Ptr< const Packet > p, uint16_t protocol, const Address &addr)
the Receive function
LteRlcSapUser * GetLteRlcSapUser(void)
Get the RLC SAP user.
Parameters for LteMacSapProvider::TransmitPdu.
Definition: lte-mac-sap.h:45