satellite-topology.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  *
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: Bastien Tauran <bastien.tauran@viveris.fr>
19  */
20 #ifndef SATELLITE_TOPOLOGY_H
21 #define SATELLITE_TOPOLOGY_H
22 
24 #include "lorawan-mac-end-device.h"
25 #include "lorawan-mac-gateway.h"
27 #include "satellite-gw-llc.h"
28 #include "satellite-gw-mac.h"
29 #include "satellite-gw-phy.h"
30 #include "satellite-net-device.h"
38 #include "satellite-ut-llc.h"
39 #include "satellite-ut-mac.h"
40 #include "satellite-ut-phy.h"
41 
42 #include <ns3/node-container.h>
43 #include <ns3/node.h>
44 #include <ns3/object.h>
45 
46 #include <map>
47 #include <ostream>
48 #include <stdint.h>
49 #include <utility>
50 
51 namespace ns3
52 {
53 
60 class SatTopology : public Object
61 {
62  public:
63  typedef struct
64  {
65  uint32_t m_satId;
66  uint32_t m_beamId;
67  std::map<std::pair<uint32_t, uint32_t>, Ptr<SatNetDevice>> m_netDevice;
68  std::map<std::pair<uint32_t, uint32_t>, Ptr<SatGwLlc>> m_llc;
69  std::map<std::pair<uint32_t, uint32_t>, Ptr<SatGwMac>> m_dvbMac;
70  std::map<std::pair<uint32_t, uint32_t>, Ptr<LorawanGroundMacGateway>> m_loraMac;
71  std::map<std::pair<uint32_t, uint32_t>, Ptr<SatGwPhy>> m_phy;
72  } GwLayers_s;
73 
74  typedef struct
75  {
76  uint32_t m_satId;
77  uint32_t m_beamId;
78  uint32_t m_groupId;
79  Ptr<SatNetDevice> m_netDevice;
80  Ptr<SatUtLlc> m_llc;
81  Ptr<SatUtMac> m_dvbMac;
82  Ptr<LorawanMacEndDevice> m_loraMac;
83  Ptr<SatUtPhy> m_phy;
84  } UtLayers_s;
85 
86  typedef struct
87  {
88  uint32_t m_satId;
89  Ptr<SatOrbiterNetDevice> m_netDevice;
90  std::map<uint32_t, Ptr<SatOrbiterFeederLlc>> m_feederLlc;
91  std::map<uint32_t, Ptr<SatOrbiterUserLlc>> m_userLlc;
92  std::map<uint32_t, Ptr<SatOrbiterFeederMac>> m_feederMac;
93  std::map<uint32_t, Ptr<SatOrbiterUserMac>> m_dvbUserMac;
94  std::map<uint32_t, Ptr<LorawanOrbiterMacGateway>> m_loraUserMac;
95  std::map<uint32_t, Ptr<SatOrbiterFeederPhy>> m_feederPhy;
96  std::map<uint32_t, Ptr<SatOrbiterUserPhy>> m_userPhy;
98 
102  SatTopology();
103 
107  ~SatTopology();
108 
113  static TypeId GetTypeId(void);
114 
118  void DoDispose();
119 
123  void Reset();
124 
130  void SetStandard(SatEnums::Standard_t standard);
131 
138 
144  void SetForwardLinkRegenerationMode(SatEnums::RegenerationMode_t forwardLinkRegenerationMode);
145 
152 
158  void SetReturnLinkRegenerationMode(SatEnums::RegenerationMode_t returnLinkRegenerationMode);
159 
166 
173  void AddGwNode(uint32_t gwId, Ptr<Node> gw);
174 
180  void AddUtNode(Ptr<Node> ut);
181 
187  void AddOrbiterNode(Ptr<Node> orbiter);
188 
194  void AddGwUserNode(Ptr<Node> gwUser);
195 
202  void AddUtUserNode(Ptr<Node> utUser, Ptr<Node> ut);
203 
210  void ConnectGwToUt(Ptr<Node> ut, Ptr<Node> gw);
211 
218  void UpdateGwConnectedToUt(Ptr<Node> ut, Ptr<Node> gw);
219 
225  void DisconnectGwFromUt(Ptr<Node> ut);
226 
234  Ptr<Node> GetGwFromUt(Ptr<Node> ut) const;
235 
242  void ConnectGwToBeam(uint32_t beamId, Ptr<Node> gw);
243 
251  Ptr<Node> GetGwFromBeam(uint32_t beamId) const;
252 
259  void AddOrbiterFeederMacPair(Ptr<SatOrbiterFeederMac> mac, Ptr<SatOrbiterFeederMac> usedMac);
260 
268  Ptr<SatOrbiterFeederMac> GetOrbiterFeederMacUsed(Ptr<SatOrbiterFeederMac> mac) const;
269 
278  Mac48Address GetGwAddressInUt(uint32_t utId);
279 
285  NodeContainer GetGwNodes() const;
286 
292  NodeContainer GetUtNodes() const;
293 
299  NodeContainer GetOrbiterNodes() const;
300 
306  NodeContainer GetGwUserNodes() const;
307 
313  NodeContainer GetUtUserNodes() const;
314 
322  NodeContainer GetUtUserNodes(NodeContainer uts) const;
323 
331  NodeContainer GetUtUserNodes(Ptr<Node> ut) const;
332 
341  Ptr<Node> GetUtNode(Ptr<Node> utUser) const;
342 
348  uint32_t GetNGwNodes() const;
349 
355  uint32_t GetNUtNodes() const;
356 
362  uint32_t GetNOrbiterNodes() const;
363 
369  uint32_t GetNGwUserNodes() const;
370 
376  uint32_t GetNUtUserNodes() const;
377 
385  Ptr<Node> GetGwNode(uint32_t nodeId) const;
386 
394  Ptr<Node> GetUtNode(uint32_t nodeId) const;
395 
403  Ptr<Node> GetOrbiterNode(uint32_t nodeId) const;
404 
412  Ptr<Node> GetGwUserNode(uint32_t nodeId) const;
413 
421  Ptr<Node> GetUtUserNode(uint32_t nodeId) const;
422 
430  Ptr<Node> GetNodeFromId(uint32_t nodeId) const;
431 
445  void AddGwLayersDvb(Ptr<Node> gw,
446  uint32_t gwSatId,
447  uint32_t gwBeamId,
448  uint32_t utSatId,
449  uint32_t utBeamId,
450  Ptr<SatNetDevice> netDevice,
451  Ptr<SatGwLlc> llc,
452  Ptr<SatGwMac> mac,
453  Ptr<SatGwPhy> phy);
454 
468  void AddGwLayersLora(Ptr<Node> gw,
469  uint32_t gwSatId,
470  uint32_t gwBeamId,
471  uint32_t utSatId,
472  uint32_t utBeamId,
473  Ptr<SatNetDevice> netDevice,
474  Ptr<LorawanGroundMacGateway> mac,
475  Ptr<SatGwPhy> phy);
476 
484  void UpdateGwSatAndBeam(Ptr<Node> gw, uint32_t satId, uint32_t beamId);
485 
493  uint32_t GetGwSatId(Ptr<Node> gw) const;
494 
502  uint32_t GetGwBeamId(Ptr<Node> gw) const;
503 
513  Ptr<SatNetDevice> GetGwNetDevice(Ptr<Node> gw, uint32_t utSatId, uint32_t utBeamId) const;
514 
524  Ptr<SatGwLlc> GetGwLlc(Ptr<Node> gw, uint32_t utSatId, uint32_t utBeamId) const;
525 
535  Ptr<SatGwMac> GetDvbGwMac(Ptr<Node> gw, uint32_t utSatId, uint32_t utBeamId) const;
536 
546  Ptr<LorawanGroundMacGateway> GetLoraGwMac(Ptr<Node> gw,
547  uint32_t utSatId,
548  uint32_t utBeamId) const;
549 
559  Ptr<SatGwPhy> GetGwPhy(Ptr<Node> gw, uint32_t utSatId, uint32_t utBeamId) const;
560 
573  void AddUtLayersDvb(Ptr<Node> ut,
574  uint32_t satId,
575  uint32_t beamId,
576  uint32_t groupId,
577  Ptr<SatNetDevice> netDevice,
578  Ptr<SatUtLlc> llc,
579  Ptr<SatUtMac> mac,
580  Ptr<SatUtPhy> phy);
581 
594  void AddUtLayersLora(Ptr<Node> ut,
595  uint32_t satId,
596  uint32_t beamId,
597  uint32_t groupId,
598  Ptr<SatNetDevice> netDevice,
599  Ptr<LorawanMacEndDevice> mac,
600  Ptr<SatUtPhy> phy);
601 
609  void UpdateUtSatAndBeam(Ptr<Node> ut, uint32_t satId, uint32_t beamId);
610 
617  void UpdateUtGroup(Ptr<Node> ut, uint32_t groupId);
618 
626  uint32_t GetUtSatId(Ptr<Node> ut) const;
627 
635  uint32_t GetUtBeamId(Ptr<Node> ut) const;
636 
644  uint32_t GetUtGroupId(Ptr<Node> ut) const;
645 
653  Ptr<SatNetDevice> GetUtNetDevice(Ptr<Node> ut) const;
654 
662  Ptr<SatUtLlc> GetUtLlc(Ptr<Node> ut) const;
663 
671  Ptr<SatUtMac> GetDvbUtMac(Ptr<Node> ut) const;
672 
680  Ptr<LorawanMacEndDevice> GetLoraUtMac(Ptr<Node> ut) const;
681 
689  Ptr<SatUtPhy> GetUtPhy(Ptr<Node> ut) const;
690 
703  void AddOrbiterFeederLayers(Ptr<Node> orbiter,
704  uint32_t satId,
705  uint32_t utBeamId,
706  Ptr<SatOrbiterNetDevice> netDevice,
707  Ptr<SatOrbiterFeederLlc> llc,
708  Ptr<SatOrbiterFeederMac> mac,
709  Ptr<SatOrbiterFeederPhy> phy);
710 
722  void AddOrbiterUserLayersDvb(Ptr<Node> orbiter,
723  uint32_t satId,
724  uint32_t beamId,
725  Ptr<SatOrbiterNetDevice> netDevice,
726  Ptr<SatOrbiterUserLlc> llc,
727  Ptr<SatOrbiterUserMac> mac,
728  Ptr<SatOrbiterUserPhy> phy);
729 
741  void AddOrbiterUserLayersLora(Ptr<Node> orbiter,
742  uint32_t satId,
743  uint32_t beamId,
744  Ptr<SatOrbiterNetDevice> netDevice,
745  Ptr<LorawanOrbiterMacGateway> mac,
746  Ptr<SatOrbiterUserPhy> phy);
747 
755  uint32_t GetOrbiterSatId(Ptr<Node> orbiter) const;
756 
764  Ptr<SatOrbiterNetDevice> GetOrbiterNetDevice(Ptr<Node> orbiter) const;
765 
774  Ptr<SatOrbiterFeederLlc> GetOrbiterFeederLlc(Ptr<Node> orbiter, uint32_t utBeamId) const;
775 
784  Ptr<SatOrbiterUserLlc> GetOrbiterUserLlc(Ptr<Node> orbiter, uint32_t beamId) const;
785 
794  Ptr<SatOrbiterFeederMac> GetOrbiterFeederMac(Ptr<Node> orbiter, uint32_t utBeamId) const;
795 
804  Ptr<SatOrbiterUserMac> GetDvbOrbiterUserMac(Ptr<Node> orbiter, uint32_t beamId) const;
805 
814  Ptr<LorawanOrbiterMacGateway> GetLoraOrbiterUserMac(Ptr<Node> orbiter, uint32_t beamId) const;
815 
824  Ptr<SatOrbiterFeederPhy> GetOrbiterFeederPhy(Ptr<Node> orbiter, uint32_t utBeamId) const;
825 
834  Ptr<SatOrbiterUserPhy> GetOrbiterUserPhy(Ptr<Node> orbiter, uint32_t beamId) const;
835 
839  void EnableMapPrint(bool enableMapPrint)
840  {
841  m_enableMapPrint = enableMapPrint;
842  }
843 
848  void PrintTopology(std::ostream& os) const;
849 
855  uint32_t GetClosestSat(GeoCoordinate position);
856 
857  private:
859  SatEnums::RegenerationMode_t m_forwardLinkRegenerationMode; // Regeneration mode on forward link
860  SatEnums::RegenerationMode_t m_returnLinkRegenerationMode; // Regeneration mode on return link
861 
862  std::map<uint32_t, Ptr<Node>> m_gwIds; // List of GW nodes
863  NodeContainer m_gws; // List of GW nodes
864  NodeContainer m_uts; // List of UT nodes
865  NodeContainer m_orbiters; // List of orbiter nodes
866  NodeContainer m_gwUsers; // List of GW user nodes
867  NodeContainer m_utUsers; // List of UT user nodes
868  std::map<Ptr<Node>, NodeContainer> m_detailledUtUsers; // Map associating UT to UT users
869 
870  std::map<Ptr<Node>, GwLayers_s> m_gwLayers; // Map giving protocol layers for all GWs
871  std::map<Ptr<Node>, UtLayers_s> m_utLayers; // Map giving protocol layers for all UTs
872  std::map<Ptr<Node>, OrbiterLayers_s>
873  m_orbiterLayers; // Map giving protocol layers for all orbiters
874 
875  std::map<Ptr<Node>, Ptr<Node>> m_utToGwMap; // Map of GW connected for each UT
876  std::map<uint32_t, Ptr<Node>> m_beamToGwMap; // Map of GW connected for each satellite beam
877  std::map<Ptr<SatOrbiterFeederMac>, Ptr<SatOrbiterFeederMac>>
878  m_orbiterFeederMacMap; // Map giving which Feeder Mac is really used
879 
880  bool m_enableMapPrint; // Is map printing enabled or not
881 };
882 
883 } // namespace ns3
884 
885 #endif /* SATELLITE_TOPOLOGY_H */
GeoCoordinate class is used to store and operate with geodetic coordinates.
Standard_t
The global standard used.
RegenerationMode_t
The regeneration mode used in satellites.
Class to store topology of the whole system.
void AddGwNode(uint32_t gwId, Ptr< Node > gw)
Add a GW node to the topology.
void UpdateUtSatAndBeam(Ptr< Node > ut, uint32_t satId, uint32_t beamId)
Update satellite and beam associated to a UT.
Ptr< SatOrbiterFeederLlc > GetOrbiterFeederLlc(Ptr< Node > orbiter, uint32_t utBeamId) const
Get SatOrbiterFeederLlc instance of an orbiter serving wanted beam ID.
void AddGwLayersLora(Ptr< Node > gw, uint32_t gwSatId, uint32_t gwBeamId, uint32_t utSatId, uint32_t utBeamId, Ptr< SatNetDevice > netDevice, Ptr< LorawanGroundMacGateway > mac, Ptr< SatGwPhy > phy)
Add LORA GW layers for given node, associated to chosen satellite and beam.
Ptr< Node > GetGwNode(uint32_t nodeId) const
Get the wanted GW node.
void AddOrbiterFeederLayers(Ptr< Node > orbiter, uint32_t satId, uint32_t utBeamId, Ptr< SatOrbiterNetDevice > netDevice, Ptr< SatOrbiterFeederLlc > llc, Ptr< SatOrbiterFeederMac > mac, Ptr< SatOrbiterFeederPhy > phy)
Add orbiter feeder layers for given satellite and beam ID.
void SetStandard(SatEnums::Standard_t standard)
Set standard used (DVB or LORA)
Ptr< SatUtPhy > GetUtPhy(Ptr< Node > ut) const
Get SatUtPhy instance of a UT.
NodeContainer GetUtNodes() const
Get the list of UT nodes.
Ptr< SatUtMac > GetDvbUtMac(Ptr< Node > ut) const
Get SatUtMac instance of a DVB UT.
void Reset()
Function for resetting the variables.
NodeContainer GetUtUserNodes() const
Get the list of UT user nodes.
uint32_t GetOrbiterSatId(Ptr< Node > orbiter) const
Get ID of a given orbiter.
std::map< Ptr< Node >, GwLayers_s > m_gwLayers
std::map< Ptr< Node >, Ptr< Node > > m_utToGwMap
Ptr< LorawanOrbiterMacGateway > GetLoraOrbiterUserMac(Ptr< Node > orbiter, uint32_t beamId) const
Get LorawanOrbiterMacGateway instance of a LORA orbiter serving wanted beam ID.
Ptr< SatGwPhy > GetGwPhy(Ptr< Node > gw, uint32_t utSatId, uint32_t utBeamId) const
Get SatGwPhy instance of a GW.
void AddUtUserNode(Ptr< Node > utUser, Ptr< Node > ut)
Add a UT user node to the topology.
SatEnums::RegenerationMode_t m_returnLinkRegenerationMode
uint32_t GetGwBeamId(Ptr< Node > gw) const
Get ID of beam linked to a GW.
Ptr< Node > GetGwFromUt(Ptr< Node > ut) const
Get GW connected to a given UT.
SatEnums::Standard_t GetStandard()
Get standard used (DVB or LORA)
uint32_t GetUtGroupId(Ptr< Node > ut) const
Get ID of group linked to a UT.
Ptr< SatOrbiterUserPhy > GetOrbiterUserPhy(Ptr< Node > orbiter, uint32_t beamId) const
Get SatOrbiterUserPhy instance of an orbiter serving wanted beam ID.
Ptr< Node > GetNodeFromId(uint32_t nodeId) const
Get the wanted node from its node ID.
Ptr< SatNetDevice > GetGwNetDevice(Ptr< Node > gw, uint32_t utSatId, uint32_t utBeamId) const
Get SatNetDevice instance of a GW.
void AddUtLayersLora(Ptr< Node > ut, uint32_t satId, uint32_t beamId, uint32_t groupId, Ptr< SatNetDevice > netDevice, Ptr< LorawanMacEndDevice > mac, Ptr< SatUtPhy > phy)
Add LORA UT layers for given node, associated to chosen satellite and beam.
Ptr< Node > GetOrbiterNode(uint32_t nodeId) const
Get the wanted orbiter node.
NodeContainer m_utUsers
void PrintTopology(std::ostream &os) const
Print all the satellite topology.
uint32_t GetClosestSat(GeoCoordinate position)
Get closest satellite to a ground station.
std::map< Ptr< Node >, OrbiterLayers_s > m_orbiterLayers
uint32_t GetNUtUserNodes() const
Get the number of UT user nodes.
void DoDispose()
Do needed dispose actions.
std::map< uint32_t, Ptr< Node > > m_gwIds
NodeContainer GetGwUserNodes() const
Get the list of GW user nodes.
SatEnums::RegenerationMode_t GetForwardLinkRegenerationMode()
Get forward link regeneration mode.
Ptr< LorawanGroundMacGateway > GetLoraGwMac(Ptr< Node > gw, uint32_t utSatId, uint32_t utBeamId) const
Get SatGwMac instance of a LORA GW.
void EnableMapPrint(bool enableMapPrint)
Function for enabling the map prints.
Ptr< SatOrbiterUserMac > GetDvbOrbiterUserMac(Ptr< Node > orbiter, uint32_t beamId) const
Get SatOrbiterUserMac instance of a DVB orbiter serving wanted beam ID.
void ConnectGwToUt(Ptr< Node > ut, Ptr< Node > gw)
Connect a GW to a UT.
void UpdateGwConnectedToUt(Ptr< Node > ut, Ptr< Node > gw)
Connect a new GW to a UT.
std::map< Ptr< SatOrbiterFeederMac >, Ptr< SatOrbiterFeederMac > > m_orbiterFeederMacMap
SatEnums::RegenerationMode_t GetReturnLinkRegenerationMode()
Get return link regeneration mode.
void AddUtLayersDvb(Ptr< Node > ut, uint32_t satId, uint32_t beamId, uint32_t groupId, Ptr< SatNetDevice > netDevice, Ptr< SatUtLlc > llc, Ptr< SatUtMac > mac, Ptr< SatUtPhy > phy)
Add DVB UT layers for given node, associated to chosen satellite and beam.
Ptr< SatOrbiterFeederPhy > GetOrbiterFeederPhy(Ptr< Node > orbiter, uint32_t utBeamId) const
Get SatOrbiterFeederPhy instance of an orbiter serving wanted beam ID.
Ptr< SatGwMac > GetDvbGwMac(Ptr< Node > gw, uint32_t utSatId, uint32_t utBeamId) const
Get SatGwMac instance of a DVB GW.
SatEnums::Standard_t m_standard
Ptr< SatOrbiterFeederMac > GetOrbiterFeederMac(Ptr< Node > orbiter, uint32_t utBeamId) const
Get SatOrbiterFeederMac instance of an orbiter serving wanted beam ID.
Ptr< Node > GetGwUserNode(uint32_t nodeId) const
Get the wanted GW user node.
uint32_t GetNOrbiterNodes() const
Get the number of orbiter nodes.
void SetForwardLinkRegenerationMode(SatEnums::RegenerationMode_t forwardLinkRegenerationMode)
Set forward link regeneration mode.
Ptr< SatUtLlc > GetUtLlc(Ptr< Node > ut) const
Get SatUtLlc instance of a UT.
NodeContainer GetOrbiterNodes() const
Get the list of orbiter nodes.
Ptr< Node > GetUtUserNode(uint32_t nodeId) const
Get the wanted UT user node.
uint32_t GetUtBeamId(Ptr< Node > ut) const
Get ID of beam linked to a UT.
std::map< Ptr< Node >, NodeContainer > m_detailledUtUsers
void AddOrbiterFeederMacPair(Ptr< SatOrbiterFeederMac > mac, Ptr< SatOrbiterFeederMac > usedMac)
Create an association between a feeder MAC layer, and the entity really used.
NodeContainer GetGwNodes() const
Get the list of GW nodes.
Ptr< SatOrbiterNetDevice > GetOrbiterNetDevice(Ptr< Node > orbiter) const
Get SatOrbiterNetDevice instance of an orbiter.
void SetReturnLinkRegenerationMode(SatEnums::RegenerationMode_t returnLinkRegenerationMode)
Set return link regeneration mode.
void AddUtNode(Ptr< Node > ut)
Add a UT node to the topology.
Ptr< SatOrbiterFeederMac > GetOrbiterFeederMacUsed(Ptr< SatOrbiterFeederMac > mac) const
Get feeder MAC really used to connect to a GW.
void AddGwLayersDvb(Ptr< Node > gw, uint32_t gwSatId, uint32_t gwBeamId, uint32_t utSatId, uint32_t utBeamId, Ptr< SatNetDevice > netDevice, Ptr< SatGwLlc > llc, Ptr< SatGwMac > mac, Ptr< SatGwPhy > phy)
Add DVB GW layers for given node, associated to chosen satellite and beam.
void ConnectGwToBeam(uint32_t beamId, Ptr< Node > gw)
Connect a GW to a Beam.
uint32_t GetNGwNodes() const
Get the number of GW nodes.
void UpdateGwSatAndBeam(Ptr< Node > gw, uint32_t satId, uint32_t beamId)
Update satellite and beam associated to a GW.
uint32_t GetNGwUserNodes() const
Get the number of GW user nodes.
SatTopology()
Constructor.
static TypeId GetTypeId(void)
NS-3 type id function.
Ptr< SatNetDevice > GetUtNetDevice(Ptr< Node > ut) const
Get SatNetDevice instance of a UT.
NodeContainer m_orbiters
void AddGwUserNode(Ptr< Node > gwUser)
Add a GW user node to the topology.
Ptr< Node > GetGwFromBeam(uint32_t beamId) const
Get GW connected to a given beam ID.
~SatTopology()
Destructor.
uint32_t GetUtSatId(Ptr< Node > ut) const
Get ID of satellite linked to a UT.
NodeContainer m_gwUsers
Ptr< SatGwLlc > GetGwLlc(Ptr< Node > gw, uint32_t utSatId, uint32_t utBeamId) const
Get SatGwLlc instance of a GW.
void UpdateUtGroup(Ptr< Node > ut, uint32_t groupId)
Update satellite and beam associated to a UT.
SatEnums::RegenerationMode_t m_forwardLinkRegenerationMode
void AddOrbiterNode(Ptr< Node > orbiter)
Add an orbiter node to the topology.
void AddOrbiterUserLayersDvb(Ptr< Node > orbiter, uint32_t satId, uint32_t beamId, Ptr< SatOrbiterNetDevice > netDevice, Ptr< SatOrbiterUserLlc > llc, Ptr< SatOrbiterUserMac > mac, Ptr< SatOrbiterUserPhy > phy)
Add DVB orbiter user layers for given satellite and beam ID.
void AddOrbiterUserLayersLora(Ptr< Node > orbiter, uint32_t satId, uint32_t beamId, Ptr< SatOrbiterNetDevice > netDevice, Ptr< LorawanOrbiterMacGateway > mac, Ptr< SatOrbiterUserPhy > phy)
Add LORA orbiter user layers for given satellite and beam ID.
Ptr< Node > GetUtNode(Ptr< Node > utUser) const
Get UT node linked to some UT user.
void DisconnectGwFromUt(Ptr< Node > ut)
Disconnect a GW from a UT.
Ptr< SatOrbiterUserLlc > GetOrbiterUserLlc(Ptr< Node > orbiter, uint32_t beamId) const
Get SatOrbiterUserLlc instance of an orbiter serving wanted beam ID.
std::map< uint32_t, Ptr< Node > > m_beamToGwMap
Mac48Address GetGwAddressInUt(uint32_t utId)
Set the value of GW address for a UT.
Ptr< LorawanMacEndDevice > GetLoraUtMac(Ptr< Node > ut) const
Get SatUtMac instance of a LORA UT.
std::map< Ptr< Node >, UtLayers_s > m_utLayers
uint32_t GetNUtNodes() const
Get the number of UT nodes.
uint32_t GetGwSatId(Ptr< Node > gw) const
Get ID of satellite linked to a GW.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.
std::map< std::pair< uint32_t, uint32_t >, Ptr< SatGwLlc > > m_llc
std::map< std::pair< uint32_t, uint32_t >, Ptr< SatGwPhy > > m_phy
std::map< std::pair< uint32_t, uint32_t >, Ptr< SatNetDevice > > m_netDevice
std::map< std::pair< uint32_t, uint32_t >, Ptr< LorawanGroundMacGateway > > m_loraMac
std::map< std::pair< uint32_t, uint32_t >, Ptr< SatGwMac > > m_dvbMac
std::map< uint32_t, Ptr< SatOrbiterUserPhy > > m_userPhy
std::map< uint32_t, Ptr< SatOrbiterUserLlc > > m_userLlc
Ptr< SatOrbiterNetDevice > m_netDevice
std::map< uint32_t, Ptr< SatOrbiterFeederLlc > > m_feederLlc
std::map< uint32_t, Ptr< SatOrbiterFeederPhy > > m_feederPhy
std::map< uint32_t, Ptr< SatOrbiterFeederMac > > m_feederMac
std::map< uint32_t, Ptr< SatOrbiterUserMac > > m_dvbUserMac
std::map< uint32_t, Ptr< LorawanOrbiterMacGateway > > m_loraUserMac
Ptr< LorawanMacEndDevice > m_loraMac
Ptr< SatNetDevice > m_netDevice