Loading...
Searching...
No Matches
satellite-constant-interference.cc
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2013 Magister Solutions Ltd.
4 * Copyright (c) 2018 CNES
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation;
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * Author: Sami Rantanen <sami.rantanen@magister.fi>
20 * Author: Mathias Ettinger <mettinger@toulouse.viveris.fr>
21 */
22
24
25#include "ns3/double.h"
26#include "ns3/log.h"
27#include "ns3/simulator.h"
28
29#include <stdint.h>
30#include <utility>
31#include <vector>
32
33NS_LOG_COMPONENT_DEFINE("SatConstantInterference");
34
35namespace ns3
36{
37
38NS_OBJECT_ENSURE_REGISTERED(SatConstantInterference);
39
40TypeId
42{
43 static TypeId tid = TypeId("ns3::SatConstantInterference")
44 .SetParent<SatInterference>()
45 .AddConstructor<SatConstantInterference>()
46 .AddAttribute("ConstantInterferencePower",
47 "Constant interference power in linear format.",
48 DoubleValue(0.0),
49 MakeDoubleAccessor(&SatConstantInterference::m_power),
50 MakeDoubleChecker<double_t>());
51 return tid;
52}
53
59
64
65Ptr<SatInterference::InterferenceChangeEvent>
66SatConstantInterference::DoAdd(Time duration, double power, Address rxAddress)
67{
68 NS_LOG_FUNCTION(this << duration.GetSeconds() << power << rxAddress);
69
70 Ptr<SatInterference::InterferenceChangeEvent> event;
71 event = Create<SatInterference::InterferenceChangeEvent>(0, duration, power, rxAddress);
72
73 return event;
74}
75
76std::vector<std::pair<double, double>>
77SatConstantInterference::DoCalculate(Ptr<SatInterference::InterferenceChangeEvent> event)
78{
79 NS_LOG_FUNCTION(this);
80
81 if (m_rxing == false)
82 {
83 NS_LOG_WARN("Most likely two overlapping receptions! With random access carrier"
84 " this should be fine, but with dedicated access prohibited!");
85 }
86
87 std::vector<std::pair<double, double>> ifPowerPerFragment;
88 ifPowerPerFragment.emplace_back(1.0, m_power);
89
90 return ifPowerPerFragment;
91}
92
93void
95{
96 NS_LOG_FUNCTION(this);
97
98 m_rxing = false;
99}
100
101void
102SatConstantInterference::DoNotifyRxStart(Ptr<SatInterference::InterferenceChangeEvent> event)
103{
104 NS_LOG_FUNCTION(this);
105
106 m_rxing = true;
107}
108
109void
110SatConstantInterference::DoNotifyRxEnd(Ptr<SatInterference::InterferenceChangeEvent> event)
111{
112 NS_LOG_FUNCTION(this);
113
114 m_rxing = false;
115}
116
117} // namespace ns3
118
119// namespace ns3
Satellite constant interference.
virtual Ptr< SatInterference::InterferenceChangeEvent > DoAdd(Time rxDuration, double rxPower, Address rxAddress)
Adds interference power to interference object.
virtual std::vector< std::pair< double, double > > DoCalculate(Ptr< SatInterference::InterferenceChangeEvent > event)
Calculates interference power for the given reference Sets final power at end time to finalPower.
~SatConstantInterference()
Destructor for SatConstantInterference.
virtual void DoNotifyRxEnd(Ptr< SatInterference::InterferenceChangeEvent > event)
Notifies that RX is ended by a receiver.
virtual void DoReset(void)
Resets current interference.
virtual void DoNotifyRxStart(Ptr< SatInterference::InterferenceChangeEvent > event)
Notifies that RX is started by a receiver.
static TypeId GetTypeId(void)
Get the type ID.
void Reset(void)
Resets current interference.
SatInterference()
Constructor for Satellite interference base class.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.