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);