forked from sns3/sns3-satellite
-
Notifications
You must be signed in to change notification settings - Fork 0
/
satellite-geo-feeder-phy.h
127 lines (107 loc) · 3.28 KB
/
satellite-geo-feeder-phy.h
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
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2013 Magister Solutions Ltd.
*
* 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: Sami Rantanen <[email protected]>
*/
#ifndef SATELLITE_GEO_FEEDER_PHY_H
#define SATELLITE_GEO_FEEDER_PHY_H
#include "ns3/ptr.h"
#include "ns3/nstime.h"
#include "ns3/object.h"
#include "ns3/packet.h"
#include "ns3/address.h"
#include "satellite-phy.h"
#include "satellite-signal-parameters.h"
#include "ns3/satellite-frame-conf.h"
namespace ns3 {
class SatPhyRxCarrier;
class SatPhyRxCarrierUplink;
class SatPhyRxCarrierPerSlot;
class SatPhyRxCarrierPerFrame;
/**
* \ingroup satellite
*
* The SatGeoFeederPhy models the feeder link physical layer of the
* satellite node.
*/
class SatGeoFeederPhy : public SatPhy
{
public:
/**
* Default constructor
*/
SatGeoFeederPhy (void);
SatGeoFeederPhy (SatPhy::CreateParam_t& params,
SatPhyRxCarrierConf::RxCarrierCreateParams_s parameters,
Ptr<SatSuperframeConf> superFrameConf);
/**
* Destructor for SatGeoFeederPhy
*/
virtual ~SatGeoFeederPhy ();
/**
* inherited from Object
*/
static TypeId GetTypeId (void);
TypeId GetInstanceTypeId (void) const;
virtual void DoInitialize (void);
/**
* Dispose of this class instance
*/
virtual void DoDispose (void);
/**
* \brief Send Pdu to the PHY tx module (for GEO satellite switch packet forwarding)
* \param rxParams Transmission parameters
*/
virtual void SendPduWithParams (Ptr<SatSignalParameters> rxParams);
/**
* \brief Receives packets from lower layer.
*
* \param rxParams Packet reception parameters
* \param phyError Boolean indicating whether the packet successfully
* received or not? Note, that this parameter is not used in the GEO satellite,
* but exists since we are using a general interface defined in the parent
* class.
*/
virtual void Receive (Ptr<SatSignalParameters> rxParams, bool phyError);
/**
* \brief Geo Feeder specific SINR calculator.
* Calculate SINR with Geo Feeder PHY specific parameters and given SINR.
*
* \param sinr Calculated link specific SINR
* \return SINR with IM interference
*/
virtual double CalculateSinr (double sinr);
private:
/**
* Configured external noise power.
*/
double m_extNoisePowerDensityDbwHz;
/**
* Configured Intermodulation interference in dB.
*/
double m_imInterferenceCOverIDb;
/**
* Intermodulation interference in linear.
*/
double m_imInterferenceCOverI;
/**
* Fixed amplification gain used in RTN link at the satellite.
*/
double m_fixedAmplificationGainDb;
};
}
#endif /* SATELLITE_GEO_FEEDER_PHY_H */