src/lte/model/lte-spectrum-phy.cc
author Nicola Baldo <nbaldo@cttc.es>
Thu, 31 Mar 2011 11:59:57 +0200
changeset 7927 c8d380a263ec
parent 7926 ed6a21cccb25
child 7928 b736f63e9bdf
permissions -rw-r--r--
fixed uplink RX and interference calculation
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
/*
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
     3
 * Copyright (c) 2009, 2011 CTTC
6705
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: Nicola Baldo <nbaldo@cttc.es>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    19
 *         Giuseppe Piro  <g.piro@poliba.it>
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
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/trace-source-accessor.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    28
#include "lte-spectrum-phy.h"
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    29
#include "lte-net-device.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    30
#include "lte-mac-tag.h"
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    31
#include "lte-sinr-chunk-processor.h"
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
    32
#include "lte-phy-tag.h"
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    33
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    34
NS_LOG_COMPONENT_DEFINE ("LteSpectrumPhy");
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
namespace ns3 {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    37
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    38
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    39
NS_OBJECT_ENSURE_REGISTERED (LteSpectrumPhy);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    40
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    41
LteSpectrumPhy::LteSpectrumPhy ()
7911
0d2783c3500e removed useless getters
Nicola Baldo <nbaldo@cttc.es>
parents: 7894
diff changeset
    42
  : m_state (IDLE)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    43
{
7913
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7911
diff changeset
    44
  NS_LOG_FUNCTION (this);
7924
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
    45
  m_interference = CreateObject<LteInterference> ();
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    46
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    47
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    48
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    49
LteSpectrumPhy::~LteSpectrumPhy ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    50
{
7924
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
    51
  NS_LOG_FUNCTION (this);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    52
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    53
7911
0d2783c3500e removed useless getters
Nicola Baldo <nbaldo@cttc.es>
parents: 7894
diff changeset
    54
void LteSpectrumPhy::DoDispose ()
0d2783c3500e removed useless getters
Nicola Baldo <nbaldo@cttc.es>
parents: 7894
diff changeset
    55
{
7913
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7911
diff changeset
    56
  NS_LOG_FUNCTION (this);
7911
0d2783c3500e removed useless getters
Nicola Baldo <nbaldo@cttc.es>
parents: 7894
diff changeset
    57
  m_channel = 0;
0d2783c3500e removed useless getters
Nicola Baldo <nbaldo@cttc.es>
parents: 7894
diff changeset
    58
  m_mobility = 0;
0d2783c3500e removed useless getters
Nicola Baldo <nbaldo@cttc.es>
parents: 7894
diff changeset
    59
  m_device = 0;
7924
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
    60
  m_interference->Dispose ();
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
    61
  m_interference = 0;
7913
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7911
diff changeset
    62
  SpectrumPhy::DoDispose ();
7911
0d2783c3500e removed useless getters
Nicola Baldo <nbaldo@cttc.es>
parents: 7894
diff changeset
    63
} 
0d2783c3500e removed useless getters
Nicola Baldo <nbaldo@cttc.es>
parents: 7894
diff changeset
    64
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    65
std::ostream& operator<< (std::ostream& os, LteSpectrumPhy::State s)
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
  switch (s)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    68
    {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    69
    case LteSpectrumPhy::IDLE:
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    70
      os << "IDLE";
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    71
      break;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    72
    case LteSpectrumPhy::RX:
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    73
      os << "RX";
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    74
      break;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    75
    case LteSpectrumPhy::TX:
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    76
      os << "TX";
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    77
      break;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    78
    default:
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    79
      os << "UNKNOWN";
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    80
      break;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    81
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    82
  return os;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    83
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    84
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    85
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    86
TypeId
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    87
LteSpectrumPhy::GetTypeId (void)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    88
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    89
  static TypeId tid = TypeId ("ns3::LteSpectrumPhy")
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    90
    .SetParent<SpectrumPhy> ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    91
    .AddTraceSource ("TxStart",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    92
                     "Trace fired when a new transmission is started",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    93
                     MakeTraceSourceAccessor (&LteSpectrumPhy::m_phyTxStartTrace))
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    94
    .AddTraceSource ("TxEnd",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    95
                     "Trace fired when a previosuly started transmission is finished",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    96
                     MakeTraceSourceAccessor (&LteSpectrumPhy::m_phyTxEndTrace))
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    97
    .AddTraceSource ("RxStart",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    98
                     "Trace fired when the start of a signal is detected",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    99
                     MakeTraceSourceAccessor (&LteSpectrumPhy::m_phyRxStartTrace))
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   100
    .AddTraceSource ("RxEndOk",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   101
                     "Trace fired when a previosuly started RX terminates successfully",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   102
                     MakeTraceSourceAccessor (&LteSpectrumPhy::m_phyRxEndOkTrace))
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   103
    .AddTraceSource ("RxEndError",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   104
                     "Trace fired when a previosuly started RX terminates with an error (packet is corrupted)",
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   105
                     MakeTraceSourceAccessor (&LteSpectrumPhy::m_phyRxEndErrorTrace))
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
  return tid;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   108
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   109
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   112
Ptr<Object>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   113
LteSpectrumPhy::GetDevice ()
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
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   116
  return m_device;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   117
}
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   120
Ptr<Object>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   121
LteSpectrumPhy::GetMobility ()
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
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   124
  return m_mobility;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   125
}
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   128
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   129
LteSpectrumPhy::SetDevice (Ptr<Object> d)
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
  NS_LOG_FUNCTION (this << d);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   132
  m_device = d;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   133
}
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   136
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   137
LteSpectrumPhy::SetMobility (Ptr<Object> m)
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
  NS_LOG_FUNCTION (this << m);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   140
  m_mobility = m;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   141
}
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   144
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   145
LteSpectrumPhy::SetChannel (Ptr<SpectrumChannel> c)
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
  NS_LOG_FUNCTION (this << c);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   148
  m_channel = 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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   151
Ptr<const SpectrumModel>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   152
LteSpectrumPhy::GetRxSpectrumModel () const
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
  if (m_txPsd)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   155
    {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   156
      return m_txPsd->GetSpectrumModel ();
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   157
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   158
  else
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   159
    {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   160
      return 0;
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   164
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   165
SpectrumType
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   166
LteSpectrumPhy::GetSpectrumType ()
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
  NS_LOG_FUNCTION (this);
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   169
  static SpectrumType st = SpectrumTypeFactory::Create ("Lte");
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   170
  return st;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   171
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   172
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   173
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   174
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   175
LteSpectrumPhy::SetTxPowerSpectralDensity (Ptr<SpectrumValue> txPsd)
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
  NS_LOG_FUNCTION (this << txPsd);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   178
  NS_ASSERT (txPsd);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   179
  m_txPsd = txPsd;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   180
}
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   183
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   184
LteSpectrumPhy::SetNoisePowerSpectralDensity (Ptr<const SpectrumValue> noisePsd)
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
  NS_LOG_FUNCTION (this << noisePsd);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   187
  NS_ASSERT (noisePsd);
7924
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
   188
  m_interference->SetNoisePowerSpectralDensity (noisePsd);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   189
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   190
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
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   194
LteSpectrumPhy::SetPhyMacTxEndCallback (PhyMacTxEndCallback c)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   195
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   196
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   197
  m_phyMacTxEndCallback = c;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   198
}
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
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   202
LteSpectrumPhy::SetPhyMacRxEndErrorCallback (PhyMacRxEndErrorCallback c)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   203
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   204
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   205
  m_phyMacRxEndErrorCallback = c;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   206
}
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
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   210
LteSpectrumPhy::SetPhyMacRxEndOkCallback (PhyMacRxEndOkCallback c)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   211
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   212
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   213
  m_phyMacRxEndOkCallback = c;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   214
}
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
LteSpectrumPhy::SetState (State newState)
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
  ChangeState (newState);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   221
}
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
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   225
LteSpectrumPhy::ChangeState (State newState)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   226
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   227
  NS_LOG_LOGIC (this << " state: " << m_state << " -> " << newState);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   228
  m_state = newState;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   229
}
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
bool
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   233
LteSpectrumPhy::StartTx (Ptr<PacketBurst> pb)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   234
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   235
  NS_LOG_FUNCTION (this << pb);
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   236
  NS_LOG_LOGIC (this << " state: " << m_state);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   237
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   238
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   239
  for (std::list<Ptr<Packet> >::const_iterator iter = pb->Begin (); iter
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   240
         != pb->End (); ++iter)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   241
    {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   242
      Ptr<Packet> packet = (*iter)->Copy ();
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   243
      m_phyTxStartTrace (packet);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   244
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   245
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   246
  switch (m_state)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   247
    {
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   248
    case RX:
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   249
      NS_FATAL_ERROR ("cannot TX while RX: according to FDD channel acces, the physical layer for transmission cannot be used for reception");
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   250
      break;
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   251
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   252
    case TX:
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   253
      NS_FATAL_ERROR ("cannot TX while already TX: the MAC should avoid this");
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   254
      break;
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   255
      
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   256
    case IDLE:
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   257
      {
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   258
        /*
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   259
          m_txPsd must be setted by the device, according to
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   260
          (i) the available subchannel for transmission
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   261
          (ii) the power transmission
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   262
        */
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   263
        NS_ASSERT (m_txPsd);
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   264
        m_txPacketBurst = pb;
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   265
        
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   266
        // we need to convey some PHY meta information to the receiver
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   267
        // to be used for simulation purposes (e.g., the CellId). This
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   268
        // is done by adding an LtePhyTag to the first packet in the
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   269
        // burst.
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   270
        NS_ASSERT (pb->Begin () != pb->End ());
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   271
        LtePhyTag tag (m_cellId);
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   272
        Ptr<Packet> firstPacketInBurst = *(pb->Begin ());
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   273
        firstPacketInBurst->AddPacketTag (tag);
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   274
        
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   275
        ChangeState (TX);
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   276
        NS_ASSERT (m_channel);
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   277
        double tti = 0.001;
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   278
        m_channel->StartTx (pb, m_txPsd, GetSpectrumType (), Seconds (tti), GetObject<SpectrumPhy> ());
