A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
spectrum-signal-parameters.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011 CTTC
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Nicola Baldo <nbaldo@cttc.es>
7 */
8
9#ifndef SPECTRUM_SIGNAL_PARAMETERS_H
10#define SPECTRUM_SIGNAL_PARAMETERS_H
11
12#include "ns3/matrix-array.h"
13#include "ns3/nstime.h"
14
15namespace ns3
16{
17
18class SpectrumPhy;
19class SpectrumValue;
20class AntennaModel;
21class MobilityModel;
22
23/**
24 * @ingroup spectrum
25 *
26 * This struct provides the generic signal representation to be used by
27 * all wireless technologies. Any specific wireless technology is
28 * allowed to define additional signal parameters by inheriting from this
29 * struct and providing additional member variables. This makes sure
30 * that a minimum set of parameters (in particular, the ones needed
31 * for interference calculation) is
32 * common across all wireless technologies, while at the same time
33 * allowing each technology to have its own specific signal parameters.
34 *
35 * Furthermore, since the signal parameters specific of every technology inherit
36 * directly from this struct, each PHY can test (by using a dynamic
37 * cast) if a signal being received belongs to a given technology or not.
38 *
39 * @note when inheriting from this class, make sure that the assignment operator and the copy
40 * constructor work properly, making deep copies if needed.
41 */
42struct SpectrumSignalParameters : public SimpleRefCount<SpectrumSignalParameters>
43{
44 /**
45 * default constructor
46 */
48
49 /**
50 * destructor
51 */
53
54 /**
55 * copy constructor
56 * @param p object to copy
57 */
59
60 /**
61 * make a "virtual" copy of this class, where "virtual" refers to
62 * the fact that if the actual object is a derived class of
63 * SpectrumSignalParameters, then the copy is also a derived class
64 * of the same type.
65 * Each class inheriting from
66 * SpectrumSignalParameters should override this method and use it
67 * to call the copy constructor of the derived class.
68 *
69 * @return a copy of the (possibly derived) class
70 */
71 virtual Ptr<SpectrumSignalParameters> Copy() const;
72
73 /**
74 * The Power Spectral Density of the
75 * waveform, in linear units. The exact unit will depend on the
76 * type of transmission medium involved: W for radio communications, Pa for
77 * underwater acoustic communications. Other transmission media to
78 * be defined.
79 *
80 * @note when SpectrumSignalParameters is copied, only the pointer to the PSD will be copied.
81 * This is because SpectrumChannel objects normally overwrite the psd anyway, so there is no
82 * point in making a copy.
83 */
85
86 /**
87 * The duration of the packet transmission. It is
88 * assumed that the Power Spectral Density remains constant for the
89 * whole duration of the transmission. In other words, all waveform
90 * have a rect shape with respect to time.
91 */
93
94 /**
95 * The SpectrumPhy instance that is making the transmission
96 */
98
99 /**
100 * The AntennaModel instance that was used to transmit this signal.
101 */
103
104 /**
105 * The 3D channel matrix where the dimensions are: the number of RX ports,
106 * the number of TX Ports, the number of resource blocks (RBs).
107 * Needed in the MIMO system in which multiple TX and RX ports can exist,
108 * hence the PSD is multidimensional. Elements are the complex numbers.
109 */
111
112 /**
113 * The 3D precoding matrix where the dimensions are: the number of TX ports,
114 * the number of TX streams, the number of RBs.
115 */
117
118 /**
119 * The transmitter mobility model
120 * This should be used at StartRx instead of retrieving the mobility model directly from the
121 * PHY. This allows wraparound models to replace the real mobility model with a virtual one.
122 */
124};
125
126} // namespace ns3
127
128#endif /* SPECTRUM_SIGNAL_PARAMETERS_H */
interface for antenna radiation pattern models
Keep track of the current position and velocity of an object.
Smart pointer class similar to boost::intrusive_ptr.
Definition ptr.h:67
Abstract base class for Spectrum-aware PHY layers.
Set of values corresponding to a given SpectrumModel.
Simulation virtual time values and global simulation resolution.
Definition nstime.h:96
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Ptr< AntennaModel > txAntenna
The AntennaModel instance that was used to transmit this signal.
Ptr< const ComplexMatrixArray > spectrumChannelMatrix
The 3D channel matrix where the dimensions are: the number of RX ports, the number of TX Ports,...
Ptr< const ComplexMatrixArray > precodingMatrix
The 3D precoding matrix where the dimensions are: the number of TX ports, the number of TX streams,...
Time duration
The duration of the packet transmission.
Ptr< SpectrumPhy > txPhy
The SpectrumPhy instance that is making the transmission.
Ptr< MobilityModel > txMobility
The transmitter mobility model This should be used at StartRx instead of retrieving the mobility mode...
virtual Ptr< SpectrumSignalParameters > Copy() const
make a "virtual" copy of this class, where "virtual" refers to the fact that if the actual object is ...
Ptr< SpectrumValue > psd
The Power Spectral Density of the waveform, in linear units.