OLD | NEW |
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) | 3 * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 2 as | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 (j < nDevs) && (!found); | 249 (j < nDevs) && (!found); |
250 j++) | 250 j++) |
251 { | 251 { |
252 enbDev = node->GetDevice (j)->GetObject <LteEnbNetDevice> (); | 252 enbDev = node->GetDevice (j)->GetObject <LteEnbNetDevice> (); |
253 if (enbDev == 0) | 253 if (enbDev == 0) |
254 { | 254 { |
255 continue; | 255 continue; |
256 } | 256 } |
257 else | 257 else |
258 { | 258 { |
259 if (enbDev->GetCellId () == cellId) | 259 if (enbDev->HasCellId (cellId)) |
260 { | 260 { |
261 found = true; | 261 found = true; |
262 break; | 262 break; |
263 } | 263 } |
264 } | 264 } |
265 } | 265 } |
266 } | 266 } |
267 NS_ASSERT_MSG (found, " Unable to find eNB with CellId =" << cellId); | 267 NS_ASSERT_MSG (found, " Unable to find eNB with CellId =" << cellId); |
268 m_enbRrcSapProvider = enbDev->GetRrc ()->GetLteEnbRrcSapProvider (); | 268 m_enbRrcSapProvider = enbDev->GetRrc ()->GetLteEnbRrcSapProvider (); |
269 Ptr<LteEnbRrcProtocolReal> enbRrcProtocolReal = enbDev->GetRrc ()->GetObject<L
teEnbRrcProtocolReal> (); | 269 Ptr<LteEnbRrcProtocolReal> enbRrcProtocolReal = enbDev->GetRrc ()->GetObject<L
teEnbRrcProtocolReal> (); |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 it = m_completeSetupUeParametersMap.find (rnti); | 497 it = m_completeSetupUeParametersMap.find (rnti); |
498 NS_ASSERT (it != m_completeSetupUeParametersMap.end ()); | 498 NS_ASSERT (it != m_completeSetupUeParametersMap.end ()); |
499 delete it->second.srb0SapUser; | 499 delete it->second.srb0SapUser; |
500 delete it->second.srb1SapUser; | 500 delete it->second.srb1SapUser; |
501 m_completeSetupUeParametersMap.erase (it); | 501 m_completeSetupUeParametersMap.erase (it); |
502 m_enbRrcSapProviderMap.erase (rnti); | 502 m_enbRrcSapProviderMap.erase (rnti); |
503 m_setupUeParametersMap.erase (rnti); | 503 m_setupUeParametersMap.erase (rnti); |
504 } | 504 } |
505 | 505 |
506 void· | 506 void· |
507 LteEnbRrcProtocolReal::DoSendSystemInformation (LteRrcSap::SystemInformation msg
) | 507 LteEnbRrcProtocolReal::DoSendSystemInformation (uint16_t cellId, LteRrcSap::Syst
emInformation msg) |
508 { | 508 { |
509 NS_LOG_FUNCTION (this << m_cellId); | 509 NS_LOG_FUNCTION (this << cellId); |
510 // walk list of all nodes to get UEs with this cellId | 510 // walk list of all nodes to get UEs with this cellId |
511 Ptr<LteUeRrc> ueRrc; | 511 Ptr<LteUeRrc> ueRrc; |
512 for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i) | 512 for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i) |
513 { | 513 { |
514 Ptr<Node> node = *i; | 514 Ptr<Node> node = *i; |
515 int nDevs = node->GetNDevices (); | 515 int nDevs = node->GetNDevices (); |
516 for (int j = 0; j < nDevs; ++j) | 516 for (int j = 0; j < nDevs; ++j) |
517 { | 517 { |
518 Ptr<LteUeNetDevice> ueDev = node->GetDevice (j)->GetObject <LteUeNetDe
vice> (); | 518 Ptr<LteUeNetDevice> ueDev = node->GetDevice (j)->GetObject <LteUeNetDe
vice> (); |
519 if (ueDev != 0) | 519 if (ueDev != 0) |
520 { | 520 { |
521 Ptr<LteUeRrc> ueRrc = ueDev->GetRrc (); | 521 Ptr<LteUeRrc> ueRrc = ueDev->GetRrc (); |
522 NS_LOG_LOGIC ("considering UE IMSI " << ueDev->GetImsi () << " tha
t has cellId " << ueRrc->GetCellId ()); | 522 NS_LOG_LOGIC ("considering UE IMSI " << ueDev->GetImsi () << " tha
t has cellId " << ueRrc->GetCellId ()); |
523 if (ueRrc->GetCellId () == m_cellId) | 523 if (ueRrc->GetCellId () == cellId) |
524 { | 524 { |
525 NS_LOG_LOGIC ("sending SI to IMSI " << ueDev->GetImsi ()); | 525 NS_LOG_LOGIC ("sending SI to IMSI " << ueDev->GetImsi ()); |
526 ueRrc->GetLteUeRrcSapProvider ()->RecvSystemInformation (msg); | 526 ueRrc->GetLteUeRrcSapProvider ()->RecvSystemInformation (msg); |
527 Simulator::Schedule (RRC_REAL_MSG_DELAY,· | 527 Simulator::Schedule (RRC_REAL_MSG_DELAY,· |
528 &LteUeRrcSapProvider::RecvSystemInformati
on, | 528 &LteUeRrcSapProvider::RecvSystemInformati
on, |
529 ueRrc->GetLteUeRrcSapProvider (),· | 529 ueRrc->GetLteUeRrcSapProvider (),· |
530 msg); | 530 msg); |
531 } | 531 } |
532 } | 532 } |
533 } | 533 } |
534 }· | 534 }· |
535 } | 535 } |
536 | 536 |
537 void· | 537 void· |
538 LteEnbRrcProtocolReal::DoSendRrcConnectionSetup (uint16_t rnti, LteRrcSap::RrcCo
nnectionSetup msg) | 538 LteEnbRrcProtocolReal::DoSendRrcConnectionSetup (uint16_t rnti, LteRrcSap::RrcCo
nnectionSetup msg) |
539 { | 539 { |
540 Ptr<Packet> packet = Create<Packet> (); | 540 Ptr<Packet> packet = Create<Packet> (); |
541 | 541 |
542 RrcConnectionSetupHeader rrcConnectionSetupHeader; | 542 RrcConnectionSetupHeader rrcConnectionSetupHeader; |
543 rrcConnectionSetupHeader.SetMessage (msg); | 543 rrcConnectionSetupHeader.SetMessage (msg); |
544 | 544 |
545 packet->AddHeader (rrcConnectionSetupHeader); | 545 packet->AddHeader (rrcConnectionSetupHeader); |
546 | 546 |
547 LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters; | 547 LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters; |
548 transmitPdcpPduParameters.pdcpPdu = packet; | 548 transmitPdcpPduParameters.pdcpPdu = packet; |
549 transmitPdcpPduParameters.rnti = rnti; | 549 transmitPdcpPduParameters.rnti = rnti; |
550 transmitPdcpPduParameters.lcid = 0; | 550 transmitPdcpPduParameters.lcid = 0; |
551 | 551 |
552 if (m_setupUeParametersMap.find (rnti) == m_setupUeParametersMap.end () ) | 552 m_setupUeParametersMap.at (rnti).srb0SapProvider->TransmitPdcpPdu (transmitPdc
pPduParameters); |
553 { | |
554 std::cout << "RNTI not found in Enb setup parameters Map!" << std::endl; | |
555 } | |
556 else | |
557 { | |
558 m_setupUeParametersMap[rnti].srb0SapProvider->TransmitPdcpPdu (transmitPdc
pPduParameters); | |
559 } | |
560 } | 553 } |
561 | 554 |
562 void· | 555 void· |
563 LteEnbRrcProtocolReal::DoSendRrcConnectionReject (uint16_t rnti, LteRrcSap::RrcC
onnectionReject msg) | 556 LteEnbRrcProtocolReal::DoSendRrcConnectionReject (uint16_t rnti, LteRrcSap::RrcC
onnectionReject msg) |
564 { | 557 { |
565 Ptr<Packet> packet = Create<Packet> (); | 558 Ptr<Packet> packet = Create<Packet> (); |
566 | 559 |
567 RrcConnectionRejectHeader rrcConnectionRejectHeader; | 560 RrcConnectionRejectHeader rrcConnectionRejectHeader; |
568 rrcConnectionRejectHeader.SetMessage (msg); | 561 rrcConnectionRejectHeader.SetMessage (msg); |
569 | 562 |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 { | 767 { |
775 } | 768 } |
776 | 769 |
777 void | 770 void |
778 RealProtocolRlcSapUser::ReceivePdcpPdu (Ptr<Packet> p) | 771 RealProtocolRlcSapUser::ReceivePdcpPdu (Ptr<Packet> p) |
779 { | 772 { |
780 m_pdcp->DoReceivePdcpPdu (m_rnti, p); | 773 m_pdcp->DoReceivePdcpPdu (m_rnti, p); |
781 } | 774 } |
782 | 775 |
783 } // namespace ns3 | 776 } // namespace ns3 |
OLD | NEW |