7894
ed34ceddb62f added distance parameter to inter-cell-interference program
Nicola Baldo <nicola@baldo.biz>
parents: 7893
diff changeset
   279
        NS_LOG_LOGIC (this << " scheduling EndTx ()");
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   280
        Simulator::Schedule (Seconds (tti), &LteSpectrumPhy::EndTx, this);
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   281
      }
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   282
      return true;
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   283
      break;
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   284
      
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   285
    default:
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   286
      NS_FATAL_ERROR ("uknown state");
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   287
      return true;
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   288
      break;
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   289
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   290
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   291
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   292
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   293
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   294
LteSpectrumPhy::EndTx ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   295
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   296
  NS_LOG_FUNCTION (this);
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   297
  NS_LOG_LOGIC (this << " state: " << m_state);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   298
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   299
  NS_ASSERT (m_state == TX);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   300
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   301
  for (std::list<Ptr<Packet> >::const_iterator iter = m_txPacketBurst->Begin (); iter
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   302
       != m_txPacketBurst->End (); ++iter)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   303
    {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   304
      Ptr<Packet> packet = (*iter)->Copy ();
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   305
      m_phyTxEndTrace (packet);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   306
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   307
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   308
  if (!m_phyMacTxEndCallback.IsNull ())
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   309
    {
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   310
      for (std::list<Ptr<Packet> >::const_iterator iter = m_txPacketBurst->Begin (); iter
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   311
           != m_txPacketBurst->End (); ++iter)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   312
        {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   313
          Ptr<Packet> packet = (*iter)->Copy ();
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   314
          m_phyMacTxEndCallback (packet);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   315
        }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   316
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   317
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   318
  m_txPacketBurst = 0;
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   319
  ChangeState (IDLE);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   320
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   321
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   322
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   323
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   324
LteSpectrumPhy::StartRx (Ptr<PacketBurst> pb, Ptr <const SpectrumValue> rxPsd, SpectrumType st, Time duration)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   325
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   326
  NS_LOG_FUNCTION (this << pb << rxPsd << st << duration);
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   327
  NS_LOG_LOGIC (this << " state: " << m_state);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   328
7924
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
   329
  m_interference->AddSignal (rxPsd, duration);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   330
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   331
  // the device might start RX only if the signal is of a type
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   332
  // understood by this device - in this case, an LTE signal.
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   333
  if (st == GetSpectrumType ())
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   334
    {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   335
      switch (m_state)
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   336
        {
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   337
        case TX:
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   338
          NS_FATAL_ERROR ("cannot RX while TX: according to FDD channel acces, the physical layer for transmission cannot be used for reception");
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   339
          break;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   340
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   341
        case IDLE:
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   342
        case RX:          
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   343
          // the behavior is similar when
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   344
          // we're IDLE or RX because we can receive more signals
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   345
          // simultaneously (e.g., at the eNB).         
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   346
          {
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   347
            // To check if we're synchronized to this signal, we check
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   348
            // for the CellId which is reported in the LtePhyTag
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   349
            NS_ASSERT (pb->Begin () != pb->End ());          
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   350
            LtePhyTag tag;
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   351
            Ptr<Packet> firstPacketInBurst = *(pb->Begin ());
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   352
            firstPacketInBurst->RemovePacketTag (tag);
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   353
            if (tag.GetCellId () == m_cellId)
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   354
              {            
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   355
                NS_LOG_LOGIC (this << " synchronized with this signal (cellId=" << tag.GetCellId () << ")");   
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   356
                if (m_rxPacketBurstList.empty ())
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   357
                  {
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   358
                    NS_ASSERT (m_state == IDLE);
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   359
                    // first transmission, i.e., we're IDLE and we
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   360
                    // start RX
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   361
                    m_firstRxStart = Simulator::Now ();
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   362
                    m_firstRxDuration = duration;
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   363
                    NS_LOG_LOGIC (this << " scheduling EndRx with delay " << duration);
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   364
                    Simulator::Schedule (duration, &LteSpectrumPhy::EndRx, this);          
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   365
                  }
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   366
                else
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   367
                  {
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   368
                    NS_ASSERT (m_state == RX);
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   369
                    // sanity check: if there are multiple RX events, they
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   370
                    // should occur at the same time and have the same
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   371
                    // duration, otherwise the interference calculation
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   372
                    // won't be correct
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   373
                    NS_ASSERT ((m_firstRxStart == Simulator::Now ()) 
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   374
                               && (m_firstRxDuration == duration));
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   375
                  }
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   376
                
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   377
                ChangeState (RX);                                
7924
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
   378
                m_interference->StartRx (rxPsd);
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   379
  
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   380
                for (std::list<Ptr<Packet> >::const_iterator iter = pb->Begin (); iter
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   381
                       != pb->End (); ++iter)
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   382
                  {
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   383
                    Ptr<Packet> packet = (*iter)->Copy ();
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   384
                    m_phyRxStartTrace (packet);
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   385
                  }
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   386
                
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   387
                m_rxPacketBurstList.push_back (pb);
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   388
 
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   389
                NS_LOG_LOGIC (this << " numSimultaneousRxEvents = " << m_rxPacketBurstList.size ());  
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   390
              }      
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   391
            else
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   392
              {
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   393
                NS_LOG_LOGIC (this << " not in sync with this signal (cellId=" 
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   394
                              << tag.GetCellId () << ", m_cellId=" << m_cellId << ")");
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   395
              }
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   396
          }
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   397
          break;
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   398
          
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   399
        default:
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   400
          NS_FATAL_ERROR ("unknown state");
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   401
          break;
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   402
        }
7891
382a429bdc69 added PHY synchronization model
Nicola Baldo <nicola@baldo.biz>
parents: 7886
diff changeset
   403
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   404
      NS_LOG_LOGIC (this << " state: " << m_state);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   405
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   406
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   407
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   408
void
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   409
LteSpectrumPhy::EndRx ()
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   410
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   411
  NS_LOG_FUNCTION (this);
7893
8dba98ae26ee PHY synchronization
Nicola Baldo <nbaldo@cttc.es>
parents: 7891
diff changeset
   412
  NS_LOG_LOGIC (this << " state: " << m_state);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   413
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   414
  NS_ASSERT (m_state == RX);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   415
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   416
  // this will trigger CQI calculation and Error Model evaluation
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   417
  // as a side effect, the error model should update the error status of all PDUs
7924
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
   418
  m_interference->EndRx ();
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   419
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   420
  for (std::list<Ptr<PacketBurst> >::const_iterator i = m_rxPacketBurstList.begin (); 
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   421
       i != m_rxPacketBurstList.end (); ++i)
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   422
    {
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   423
      // iterate over all packets in the PacketBurst
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   424
      for (std::list<Ptr<Packet> >::const_iterator j = (*i)->Begin (); 
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   425
           j != (*i)->End (); ++j)
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   426
        {
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   427
          // here we should determine whether this particular PDU
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   428
          // (identified by RNTI and LCID) has been received with errors
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   429
          // or not 
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   430
          // LteMacTag tag;
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   431
          // (*iter)->PeekPacketTag (tag);
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   432
          // uint16_t rnti = tag.GetRnti ();
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   433
          // uint8_t lcid = tag.GetLcid ();
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   434
          // bool pduError = IsPduInError (rnti, lcid);
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   435
          bool pduError = false;
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   436
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   437
          if (pduError)
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   438
            {
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   439
              m_phyRxEndErrorTrace ((*j)->Copy ());
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   440
              if (!m_phyMacRxEndErrorCallback.IsNull ())
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   441
                {
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   442
                  NS_LOG_LOGIC (this << " calling m_phyMacRxEndErrorCallback");
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   443
                  m_phyMacRxEndOkCallback ((*j)->Copy ());
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   444
                }
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   445
              else
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   446
                {
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   447
                  NS_LOG_LOGIC (this << " m_phyMacRxEndErrorCallback is NULL");
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   448
                }
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   449
            }        
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   450
          else // pdu received successfully
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   451
            {
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   452
              m_phyRxEndOkTrace ((*j)->Copy ());          
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   453
              if (!m_phyMacRxEndOkCallback.IsNull ())
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   454
                {
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   455
                  NS_LOG_LOGIC (this << " calling m_phyMacRxEndOkCallback"); 
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   456
                  m_phyMacRxEndOkCallback (*j);            
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   457
                }
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   458
              else
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   459
                {
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   460
                  NS_LOG_LOGIC (this << " m_phyMacRxEndOkCallback is NULL");
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   461
                }
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   462
            }
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   463
        }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   464
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   465
  ChangeState (IDLE);
7927
c8d380a263ec fixed uplink RX and interference calculation
Nicola Baldo <nbaldo@cttc.es>
parents: 7926
diff changeset
   466
  m_rxPacketBurstList.clear ();
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   467
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   468
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   469
void 
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   470
LteSpectrumPhy::SetCellId (uint16_t cellId)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   471
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   472
  m_cellId = cellId;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   473
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   474
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   475
void
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   476
LteSpectrumPhy::AddSinrChunkProcessor (Ptr<LteSinrChunkProcessor> p)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   477
{
7924
3a44452d0dad made LteInterference an Object and fixed more disposals
Nicola Baldo <nbaldo@cttc.es>
parents: 7913
diff changeset
   478
  m_interference->AddSinrChunkProcessor (p);
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   479
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   480
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   481
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   482
} // namespace ns3