/usr/include/ns3.26/ns3/lte-amc.h is in libns3-dev 3.26+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 | /* -*- 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:
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 spectrale 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 */
|