src/lte/model/lte-phy.cc
author Nicola Baldo <nbaldo@cttc.es>
Tue, 29 Mar 2011 17:33:07 +0200
changeset 7911 0d2783c3500e
parent 7906 d58de34e41d3
child 7913 ed3a9f8a76d7
permissions -rw-r--r--
removed useless getters
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     2
/*
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     3
 * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     4
 *
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     8
 *
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    12
 * GNU General Public License for more details.
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    13
 *
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    17
 *
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    18
 * Author: Giuseppe Piro  <g.piro@poliba.it>
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    19
 *         Marco Miozzo <mmiozzo@cttc.es>
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    20
 */
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    21
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    22
#include <ns3/waveform-generator.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    23
#include <ns3/object-factory.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    24
#include <ns3/log.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    25
#include <math.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    26
#include <ns3/simulator.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    27
#include "ns3/spectrum-error-model.h"
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    28
#include "lte-phy.h"
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    29
#include "lte-net-device.h"
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    30
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    31
NS_LOG_COMPONENT_DEFINE ("LtePhy");
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    32
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    33
namespace ns3 {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    34
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    35
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    36
NS_OBJECT_ENSURE_REGISTERED (LtePhy);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    37
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    38
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    39
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    40
LtePhy::LtePhy ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    41
  : m_netDevice (0),
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    42
    m_downlinkSpectrumPhy (0),
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    43
    m_uplinkSpectrumPhy (0),
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    44
    m_txPower (43), // dBm
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    45
    m_tti (0.001),
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    46
    m_ulBandwidth (0),
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    47
    m_dlBandwidth (0),
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    48
    m_rbgSize (0),
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    49
    m_macChTtiDelay (1) // 1 TTI delay between MAC and CH
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    50
{
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    51
  for (int i = 0; i < m_macChTtiDelay; i++)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    52
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    53
      Ptr<PacketBurst> pb = CreateObject <PacketBurst> ();
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    54
      m_packetBurstQueue.push_back (pb);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    55
    }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    56
  for (int i = 0; i < m_macChTtiDelay; i++)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    57
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    58
      std::list<Ptr<IdealControlMessage> > l;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    59
      m_controlMessagesQueue.push_back (l);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    60
    }
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    61
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    62
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    63
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    64
TypeId
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    65
LtePhy::GetTypeId (void)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    66
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    67
  static TypeId tid = TypeId ("ns3::LtePhy")
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    68
    .SetParent<Object> ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    69
  ;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    70
  return tid;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    71
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    72
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    73
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    74
LtePhy::~LtePhy ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    75
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    76
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    77
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    78
void
6710
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    79
LtePhy::DoDispose ()
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    80
{
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    81
  NS_LOG_FUNCTION (this);
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    82
  m_downlinkSpectrumPhy = 0;
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    83
  m_uplinkSpectrumPhy = 0;
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    84
  m_netDevice = 0;
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    85
  for (int i = 0; i < m_macChTtiDelay; i++)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    86
    {
7906
d58de34e41d3 MAC, RRC and Scheduler created by LenaHelper
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7886
diff changeset
    87
      m_packetBurstQueue.erase (m_packetBurstQueue.begin (), m_packetBurstQueue.end ());
d58de34e41d3 MAC, RRC and Scheduler created by LenaHelper
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7886
diff changeset
    88
      m_controlMessagesQueue.erase (m_controlMessagesQueue.begin (), m_controlMessagesQueue.end ());
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    89
    }
6710
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    90
}
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    91
3cd651349cb6 lte examples now passing valgrind tests
Nicola Baldo <nbaldo@cttc.es>
parents: 6705
diff changeset
    92
