src/lte/helper/epc-helper.h
changeset 10442 a420385d5438
parent 9556 29b3091d8fb8
child 10444 57ec5c8db88e
--- 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;
 
 };