satellite-ut-phy.h
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.com>
21  */
22 
23 #ifndef SATELLITE_UT_PHY_H
24 #define SATELLITE_UT_PHY_H
25 
27 #include "satellite-frame-conf.h"
28 #include "satellite-phy.h"
30 
31 #include <ns3/address.h>
32 #include <ns3/nstime.h>
33 #include <ns3/object.h>
34 #include <ns3/packet.h>
35 #include <ns3/ptr.h>
36 
37 #include <set>
38 #include <stdint.h>
39 
40 namespace ns3
41 {
42 
43 class SatPhyRxCarrier;
44 class SatPhyRxCarrierUplink;
45 class SatPhyRxCarrierPerSlot;
46 class SatPhyRxCarrierPerFrame;
47 class SatPhyRxCarrierPerWindow;
48 
54 class SatUtPhy : public SatPhy
55 {
56  public:
60  SatUtPhy(void);
61 
70  Ptr<SatLinkResults> linkResults,
71  SatPhyRxCarrierConf::RxCarrierCreateParams_s parameters,
72  Ptr<SatSuperframeConf> superFrameConf);
73 
77  virtual ~SatUtPhy();
78 
82  static TypeId GetTypeId(void);
83  TypeId GetInstanceTypeId(void) const;
87  virtual void DoInitialize(void);
88 
92  virtual void DoDispose(void);
93 
99  virtual double GetAdditionalInterference();
100 
106  void PerformHandover(uint32_t satId, uint32_t beamId);
107 
112  bool IsTxPossible(void) const;
113 
120  void Receive(Ptr<SatSignalParameters> rxParams, bool phyError);
121 
127  void UpdateSliceSubscription(uint8_t slice);
128 
129  private:
134  void AssignNewSatChannels();
135 
141 
147 
152 
157 
162 
166  std::set<uint8_t> m_slicesSubscribed;
167 };
168 
169 } // namespace ns3
170 
171 #endif /* SATELLITE_UT_PHY_H */
SatLinkDir_t
Link direction used for packet tracing.
The SatPhy models the basic physical layer of the satellite system.
Definition: satellite-phy.h:62
The SatUtPhy models the physical layer of the User Terminal of the satellite system.
double m_otherSysInterferenceCOverIDb
Configured other system interference in dB.
static TypeId GetTypeId(void)
inherited from Object
virtual ~SatUtPhy()
Destructor.
virtual double GetAdditionalInterference()
Get additional interference, used to compute final SINR at RX.
void AssignNewSatChannels()
Update the underlying SatChannel to send and receive data from the current beam (as described in the ...
double m_otherSysInterferenceCOverI
Other system interference in linear.
virtual SatEnums::SatLinkDir_t GetSatLinkRxDir()
Get the link RX direction.
std::set< uint8_t > m_slicesSubscribed
The list of slices subscribed for this UT.
bool IsTxPossible(void) const
Inform whether or not the underlying Tx channel is properly configured for transmission.
void Receive(Ptr< SatSignalParameters > rxParams, bool phyError)
Receives packets from lower layer.
Time m_antennaReconfigurationDelay
Delay of antenna reconfiguration when performing handover.
virtual SatEnums::SatLinkDir_t GetSatLinkTxDir()
Get the link TX direction.
void UpdateSliceSubscription(uint8_t slice)
Updates the slices subscription list.
void PerformHandover(uint32_t satId, uint32_t beamId)
Change underlying SatChannel to send and receive data from a new satellite and beam.
TypeId GetInstanceTypeId(void) const
virtual void DoInitialize(void)
Initialization of SatUtPhy.
virtual void DoDispose(void)
Dispose of SatUtPhy.
SatUtPhy(void)
Default constructor, which is not used.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.
Creation parameters for base PHY object.