--- a/src/lte/helper/epc-helper.h Sun Nov 10 16:53:04 2013 -0800
+++ b/src/lte/helper/epc-helper.h Tue Nov 12 13:03:13 2013 +0100
@@ -1,6 +1,6 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2011-2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ * Copyright (c) 2011-2013 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@ -39,12 +39,11 @@
class EpcMme;
/**
- * \brief Helper class to handle the creation of the EPC entities and protocols.
+ * \brief Base helper class to handle the creation of the EPC entities.
*
- * This Helper will create an EPC network topology comprising of a
- * single node that implements both the SGW and PGW functionality, and
- * is connected to all the eNBs in the simulation by means of the S1-U
- * interface.
+ * This class provides the API for the implementation of helpers that
+ * allow to create EPC entities and the nodes and interfaces that host
+ * and connect them.
*/
class EpcHelper : public Object
{
@@ -73,7 +72,7 @@
* \param lteEnbNetDevice the LteEnbNetDevice of the eNB node
* \param cellId ID of the eNB
*/
- void AddEnb (Ptr<Node> enbNode, Ptr<NetDevice> lteEnbNetDevice, uint16_t cellId);
+ virtual void AddEnb (Ptr<Node> enbNode, Ptr<NetDevice> lteEnbNetDevice, uint16_t cellId);
/**
* Notify the EPC of the existance of a new UE which might attach at a later time
@@ -81,7 +80,7 @@
* \param ueLteDevice the UE device to be attached
* \param imsi the unique identifier of the UE
*/
- void AddUe (Ptr<NetDevice> ueLteDevice, uint64_t imsi);
+ virtual void AddUe (Ptr<NetDevice> ueLteDevice, uint64_t imsi);
/**
* Add an X2 interface between two eNB
@@ -89,7 +88,7 @@
* \param enbNode1 one eNB peer of the X2 interface
* \param enbNode2 the other eNB peer of the X2 interface
*/
- void AddX2Interface (Ptr<Node> enbNode1, Ptr<Node> enbNode2);
+ virtual void AddX2Interface (Ptr<Node> enbNode1, Ptr<Node> enbNode2);
/**
* Activate an EPS bearer, setting up the corresponding S1-U tunnel.
@@ -102,7 +101,7 @@
* \param tft the Traffic Flow Template of the new bearer
* \param bearer struct describing the characteristics of the EPS bearer to be activated
*/
- void ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
+ virtual void ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
/**
@@ -113,7 +112,7 @@
* intended for this method is to allow the user to configure the Gi
* interface of the PGW, i.e., to connect the PGW to the internet.
*/
- Ptr<Node> GetPgwNode ();
+ virtual Ptr<Node> GetPgwNode ();
/**
* Assign IPv4 addresses to UE devices
@@ -122,65 +121,15 @@
*
* \return the interface container, \see Ipv4AddressHelper::Assign() which has similar semantics
*/
- Ipv4InterfaceContainer AssignUeIpv4Address (NetDeviceContainer ueDevices);
+ virtual Ipv4InterfaceContainer AssignUeIpv4Address (NetDeviceContainer ueDevices);
/**
*
* \return the address of the Default Gateway to be used by UEs to reach the internet
*/
- Ipv4Address GetUeDefaultGatewayAddress ();
-
-
-
-private:
-
- /**
- * SGW-PGW network element
- */
-
- /**
- * helper to assign addresses to UE devices as well as to the TUN device of the SGW/PGW
- */
- Ipv4AddressHelper m_ueAddressHelper;
-
- Ptr<Node> m_sgwPgw;
- Ptr<EpcSgwPgwApplication> m_sgwPgwApp;
- Ptr<VirtualNetDevice> m_tunDevice;
- Ptr<EpcMme> m_mme;
-
- /**
- * S1-U interfaces
- */
+ virtual Ipv4Address GetUeDefaultGatewayAddress ();
- /**
- * helper to assign addresses to S1-U NetDevices
- */
- Ipv4AddressHelper m_s1uIpv4AddressHelper;
-
- DataRate m_s1uLinkDataRate;
- Time m_s1uLinkDelay;
- uint16_t m_s1uLinkMtu;
-
- /**
- * UDP port where the GTP-U Socket is bound, fixed by the standard as 2152
- */
- uint16_t m_gtpuUdpPort;
-
- /**
- * Map storing for each IMSI the corresponding eNB NetDevice
- *
- */
- std::map<uint64_t, Ptr<NetDevice> > m_imsiEnbDeviceMap;
-
- /**
- * helper to assign addresses to X2 NetDevices
- */
- Ipv4AddressHelper m_x2Ipv4AddressHelper;
-
- DataRate m_x2LinkDataRate;
- Time m_x2LinkDelay;
- uint16_t m_x2LinkMtu;
};