LEFT | RIGHT |
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) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) | 3 * Copyright (c) 2011 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 |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
14 * You should have received a copy of the GNU General Public License | 14 * You should have received a copy of the GNU General Public License |
15 * along with this program; if not, write to the Free Software | 15 * along with this program; if not, write to the Free Software |
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
17 * | 17 * |
18 * Author: Nicola Baldo <nbaldo@cttc.es> (re-wrote from scratch this helper) | 18 * Author: Nicola Baldo <nbaldo@cttc.es> (re-wrote from scratch this helper) |
19 * Giuseppe Piro <g.piro@poliba.it> (parts of the PHY & channel creatio
n & configuration copied from the GSoC 2011 code) | 19 * Giuseppe Piro <g.piro@poliba.it> (parts of the PHY & channel creatio
n & configuration copied from the GSoC 2011 code) |
20 * Modified by: Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregatio
n - GSoC 2015) | 20 * Modified by: Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregatio
n - GSoC 2015) |
21 * Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)· | 21 * Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)· |
22 */ | 22 */ |
23 | 23 |
24 | |
25 #include "lte-helper.h" | 24 #include "lte-helper.h" |
26 #include <ns3/string.h> | 25 #include <ns3/string.h> |
27 #include <ns3/log.h> | 26 #include <ns3/log.h> |
28 #include <ns3/abort.h> | 27 #include <ns3/abort.h> |
29 #include <ns3/pointer.h> | 28 #include <ns3/pointer.h> |
30 #include <ns3/lte-enb-rrc.h> | 29 #include <ns3/lte-enb-rrc.h> |
31 #include <ns3/epc-ue-nas.h> | 30 #include <ns3/epc-ue-nas.h> |
32 #include <ns3/epc-enb-application.h> | 31 #include <ns3/epc-enb-application.h> |
33 #include <ns3/lte-ue-rrc.h> | 32 #include <ns3/lte-ue-rrc.h> |
34 #include <ns3/lte-ue-mac.h> | 33 #include <ns3/lte-ue-mac.h> |
35 #include <ns3/lte-enb-mac.h> | 34 #include <ns3/lte-enb-mac.h> |
36 #include <ns3/lte-enb-net-device.h> | 35 #include <ns3/lte-enb-net-device.h> |
37 #include <ns3/lte-enb-phy.h> | 36 #include <ns3/lte-enb-phy.h> |
38 #include <ns3/lte-ue-phy.h> | 37 #include <ns3/lte-ue-phy.h> |
39 #include <ns3/lte-spectrum-phy.h> | 38 #include <ns3/lte-spectrum-phy.h> |
40 #include <ns3/lte-chunk-processor.h> | 39 #include <ns3/lte-chunk-processor.h> |
41 #include <ns3/multi-model-spectrum-channel.h> | 40 #include <ns3/multi-model-spectrum-channel.h> |
42 #include <ns3/friis-spectrum-propagation-loss.h> | 41 #include <ns3/friis-spectrum-propagation-loss.h> |
43 #include <ns3/trace-fading-loss-model.h> | 42 #include <ns3/trace-fading-loss-model.h> |
44 #include <ns3/isotropic-antenna-model.h> | 43 #include <ns3/isotropic-antenna-model.h> |
45 #include <ns3/lte-enb-net-device.h> | |
46 #include <ns3/lte-ue-net-device.h> | 44 #include <ns3/lte-ue-net-device.h> |
47 #include <ns3/ff-mac-scheduler.h> | 45 #include <ns3/ff-mac-scheduler.h> |
48 #include <ns3/lte-ffr-algorithm.h> | 46 #include <ns3/lte-ffr-algorithm.h> |
49 #include <ns3/lte-handover-algorithm.h> | 47 #include <ns3/lte-handover-algorithm.h> |
50 #include <ns3/lte-enb-component-carrier-manager.h> | 48 #include <ns3/lte-enb-component-carrier-manager.h> |
51 #include <ns3/lte-ue-component-carrier-manager.h> | 49 #include <ns3/lte-ue-component-carrier-manager.h> |
52 #include <ns3/lte-anr.h> | 50 #include <ns3/lte-anr.h> |
53 #include <ns3/lte-rlc.h> | 51 #include <ns3/lte-rlc.h> |
54 #include <ns3/lte-rlc-um.h> | 52 #include <ns3/lte-rlc-um.h> |
55 #include <ns3/lte-rlc-am.h> | 53 #include <ns3/lte-rlc-am.h> |
56 #include <ns3/epc-enb-s1-sap.h> | 54 #include <ns3/epc-enb-s1-sap.h> |
57 #include <ns3/lte-rrc-protocol-ideal.h> | 55 #include <ns3/lte-rrc-protocol-ideal.h> |
58 #include <ns3/lte-rrc-protocol-real.h> | 56 #include <ns3/lte-rrc-protocol-real.h> |
59 #include <ns3/mac-stats-calculator.h> | 57 #include <ns3/mac-stats-calculator.h> |
60 #include <ns3/phy-stats-calculator.h> | 58 #include <ns3/phy-stats-calculator.h> |
61 #include <ns3/phy-tx-stats-calculator.h> | 59 #include <ns3/phy-tx-stats-calculator.h> |
62 #include <ns3/phy-rx-stats-calculator.h> | 60 #include <ns3/phy-rx-stats-calculator.h> |
63 #include <ns3/epc-helper.h> | 61 #include <ns3/epc-helper.h> |
64 #include <iostream> | 62 #include <iostream> |
65 #include <ns3/buildings-propagation-loss-model.h> | 63 #include <ns3/buildings-propagation-loss-model.h> |
66 #include <ns3/lte-spectrum-value-helper.h> | 64 #include <ns3/lte-spectrum-value-helper.h> |
67 #include <ns3/epc-x2.h> | 65 #include <ns3/epc-x2.h> |
68 #include <ns3/pointer.h> | |
69 #include <ns3/object-map.h> | 66 #include <ns3/object-map.h> |
70 #include <ns3/object-factory.h> | 67 #include <ns3/object-factory.h> |
71 | 68 |
72 namespace ns3 { | 69 namespace ns3 { |
73 | 70 |
74 NS_LOG_COMPONENT_DEFINE ("LteHelper"); | 71 NS_LOG_COMPONENT_DEFINE ("LteHelper"); |
75 | 72 |
76 NS_OBJECT_ENSURE_REGISTERED (LteHelper); | 73 NS_OBJECT_ENSURE_REGISTERED (LteHelper); |
77 | 74 |
78 LteHelper::LteHelper (void) | 75 LteHelper::LteHelper (void) |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 NS_LOG_FUNCTION (this << type); | 463 NS_LOG_FUNCTION (this << type); |
467 m_channelFactory.SetTypeId (type); | 464 m_channelFactory.SetTypeId (type); |
468 } | 465 } |
469 | 466 |
470 void· | 467 void· |
471 LteHelper::SetSpectrumChannelAttribute (std::string n, const AttributeValue &v) | 468 LteHelper::SetSpectrumChannelAttribute (std::string n, const AttributeValue &v) |
472 { | 469 { |
473 m_channelFactory.Set (n, v); | 470 m_channelFactory.Set (n, v); |
474 } | 471 } |
475 | 472 |
476 void | |
477 LteHelper::SetCcPhyParams ( std::map< uint8_t, ComponentCarrier> ccMapParams) | |
478 { | |
479 NS_LOG_FUNCTION (this); | |
480 m_componentCarrierPhyParams = ccMapParams; | |
481 } | |
482 | |
483 NetDeviceContainer | 473 NetDeviceContainer |
484 LteHelper::InstallEnbDevice (NodeContainer c) | 474 LteHelper::InstallEnbDevice (NodeContainer c) |
485 { | 475 { |
486 NS_LOG_FUNCTION (this); | 476 NS_LOG_FUNCTION (this); |
487 Initialize (); // will run DoInitialize () if necessary | 477 Initialize (); // will run DoInitialize () if necessary |
488 NetDeviceContainer devices; | 478 NetDeviceContainer devices; |
489 for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i) | 479 for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i) |
490 { | 480 { |
491 Ptr<Node> node = *i; | 481 Ptr<Node> node = *i; |
492 Ptr<NetDevice> device = InstallSingleEnbDevice (node); | 482 Ptr<NetDevice> device = InstallSingleEnbDevice (node); |
(...skipping 13 matching lines...) Expand all Loading... |
506 Ptr<NetDevice> device = InstallSingleUeDevice (node); | 496 Ptr<NetDevice> device = InstallSingleUeDevice (node); |
507 devices.Add (device); | 497 devices.Add (device); |
508 } | 498 } |
509 return devices; | 499 return devices; |
510 } | 500 } |
511 | 501 |
512 | 502 |
513 Ptr<NetDevice> | 503 Ptr<NetDevice> |
514 LteHelper::InstallSingleEnbDevice (Ptr<Node> n) | 504 LteHelper::InstallSingleEnbDevice (Ptr<Node> n) |
515 { | 505 { |
| 506 NS_LOG_FUNCTION (this << n); |
516 uint16_t cellId = m_cellIdCounter; // \todo Remove, eNB has no cell ID | 507 uint16_t cellId = m_cellIdCounter; // \todo Remove, eNB has no cell ID |
517 | 508 |
518 Ptr<LteEnbNetDevice> dev = m_enbNetDeviceFactory.Create<LteEnbNetDevice> (); | 509 Ptr<LteEnbNetDevice> dev = m_enbNetDeviceFactory.Create<LteEnbNetDevice> (); |
519 Ptr<LteHandoverAlgorithm> handoverAlgorithm = m_handoverAlgorithmFactory.Creat
e<LteHandoverAlgorithm> (); | 510 Ptr<LteHandoverAlgorithm> handoverAlgorithm = m_handoverAlgorithmFactory.Creat
e<LteHandoverAlgorithm> (); |
520 | 511 |
521 if (m_componentCarrierPhyParams.size() == 0) | 512 NS_ABORT_MSG_IF (m_componentCarrierPhyParams.size() != 0, "CC map is not clean
"); |
522 { | 513 DoComponentCarrierConfigure (dev->GetUlEarfcn (), dev->GetDlEarfcn (), |
523 DoComponentCarrierConfigure (dev->GetUlEarfcn (), dev->GetDlEarfcn (), dev
->GetUlBandwidth (), dev->GetDlBandwidth ()); | 514 dev->GetUlBandwidth (), dev->GetDlBandwidth ()); |
524 } | 515 NS_ABORT_MSG_IF (m_componentCarrierPhyParams.size() != m_noOfCcs, |
525 | 516 "CC map size (" << m_componentCarrierPhyParams.size () << |
526 NS_ASSERT_MSG(m_componentCarrierPhyParams.size()!=0, "Cannot create enb ccm ma
p."); | 517 ") must be equal to number of carriers (" << |
| 518 m_noOfCcs << ")"); |
| 519 |
527 // create component carrier map for this eNb device | 520 // create component carrier map for this eNb device |
528 std::map<uint8_t,Ptr<ComponentCarrierEnb> > ccMap; | 521 std::map<uint8_t,Ptr<ComponentCarrierEnb> > ccMap; |
529 for (std::map<uint8_t, ComponentCarrier >::iterator it = m_componentCarrierPhy
Params.begin (); it != m_componentCarrierPhyParams.end (); ++it) | 522 for (std::map<uint8_t, ComponentCarrier >::iterator it = m_componentCarrierPhy
Params.begin (); |
530 { | 523 it != m_componentCarrierPhyParams.end (); |
531 Ptr <ComponentCarrierEnb> cc = CreateObject<ComponentCarrierEnb> (); | 524 ++it) |
532 cc->SetUlBandwidth(it->second.GetUlBandwidth()); | 525 { |
533 cc->SetDlBandwidth(it->second.GetDlBandwidth()); | 526 Ptr <ComponentCarrierEnb> cc = CreateObject<ComponentCarrierEnb> (); |
534 cc->SetDlEarfcn(it->second.GetDlEarfcn()); | 527 cc->SetUlBandwidth (it->second.GetUlBandwidth ()); |
535 cc->SetUlEarfcn(it->second.GetUlEarfcn()); | 528 cc->SetDlBandwidth (it->second.GetDlBandwidth ()); |
536 cc->SetAsPrimary(it->second.IsPrimary()); | 529 cc->SetDlEarfcn (it->second.GetDlEarfcn ()); |
| 530 cc->SetUlEarfcn (it->second.GetUlEarfcn ()); |
| 531 cc->SetAsPrimary (it->second.IsPrimary ()); |
537 NS_ABORT_MSG_IF (m_cellIdCounter == 65535, "max num cells exceeded"); | 532 NS_ABORT_MSG_IF (m_cellIdCounter == 65535, "max num cells exceeded"); |
538 cc->SetCellId (m_cellIdCounter++); | 533 cc->SetCellId (m_cellIdCounter++); |
539 ccMap [it->first] = cc; | 534 ccMap [it->first] = cc; |
540 } | 535 } |
| 536 // CC map is not needed anymore |
| 537 m_componentCarrierPhyParams.clear (); |
| 538 |
541 NS_ABORT_MSG_IF (m_useCa && ccMap.size()<2, "You have to either specify carrie
rs or disable carrier aggregation"); | 539 NS_ABORT_MSG_IF (m_useCa && ccMap.size()<2, "You have to either specify carrie
rs or disable carrier aggregation"); |
542 NS_ASSERT (ccMap.size () == m_noOfCcs); | 540 NS_ASSERT (ccMap.size () == m_noOfCcs); |
543 | 541 |
544 for (std::map<uint8_t,Ptr<ComponentCarrierEnb> >::iterator it = ccMap.begin ()
; it != ccMap.end (); ++it) | 542 for (std::map<uint8_t,Ptr<ComponentCarrierEnb> >::iterator it = ccMap.begin ()
; it != ccMap.end (); ++it) |
545 { | 543 { |
546 NS_LOG_DEBUG (this << " component carrier map size " << (uint16_t) ccMap.s
ize ()); | 544 NS_LOG_DEBUG (this << " component carrier map size " << (uint16_t) ccMap.s
ize ()); |
547 Ptr<LteSpectrumPhy> dlPhy = CreateObject<LteSpectrumPhy> (); | 545 Ptr<LteSpectrumPhy> dlPhy = CreateObject<LteSpectrumPhy> (); |
548 Ptr<LteSpectrumPhy> ulPhy = CreateObject<LteSpectrumPhy> (); | 546 Ptr<LteSpectrumPhy> ulPhy = CreateObject<LteSpectrumPhy> (); |
549 Ptr<LteEnbPhy> phy = CreateObject<LteEnbPhy> (dlPhy, ulPhy); | 547 Ptr<LteEnbPhy> phy = CreateObject<LteEnbPhy> (dlPhy, ulPhy); |
550 | 548 |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 } | 755 } |
758 | 756 |
759 return dev; | 757 return dev; |
760 } | 758 } |
761 | 759 |
762 Ptr<NetDevice> | 760 Ptr<NetDevice> |
763 LteHelper::InstallSingleUeDevice (Ptr<Node> n) | 761 LteHelper::InstallSingleUeDevice (Ptr<Node> n) |
764 { | 762 { |
765 NS_LOG_FUNCTION (this); | 763 NS_LOG_FUNCTION (this); |
766 | 764 |
767 NS_ABORT_MSG_IF (m_componentCarrierPhyParams.size() == 0 && m_useCa, "If CA is
enabled, before call this method you need to install Enbs --> InstallEnbDevice(
)"); | |
768 | |
769 Ptr<LteUeNetDevice> dev = m_ueNetDeviceFactory.Create<LteUeNetDevice> (); | 765 Ptr<LteUeNetDevice> dev = m_ueNetDeviceFactory.Create<LteUeNetDevice> (); |
| 766 |
| 767 // Initialize the component carriers with default values in order to initializ
e MACs and PHYs |
| 768 // of each component carrier. These values must be updated once the UE is atta
ched to the |
| 769 // eNB and receives RRC Connection Reconfiguration message. In case of primary
carrier or |
| 770 // a single carrier, these values will be updated once the UE will receive SIB
2 and MIB. |
| 771 NS_ABORT_MSG_IF (m_componentCarrierPhyParams.size() != 0, "CC map is not clean
"); |
| 772 DoComponentCarrierConfigure (dev->GetDlEarfcn () + 18000, dev->GetDlEarfcn (),
25, 25); |
| 773 NS_ABORT_MSG_IF (m_componentCarrierPhyParams.size() != m_noOfCcs, |
| 774 "CC map size (" << m_componentCarrierPhyParams.size () << |
| 775 ") must be equal to number of carriers (" << |
| 776 m_noOfCcs << ")"); |
| 777 |
770 std::map<uint8_t, Ptr<ComponentCarrierUe> > ueCcMap; | 778 std::map<uint8_t, Ptr<ComponentCarrierUe> > ueCcMap; |
771 | 779 |
772 for (std::map< uint8_t, ComponentCarrier >::iterator it = m_componentCarrierPh
yParams.begin() ; it != m_componentCarrierPhyParams.end(); ++it) | 780 for (std::map< uint8_t, ComponentCarrier >::iterator it = m_componentCarrierPh
yParams.begin(); |
773 { | 781 it != m_componentCarrierPhyParams.end(); |
774 Ptr <ComponentCarrierUe> cc = CreateObject<ComponentCarrierUe> (); | 782 ++it) |
775 cc->SetUlBandwidth ( it->second.GetUlBandwidth ()); | 783 { |
776 cc->SetDlBandwidth ( it->second.GetDlBandwidth ()); | 784 Ptr <ComponentCarrierUe> cc = CreateObject<ComponentCarrierUe> (); |
777 cc->SetDlEarfcn ( it->second.GetDlEarfcn ()); | 785 cc->SetUlBandwidth (it->second.GetUlBandwidth ()); |
778 cc->SetUlEarfcn ( it->second.GetUlEarfcn ()); | 786 cc->SetDlBandwidth (it->second.GetDlBandwidth ()); |
779 cc->SetAsPrimary (it->second.IsPrimary()); | 787 cc->SetDlEarfcn (it->second.GetDlEarfcn ()); |
| 788 cc->SetUlEarfcn (it->second.GetUlEarfcn ()); |
| 789 cc->SetAsPrimary (it->second.IsPrimary ()); |
780 Ptr<LteUeMac> mac = CreateObject<LteUeMac> (); | 790 Ptr<LteUeMac> mac = CreateObject<LteUeMac> (); |
781 cc->SetMac (mac); | 791 cc->SetMac (mac); |
782 // cc->GetPhy ()->Initialize (); // it is initialized within the LteUeNetD
evice::DoInitialize () | 792 // cc->GetPhy ()->Initialize (); // it is initialized within the LteUeNetD
evice::DoInitialize () |
783 ueCcMap.insert (std::pair<uint8_t, Ptr<ComponentCarrierUe> > (it->first, c
c)); | 793 ueCcMap.insert (std::pair<uint8_t, Ptr<ComponentCarrierUe> > (it->first, c
c)); |
784 } | 794 } |
| 795 // CC map is not needed anymore |
| 796 m_componentCarrierPhyParams.clear (); |
785 | 797 |
786 for (std::map<uint8_t, Ptr<ComponentCarrierUe> >::iterator it = ueCcMap.begin
(); it != ueCcMap.end (); ++it) | 798 for (std::map<uint8_t, Ptr<ComponentCarrierUe> >::iterator it = ueCcMap.begin
(); it != ueCcMap.end (); ++it) |
787 { | 799 { |
788 Ptr<LteSpectrumPhy> dlPhy = CreateObject<LteSpectrumPhy> (); | 800 Ptr<LteSpectrumPhy> dlPhy = CreateObject<LteSpectrumPhy> (); |
789 Ptr<LteSpectrumPhy> ulPhy = CreateObject<LteSpectrumPhy> (); | 801 Ptr<LteSpectrumPhy> ulPhy = CreateObject<LteSpectrumPhy> (); |
790 | 802 |
791 Ptr<LteUePhy> phy = CreateObject<LteUePhy> (dlPhy, ulPhy); | 803 Ptr<LteUePhy> phy = CreateObject<LteUePhy> (dlPhy, ulPhy); |
792 | 804 |
793 Ptr<LteHarqPhy> harq = Create<LteHarqPhy> (); | 805 Ptr<LteHarqPhy> harq = Create<LteHarqPhy> (); |
794 dlPhy->SetHarqPhyModule (harq); | 806 dlPhy->SetHarqPhyModule (harq); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
834 ulPhy->SetMobility (mm); | 846 ulPhy->SetMobility (mm); |
835 | 847 |
836 Ptr<AntennaModel> antenna = (m_ueAntennaModelFactory.Create ())->GetObject
<AntennaModel> (); | 848 Ptr<AntennaModel> antenna = (m_ueAntennaModelFactory.Create ())->GetObject
<AntennaModel> (); |
837 NS_ASSERT_MSG (antenna, "error in creating the AntennaModel object"); | 849 NS_ASSERT_MSG (antenna, "error in creating the AntennaModel object"); |
838 dlPhy->SetAntenna (antenna); | 850 dlPhy->SetAntenna (antenna); |
839 ulPhy->SetAntenna (antenna); | 851 ulPhy->SetAntenna (antenna); |
840 | 852 |
841 it->second->SetPhy(phy); | 853 it->second->SetPhy(phy); |
842 } | 854 } |
843 Ptr<LteUeComponentCarrierManager> ccmUe = m_ueComponentCarrierManagerFactory.C
reate<LteUeComponentCarrierManager> (); | 855 Ptr<LteUeComponentCarrierManager> ccmUe = m_ueComponentCarrierManagerFactory.C
reate<LteUeComponentCarrierManager> (); |
844 ccmUe->SetNumberOfComponentCarriers (static_cast<uint8_t>(m_noOfCcs)); | 856 ccmUe->SetNumberOfComponentCarriers (static_cast<uint8_t> (m_noOfCcs)); |
845 | 857 |
846 Ptr<LteUeRrc> rrc = CreateObject<LteUeRrc> (); | 858 Ptr<LteUeRrc> rrc = CreateObject<LteUeRrc> (); |
847 rrc->m_numberOfComponentCarriers = m_noOfCcs; | 859 rrc->m_numberOfComponentCarriers = m_noOfCcs; |
848 // run intializeSap to create the proper number of sap provider/users | 860 // run intializeSap to create the proper number of sap provider/users |
849 rrc->InitializeSap(); | 861 rrc->InitializeSap(); |
850 rrc->SetLteMacSapProvider (ccmUe->GetLteMacSapProvider ()); | 862 rrc->SetLteMacSapProvider (ccmUe->GetLteMacSapProvider ()); |
851 // setting ComponentCarrierManager SAP | 863 // setting ComponentCarrierManager SAP |
852 rrc->SetLteCcmRrcSapProvider (ccmUe->GetLteCcmRrcSapProvider ()); | 864 rrc->SetLteCcmRrcSapProvider (ccmUe->GetLteCcmRrcSapProvider ()); |
853 ccmUe->SetLteCcmRrcSapUser (rrc->GetLteCcmRrcSapUser ()); | 865 ccmUe->SetLteCcmRrcSapUser (rrc->GetLteCcmRrcSapUser ()); |
854 | 866 |
(...skipping 25 matching lines...) Expand all Loading... |
880 | 892 |
881 for (std::map<uint8_t, Ptr<ComponentCarrierUe> >::iterator it = ueCcMap.begin
(); it != ueCcMap.end (); ++it) | 893 for (std::map<uint8_t, Ptr<ComponentCarrierUe> >::iterator it = ueCcMap.begin
(); it != ueCcMap.end (); ++it) |
882 { | 894 { |
883 rrc->SetLteUeCmacSapProvider (it->second->GetMac ()->GetLteUeCmacSapProvid
er (), it->first); | 895 rrc->SetLteUeCmacSapProvider (it->second->GetMac ()->GetLteUeCmacSapProvid
er (), it->first); |
884 it->second->GetMac ()->SetLteUeCmacSapUser (rrc->GetLteUeCmacSapUser (it->
first)); | 896 it->second->GetMac ()->SetLteUeCmacSapUser (rrc->GetLteUeCmacSapUser (it->
first)); |
885 it->second->GetMac ()->SetComponentCarrierId (it->first); | 897 it->second->GetMac ()->SetComponentCarrierId (it->first); |
886 | 898 |
887 it->second->GetPhy ()->SetLteUeCphySapUser (rrc->GetLteUeCphySapUser (it->
first)); | 899 it->second->GetPhy ()->SetLteUeCphySapUser (rrc->GetLteUeCphySapUser (it->
first)); |
888 rrc->SetLteUeCphySapProvider (it->second->GetPhy ()->GetLteUeCphySapProvid
er (), it->first); | 900 rrc->SetLteUeCphySapProvider (it->second->GetPhy ()->GetLteUeCphySapProvid
er (), it->first); |
889 it->second->GetPhy ()->SetComponentCarrierId (it->first); | 901 it->second->GetPhy ()->SetComponentCarrierId (it->first); |
890 ······ | |
891 it->second->GetPhy ()->SetLteUePhySapUser (it->second->GetMac ()->GetLteUe
PhySapUser ()); | 902 it->second->GetPhy ()->SetLteUePhySapUser (it->second->GetMac ()->GetLteUe
PhySapUser ()); |
892 it->second->GetMac ()->SetLteUePhySapProvider (it->second->GetPhy ()->GetL
teUePhySapProvider ()); | 903 it->second->GetMac ()->SetLteUePhySapProvider (it->second->GetPhy ()->GetL
teUePhySapProvider ()); |
893 | 904 |
894 bool ccmTest = ccmUe->SetComponentCarrierMacSapProviders (it->first, it->s
econd->GetMac ()->GetLteMacSapProvider()); | 905 bool ccmTest = ccmUe->SetComponentCarrierMacSapProviders (it->first, it->s
econd->GetMac ()->GetLteMacSapProvider()); |
895 | 906 |
896 if (ccmTest == false) | 907 if (ccmTest == false) |
897 { | 908 { |
898 NS_FATAL_ERROR ("Error in SetComponentCarrierMacSapProviders"); | 909 NS_FATAL_ERROR ("Error in SetComponentCarrierMacSapProviders"); |
899 } | 910 } |
900 } | 911 } |
901 | 912 |
902 NS_ABORT_MSG_IF (m_imsiCounter >= 0xFFFFFFFF, "max num UEs exceeded"); | 913 NS_ABORT_MSG_IF (m_imsiCounter >= 0xFFFFFFFF, "max num UEs exceeded"); |
903 uint64_t imsi = ++m_imsiCounter; | 914 uint64_t imsi = ++m_imsiCounter; |
904 | 915 |
905 | 916 |
906 dev->SetNode (n); | 917 dev->SetNode (n); |
907 dev->SetAttribute ("Imsi", UintegerValue (imsi)); | 918 dev->SetAttribute ("Imsi", UintegerValue (imsi)); |
908 dev->SetCcMap (ueCcMap); | 919 dev->SetCcMap (ueCcMap); |
909 dev->SetAttribute ("LteUeRrc", PointerValue (rrc)); | 920 dev->SetAttribute ("LteUeRrc", PointerValue (rrc)); |
910 dev->SetAttribute ("EpcUeNas", PointerValue (nas)); | 921 dev->SetAttribute ("EpcUeNas", PointerValue (nas)); |
911 dev->SetAttribute ("LteUeComponentCarrierManager", PointerValue (ccmUe)); | 922 dev->SetAttribute ("LteUeComponentCarrierManager", PointerValue (ccmUe)); |
| 923 // \todo The UE identifier should be dynamically set by the EPC |
| 924 // when the default PDP context is created. This is a simplification. |
| 925 dev->SetAddress (Mac64Address::Allocate ()); |
912 | 926 |
913 for (std::map<uint8_t, Ptr<ComponentCarrierUe> >::iterator it = ueCcMap.begin
(); it != ueCcMap.end (); ++it) | 927 for (std::map<uint8_t, Ptr<ComponentCarrierUe> >::iterator it = ueCcMap.begin
(); it != ueCcMap.end (); ++it) |
914 { | 928 { |
915 Ptr<LteUePhy> ccPhy = it->second->GetPhy (); | 929 Ptr<LteUePhy> ccPhy = it->second->GetPhy (); |
916 ccPhy->SetDevice (dev); | 930 ccPhy->SetDevice (dev); |
917 ccPhy->GetUlSpectrumPhy ()->SetDevice (dev); | 931 ccPhy->GetUlSpectrumPhy ()->SetDevice (dev); |
918 ccPhy->GetDlSpectrumPhy ()->SetDevice (dev); | 932 ccPhy->GetDlSpectrumPhy ()->SetDevice (dev); |
919 ccPhy->GetDlSpectrumPhy ()->SetLtePhyRxDataEndOkCallback (MakeCallback (&L
teUePhy::PhyPduReceived, ccPhy)); | 933 ccPhy->GetDlSpectrumPhy ()->SetLtePhyRxDataEndOkCallback (MakeCallback (&L
teUePhy::PhyPduReceived, ccPhy)); |
920 ccPhy->GetDlSpectrumPhy ()->SetLtePhyRxCtrlEndOkCallback (MakeCallback (&L
teUePhy::ReceiveLteControlMessageList, ccPhy)); | 934 ccPhy->GetDlSpectrumPhy ()->SetLtePhyRxCtrlEndOkCallback (MakeCallback (&L
teUePhy::ReceiveLteControlMessageList, ccPhy)); |
921 ccPhy->GetDlSpectrumPhy ()->SetLtePhyRxPssCallback (MakeCallback (&LteUePh
y::ReceivePss, ccPhy)); | 935 ccPhy->GetDlSpectrumPhy ()->SetLtePhyRxPssCallback (MakeCallback (&LteUePh
y::ReceivePss, ccPhy)); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1052 { | 1066 { |
1053 NS_LOG_FUNCTION (this); | 1067 NS_LOG_FUNCTION (this); |
1054 uint8_t bearerId = 0; | 1068 uint8_t bearerId = 0; |
1055 NetDeviceContainer::Iterator i = ueDevices.Begin (); | 1069 NetDeviceContainer::Iterator i = ueDevices.Begin (); |
1056 if (i != ueDevices.End ()) | 1070 if (i != ueDevices.End ()) |
1057 { | 1071 { |
1058 bearerId = ActivateDedicatedEpsBearer(*i, bearer, tft); | 1072 bearerId = ActivateDedicatedEpsBearer(*i, bearer, tft); |
1059 } | 1073 } |
1060 return bearerId; | 1074 return bearerId; |
1061 } | 1075 } |
| 1076 |
1062 | 1077 |
1063 uint8_t | 1078 uint8_t |
1064 LteHelper::ActivateDedicatedEpsBearer (Ptr<NetDevice> ueDevice, EpsBearer bearer
, Ptr<EpcTft> tft) | 1079 LteHelper::ActivateDedicatedEpsBearer (Ptr<NetDevice> ueDevice, EpsBearer bearer
, Ptr<EpcTft> tft) |
1065 { | 1080 { |
1066 NS_LOG_FUNCTION (this); | 1081 NS_LOG_FUNCTION (this); |
1067 | 1082 |
1068 NS_ASSERT_MSG (m_epcHelper != 0, "dedicated EPS bearers cannot be set up when
the EPC is not used"); | 1083 NS_ASSERT_MSG (m_epcHelper != 0, "dedicated EPS bearers cannot be set up when
the EPC is not used"); |
1069 | 1084 |
1070 uint64_t imsi = ueDevice->GetObject<LteUeNetDevice> ()->GetImsi (); | 1085 uint64_t imsi = ueDevice->GetObject<LteUeNetDevice> ()->GetImsi (); |
1071 uint8_t bearerId = m_epcHelper->ActivateEpsBearer (ueDevice, imsi, tft, bearer
); | 1086 uint8_t bearerId = m_epcHelper->ActivateEpsBearer (ueDevice, imsi, tft, bearer
); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1107 /** | 1122 /** |
1108 * Procedure firstly checks if bearer was not activated, if IMSI | 1123 * Procedure firstly checks if bearer was not activated, if IMSI |
1109 * from trace source equals configured one and if UE is really | 1124 * from trace source equals configured one and if UE is really |
1110 * in RRC connected state. If all requirements are met, it performs | 1125 * in RRC connected state. If all requirements are met, it performs |
1111 * bearer activation. | 1126 * bearer activation. |
1112 * | 1127 * |
1113 * \param imsi | 1128 * \param imsi |
1114 * \param cellId | 1129 * \param cellId |
1115 * \param rnti | 1130 * \param rnti |
1116 */ | 1131 */ |
1117 void ActivateDrb (uint64_t imsi, uint16_t cellId); | 1132 void ActivateDrb (uint64_t imsi, uint16_t cellId, uint16_t rnti); |
1118 private: | 1133 private: |
1119 /** | 1134 /** |
1120 * Bearer can be activated only once. This value stores state of | 1135 * Bearer can be activated only once. This value stores state of |
1121 * bearer. Initially is set to false and changed to true during | 1136 * bearer. Initially is set to false and changed to true during |
1122 * bearer activation. | 1137 * bearer activation. |
1123 */ | 1138 */ |
1124 bool m_active; | 1139 bool m_active; |
1125 /** | 1140 /** |
1126 * UeNetDevice for which bearer will be activated | 1141 * UeNetDevice for which bearer will be activated |
1127 */ | 1142 */ |
(...skipping 13 matching lines...) Expand all Loading... |
1141 m_ueDevice (ueDevice), | 1156 m_ueDevice (ueDevice), |
1142 m_bearer (bearer), | 1157 m_bearer (bearer), |
1143 m_imsi (m_ueDevice->GetObject<LteUeNetDevice> ()->GetImsi ()) | 1158 m_imsi (m_ueDevice->GetObject<LteUeNetDevice> ()->GetImsi ()) |
1144 { | 1159 { |
1145 } | 1160 } |
1146 | 1161 |
1147 void | 1162 void |
1148 DrbActivator::ActivateCallback (Ptr<DrbActivator> a, std::string context, uint64
_t imsi, uint16_t cellId, uint16_t rnti) | 1163 DrbActivator::ActivateCallback (Ptr<DrbActivator> a, std::string context, uint64
_t imsi, uint16_t cellId, uint16_t rnti) |
1149 { | 1164 { |
1150 NS_LOG_FUNCTION (a << context << imsi << cellId << rnti); | 1165 NS_LOG_FUNCTION (a << context << imsi << cellId << rnti); |
1151 a->ActivateDrb (imsi, cellId); | 1166 a->ActivateDrb (imsi, cellId, rnti); |
1152 } | 1167 } |
1153 | 1168 |
1154 void | 1169 void |
1155 DrbActivator::ActivateDrb (uint64_t imsi, uint16_t cellId) | 1170 DrbActivator::ActivateDrb (uint64_t imsi, uint16_t cellId, uint16_t rnti) |
1156 {· | 1171 {· |
1157 NS_LOG_FUNCTION (this << imsi << cellId << m_active); | 1172 NS_LOG_FUNCTION (this << imsi << cellId << rnti << m_active); |
1158 if ((!m_active) && (imsi == m_imsi)) | 1173 if ((!m_active) && (imsi == m_imsi)) |
1159 { | 1174 { |
1160 Ptr<LteUeRrc> ueRrc = m_ueDevice->GetObject<LteUeNetDevice> ()->GetRrc (); | 1175 Ptr<LteUeRrc> ueRrc = m_ueDevice->GetObject<LteUeNetDevice> ()->GetRrc (); |
1161 NS_ASSERT (ueRrc->GetState () == LteUeRrc::CONNECTED_NORMALLY); | 1176 NS_ASSERT (ueRrc->GetState () == LteUeRrc::CONNECTED_NORMALLY); |
1162 uint16_t rnti = ueRrc->GetRnti (); | 1177 uint16_t rnti = ueRrc->GetRnti (); |
1163 Ptr<LteEnbNetDevice> enbLteDevice = m_ueDevice->GetObject<LteUeNetDevice>
()->GetTargetEnb (); | 1178 Ptr<LteEnbNetDevice> enbLteDevice = m_ueDevice->GetObject<LteUeNetDevice>
()->GetTargetEnb (); |
1164 Ptr<LteEnbRrc> enbRrc = enbLteDevice->GetObject<LteEnbNetDevice> ()->GetRr
c (); | 1179 Ptr<LteEnbRrc> enbRrc = enbLteDevice->GetObject<LteEnbNetDevice> ()->GetRr
c (); |
1165 NS_ASSERT (ueRrc->GetCellId () == enbLteDevice->GetCellId ()); | 1180 NS_ASSERT (ueRrc->GetCellId () == enbLteDevice->GetCellId ()); |
1166 Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti); | 1181 Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti); |
1167 NS_ASSERT (ueManager->GetState () == UeManager::CONNECTED_NORMALLY | 1182 NS_ASSERT (ueManager->GetState () == UeManager::CONNECTED_NORMALLY |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1272 | 1287 |
1273 | 1288 |
1274 Ptr<LteEnbRrc> enbRrc = enbDevice->GetObject<LteEnbNetDevice> ()->GetRrc (); | 1289 Ptr<LteEnbRrc> enbRrc = enbDevice->GetObject<LteEnbNetDevice> ()->GetRrc (); |
1275 | 1290 |
1276 enbRrc->DoSendReleaseDataRadioBearer (imsi,rnti,bearerId); | 1291 enbRrc->DoSendReleaseDataRadioBearer (imsi,rnti,bearerId); |
1277 } | 1292 } |
1278 | 1293 |
1279 void | 1294 void |
1280 LteHelper::DoComponentCarrierConfigure (uint32_t ulEarfcn, uint32_t dlEarfcn, ui
nt8_t ulbw, uint8_t dlbw) | 1295 LteHelper::DoComponentCarrierConfigure (uint32_t ulEarfcn, uint32_t dlEarfcn, ui
nt8_t ulbw, uint8_t dlbw) |
1281 { | 1296 { |
1282 NS_ASSERT_MSG (m_componentCarrierPhyParams.size()==0, "Cc map already exists."
); | 1297 NS_LOG_FUNCTION (this << ulEarfcn << dlEarfcn << ulbw << dlbw); |
| 1298 |
| 1299 NS_ABORT_MSG_IF (m_componentCarrierPhyParams.size() != 0, "CC map is not clean
"); |
1283 Ptr<CcHelper> ccHelper = CreateObject<CcHelper> (); | 1300 Ptr<CcHelper> ccHelper = CreateObject<CcHelper> (); |
1284 ccHelper->SetNumberOfComponentCarriers (m_noOfCcs); | 1301 ccHelper->SetNumberOfComponentCarriers (m_noOfCcs); |
1285 ccHelper->SetUlEarfcn (ulEarfcn); | 1302 ccHelper->SetUlEarfcn (ulEarfcn); |
1286 ccHelper->SetDlEarfcn (dlEarfcn); | 1303 ccHelper->SetDlEarfcn (dlEarfcn); |
1287 ccHelper->SetDlBandwidth (dlbw); | 1304 ccHelper->SetDlBandwidth (dlbw); |
1288 ccHelper->SetUlBandwidth (ulbw); | 1305 ccHelper->SetUlBandwidth (ulbw); |
1289 m_componentCarrierPhyParams = ccHelper->EquallySpacedCcs (); | 1306 m_componentCarrierPhyParams = ccHelper->EquallySpacedCcs (); |
1290 m_componentCarrierPhyParams.at(0).SetAsPrimary(true); | 1307 m_componentCarrierPhyParams.at (0).SetAsPrimary (true); |
1291 } | 1308 } |
1292 | 1309 |
1293 void· | 1310 void· |
1294 LteHelper::ActivateDataRadioBearer (NetDeviceContainer ueDevices, EpsBearer bear
er) | 1311 LteHelper::ActivateDataRadioBearer (NetDeviceContainer ueDevices, EpsBearer bear
er) |
1295 { | 1312 { |
1296 NS_LOG_FUNCTION (this); | 1313 NS_LOG_FUNCTION (this); |
1297 for (NetDeviceContainer::Iterator i = ueDevices.Begin (); i != ueDevices.End (
); ++i) | 1314 for (NetDeviceContainer::Iterator i = ueDevices.Begin (); i != ueDevices.End (
); ++i) |
1298 { | 1315 { |
1299 ActivateDataRadioBearer (*i, bearer); | 1316 ActivateDataRadioBearer (*i, bearer); |
1300 } | 1317 } |
1301 } | 1318 } |
1302 | 1319 |
1303 void | 1320 void |
1304 LteHelper::EnableLogComponents (void) | 1321 LteHelper::EnableLogComponents (void) |
1305 { | 1322 { |
| 1323 LogComponentEnableAll (LOG_PREFIX_TIME); |
| 1324 LogComponentEnableAll (LOG_PREFIX_FUNC); |
| 1325 LogComponentEnableAll (LOG_PREFIX_NODE); |
| 1326 // Model directory |
| 1327 LogComponentEnable ("A2A4RsrqHandoverAlgorithm", LOG_LEVEL_ALL); |
| 1328 LogComponentEnable ("A3RsrpHandoverAlgorithm", LOG_LEVEL_ALL); |
| 1329 LogComponentEnable ("Asn1Header", LOG_LEVEL_ALL); |
| 1330 LogComponentEnable ("ComponentCarrier", LOG_LEVEL_ALL); |
| 1331 LogComponentEnable ("ComponentCarrierEnb", LOG_LEVEL_ALL); |
| 1332 LogComponentEnable ("ComponentCarrierUe", LOG_LEVEL_ALL); |
| 1333 LogComponentEnable ("CqaFfMacScheduler", LOG_LEVEL_ALL); |
| 1334 LogComponentEnable ("EpcEnbApplication", LOG_LEVEL_ALL); |
| 1335 LogComponentEnable ("EpcMme", LOG_LEVEL_ALL); |
| 1336 LogComponentEnable ("EpcSgwPgwApplication", LOG_LEVEL_ALL); |
| 1337 LogComponentEnable ("EpcTft", LOG_LEVEL_ALL); |
| 1338 LogComponentEnable ("EpcTftClassifier", LOG_LEVEL_ALL); |
| 1339 LogComponentEnable ("EpcUeNas", LOG_LEVEL_ALL); |
| 1340 LogComponentEnable ("EpcX2", LOG_LEVEL_ALL); |
| 1341 LogComponentEnable ("EpcX2Header", LOG_LEVEL_ALL); |
| 1342 LogComponentEnable ("FdBetFfMacScheduler", LOG_LEVEL_ALL); |
| 1343 LogComponentEnable ("FdMtFfMacScheduler", LOG_LEVEL_ALL); |
| 1344 LogComponentEnable ("FdTbfqFfMacScheduler", LOG_LEVEL_ALL); |
| 1345 LogComponentEnable ("FfMacScheduler", LOG_LEVEL_ALL); |
| 1346 LogComponentEnable ("GtpuHeader", LOG_LEVEL_ALL); |
| 1347 LogComponentEnable ("LteAmc", LOG_LEVEL_ALL); |
| 1348 LogComponentEnable ("LteAnr", LOG_LEVEL_ALL); |
| 1349 LogComponentEnable ("LteChunkProcessor", LOG_LEVEL_ALL); |
| 1350 LogComponentEnable ("LteCommon", LOG_LEVEL_ALL); |
| 1351 LogComponentEnable ("LteControlMessage", LOG_LEVEL_ALL); |
| 1352 LogComponentEnable ("LteEnbComponentCarrierManager", LOG_LEVEL_ALL); |
| 1353 LogComponentEnable ("LteEnbMac", LOG_LEVEL_ALL); |
| 1354 LogComponentEnable ("LteEnbNetDevice", LOG_LEVEL_ALL); |
| 1355 LogComponentEnable ("LteEnbPhy", LOG_LEVEL_ALL); |
| 1356 LogComponentEnable ("LteEnbRrc", LOG_LEVEL_ALL); |
| 1357 LogComponentEnable ("LteFfrAlgorithm", LOG_LEVEL_ALL); |
| 1358 LogComponentEnable ("LteFfrDistributedAlgorithm", LOG_LEVEL_ALL); |
| 1359 LogComponentEnable ("LteFfrEnhancedAlgorithm", LOG_LEVEL_ALL); |
| 1360 LogComponentEnable ("LteFfrSoftAlgorithm", LOG_LEVEL_ALL); |
| 1361 LogComponentEnable ("LteFrHardAlgorithm", LOG_LEVEL_ALL); |
| 1362 LogComponentEnable ("LteFrNoOpAlgorithm", LOG_LEVEL_ALL); |
| 1363 LogComponentEnable ("LteFrSoftAlgorithm", LOG_LEVEL_ALL); |
| 1364 LogComponentEnable ("LteFrStrictAlgorithm", LOG_LEVEL_ALL); |
| 1365 LogComponentEnable ("LteHandoverAlgorithm", LOG_LEVEL_ALL); |
| 1366 LogComponentEnable ("LteHarqPhy", LOG_LEVEL_ALL); |
| 1367 LogComponentEnable ("LteInterference", LOG_LEVEL_ALL); |
| 1368 LogComponentEnable ("LteMiErrorModel", LOG_LEVEL_ALL); |
| 1369 LogComponentEnable ("LteNetDevice", LOG_LEVEL_ALL); |
| 1370 LogComponentEnable ("LtePdcp", LOG_LEVEL_ALL); |
| 1371 LogComponentEnable ("LtePdcpHeader", LOG_LEVEL_ALL); |
| 1372 LogComponentEnable ("LtePhy", LOG_LEVEL_ALL); |
| 1373 LogComponentEnable ("LteRlc", LOG_LEVEL_ALL); |
| 1374 LogComponentEnable ("LteRlcAm", LOG_LEVEL_ALL); |
| 1375 LogComponentEnable ("LteRlcAmHeader", LOG_LEVEL_ALL); |
| 1376 LogComponentEnable ("LteRlcHeader", LOG_LEVEL_ALL); |
| 1377 LogComponentEnable ("LteRlcTm", LOG_LEVEL_ALL); |
| 1378 LogComponentEnable ("LteRlcUm", LOG_LEVEL_ALL); |
| 1379 LogComponentEnable ("LteRrcProtocolIdeal", LOG_LEVEL_ALL); |
| 1380 LogComponentEnable ("LteRrcProtocolReal", LOG_LEVEL_ALL); |
| 1381 LogComponentEnable ("LteSpectrumPhy", LOG_LEVEL_ALL); |
| 1382 LogComponentEnable ("LteSpectrumSignalParameters", LOG_LEVEL_ALL); |
| 1383 LogComponentEnable ("LteSpectrumValueHelper", LOG_LEVEL_ALL); |
| 1384 LogComponentEnable ("LteUeComponentCarrierManager", LOG_LEVEL_ALL); |
| 1385 LogComponentEnable ("LteUeMac", LOG_LEVEL_ALL); |
| 1386 LogComponentEnable ("LteUeNetDevice", LOG_LEVEL_ALL); |
| 1387 LogComponentEnable ("LteUePhy", LOG_LEVEL_ALL); |
| 1388 LogComponentEnable ("LteUePowerControl", LOG_LEVEL_ALL); |
| 1389 LogComponentEnable ("LteUeRrc", LOG_LEVEL_ALL); |
| 1390 LogComponentEnable ("LteVendorSpecificParameters", LOG_LEVEL_ALL); |
| 1391 LogComponentEnable ("NoOpComponentCarrierManager", LOG_LEVEL_ALL); |
| 1392 LogComponentEnable ("NoOpHandoverAlgorithm", LOG_LEVEL_ALL); |
| 1393 LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); |
| 1394 LogComponentEnable ("PssFfMacScheduler", LOG_LEVEL_ALL); |
| 1395 LogComponentEnable ("RemSpectrumPhy", LOG_LEVEL_ALL); |
| 1396 LogComponentEnable ("RrcHeader", LOG_LEVEL_ALL); |
| 1397 LogComponentEnable ("RrFfMacScheduler", LOG_LEVEL_ALL); |
| 1398 LogComponentEnable ("SimpleUeComponentCarrierManager", LOG_LEVEL_ALL); |
| 1399 LogComponentEnable ("TdBetFfMacScheduler", LOG_LEVEL_ALL); |
| 1400 LogComponentEnable ("TdMtFfMacScheduler", LOG_LEVEL_ALL); |
| 1401 LogComponentEnable ("TdTbfqFfMacScheduler", LOG_LEVEL_ALL); |
| 1402 LogComponentEnable ("TraceFadingLossModel", LOG_LEVEL_ALL); |
| 1403 LogComponentEnable ("TtaFfMacScheduler", LOG_LEVEL_ALL); |
| 1404 // Helper directory |
| 1405 LogComponentEnable ("CcHelper", LOG_LEVEL_ALL); |
| 1406 LogComponentEnable ("EmuEpcHelper", LOG_LEVEL_ALL); |
| 1407 LogComponentEnable ("EpcHelper", LOG_LEVEL_ALL); |
| 1408 LogComponentEnable ("LteGlobalPathlossDatabase", LOG_LEVEL_ALL); |
1306 LogComponentEnable ("LteHelper", LOG_LEVEL_ALL); | 1409 LogComponentEnable ("LteHelper", LOG_LEVEL_ALL); |
1307 LogComponentEnable ("LteEnbRrc", LOG_LEVEL_ALL); | 1410 LogComponentEnable ("LteHexGridEnbTopologyHelper", LOG_LEVEL_ALL); |
1308 LogComponentEnable ("LteUeRrc", LOG_LEVEL_ALL); | |
1309 LogComponentEnable ("LteEnbMac", LOG_LEVEL_ALL); | |
1310 LogComponentEnable ("LteUeMac", LOG_LEVEL_ALL); | |
1311 LogComponentEnable ("LteRlc", LOG_LEVEL_ALL); | |
1312 LogComponentEnable ("LteRlcUm", LOG_LEVEL_ALL); | |
1313 LogComponentEnable ("LteRlcAm", LOG_LEVEL_ALL); | |
1314 LogComponentEnable ("RrFfMacScheduler", LOG_LEVEL_ALL); | |
1315 LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL); | |
1316 | |
1317 LogComponentEnable ("LtePhy", LOG_LEVEL_ALL); | |
1318 LogComponentEnable ("LteEnbPhy", LOG_LEVEL_ALL); | |
1319 LogComponentEnable ("LteUePhy", LOG_LEVEL_ALL); | |
1320 LogComponentEnable ("LteSpectrumValueHelper", LOG_LEVEL_ALL); | |
1321 LogComponentEnable ("LteSpectrumPhy", LOG_LEVEL_ALL); | |
1322 LogComponentEnable ("LteInterference", LOG_LEVEL_ALL); | |
1323 LogComponentEnable ("LteChunkProcessor", LOG_LEVEL_ALL); | |
1324 | |
1325 std::string propModelStr = m_pathlossModelFactory.GetTypeId ().GetName ().eras
e (0,5).c_str (); | |
1326 LogComponentEnable ("LteNetDevice", LOG_LEVEL_ALL); | |
1327 LogComponentEnable ("LteUeNetDevice", LOG_LEVEL_ALL); | |
1328 LogComponentEnable ("LteEnbNetDevice", LOG_LEVEL_ALL); | |
1329 | |
1330 LogComponentEnable ("RadioBearerStatsCalculator", LOG_LEVEL_ALL); | |
1331 LogComponentEnable ("LteStatsCalculator", LOG_LEVEL_ALL); | 1411 LogComponentEnable ("LteStatsCalculator", LOG_LEVEL_ALL); |
1332 LogComponentEnable ("MacStatsCalculator", LOG_LEVEL_ALL); | 1412 LogComponentEnable ("MacStatsCalculator", LOG_LEVEL_ALL); |
1333 LogComponentEnable ("PhyTxStatsCalculator", LOG_LEVEL_ALL); | |
1334 LogComponentEnable ("PhyRxStatsCalculator", LOG_LEVEL_ALL); | 1413 LogComponentEnable ("PhyRxStatsCalculator", LOG_LEVEL_ALL); |
1335 LogComponentEnable ("PhyStatsCalculator", LOG_LEVEL_ALL); | 1414 LogComponentEnable ("PhyStatsCalculator", LOG_LEVEL_ALL); |
1336 | 1415 LogComponentEnable ("PhyTxStatsCalculator", LOG_LEVEL_ALL); |
1337 | 1416 LogComponentEnable ("PointToPointEpcHelper", LOG_LEVEL_ALL); |
| 1417 LogComponentEnable ("RadioBearerStatsCalculator", LOG_LEVEL_ALL); |
| 1418 LogComponentEnable ("RadioBearerStatsConnector", LOG_LEVEL_ALL); |
| 1419 LogComponentEnable ("RadioEnvironmentMapHelper", LOG_LEVEL_ALL); |
1338 } | 1420 } |
1339 | 1421 |
1340 void | 1422 void |
1341 LteHelper::EnableTraces (void) | 1423 LteHelper::EnableTraces (void) |
1342 { | 1424 { |
1343 EnablePhyTraces (); | 1425 EnablePhyTraces (); |
1344 EnableMacTraces (); | 1426 EnableMacTraces (); |
1345 EnableRlcTraces (); | 1427 EnableRlcTraces (); |
1346 EnablePdcpTraces (); | 1428 EnablePdcpTraces (); |
1347 } | 1429 } |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1497 m_radioBearerStatsConnector.EnablePdcpStats (m_pdcpStats); | 1579 m_radioBearerStatsConnector.EnablePdcpStats (m_pdcpStats); |
1498 } | 1580 } |
1499 | 1581 |
1500 Ptr<RadioBearerStatsCalculator> | 1582 Ptr<RadioBearerStatsCalculator> |
1501 LteHelper::GetPdcpStats (void) | 1583 LteHelper::GetPdcpStats (void) |
1502 { | 1584 { |
1503 return m_pdcpStats; | 1585 return m_pdcpStats; |
1504 } | 1586 } |
1505 | 1587 |
1506 } // namespace ns3 | 1588 } // namespace ns3 |
LEFT | RIGHT |