src/spectrum/helper/spectrum-helper.cc
author Nicola Baldo <nbaldo@cttc.es>
Tue, 05 Jul 2011 19:03:55 +0200
changeset 7343 b3e668a5949c
parent 6801 f07f7f809160
child 7553 2b93d333dea6
permissions -rw-r--r--
added support for single-freq PropagationLossModel to SpectrumChannel
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6349
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     2
/*
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2010 CTTC
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     4
 *
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     8
 *
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    13
 *
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    17
 *
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    18
 * Author: Nicola Baldo <nbaldo@cttc.es>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    19
 */
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    20
#include "spectrum-helper.h"
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    21
#include <ns3/simulator.h>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    22
#include <ns3/config.h>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    23
#include <ns3/names.h>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    24
#include <ns3/spectrum-channel.h>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    25
#include <ns3/spectrum-phy.h>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    26
#include <ns3/single-model-spectrum-channel.h>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    27
#include <ns3/multi-model-spectrum-channel.h>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    28
#include <ns3/half-duplex-ideal-phy.h>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    29
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    30
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    31
namespace ns3 {
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    32
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    33
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    34
SpectrumChannelHelper
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    35
SpectrumChannelHelper::Default (void)
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    36
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    37
  SpectrumChannelHelper h;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    38
  h.SetChannel ("ns3::SingleModelSpectrumChannel");
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    39
  h.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    40
  h.AddSpectrumPropagationLoss ("ns3::FriisSpectrumPropagationLossModel");
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    41
  return h;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    42
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    43
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    44
void
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    45
SpectrumChannelHelper::SetChannel (std::string type,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    46
                                   std::string n0, const AttributeValue &v0,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    47
                                   std::string n1, const AttributeValue &v1,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    48
                                   std::string n2, const AttributeValue &v2,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    49
                                   std::string n3, const AttributeValue &v3,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    50
                                   std::string n4, const AttributeValue &v4,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    51
                                   std::string n5, const AttributeValue &v5,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    52
                                   std::string n6, const AttributeValue &v6,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    53
                                   std::string n7, const AttributeValue &v7)
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    54
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    55
  ObjectFactory factory;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    56
  m_channel.SetTypeId (type);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    57
  m_channel.Set (n0, v0);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    58
  m_channel.Set (n1, v1);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    59
  m_channel.Set (n2, v2);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    60
  m_channel.Set (n3, v3);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    61
  m_channel.Set (n4, v4);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    62
  m_channel.Set (n5, v5);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    63
  m_channel.Set (n6, v6);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    64
  m_channel.Set (n7, v7);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    65
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    66
7343
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    67
void
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    68
SpectrumChannelHelper::AddPropagationLoss (std::string type,
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    69
                                           std::string n0, const AttributeValue &v0,
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    70
                                           std::string n1, const AttributeValue &v1,
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    71
                                           std::string n2, const AttributeValue &v2,
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    72
                                           std::string n3, const AttributeValue &v3,
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    73
                                           std::string n4, const AttributeValue &v4,
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    74
                                           std::string n5, const AttributeValue &v5,
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    75
                                           std::string n6, const AttributeValue &v6,
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    76
                                           std::string n7, const AttributeValue &v7)
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    77
{
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    78
  ObjectFactory factory;
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    79
  factory.SetTypeId (type);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    80
  factory.Set (n0, v0);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    81
  factory.Set (n1, v1);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    82
  factory.Set (n2, v2);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    83
  factory.Set (n3, v3);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    84
  factory.Set (n4, v4);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    85
  factory.Set (n5, v5);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    86
  factory.Set (n6, v6);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    87
  factory.Set (n7, v7);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    88
  Ptr<PropagationLossModel> m = factory.Create<PropagationLossModel> ();
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    89
  AddPropagationLoss (m);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    90
}
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    91
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    92
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    93
void 
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    94
SpectrumChannelHelper::AddPropagationLoss (Ptr<PropagationLossModel> m)
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    95
{
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    96
  m->SetNext (m_propagationLossModel);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    97
  m_propagationLossModel = m;
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
    98
}
6349
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    99
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   100
void
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   101
SpectrumChannelHelper::AddSpectrumPropagationLoss (std::string type,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   102
                                                   std::string n0, const AttributeValue &v0,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   103
                                                   std::string n1, const AttributeValue &v1,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   104
                                                   std::string n2, const AttributeValue &v2,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   105
                                                   std::string n3, const AttributeValue &v3,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   106
                                                   std::string n4, const AttributeValue &v4,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   107
                                                   std::string n5, const AttributeValue &v5,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   108
                                                   std::string n6, const AttributeValue &v6,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   109
                                                   std::string n7, const AttributeValue &v7)
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   110
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   111
  ObjectFactory factory;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   112
  factory.SetTypeId (type);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   113
  factory.Set (n0, v0);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   114
  factory.Set (n1, v1);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   115
  factory.Set (n2, v2);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   116
  factory.Set (n3, v3);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   117
  factory.Set (n4, v4);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   118
  factory.Set (n5, v5);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   119
  factory.Set (n6, v6);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   120
  factory.Set (n7, v7);
7343
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   121
  Ptr<SpectrumPropagationLossModel> m = factory.Create<SpectrumPropagationLossModel> ();
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   122
  AddSpectrumPropagationLoss (m);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   123
}
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   124
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   125
void 
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   126
SpectrumChannelHelper::AddSpectrumPropagationLoss (Ptr<SpectrumPropagationLossModel> m)
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   127
{
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   128
  m->SetNext (m_spectrumPropagationLossModel);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   129
  m_spectrumPropagationLossModel = m;
6349
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   130
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   131
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   132
void
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   133
SpectrumChannelHelper::SetPropagationDelay (std::string type,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   134
                                            std::string n0, const AttributeValue &v0,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   135
                                            std::string n1, const AttributeValue &v1,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   136
                                            std::string n2, const AttributeValue &v2,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   137
                                            std::string n3, const AttributeValue &v3,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   138
                                            std::string n4, const AttributeValue &v4,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   139
                                            std::string n5, const AttributeValue &v5,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   140
                                            std::string n6, const AttributeValue &v6,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   141
                                            std::string n7, const AttributeValue &v7)
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   142
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   143
  ObjectFactory factory;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   144
  factory.SetTypeId (type);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   145
  factory.Set (n0, v0);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   146
  factory.Set (n1, v1);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   147
  factory.Set (n2, v2);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   148
  factory.Set (n3, v3);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   149
  factory.Set (n4, v4);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   150
  factory.Set (n5, v5);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   151
  factory.Set (n6, v6);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   152
  factory.Set (n7, v7);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   153
  m_propagationDelay = factory;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   154
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   155
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   156
Ptr<SpectrumChannel>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   157
SpectrumChannelHelper::Create (void) const
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   158
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   159
  Ptr<SpectrumChannel> channel = (m_channel.Create ())->GetObject<SpectrumChannel> ();
7343
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   160
  channel->AddSpectrumPropagationLossModel (m_spectrumPropagationLossModel);
b3e668a5949c added support for single-freq PropagationLossModel to SpectrumChannel
Nicola Baldo <nbaldo@cttc.es>
parents: 6801
diff changeset
   161
  channel->AddPropagationLossModel (m_propagationLossModel);
6349
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   162
  Ptr<PropagationDelayModel> delay = m_propagationDelay.Create<PropagationDelayModel> ();
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   163
  channel->SetPropagationDelayModel (delay);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   164
  return channel;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   165
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   166
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   167
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   168
void
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   169
SpectrumPhyHelper::SetPhy (std::string type,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   170
                           std::string n0, const AttributeValue &v0,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   171
                           std::string n1, const AttributeValue &v1,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   172
                           std::string n2, const AttributeValue &v2,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   173
                           std::string n3, const AttributeValue &v3,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   174
                           std::string n4, const AttributeValue &v4,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   175
                           std::string n5, const AttributeValue &v5,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   176
                           std::string n6, const AttributeValue &v6,
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   177
                           std::string n7, const AttributeValue &v7)
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   178
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   179
  m_phy.SetTypeId (type);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   180
  m_phy.Set (n0, v0);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   181
  m_phy.Set (n1, v1);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   182
  m_phy.Set (n2, v2);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   183
  m_phy.Set (n3, v3);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   184
  m_phy.Set (n4, v4);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   185
  m_phy.Set (n5, v5);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   186
  m_phy.Set (n6, v6);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   187
  m_phy.Set (n7, v7);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   188
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   189
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   190
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   191
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   192
void
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   193
SpectrumPhyHelper::SetChannel (Ptr<SpectrumChannel> channel)
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   194
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   195
  m_channel = channel;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   196
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   197
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   198
void
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   199
SpectrumPhyHelper::SetChannel (std::string channelName)
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   200
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   201
  Ptr<SpectrumChannel> channel = Names::Find<SpectrumChannel> (channelName);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   202
  m_channel = channel;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   203
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   204
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   205
void
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   206
SpectrumPhyHelper::SetPhyAttribute (std::string name, const AttributeValue &v)
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   207
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   208
  m_phy.Set (name, v);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   209
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   210
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   211
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   212
Ptr<SpectrumPhy>
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   213
SpectrumPhyHelper::Create (Ptr<Node> node, Ptr<NetDevice> device) const
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   214
{
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   215
  NS_ASSERT (m_channel);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   216
  Ptr<SpectrumPhy> phy = (m_phy.Create ())->GetObject<SpectrumPhy> ();
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   217
  phy->SetChannel (m_channel);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   218
  phy->SetMobility (node);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   219
  phy->SetDevice (device);
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   220
  return phy;
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   221
}
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   222
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   223
4bab6b10a034 merged spectrum framework
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   224
} // namespace ns3