src/lte/model/epc-x2-sap.h
changeset 9405 ec9b557065cc
parent 9342 626169ede49f
child 9412 da31245666bb
equal deleted inserted replaced
9404:1f737f190823 9405:ec9b557065cc
   126     std::vector <ErabAdmittedItem> admittedBearers;
   126     std::vector <ErabAdmittedItem> admittedBearers;
   127     std::vector <ErabNotAdmittedItem> notAdmittedBearers;
   127     std::vector <ErabNotAdmittedItem> notAdmittedBearers;
   128     Ptr<Packet>         rrcContext;
   128     Ptr<Packet>         rrcContext;
   129   };
   129   };
   130 
   130 
       
   131   /**
       
   132    * \brief Parameters of the UE CONTEXT RELEASE message.
       
   133    *
       
   134    * See section 9.1.1.5 for further info about the parameters
       
   135    */
       
   136   struct UeContextReleaseParams
       
   137   {
       
   138     uint16_t            oldEnbUeX2apId;
       
   139     uint16_t            newEnbUeX2apId;
       
   140   };
   131 };
   141 };
   132 
   142 
   133 
   143 
   134 /**
   144 /**
   135  * These service primitives of this part of the X2 SAP
   145  * These service primitives of this part of the X2 SAP
   149   virtual void SendHandoverRequestAck (HandoverRequestAckParams params) = 0;
   159   virtual void SendHandoverRequestAck (HandoverRequestAckParams params) = 0;
   150   
   160   
   151 // TODO
   161 // TODO
   152 //   virtual void SendSnStatusTransfer (const struct SnStatusTransfer& params) = 0;
   162 //   virtual void SendSnStatusTransfer (const struct SnStatusTransfer& params) = 0;
   153 // 
   163 // 
   154 //   virtual void SendUeContextRelease (const struct UeContextRelease& params) = 0;
   164   virtual void SendUeContextRelease (UeContextReleaseParams params) = 0;
   155 };
   165 };
   156 
   166 
   157 
   167 
   158 /**
   168 /**
   159  * These service primitives of this part of the X2 SAP
   169  * These service primitives of this part of the X2 SAP
   173   virtual void RecvHandoverRequestAck (HandoverRequestAckParams params) = 0;
   183   virtual void RecvHandoverRequestAck (HandoverRequestAckParams params) = 0;
   174 
   184 
   175 // TODO
   185 // TODO
   176 //   virtual void RecvSnStatusTransfer (const struct SnStatusTransfer& params) = 0;
   186 //   virtual void RecvSnStatusTransfer (const struct SnStatusTransfer& params) = 0;
   177 // 
   187 // 
   178 //   virtual void RecvUeContextRelease (const struct UeContextRelease& params) = 0;
   188   virtual void RecvUeContextRelease (UeContextReleaseParams params) = 0;
   179 };
   189 };
   180 
   190 
   181 ///////////////////////////////////////
   191 ///////////////////////////////////////
   182 
   192 
   183 template <class C>
   193 template <class C>
   191   //
   201   //
   192 
   202 
   193   virtual void SendHandoverRequest (HandoverRequestParams params);
   203   virtual void SendHandoverRequest (HandoverRequestParams params);
   194 
   204 
   195   virtual void SendHandoverRequestAck (HandoverRequestAckParams params);
   205   virtual void SendHandoverRequestAck (HandoverRequestAckParams params);
       
   206 
       
   207   virtual void SendUeContextRelease (UeContextReleaseParams params);
   196   
   208   
   197 private:
   209 private:
   198   EpcX2SpecificEpcX2SapProvider ();
   210   EpcX2SpecificEpcX2SapProvider ();
   199   C* m_x2;
   211   C* m_x2;
   200 };
   212 };
   222 EpcX2SpecificEpcX2SapProvider<C>::SendHandoverRequestAck (HandoverRequestAckParams params)
   234 EpcX2SpecificEpcX2SapProvider<C>::SendHandoverRequestAck (HandoverRequestAckParams params)
   223 {
   235 {
   224   m_x2->DoSendHandoverRequestAck (params);
   236   m_x2->DoSendHandoverRequestAck (params);
   225 }
   237 }
   226 
   238 
       
   239 template <class C>
       
   240 void
       
   241 EpcX2SpecificEpcX2SapProvider<C>::SendUeContextRelease (UeContextReleaseParams params)
       
   242 {
       
   243   m_x2->DoSendUeContextRelease (params);
       
   244 }
       
   245 
   227 ///////////////////////////////////////
   246 ///////////////////////////////////////
   228 
   247 
   229 template <class C>
   248 template <class C>
   230 class EpcX2SpecificEpcX2SapUser : public EpcX2SapUser
   249 class EpcX2SpecificEpcX2SapUser : public EpcX2SapUser
   231 {
   250 {
   238 
   257 
   239   virtual void RecvHandoverRequest (HandoverRequestParams params);
   258   virtual void RecvHandoverRequest (HandoverRequestParams params);
   240 
   259 
   241   virtual void RecvHandoverRequestAck (HandoverRequestAckParams params);
   260   virtual void RecvHandoverRequestAck (HandoverRequestAckParams params);
   242   
   261   
       
   262   virtual void RecvUeContextRelease (UeContextReleaseParams params);
       
   263   
   243 private:
   264 private:
   244   EpcX2SpecificEpcX2SapUser ();
   265   EpcX2SpecificEpcX2SapUser ();
   245   C* m_rrc;
   266   C* m_rrc;
   246 };
   267 };
   247 
   268 
   268 EpcX2SpecificEpcX2SapUser<C>::RecvHandoverRequestAck (HandoverRequestAckParams params)
   289 EpcX2SpecificEpcX2SapUser<C>::RecvHandoverRequestAck (HandoverRequestAckParams params)
   269 {
   290 {
   270   m_rrc->DoRecvHandoverRequestAck (params);
   291   m_rrc->DoRecvHandoverRequestAck (params);
   271 }
   292 }
   272 
   293 
       
   294 template <class C>
       
   295 void
       
   296 EpcX2SpecificEpcX2SapUser<C>::RecvUeContextRelease (UeContextReleaseParams params)
       
   297 {
       
   298   m_rrc->DoRecvUeContextRelease (params);
       
   299 }
       
   300 
   273 
   301 
   274 } // namespace ns3
   302 } // namespace ns3
   275 
   303 
   276 #endif // EPC_X2_SAP_H
   304 #endif // EPC_X2_SAP_H