A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
spectrum-interference.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2009 CTTC
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Nicola Baldo <nbaldo@cttc.es>
7 */
8
9#ifndef SPECTRUM_INTERFERENCE_H
10#define SPECTRUM_INTERFERENCE_H
11
12#include "spectrum-value.h"
13
14#include <ns3/nstime.h>
15#include <ns3/object.h>
16#include <ns3/packet.h>
17
18namespace ns3
19{
20
21class SpectrumErrorModel;
22
23/**
24 * \ingroup spectrum
25 *
26 * This class implements a gaussian interference model, i.e., all
27 * incoming signals are added to the total interference.
28 *
29 */
31{
32 public:
34 ~SpectrumInterference() override;
35
36 /**
37 * Register this type.
38 * \return The TypeId.
39 */
40 static TypeId GetTypeId();
41
42 /**
43 * Set the SpectrumErrorModel to be used.
44 *
45 * @param e the error model
46 */
48
49 /**
50 * Notify that the PHY is starting a RX attempt
51 *
52 * @param p the packet corresponding to the signal being RX
53 * @param rxPsd the power spectral density of the signal being RX
54 */
56
57 /**
58 * Notify that the PHY has aborted RX
59 */
60 void AbortRx();
61
62 /**
63 * Notify that the RX attempt has ended. The receiving PHY must call
64 * this method upon RX end in order to:
65 * 1) know if RX was successful or not
66 * 2) free up resources that might eventually be used for the
67 * calculation of interference. Note that for this reason this
68 * method must also be called when RX is aborted.
69 *
70 *
71 * @return true if RX was successful, false otherwise
72 */
73 bool EndRx();
74
75 /**
76 * Notify that a new signal is being perceived in the medium. This
77 * method is to be called for all incoming signal, regardless of
78 * whether they're useful signals or interferers.
79 *
80 * @param spd the power spectral density of the new signal
81 * @param duration the duration of the new signal
82 */
83 void AddSignal(Ptr<const SpectrumValue> spd, const Time duration);
84
85 /**
86 * Set the Noise Power Spectral Density
87 *
88 * @param noisePsd the Noise Power Spectral Density in power units
89 * (Watt, Pascal...) per Hz.
90 */
92
93 protected:
94 void DoDispose() override;
95
96 private:
97 /**
98 * Evaluate a Chunk, depending on the Rx status and the last update time
99 */
101 /**
102 * Adds a signal perceived in the medium.
103 * @param spd the power spectral density of the new signal
104 */
106 /**
107 * Removes a signal perceived in the medium.
108 * @param spd the power spectral density of the new signal
109 */
111
112 bool m_receiving; //!< True if in Rx status
113
114 /**
115 * Stores the power spectral density of the signal whose RX is being attempted
116 */
118
119 /**
120 * Stores the spectral power density of the sum of incoming signals;
121 * does not include noise, includes the SPD of the signal being RX
122 */
124
125 Ptr<const SpectrumValue> m_noise; //!< Noise spectral power density
126
127 Time m_lastChangeTime; //!< the time of the last change in m_TotalPower
128
130};
131
132} // namespace ns3
133
134#endif /* SPECTRUM_INTERFERENCE_H */
A base class which provides memory management and object aggregation.
Definition object.h:78
Smart pointer class similar to boost::intrusive_ptr.
This class implements a gaussian interference model, i.e., all incoming signals are added to the tota...
void AbortRx()
Notify that the PHY has aborted RX.
void SetNoisePowerSpectralDensity(Ptr< const SpectrumValue > noisePsd)
Set the Noise Power Spectral Density.
void ConditionallyEvaluateChunk()
Evaluate a Chunk, depending on the Rx status and the last update time.
Ptr< SpectrumValue > m_allSignals
Stores the spectral power density of the sum of incoming signals; does not include noise,...
bool EndRx()
Notify that the RX attempt has ended.
Time m_lastChangeTime
the time of the last change in m_TotalPower
bool m_receiving
True if in Rx status.
static TypeId GetTypeId()
Register this type.
Ptr< const SpectrumValue > m_noise
Noise spectral power density.
void SetErrorModel(Ptr< SpectrumErrorModel > e)
Set the SpectrumErrorModel to be used.
void DoSubtractSignal(Ptr< const SpectrumValue > spd)
Removes a signal perceived in the medium.
void StartRx(Ptr< const Packet > p, Ptr< const SpectrumValue > rxPsd)
Notify that the PHY is starting a RX attempt.
Ptr< SpectrumErrorModel > m_errorModel
Error model.
void DoAddSignal(Ptr< const SpectrumValue > spd)
Adds a signal perceived in the medium.
void DoDispose() override
Destructor implementation.
void AddSignal(Ptr< const SpectrumValue > spd, const Time duration)
Notify that a new signal is being perceived in the medium.
Ptr< const SpectrumValue > m_rxSignal
Stores the power spectral density of the signal whose RX is being attempted.
Simulation virtual time values and global simulation resolution.
Definition nstime.h:94
a unique identifier for an interface.
Definition type-id.h:48
Every class exported by the ns3 library is enclosed in the ns3 namespace.