src/lte/model/lte-enb-phy.cc
author mmiozzo
Tue, 05 Apr 2011 15:52:24 +0200
changeset 7943 db21a8048ab9
parent 7934 0f09fc707a8c
child 7944 f7e5e0540487
permissions -rw-r--r--
PfFfMacScheduler update reception of UL-CQI coherently with previous allocation
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/object-factory.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    23
#include <ns3/log.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    24
#include <math.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    25
#include <ns3/simulator.h>
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    26
#include "ns3/spectrum-error-model.h"
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    27
#include "lte-enb-phy.h"
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    28
#include "lte-net-device.h"
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    29
#include "lte-spectrum-value-helper.h"
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    30
#include "ideal-control-messages.h"
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    31
#include "lte-enb-net-device.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    32
#include "lte-enb-mac.h"
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    33
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    34
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    35
NS_LOG_COMPONENT_DEFINE ("LteEnbPhy");
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    36
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
    37
namespace ns3 {
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
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    40
////////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    41
// member SAP forwarders
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    42
////////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    43
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    44
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    45
class EnbMemberLteEnbPhySapProvider : public LteEnbPhySapProvider
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    46
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    47
public:
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    48
  EnbMemberLteEnbPhySapProvider (LteEnbPhy* phy);
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    49
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    50
  // inherited from LteEnbPhySapProvider
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    51
  virtual void SendMacPdu (Ptr<Packet> p);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    52
  virtual void SetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    53
  virtual void SetCellId (uint16_t cellId);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    54
  virtual void SendIdealControlMessage (Ptr<IdealControlMessage> msg);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    55
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    56
private:
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    57
  LteEnbPhy* m_phy;
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    58
};
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    59
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    60
EnbMemberLteEnbPhySapProvider::EnbMemberLteEnbPhySapProvider (LteEnbPhy* phy) : m_phy (phy)
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    61
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    62
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    63
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    64
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    65
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    66
void
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    67
EnbMemberLteEnbPhySapProvider::SendMacPdu (Ptr<Packet> p)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    68
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    69
  m_phy->DoSendMacPdu (p);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    70
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    71
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    72
void
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    73
EnbMemberLteEnbPhySapProvider::SetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    74
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    75
  m_phy->DoSetBandwidth (ulBandwidth, dlBandwidth);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    76
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    77
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    78
void
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    79
EnbMemberLteEnbPhySapProvider::SetCellId (uint16_t cellId)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    80
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    81
  m_phy->DoSetCellId (cellId);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    82
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    83
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    84
void
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    85
EnbMemberLteEnbPhySapProvider::SendIdealControlMessage (Ptr<IdealControlMessage> msg)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    86
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    87
  m_phy->DoSendIdealControlMessage (msg);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    88
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    89
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    90
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    91
////////////////////////////////////////
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    92
// generic LteEnbPhy methods
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    93
////////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    94
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    95
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
    96
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    97
NS_OBJECT_ENSURE_REGISTERED (LteEnbPhy);
6705
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
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   100
LteEnbPhy::LteEnbPhy ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   101
  : m_nrFrames (0),
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   102
    m_nrSubFrames (0)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   103
{
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   104
  m_enbPhySapProvider = new EnbMemberLteEnbPhySapProvider (this);
6705
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
TypeId
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   109
LteEnbPhy::GetTypeId (void)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   110
{
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   111
  static TypeId tid = TypeId ("ns3::LteEnbPhy")
6707
2ac68a0381ca improved module after Tom's review
Giuseppe Piro <g.piro@poliba.it>
parents: 6705
diff changeset
   112
    .SetParent<LtePhy> ()
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   113
    .AddConstructor<LteEnbPhy> ()
6705
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
  return tid;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   116
}
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
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   119
LteEnbPhy::~LteEnbPhy ()
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   120
{
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
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   123
void
7913
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   124
LteEnbPhy::DoDispose ()
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   125
{
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   126
  NS_LOG_FUNCTION (this);
7921
0a504caf445d added more disposal stuff
Nicola Baldo <nbaldo@cttc.es>
parents: 7914
diff changeset
   127
  m_ueAttached.clear ();
7930
ccb40542ae88 fixed memory leak in PHY SAP usage
Nicola Baldo <nbaldo@cttc.es>
parents: 7928
diff changeset
   128
  delete m_enbPhySapProvider;
7913
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   129
  LtePhy::DoDispose ();
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   130
}
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   131
ed3a9f8a76d7 added DoDispose to lte-phy and lte-spectrum-phy
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   132
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   133
LteEnbPhy::SetLteEnbPhySapUser (LteEnbPhySapUser* s)
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   134
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   135
  m_enbPhySapUser = s;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   136
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   137
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   138
LteEnbPhySapProvider*
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   139
LteEnbPhy::GetLteEnbPhySapProvider ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   140
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   141
  return (m_enbPhySapProvider);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   142
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   143
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   144
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   145
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   146
bool
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   147
LteEnbPhy::AddUePhy (uint8_t rnti, Ptr<LteUePhy> phy)
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   148
{
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   149
  std::map <uint8_t, Ptr<LteUePhy> >::iterator it;
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   150
  it = m_ueAttached.find (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   151
  if (it == m_ueAttached.end ())
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   152
    {
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   153
      m_ueAttached.insert (std::pair<uint8_t, Ptr<LteUePhy> > (rnti, phy));
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   154
      return (true);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   155
    }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   156
  else
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   157
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   158
      NS_LOG_ERROR ("UE already attached");
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   159
      return (false);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   160
    }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   161
}
6705
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
bool
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   164
LteEnbPhy::DeleteUePhy (uint8_t rnti)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   165
{
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   166
  std::map <uint8_t, Ptr<LteUePhy> >::iterator it;
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   167
  it = m_ueAttached.find (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   168
  if (it == m_ueAttached.end ())
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   169
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   170
      NS_LOG_ERROR ("UE not attached");
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   171
      return (false);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   172
    }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   173
  else
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   174
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   175
      m_ueAttached.erase (it);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   176
      return (true);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   177
    }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   178
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   179
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   180
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   181
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   182
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   183
LteEnbPhy::DoSendMacPdu (Ptr<Packet> p)
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   184
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   185
//   NS_LOG_FUNCTION (this << pb->GetNPackets () << pb->GetSize ());
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   186
//   return GetDownlinkSpectrumPhy ()->StartTx (pb);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   187
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   188
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   189
  SetMacPdu (p);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   190
}
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   191
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   192
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   193
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   194
LteEnbPhy::PhyPduReceived (Ptr<Packet> p)
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   195
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   196
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   197
  m_enbPhySapUser->ReceivePhyPdu (p);
6705
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
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   201
LteEnbPhy::DoSetDownlinkSubChannels ()
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   202
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   203
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   204
  Ptr<SpectrumValue> txPsd = CreateTxPowerSpectralDensity ();
7928
b736f63e9bdf removed LtePhy::Get{Up,Down}linkSpectrumPhy methods which are evil
Nicola Baldo <nbaldo@cttc.es>
parents: 7921
diff changeset
   205
  m_downlinkSpectrumPhy->SetTxPowerSpectralDensity (txPsd);
6705
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
Ptr<SpectrumValue>
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   210
LteEnbPhy::CreateTxPowerSpectralDensity ()
6705
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   214
  LteSpectrumValueHelper psdHelper;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   215
  Ptr<SpectrumValue> psd = psdHelper.CreateDownlinkTxPowerSpectralDensity (GetTxPower (), GetDownlinkSubChannels ());
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
  return psd;
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   218
}
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   221
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   222
LteEnbPhy::CalcChannelQualityForUe (std::vector <double> sinr, Ptr<LteSpectrumPhy> ue)
6705
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
  NS_LOG_FUNCTION (this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   225
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   226
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   227
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   228
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   229
LteEnbPhy::DoSendIdealControlMessage (Ptr<IdealControlMessage> msg)
6705
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
  NS_LOG_FUNCTION (this << msg);
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   232
  // queues the message (wait for MAC-PHY delay)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   233
  SetControlMessages (msg);
6705
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   236
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   237
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   238
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   239
LteEnbPhy::ReceiveIdealControlMessage (Ptr<IdealControlMessage> msg)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   240
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   241
  NS_LOG_FUNCTION (this << msg);
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   242
  m_enbPhySapUser->ReceiveIdealControlMessage (msg);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   243
}
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
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   246
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   247
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   248
LteEnbPhy::StartFrame (void)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   249
{
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   250
  NS_LOG_FUNCTION (this);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   251
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   252
  ++m_nrFrames;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   253
  NS_LOG_INFO ("-----frame " << m_nrFrames << "-----");
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   254
  m_nrSubFrames = 0;
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   255
  StartSubFrame ();
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   256
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   257
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   258
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   259
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   260
LteEnbPhy::StartSubFrame (void)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   261
{
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   262
  NS_LOG_FUNCTION (this);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   263
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   264
  ++m_nrSubFrames;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   265
  NS_LOG_INFO ("-----sub frame " << m_nrSubFrames << "-----");
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   266
  
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   267
  // send the current burst of control messages
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   268
  std::list<Ptr<IdealControlMessage> > ctrlMsg = GetControlMessages ();
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   269
  std::vector <int> dlRb;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   270
  if (ctrlMsg.size () > 0)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   271
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   272
      std::list<Ptr<IdealControlMessage> >::iterator it;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   273
      it = ctrlMsg.begin ();
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   274
      while (it != ctrlMsg.end ())
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   275
        {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   276
          Ptr<IdealControlMessage> msg = (*it);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   277
          if (msg->GetMessageType () == IdealControlMessage::DL_DCI)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   278
            {
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   279
              std::map <uint8_t, Ptr<LteUePhy> >::iterator it2;
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   280
              Ptr<DlDciIdealControlMessage> dci = DynamicCast<DlDciIdealControlMessage> (msg);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   281
              it2 = m_ueAttached.find (dci->GetDci ().m_rnti);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   282
              
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   283
              if (it2 == m_ueAttached.end ())
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   284
                {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   285
                  NS_LOG_ERROR ("UE not attached");
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   286
                }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   287
              else
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   288
                {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   289
                  // get the tx power spectral density according to DL-DCI(s)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   290
                  // translate the DCI to Spectrum framework
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   291
                  uint32_t mask = 0x1;
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   292
                  for (int i = 0; i < 32; i++)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   293
                    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   294
                      if (((dci->GetDci ().m_rbBitmap & mask) >> i) == 1)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   295
                        {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   296
                          for (int k = 0; k < GetRbgSize (); k++)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   297
                            {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   298
                              dlRb.push_back ((i * GetRbgSize ()) + k);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   299
                              //NS_LOG_DEBUG(this << " [enb]DL-DCI allocated PRB " << (i*GetRbgSize()) + k);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   300
                            }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   301
                        }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   302
                      mask = (mask << 1);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   303
                    }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   304
                  (*it2).second->ReceiveIdealControlMessage (msg);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   305
                }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   306
            }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   307
          else if (msg->GetMessageType () == IdealControlMessage::UL_DCI)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   308
            {
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   309
              std::map <uint8_t, Ptr<LteUePhy> >::iterator it2;
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   310
              Ptr<UlDciIdealControlMessage> dci = DynamicCast<UlDciIdealControlMessage> (msg);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   311
              it2 = m_ueAttached.find (dci->GetDci ().m_rnti);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   312
             
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   313
              if (it2 == m_ueAttached.end ())
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   314
              {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   315
                NS_LOG_ERROR ("UE not attached");
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   316
              }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   317
              else
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   318
              {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   319
                (*it2).second->ReceiveIdealControlMessage (msg);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   320
              }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   321
            }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   322
          ctrlMsg.pop_front ();
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   323
          it = ctrlMsg.begin ();
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   324
        }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   325
    }
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   326
  // set the current tx power spectral density
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   327
  SetDownlinkSubChannels (dlRb);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   328
  // send the current burts of packets
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   329
  Ptr<PacketBurst> pb = GetPacketBurst ();
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   330
  if (pb)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   331
    {
7928
b736f63e9bdf removed LtePhy::Get{Up,Down}linkSpectrumPhy methods which are evil
Nicola Baldo <nbaldo@cttc.es>
parents: 7921
diff changeset
   332
      m_downlinkSpectrumPhy->StartTx (pb);
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   333
    }
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   334
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   335
  // trigger the MAC
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   336
  Ptr<LteEnbMac> macEntity = GetDevice ()->GetObject<LteEnbNetDevice> ()->GetMac ();
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   337
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   338
  m_enbPhySapUser->SubframeIndication (m_nrFrames, m_nrSubFrames);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   339
  
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   340
  
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   341
  // trigger the UE(s)
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   342
  std::map <uint8_t, Ptr<LteUePhy> >::iterator it;
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   343
  for (it = m_ueAttached.begin (); it != m_ueAttached.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   344
    {
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   345
      (*it).second->SubframeIndication (m_nrFrames, m_nrSubFrames);
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   346
    }
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   347
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   348
  Simulator::Schedule (Seconds (GetTti ()),
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   349
                       &LteEnbPhy::EndSubFrame,
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   350
                       this);
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   351
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   352
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   353
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   354
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   355
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   356
LteEnbPhy::EndSubFrame (void)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   357
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   358
  NS_LOG_FUNCTION (this << Simulator::Now ().GetSeconds ());
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   359
  if (m_nrSubFrames == 10)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   360
    {
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   361
      Simulator::ScheduleNow (&LteEnbPhy::EndFrame, this);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   362
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   363
  else
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   364
    {
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   365
      Simulator::ScheduleNow (&LteEnbPhy::StartSubFrame, this);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   366
    }
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   367
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   368
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   369
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   370
void
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   371
LteEnbPhy::EndFrame (void)
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   372
{
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   373
  NS_LOG_FUNCTION (this << Simulator::Now ().GetSeconds ());
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   374
  Simulator::ScheduleNow (&LteEnbPhy::StartFrame, this);
6705
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   375
}
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   376
422c67049471 LTE module form GSoC project
Giuseppe Piro <g.piro@poliba.it>
parents:
diff changeset
   377
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   378
void 
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   379
LteEnbPhy::GenerateCqiFeedback (const SpectrumValue& sinr)
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   380
{
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   381
  NS_LOG_FUNCTION (this << sinr);
7910
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   382
    Ptr<LteEnbNetDevice> thisDevice = GetDevice ()->GetObject<LteEnbNetDevice> ();
7934
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7930
diff changeset
   383
    
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7930
diff changeset
   384
    m_enbPhySapUser->UlCqiReport (CreateUlCqiReport (sinr));
7910
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   385
  
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   386
  
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   387
}
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   388
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   389
7934
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7930
diff changeset
   390
UlCqi_s
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7930
diff changeset
   391
LteEnbPhy::CreateUlCqiReport (const SpectrumValue& sinr)
7910
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   392
{
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   393
	NS_LOG_FUNCTION (this << sinr);
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   394
  Values::const_iterator it;
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   395
  UlCqi_s ulcqi;
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   396
  ulcqi.m_type = UlCqi_s::PUSCH;
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   397
  int i = 0;
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   398
  for (it = sinr.ConstValuesBegin (); it != sinr.ConstValuesEnd (); it++)
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   399
  {
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   400
    ulcqi.m_sinr.push_back ((*it));
7943
db21a8048ab9 PfFfMacScheduler update reception of UL-CQI coherently with previous allocation
mmiozzo
parents: 7934
diff changeset
   401
    //NS_LOG_DEBUG(this << " RB " << i << " SINR " << (*it));
7910
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   402
    i++;
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   403
  }
7934
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7930
diff changeset
   404
  return (ulcqi);
7910
d7083e401e59 PUSCH based UL-CQI generation at eNB PHY side
mmiozzo
parents: 7887
diff changeset
   405
	
7886
b65c16d4da83 LENA project first public release
CTTC
parents: 6852
diff changeset
   406
}
6705
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
};