src/lte/model/lte-enb-rrc.cc
changeset 9323 c4c734a16f4f
parent 8717 5427774a21cf
child 9327 6f8d10f0fb94
--- a/src/lte/model/lte-enb-rrc.cc	Tue Jun 19 12:05:28 2012 +0200
+++ b/src/lte/model/lte-enb-rrc.cc	Tue Jun 19 13:58:18 2012 +0200
@@ -17,23 +17,23 @@
  *
  * Author: Nicola Baldo <nbaldo@cttc.es>
  *         Marco Miozzo <mmiozzo@cttc.es>
+ *         Manuel Requena <manuel.requena@cttc.es>
  */
 
-#include <ns3/fatal-error.h>
-#include <ns3/log.h>
-#include <ns3/abort.h>
+#include "ns3/fatal-error.h"
+#include "ns3/log.h"
+#include "ns3/abort.h"
 #include "ns3/pointer.h"
 #include "ns3/object-map.h"
 #include "ns3/object-factory.h"
 
-#include "lte-enb-rrc.h"
-#include "lte-rlc.h"
-#include "lte-pdcp.h"
-#include "lte-pdcp-sap.h"
-#include "lte-radio-bearer-info.h"
-#include "lte-radio-bearer-tag.h"
-#include "ns3/object-map.h"
-#include <ns3/ff-mac-csched-sap.h>
+#include "ns3/lte-enb-rrc.h"
+#include "ns3/lte-rlc.h"
+#include "ns3/lte-pdcp.h"
+#include "ns3/lte-pdcp-sap.h"
+#include "ns3/lte-radio-bearer-info.h"
+#include "ns3/lte-radio-bearer-tag.h"
+#include "ns3/ff-mac-csched-sap.h"
 
 // WILD HACK for UE-RRC direct communications
 #include <ns3/node-list.h>
@@ -209,7 +209,8 @@
 NS_OBJECT_ENSURE_REGISTERED (LteEnbRrc);
 
 LteEnbRrc::LteEnbRrc ()
-  : m_cmacSapProvider (0),
+  : m_x2SapProvider (0),
+    m_cmacSapProvider (0),
     m_ffMacSchedSapProvider (0),
     m_macSapProvider (0),
     m_configured (false),
@@ -218,6 +219,7 @@
   NS_LOG_FUNCTION (this);
   m_cmacSapUser = new EnbRrcMemberLteEnbCmacSapUser (this);
   m_pdcpSapUser = new LtePdcpSpecificLtePdcpSapUser<LteEnbRrc> (this);
+  m_x2SapUser = new EpcX2SpecificEpcX2SapUser<LteEnbRrc> (this);
 }
 
 
@@ -233,6 +235,7 @@
   NS_LOG_FUNCTION (this);
   delete m_cmacSapUser;
   delete m_pdcpSapUser;
+  delete m_x2SapUser;
 }
 
 TypeId
@@ -283,6 +286,21 @@
 
 
 void
+LteEnbRrc::SetEpcX2SapProvider (EpcX2SapProvider * s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_x2SapProvider = s;
+}
+
+EpcX2SapUser*
+LteEnbRrc::GetEpcX2SapUser ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_x2SapUser;
+}
+
+
+void
 LteEnbRrc::SetLteEnbCmacSapProvider (LteEnbCmacSapProvider * s)
 {
   NS_LOG_FUNCTION (this << s);
@@ -434,6 +452,50 @@
 }
 
 
+//
+// User API
+//
+void
+LteEnbRrc::SendHandoverRequest (Ptr<Node> ueNode, Ptr<Node> sourceEnbNode, Ptr<Node> targetEnbNode)
+{
+  NS_LOG_FUNCTION (this << ueNode << sourceEnbNode << targetEnbNode);
+  NS_LOG_INFO ("Request to send HANDOVER REQUEST");
+
+  EpcX2SapProvider::HandoverRequestParams params;
+  params.ueNode         = ueNode;
+  params.sourceEnbNode  = sourceEnbNode;
+  params.targetEnbNode  = targetEnbNode;
+
+  m_x2SapProvider->SendHandoverRequest (params);
+}
+
+
+//
+// X2-User SAP
+//
+void
+LteEnbRrc::DoRecvHandoverRequest (EpcX2SapUser::HandoverRequestParams params)
+{
+  NS_LOG_FUNCTION (this);
+
+  NS_LOG_INFO ("Recv X2 message: HANDOVER REQUEST");
+
+  NS_LOG_INFO ("Send X2 message: HANDOVER REQUEST ACK");
+
+  EpcX2SapProvider::HandoverRequestAckParams ackParams;
+  
+  m_x2SapProvider->SendHandoverRequestAck (ackParams);
+}
+
+void
+LteEnbRrc::DoRecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params)
+{
+  NS_LOG_FUNCTION (this);
+  
+  NS_LOG_INFO ("Recv X2 message: HANDOVER REQUEST ACK");
+}
+
+
 void
 LteEnbRrc::DoReceiveRrcPdu (LtePdcpSapUser::ReceiveRrcPduParameters params)
 {