This file is indexed.

/usr/include/ns3.27/ns3/lte-amc.h is in libns3-dev 3.27+dfsg-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
 * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation;
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Original Author: Giuseppe Piro  <g.piro@poliba.it>
 * Modified by:     Nicola Baldo   <nbaldo@cttc.es>
 * Modified by:     Marco Miozzo   <mmiozzo@cttc.es>
 */

#ifndef AMCMODULE_H
#define AMCMODULE_H

#include <vector>
#include <ns3/ptr.h>
#include <ns3/object.h>

namespace ns3 {

class SpectrumValue;

/**
 * \ingroup lte
 * Implements the Adaptive Modulation And Coding Scheme. As proposed in 3GPP
 * TSG-RAN WG1 [R1-081483 Conveying MCS and TB size via PDCCH]
 * (http://www.3gpp.org/ftp/tsg_ran/WG1_RL1/TSGR1_52b/Docs/R1-081483.zip).
 *
 * \note All the methods of this class are static, so you'll never
 *       need to create and manage instances of this class.
 */
class LteAmc : public Object
{

public:
  /**
   * \brief Get the type ID.
   * \return the object TypeId
   */
  static TypeId GetTypeId (void);
  
  LteAmc ();
  virtual ~LteAmc();
  
  /// Types of AMC model.
  enum AmcModel
    {
      /**
       * \details
       * An AMC model based on Piro, G.; Grieco, L.A; Boggia, G.; Camarda, P.,
       * "A two-level scheduling algorithm for QoS support in the downlink of
       * LTE cellular networks," _Wireless Conference (EW), 2010 European_,
       * pp.246,253, 12-15 April 2010.
       */
      PiroEW2010,
      /**
       * An AMC model based on 10% of BER according to LteMiErrorModel.
       */
      MiErrorModel
    };
  
  /**
   * \brief Get the Modulation anc Coding Scheme for
   * a CQI value
   * \param cqi the cqi value
   * \return the MCS  value
   */
  /*static*/ int GetMcsFromCqi (int cqi);

  /**
  * \brief Get the Transport Block Size for a selected MCS and number of PRB (table 7.1.7.2.1-1 of 36.213)
  * \param mcs the mcs index
  * \param nprb the no. of PRB
  * \return the Transport Block Size in bits
  */
  /*static*/ int GetTbSizeFromMcs (int mcs, int nprb);

  /**
   * \brief Get the spectral efficiency value associated
   * to the received CQI
   * \param cqi the cqi value
   * \return the spectral efficiency in (bit/s)/Hz
   */
  /*static*/ double GetSpectralEfficiencyFromCqi (int cqi);

  /**
   * \brief Create a message with CQI feedback
   * \param sinr the SpectrumValue vector of SINR for evaluating the CQI
   * \param rbgSize size of RB group (in RBs) for evaluating subband/wideband CQI
   * \return a vector of CQI feedbacks
   */
  /*static*/ std::vector<int> CreateCqiFeedbacks (const SpectrumValue& sinr,
                                                  uint8_t rbgSize = 0);

  /**
   * \brief Get a proper CQI for the spectral efficiency value.
   * In order to assure a fewer block error rate, the AMC chooses the lower CQI value
   * for a given spectral efficiency
   * \param s the spectral efficiency
   * \return the CQI value
   */
  /*static*/ int GetCqiFromSpectralEfficiency (double s);
  
private:
  
  /**
   * The `Ber` attribute.
   *
   * The requested BER in assigning MCS (default is 0.00005).
   */
  double m_ber;

  /**
   * The `AmcModel` attribute.
   *
   * AMC model used to assign CQI.
   */
  AmcModel m_amcModel;

}; // end of `class LteAmc`


}

#endif /* AMCMODULE_H */