27 #include <ns3/lorawan-ground-mac-gateway.h>
28 #include <ns3/lorawan-mac-gateway.h>
29 #include <ns3/pointer.h>
30 #include <ns3/satellite-channel-estimation-error-container.h>
31 #include <ns3/satellite-channel.h>
32 #include <ns3/satellite-const-variables.h>
33 #include <ns3/satellite-enums.h>
34 #include <ns3/satellite-gw-phy.h>
35 #include <ns3/satellite-id-mapper.h>
36 #include <ns3/satellite-link-results.h>
37 #include <ns3/satellite-lorawan-net-device.h>
38 #include <ns3/satellite-lower-layer-service.h>
39 #include <ns3/satellite-net-device.h>
40 #include <ns3/satellite-node-info.h>
41 #include <ns3/satellite-orbiter-net-device.h>
42 #include <ns3/satellite-phy-rx-carrier-conf.h>
43 #include <ns3/satellite-topology.h>
44 #include <ns3/satellite-typedefs.h>
45 #include <ns3/singleton.h>
47 NS_LOG_COMPONENT_DEFINE(
"SatGwHelperLora");
52 NS_OBJECT_ENSURE_REGISTERED(SatGwHelperLora);
58 TypeId(
"ns3::SatGwHelperLora").SetParent<
SatGwHelper>().AddConstructor<SatGwHelperLora>();
71 NS_FATAL_ERROR(
"Default constructor not supported!!!");
75 uint32_t rtnLinkCarrierCount,
76 Ptr<SatSuperframeSeq> seq,
89 NS_LOG_FUNCTION(
this << rtnLinkCarrierCount << seq);
98 uint32_t feederBeamId,
103 Ptr<SatLowerLayerServiceConf> llsConf)
105 NS_LOG_FUNCTION(
this << n << gwId << satId << beamId << fCh << rCh << ncc << llsConf);
107 NetDeviceContainer container;
127 Ptr<SatChannelEstimationErrorContainer> cec;
131 cec = Create<SatSimpleChannelEstimationErrorContainer>();
138 if (Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode() ==
140 Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode() ==
143 cec = Create<SatRtnLinkChannelEstimationErrorContainer>(minWfId, maxWfId);
147 cec = Create<SatFwdLinkChannelEstimationErrorContainer>();
151 SatPhyRxCarrierConf::RxCarrierCreateParams_s parameters =
152 SatPhyRxCarrierConf::RxCarrierCreateParams_s();
158 parameters.m_linkRegenerationMode =
159 Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode();
162 parameters.m_cec = cec;
167 Ptr<SatGwPhy> phy = CreateObject<SatGwPhy>(
179 Ptr<LorawanMacGateway> mac = CreateObject<LorawanGroundMacGateway>(satId, beamId);
194 phy->SetAttribute(
"ReceiveCb", CallbackValue(recCb));
195 phy->SetAttribute(
"CnoCb", CallbackValue(cnoCb));
196 phy->SetAttribute(
"AverageNormalizedOfferedLoadCallback",
197 CallbackValue(avgNormalizedOfferedLoadCb));
209 Mac48Address addr = Mac48Address::Allocate();
210 dev->SetAddress(addr);
212 Singleton<SatIdMapper>::Get()->AttachMacToTraceId(dev->GetAddress());
213 Singleton<SatIdMapper>::Get()->AttachMacToGwId(dev->GetAddress(), gwId);
214 Singleton<SatIdMapper>::Get()->AttachMacToBeamId(dev->GetAddress(), beamId);
215 Singleton<SatIdMapper>::Get()->AttachMacToSatId(dev->GetAddress(), satId + 1);
220 Ptr<SatNodeInfo> nodeInfo = Create<SatNodeInfo>(
SatEnums::NT_GW, n->GetId(), addr);
221 dev->SetNodeInfo(nodeInfo);
222 mac->SetNodeInfo(nodeInfo);
223 phy->SetNodeInfo(nodeInfo);
230 phy->BeginEndScheduling();
233 Singleton<SatTopology>::Get()->AddGwLayersLora(n,
239 DynamicCast<LorawanGroundMacGateway>(mac),
virtual void Receive(SatPhy::PacketContainer_t packets, Ptr< SatSignalParameters >)=0
Receive a packet from the lower layer.
Base class for fading models such as Markov-based fading or fading trace.
Creates needed objects for GW nodes like SatOrbiterNetDevice objects.
Ptr< SatSuperframeSeq > m_superframeSeq
SatPhy::ErrorModel m_errorModel
RandomAccessSettings_s m_raSettings
The used random access model settings.
uint32_t m_rtnLinkCarrierCount
bool m_enableChannelEstimationError
Enable channel estimation error modeling at forward link receiver (= UT).
double m_daConstantErrorRate
ObjectFactory m_deviceFactory
Ptr< SatLinkResults > m_linkResults
SatPhy::InterferenceModel m_daInterferenceModel
SatTypedefs::CarrierBandwidthConverter_t m_carrierBandwidthConverter
virtual Ptr< NetDevice > Install(Ptr< Node > n, uint32_t gwId, uint32_t satId, uint32_t beamId, uint32_t feederSatId, uint32_t feederBeamId, Ptr< SatChannel > fCh, Ptr< SatChannel > rCh, SatPhy::ChannelPairGetterCallback cbChannel, Ptr< SatNcc > ncc, Ptr< SatLowerLayerServiceConf > llsConf)
SatGwHelperLora()
Default constructor.
static TypeId GetTypeId(void)
Get the type ID.
TypeId GetInstanceTypeId(void) const
A configuration class for the satellite reference system.
void SetConf(Ptr< LorawanMacGateway > gatewayMac)
SatLorawanNetDevice to be utilized in the UT and GW nodes for IoT configuration.
Callback< uint32_t, Ptr< SatControlMessage > > ReserveCtrlMsgCallback
Callback to reserve an id and initially store the control message.
Callback< uint32_t, uint32_t > SendCtrlMsgCallback
Callback to send a control message and allocate a recv ID for it.
Callback< Ptr< SatControlMessage >, uint32_t > ReadCtrlMsgCallback
Callback to read control messages from container storing control messages.
void DoRandomAccessDynamicLoadControl(uint32_t satId, uint32_t beamId, uint32_t carrierId, uint8_t allocationChannelId, double averageNormalizedOfferedLoad)
Function for adjusting the random access allocation channel specific load.
void UtCnoUpdated(uint32_t satId, uint32_t beamId, Address sourceMac, Address gwId, double cno, bool isSatelliteMac)
Update UT specific C/N0 information.
Callback< void, uint32_t, uint32_t, Address, Address, double, bool > CnoCallback
Callback< void, uint32_t, uint32_t, uint32_t, uint8_t, double > AverageNormalizedOfferedLoadCallback
Callback< void, PacketContainer_t, Ptr< SatSignalParameters > > ReceiveCallback
Callback< SatChannelPair::ChannelPair_t, uint32_t, uint32_t > ChannelPairGetterCallback
Callback for retrieving a pair of SatChannel associated to a beam.
Callback< double, SatEnums::ChannelType_t, uint32_t, SatEnums::CarrierBandwidthType_t > CarrierBandwidthConverter_t
Callback for carrier bandwidths.
constexpr uint8_t SUPERFRAME_SEQUENCE
Used superframe sequence in the RTN link.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.
Random access setting options.
SatPhyRxCarrierConf::InterferenceModel m_raInterferenceModel
double m_raConstantErrorRate
SatPhyRxCarrierConf::InterferenceEliminationModel m_raInterferenceEliminationModel
SatEnums::RandomAccessModel_t m_randomAccessModel
SatPhyRxCarrierConf::RandomAccessCollisionModel m_raCollisionModel
Creation parameters for base PHY object.
Ptr< NetDevice > m_device
SatEnums::SatLoraNodeType_t m_standard