void
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    93
LtePhy::SetDevice (Ptr<LteNetDevice> d)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    94
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    95
  NS_LOG_FUNCTION (this << d);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    96
  m_netDevice = d;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    97
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    98
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    99
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   100
Ptr<LteNetDevice>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   101
LtePhy::GetDevice ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   102
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   103
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   104
  return m_netDevice;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   105
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   106
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   107
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   108
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   109
LtePhy::SetDownlinkSpectrumPhy (Ptr<LteSpectrumPhy> s)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   110
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   111
  NS_LOG_FUNCTION (this << s);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   112
  m_downlinkSpectrumPhy = s;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   113
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   114
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   115
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   116
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   117
LtePhy::SetUplinkSpectrumPhy (Ptr<LteSpectrumPhy> s)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   118
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   119
  NS_LOG_FUNCTION (this << s);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   120
  m_uplinkSpectrumPhy = s;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   121
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   122
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   123
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   124
Ptr<LteSpectrumPhy>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   125
LtePhy::GetDownlinkSpectrumPhy ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   126
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   127
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   128
  return m_downlinkSpectrumPhy;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   129
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   130
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   131
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   132
Ptr<LteSpectrumPhy>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   133
LtePhy::GetUplinkSpectrumPhy ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   134
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   135
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   136
  return m_uplinkSpectrumPhy;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   137
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   138
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   139
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   140
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   141
LtePhy::SetDownlinkChannel (Ptr<SpectrumChannel> c)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   142
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   143
  NS_LOG_FUNCTION (this << c);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   144
  m_downlinkSpectrumPhy->SetChannel (c);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   145
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   146
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   147
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   148
LtePhy::SetUplinkChannel (Ptr<SpectrumChannel> c)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   149
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   150
  NS_LOG_FUNCTION (this << c);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   151
  m_uplinkSpectrumPhy->SetChannel (c);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   152
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   153
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   154
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   155
LtePhy::SetDownlinkSubChannels (std::vector<int> mask )
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   156
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   157
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   158
  m_listOfDownlinkSubchannel = mask;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   159
  DoSetDownlinkSubChannels ();
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   160
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   161
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   162
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   163
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   164
LtePhy::DoSetDownlinkSubChannels ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   165
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   166
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   167
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   168
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   169
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   170
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   171
LtePhy::SetUplinkSubChannels (std::vector<int> mask )
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   172
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   173
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   174
  m_listOfUplinkSubchannel = mask;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   175
  DoSetUplinkSubChannels ();
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   176
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   177
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   178
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   179
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   180
LtePhy::DoSetUplinkSubChannels ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   181
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   182
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   183
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   184
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   185
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   186
std::vector<int>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   187
LtePhy::GetDownlinkSubChannels (void)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   188
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   189
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   190
  return m_listOfDownlinkSubchannel;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   191
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   192
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   193
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   194
std::vector<int>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   195
LtePhy::GetUplinkSubChannels (void)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   196
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   197
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   198
  return m_listOfUplinkSubchannel;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   199
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   200
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   201
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   202
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   203
LtePhy::SetTxPower (double pw)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   204
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   205
  NS_LOG_FUNCTION (this << pw);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   206
  m_txPower = pw;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   207
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   208
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   209
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   210
double
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   211
LtePhy::GetTxPower (void)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   212
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   213
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   214
  return m_txPower;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   215
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   216
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   217
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   218
LtePhy::SetTti (double tti)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   219
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   220
  NS_LOG_FUNCTION (this << tti);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   221
  m_tti = tti;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   222
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   223
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   224
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   225
double
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   226
LtePhy::GetTti (void) const
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   227
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   228
  NS_LOG_FUNCTION (this << m_tti);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   229
  return m_tti;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   230
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   231
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   232
void
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   233
LtePhy::DoSetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   234
{
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   235
  m_ulBandwidth = ulBandwidth;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   236
  m_dlBandwidth = dlBandwidth;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   237
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   238
  int Type0AllocationRbg[4] = {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   239
    10,     // RGB size 1
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   240
    26,     // RGB size 2
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   241
    63,     // RGB size 3
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   242
    110     // RGB size 4
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   243
  };  // see table 7.1.6.1-1 of 36.213
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   244
  for (int i = 0; i < 4; i++)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   245
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   246
      if (dlBandwidth < Type0AllocationRbg[i])
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   247
        {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   248
          m_rbgSize = i + 1;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   249
          break;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   250
        }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   251
    }
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   252
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   253
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   254
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   255
uint8_t
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   256
LtePhy::GetRbgSize (void) const
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   257
{
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   258
  return m_rbgSize;
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   259
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   260
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   261
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   262
void
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   263
LtePhy::SetMacChDelay (uint8_t delay)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   264
{
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   265
  int old_delay = m_macChTtiDelay;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   266
  m_macChTtiDelay = delay;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   267
  m_packetBurstQueue.resize (delay);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   268
  for (int i = old_delay - 1; i < delay; i++)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   269
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   270
      Ptr<PacketBurst> pb = CreateObject <PacketBurst> ();
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   271
      m_packetBurstQueue.push_back (pb);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   272
    }
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   273
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   274
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   275
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   276
uint8_t
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   277
LtePhy::GetMacChDelay (void)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   278
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   279
  return (m_macChTtiDelay);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   280
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   281
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   282
void
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   283
LtePhy::SetMacPdu (Ptr<Packet> p)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   284
{
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   285
  m_packetBurstQueue.at (m_macChTtiDelay - 1)->AddPacket (p);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   286
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   287
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   288
Ptr<PacketBurst>
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   289
LtePhy::GetPacketBurst (void)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   290
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   291
  if (m_packetBurstQueue.at (0)->GetSize () > 0)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   292
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   293
      Ptr<PacketBurst> ret = m_packetBurstQueue.at (0)->Copy ();
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   294
      m_packetBurstQueue.erase (m_packetBurstQueue.begin ());
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   295
      m_packetBurstQueue.push_back (CreateObject <PacketBurst> ());
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   296
      return (ret);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   297
    }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   298
  else
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   299
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   300
      m_packetBurstQueue.erase (m_packetBurstQueue.begin ());
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   301
      m_packetBurstQueue.push_back (CreateObject <PacketBurst> ());
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   302
      return (0);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   303
    }
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   304
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   305
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   306
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   307
void
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   308
LtePhy::SetControlMessages (Ptr<IdealControlMessage> m)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   309
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   310
  m_controlMessagesQueue.at (m_macChTtiDelay - 1).push_back (m);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   311
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   312
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   313
std::list<Ptr<IdealControlMessage> >
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   314
LtePhy::GetControlMessages (void)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   315
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   316
  if (m_controlMessagesQueue.at (0).size () > 0)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   317
  {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   318
    std::list<Ptr<IdealControlMessage> > ret = m_controlMessagesQueue.at (0);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   319
    m_controlMessagesQueue.erase (m_controlMessagesQueue.begin ());
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   320
    std::list<Ptr<IdealControlMessage> > newlist;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   321
    m_controlMessagesQueue.push_back (newlist);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   322
    return (ret);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   323
  }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   324
  else
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   325
  {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   326
    m_controlMessagesQueue.erase (m_controlMessagesQueue.begin ());
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   327
    std::list<Ptr<IdealControlMessage> > newlist;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   328
    m_controlMessagesQueue.push_back (newlist);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   329
    std::list<Ptr<IdealControlMessage> > emptylist;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   330
    return (emptylist);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   331
  }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   332
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   333
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   334
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   335
void
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   336
LtePhy::DoSetCellId (uint16_t cellId)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   337
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   338
  m_cellId = cellId;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   339
  m_downlinkSpectrumPhy->SetCellId (cellId);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   340
  m_uplinkSpectrumPhy->SetCellId (cellId);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   341
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   342
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   343
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   344
} // namespace ns3