120 Ptr<SatAntennaGainPattern> userAgp,
125 NS_LOG_FUNCTION(
this << dev << uf << ur << userAgp << satId << userBeamId);
128 Singleton<SatTopology>::Get()->GetForwardLinkRegenerationMode() ==
129 Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode(),
130 "Regeneration level must be the same on forward and return in Lora configuration");
133 Singleton<SatTopology>::Get()->GetForwardLinkRegenerationMode() ==
135 "Satellite can only be transparent or with network regenration in Lora configuration");
149 Ptr<SatChannelEstimationErrorContainer> cec =
150 Create<SatSimpleChannelEstimationErrorContainer>();
152 SatPhyRxCarrierConf::RxCarrierCreateParams_s parametersUser =
153 SatPhyRxCarrierConf::RxCarrierCreateParams_s();
157 parametersUser.m_raIfModel =
m_raSettings.m_raRtnInterferenceModel;
158 parametersUser.m_raIfEliminateModel =
m_raSettings.m_raInterferenceEliminationModel;
159 parametersUser.m_linkRegenerationMode =
160 Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode();
163 parametersUser.m_cec = cec;
164 parametersUser.m_raCollisionModel =
m_raSettings.m_raCollisionModel;
165 parametersUser.m_randomAccessModel =
m_raSettings.m_randomAccessModel;
170 Ptr<SatOrbiterUserPhy> uPhy = CreateObject<SatOrbiterUserPhy>(
179 uPhy->SetTxAntennaGainPattern(userAgp, dev->GetNode()->GetObject<
SatMobilityModel>());
180 uPhy->SetRxAntennaGainPattern(userAgp, dev->GetNode()->GetObject<
SatMobilityModel>());
182 dev->AddUserPhy(uPhy, userBeamId);
186 ncc->SetUseLora(
true);
188 Mac48Address userAddress;
191 switch (Singleton<SatTopology>::Get()->GetForwardLinkRegenerationMode())
195 Ptr<SatOrbiterUserMac> uTransparentMac = CreateObject<SatOrbiterUserMac>(satId, userBeamId);
197 Ptr<SatNodeInfo> niPhyUser =
200 Mac48Address::ConvertFrom(dev->GetAddress()));
201 uPhy->SetNodeInfo(niPhyUser);
202 uTransparentMac->SetNodeInfo(niPhyUser);
206 uPhy->SetAttribute(
"ReceiveCb", CallbackValue(uCb));
208 uTransparentMac->SetReceiveNetDeviceCallback(
211 Singleton<SatTopology>::Get()->AddOrbiterUserLayersDvb(dev->GetNode(),
222 Ptr<LorawanMacGateway> uRegenerationMac =
223 CreateObject<LorawanOrbiterMacGateway>(satId, userBeamId);
225 dev->AddUserMac(uRegenerationMac, userBeamId);
226 uRegenerationMac->SetDevice(dev);
230 Ptr<SatLoraConf> satLoraConf = CreateObject<SatLoraConf>();
231 satLoraConf->SetConf(uRegenerationMac);
235 uPhy->SetAttribute(
"ReceiveCb", CallbackValue(recCb));
238 userAddress = Mac48Address::Allocate();
239 Ptr<SatNodeInfo> niUser =
241 uPhy->SetNodeInfo(niUser);
242 uRegenerationMac->SetNodeInfo(niUser);
244 dev->AddUserPair(userBeamId, userAddress);
246 uRegenerationMac->SetPhy(uPhy);
248 Singleton<SatTopology>::Get()->AddOrbiterUserLayersLora(
253 DynamicCast<LorawanOrbiterMacGateway>(uRegenerationMac),
259 NS_FATAL_ERROR(
"Regeneration mode unknown");
264 uPhy->BeginEndScheduling();
265 uPhy->SetSendControlMsgToFeederCallback(