satellite-per-fragment-interference.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2018 CNES
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Mathias Ettinger <mettinger@toulouse.viveris.com>
19  */
20 
21 #ifndef SATELLITE_PER_FRAGMENT_INTERFERENCE_H
22 #define SATELLITE_PER_FRAGMENT_INTERFERENCE_H
23 
25 
26 #include <stdint.h>
27 #include <utility>
28 #include <vector>
29 
30 namespace ns3
31 {
32 
40 {
41  public:
45  static TypeId GetTypeId();
46 
50  TypeId GetInstanceTypeId(void) const;
51 
56 
60  SatPerFragmentInterference(SatEnums::ChannelType_t channelType, double rxBandwidthHz);
61 
66 
67  protected:
76  std::vector<std::pair<double, double>> DoCalculate(
77  Ptr<SatInterference::InterferenceChangeEvent> event);
78 
84  void onOwnStartReached(double ifPowerW);
85 
103  void onInterferentEvent(long double timeRatio, double interferenceValue, double& ifPowerW);
104 
105  private:
106  std::vector<std::pair<double, double>> m_ifPowerAtEventChangeW;
107 
109 };
110 
111 } // namespace ns3
112 
113 #endif // SATELLITE_PER_FRAGMENT_INTERFERENCE_H
ChannelType_t
Types of channel.
Packet fragment by packet fragment interference.
TypeId GetInstanceTypeId(void) const
Inherited from ObjectBase base class.
static TypeId GetTypeId()
Inherited from ObjectBase base class.
void onInterferentEvent(long double timeRatio, double interferenceValue, double &ifPowerW)
Helper function meant for subclasses to override.
std::vector< std::pair< double, double > > m_ifPowerAtEventChangeW
void onOwnStartReached(double ifPowerW)
Helper function meant for subclasses to override.
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.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.