21 #include <ns3/fatal-error.h>
65 .AddConstructor<EpcMme> ()
114 std::map<uint64_t, Ptr<UeInfo> >::iterator it =
m_ueInfoMap.find (imsi);
116 NS_ASSERT_MSG (it->second->bearerCounter < 11,
"too many bearers already! " << it->second->bearerCounter);
118 bearerInfo.
bearerId = ++(it->second->bearerCounter);
119 bearerInfo.
tft = tft;
120 bearerInfo.
bearer = bearer;
121 it->second->bearersToBeActivated.push_back (bearerInfo);
131 std::map<uint64_t, Ptr<UeInfo> >::iterator it =
m_ueInfoMap.find (imsi);
133 it->second->cellId = gci;
137 for (std::list<BearerInfo>::iterator bit = it->second->bearersToBeActivated.begin ();
138 bit != it->second->bearersToBeActivated.end ();
144 bearerContext.
tft = bit->tft;
158 EpcMme::DoPathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t gci, std::list<EpcS1apSapMme::ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList)
162 uint64_t imsi = mmeUeS1Id;
163 std::map<uint64_t, Ptr<UeInfo> >::iterator it =
m_ueInfoMap.find (imsi);
165 NS_LOG_INFO (
"IMSI " << imsi <<
" old eNB: " << it->second->cellId <<
", new eNB: " << gci);
166 it->second->cellId = gci;
167 it->second->enbUeS1Id = enbUeS1Id;
183 uint64_t imsi = msg.teid;
184 std::list<EpcS1apSapEnb::ErabToBeSetupItem> erabToBeSetupList;
185 for (std::list<EpcS11SapMme::BearerContextCreated>::iterator bit = msg.
bearerContextsCreated.begin ();
190 erab.
erabId = bit->epsBearerId;
193 erab.
sgwTeid = bit->sgwFteid.teid;
194 erabToBeSetupList.push_back (erab);
196 std::map<uint64_t, Ptr<UeInfo> >::iterator it =
m_ueInfoMap.find (imsi);
198 uint16_t cellId = it->second->cellId;
199 uint16_t enbUeS1Id = it->second->enbUeS1Id;
200 uint64_t mmeUeS1Id = it->second->mmeUeS1Id;
201 std::map<uint16_t, Ptr<EnbInfo> >::iterator jt =
m_enbInfoMap.find (cellId);
203 jt->second->s1apSapEnb->InitialContextSetupRequest (mmeUeS1Id, enbUeS1Id, erabToBeSetupList);
212 uint64_t imsi = msg.teid;
213 std::map<uint64_t, Ptr<UeInfo> >::iterator it =
m_ueInfoMap.find (imsi);
215 uint64_t enbUeS1Id = it->second->enbUeS1Id;
216 uint64_t mmeUeS1Id = it->second->mmeUeS1Id;
217 uint16_t cgi = it->second->cellId;
218 std::list<EpcS1apSapEnb::ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList;
219 std::map<uint16_t, Ptr<EnbInfo> >::iterator jt =
m_enbInfoMap.find (it->second->cellId);
221 jt->second->s1apSapEnb->PathSwitchRequestAcknowledge (enbUeS1Id, mmeUeS1Id, cgi, erabToBeSwitchedInUplinkList);
void AddUe(uint64_t imsi)
enum ns3::EpcS11SapMme::ModifyBearerResponseMessage::Cause cause
smart pointer class similar to boost::intrusive_ptr
#define NS_LOG_FUNCTION(parameters)
void DoModifyBearerResponse(EpcS11SapMme::ModifyBearerResponseMessage msg)
#define NS_ASSERT(condition)
#define NS_LOG_COMPONENT_DEFINE(name)
std::map< uint16_t, Ptr< EnbInfo > > m_enbInfoMap
EpcS1apSapMme * GetS1apSapMme()
void AddBearer(uint64_t imsi, Ptr< EpcTft > tft, EpsBearer bearer)
EpcS11SapSgw * m_s11SapSgw
#define NS_FATAL_ERROR(msg)
fatal error handling
EpcS11SapMme * GetS11SapMme()
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
virtual void ModifyBearerRequest(ModifyBearerRequestMessage msg)=0
Ipv4Address transportLayerAddress
void AddEnb(uint16_t egci, Ipv4Address enbS1UAddr, EpcS1apSapEnb *enbS1apSap)
std::list< BearerContextCreated > bearerContextsCreated
virtual void CreateSessionRequest(CreateSessionRequestMessage msg)=0
EpsBearer erabLevelQosParameters
#define NS_ASSERT_MSG(condition, message)
void DoInitialUeMessage(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi)
Ipv4 addresses are stored in host order in this class.
std::list< BearerContextToBeCreated > bearerContextsToBeCreated
std::map< uint64_t, Ptr< UeInfo > > m_ueInfoMap
void DoInitialContextSetupResponse(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< EpcS1apSapMme::ErabSetupItem > erabSetupList)
void DoPathSwitchRequest(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< EpcS1apSapMme::ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList)
a base class which provides memory management and object aggregation
EpcS1apSapMme * m_s1apSapMme
void SetS11SapSgw(EpcS11SapSgw *s)
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
EpcS11SapMme * m_s11SapMme
void DoCreateSessionResponse(EpcS11SapMme::CreateSessionResponseMessage msg)
static TypeId GetTypeId(void)
EpcS1apSapEnb * s1apSapEnb