Loading...
Searching...
No Matches
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
25#include "lorawan-mac-gateway.h"
27#include "satellite-gw-llc.h"
28#include "satellite-gw-mac.h"
29#include "satellite-gw-phy.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
51namespace ns3
52{
53
60class 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:
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.
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