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