src/lte/model/rem-spectrum-phy.h
author Nicola Baldo <nbaldo@cttc.es>
Tue, 30 Oct 2012 16:02:07 +0100
changeset 9406 7f0f9d8f8e20
parent 8693 478733ab87b7
child 10892 3e86fac77082
permissions -rw-r--r--
new LTE RRC model
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     2
/*
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2012 CTTC
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     4
 *
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     8
 *
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    13
 *
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    17
 *
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    18
 * Author: Nicola Baldo <nbaldo@cttc.es>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    19
 */
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    20
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    21
#ifndef REM_SPECTRUM_PHY_H
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    22
#define REM_SPECTRUM_PHY_H
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    23
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    24
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    25
#include <ns3/spectrum-value.h>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    26
#include <ns3/mobility-model.h>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    27
#include <ns3/packet.h>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    28
#include <ns3/nstime.h>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    29
#include <ns3/net-device.h>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    30
#include <ns3/spectrum-phy.h>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    31
#include <ns3/spectrum-channel.h>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    32
#include <string>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    33
#include <fstream>
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    34
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    35
namespace ns3 {
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    36
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    37
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    38
/**
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    39
 *
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    40
 * This minimal SpectrumPhy implemetation calculates the SINR with
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    41
 * respect to the strongest signal for a given point. The original
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    42
 * purpose of this class is to be used to generate a
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    43
 * Radio Environment Map (REM) by locating several instances in a grid
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    44
 * fashion, and connecting them to the channel only for a very short
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    45
 * amount of time. 
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    46
 *
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    47
 * The assumption on which this class works is that the system
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    48
 * being considered is an infrastructured radio access network using
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    49
 * FDD, hence all signals will be transmitted simultaneously. 
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    50
 */
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    51
class RemSpectrumPhy : public SpectrumPhy
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    52
{
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    53
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    54
public:
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    55
  RemSpectrumPhy ();
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    56
  virtual ~RemSpectrumPhy ();
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    57
8609
db24d2db55d4 revised REM implementation
Nicola Baldo <nbaldo@cttc.es>
parents: 8578
diff changeset
    58
  // inherited from Object
db24d2db55d4 revised REM implementation
Nicola Baldo <nbaldo@cttc.es>
parents: 8578
diff changeset
    59
  void DoDispose ();
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    60
  static TypeId GetTypeId (void);
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    61
8609
db24d2db55d4 revised REM implementation
Nicola Baldo <nbaldo@cttc.es>
parents: 8578
diff changeset
    62
  // inherited from SpectrumPhy
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    63
  void SetChannel (Ptr<SpectrumChannel> c);
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    64
  void SetMobility (Ptr<MobilityModel> m);
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    65
  void SetDevice (Ptr<NetDevice> d);
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    66
  Ptr<MobilityModel> GetMobility ();
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    67
  Ptr<NetDevice> GetDevice ();
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    68
  Ptr<const SpectrumModel> GetRxSpectrumModel () const;
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    69
  Ptr<AntennaModel> GetRxAntenna ();
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    70
  void StartRx (Ptr<SpectrumSignalParameters> params);
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    71
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    72
  /** 
8693
478733ab87b7 MultiModelSpectrumChannel working with LTE
Nicola Baldo <nbaldo@cttc.es>
parents: 8688
diff changeset
    73
   * set the RX spectrum model to be used
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    74
   * 
8693
478733ab87b7 MultiModelSpectrumChannel working with LTE
Nicola Baldo <nbaldo@cttc.es>
parents: 8688
diff changeset
    75
   * \param m 
478733ab87b7 MultiModelSpectrumChannel working with LTE
Nicola Baldo <nbaldo@cttc.es>
parents: 8688
diff changeset
    76
   */
478733ab87b7 MultiModelSpectrumChannel working with LTE
Nicola Baldo <nbaldo@cttc.es>
parents: 8688
diff changeset
    77
  void SetRxSpectrumModel (Ptr<const SpectrumModel> m);
478733ab87b7 MultiModelSpectrumChannel working with LTE
Nicola Baldo <nbaldo@cttc.es>
parents: 8688
diff changeset
    78
478733ab87b7 MultiModelSpectrumChannel working with LTE
Nicola Baldo <nbaldo@cttc.es>
parents: 8688
diff changeset
    79
  /** 
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    80
   * 
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    81
   * \return the Signal to Noise Ratio calculated 
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    82
   */
8609
db24d2db55d4 revised REM implementation
Nicola Baldo <nbaldo@cttc.es>
parents: 8578
diff changeset
    83
  double GetSinr (double noisePower);
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    84
8578
50484f99be63 REM helper deactivates PHYs instead of removing, and exit when done by default
Nicola Baldo <nbaldo@cttc.es>
parents: 8560
diff changeset
    85
  /** 
8688
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    86
   * make StartRx a no-op from now on, and mark instance as inactive
8578
50484f99be63 REM helper deactivates PHYs instead of removing, and exit when done by default
Nicola Baldo <nbaldo@cttc.es>
parents: 8560
diff changeset
    87
   * 
50484f99be63 REM helper deactivates PHYs instead of removing, and exit when done by default
Nicola Baldo <nbaldo@cttc.es>
parents: 8560
diff changeset
    88
   */
50484f99be63 REM helper deactivates PHYs instead of removing, and exit when done by default
Nicola Baldo <nbaldo@cttc.es>
parents: 8560
diff changeset
    89
  void Deactivate ();
50484f99be63 REM helper deactivates PHYs instead of removing, and exit when done by default
Nicola Baldo <nbaldo@cttc.es>
parents: 8560
diff changeset
    90
8688
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    91
  /** 
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    92
   * 
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    93
   * \return true if active
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    94
   */
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    95
  bool IsActive ();
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    96
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    97
  /** 
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    98
   * Reset the SINR calculator
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
    99
   * 
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
   100
   */
b6abf3b8d4f5 memory-efficient RadioEnvironmentMapHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8609
diff changeset
   101
  void Reset ();
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   102
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   103
private:
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   104
  Ptr<MobilityModel> m_mobility;
8693
478733ab87b7 MultiModelSpectrumChannel working with LTE
Nicola Baldo <nbaldo@cttc.es>
parents: 8688
diff changeset
   105
  Ptr<const SpectrumModel> m_rxSpectrumModel;
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   106
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   107
  double m_referenceSignalPower;
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   108
  double m_sumPower;
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   109
8578
50484f99be63 REM helper deactivates PHYs instead of removing, and exit when done by default
Nicola Baldo <nbaldo@cttc.es>
parents: 8560
diff changeset
   110
  bool m_active;
50484f99be63 REM helper deactivates PHYs instead of removing, and exit when done by default
Nicola Baldo <nbaldo@cttc.es>
parents: 8560
diff changeset
   111
8560
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   112
};
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   113
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   114
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   115
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   116
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   117
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   118
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   119
}
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   120
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   121
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   122
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   123
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   124
729a6248d9d3 added support to generate Radio Environment Maps
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   125
#endif /* REM_SPECTRUM_PHY_H */