/usr/include/ns3.27/ns3/spectrum-model.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 137 138 139 140 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 CTTC
*
* 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
*
* Author: Nicola Baldo <nbaldo@cttc.es>
*/
#ifndef SPECTRUM_MODEL_H
#define SPECTRUM_MODEL_H
#include <ns3/simple-ref-count.h>
#include <vector>
namespace ns3 {
/**
* \defgroup spectrum Spectrum Models
*
*/
/**
* \ingroup spectrum
*
* The building block of a SpectrumModel. This struct models
* a frequency band defined by the frequency interval [fl, fc] and
* with center frequency fc. Typically, the center frequency will be
* used for stuff such as propagation modeling, while the interval
* boundaries will be used for bandwidth calculation and for
* conversion between different SpectrumRepresentations.
*
*/
struct BandInfo
{
double fl; //!< lower limit of subband
double fc; //!< center frequency
double fh; //!< upper limit of subband
};
/// Container of BandInfo
typedef std::vector<BandInfo> Bands;
/// Uid for SpectrumModels
typedef uint32_t SpectrumModelUid_t;
/**
* Set of frequency values implementing the domain of the functions in
* the Function Space defined by SpectrumValue. Frequency values are in
* Hz. It is intended that frequency values are non-negative, though
* this is not enforced.
*
*/
class SpectrumModel : public SimpleRefCount<SpectrumModel>
{
public:
/**
* Comparison operator. Returns true if the two SpectumModels are identical
* \param lhs left operand
* \param rhs right operand
* \returns true if the two operands are identical
*/
friend bool operator== (const SpectrumModel& lhs, const SpectrumModel& rhs);
/**
* This constructs a SpectrumModel based on a given set of frequencies,
* which is assumed to be sorted by increasing frequency. The lower
* (resp. upper) frequency band limit is determined as the mean value
* between the center frequency of the considered band and the
* center frequency of the adjacent lower (resp. upper) band.
*
* @param centerFreqs the vector of center frequencies.
*
* @return
*/
SpectrumModel (std::vector<double> centerFreqs);
/**
* This construct a SpectrumModel based on the explicit values of
* center frequencies and boundaries of each subband.
*
* @param bands
*
* @return
*/
SpectrumModel (Bands bands);
/**
*
* @return the number of frequencies in this SpectrumModel
*/
size_t GetNumBands () const;
/**
*
* @return the unique id of this SpectrumModel
*/
SpectrumModelUid_t GetUid () const;
/**
* Const Iterator to the model Bands container start.
*/
Bands::const_iterator Begin () const;
/**
* Const Iterator to the model Bands container end.
*/
Bands::const_iterator End () const;
/**
* Check if another SpectrumModels has bands orthogonal to our bands.
*
* \param other another SpectrumModel
* \returns true if bands are orthogonal
*/
bool IsOrthogonal (const SpectrumModel &other) const;
private:
Bands m_bands; //!< Actual definition of frequency bands within this SpectrumModel
SpectrumModelUid_t m_uid; //!< unique id for a given set of frequencies
static SpectrumModelUid_t m_uidCount; //!< counter to assign m_uids
};
} // namespace ns3
#endif /* SPECTRUM_MODEL_H */
|