117 Ptr<SatAntennaGainPattern> userAgp,
122 NS_LOG_FUNCTION(
this << dev << uf << ur << userAgp << satId << userBeamId);
133 Ptr<SatChannelEstimationErrorContainer> cec =
134 Create<SatSimpleChannelEstimationErrorContainer>();
136 SatPhyRxCarrierConf::RxCarrierCreateParams_s parametersUser =
137 SatPhyRxCarrierConf::RxCarrierCreateParams_s();
141 parametersUser.m_raIfModel =
m_raSettings.m_raRtnInterferenceModel;
142 parametersUser.m_raIfEliminateModel =
m_raSettings.m_raInterferenceEliminationModel;
143 parametersUser.m_linkRegenerationMode =
144 Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode();
147 parametersUser.m_cec = cec;
148 parametersUser.m_raCollisionModel =
m_raSettings.m_raCollisionModel;
149 parametersUser.m_randomAccessModel =
m_raSettings.m_randomAccessModel;
154 Ptr<SatOrbiterUserPhy> uPhy = CreateObject<SatOrbiterUserPhy>(
163 uPhy->SetTxAntennaGainPattern(userAgp, dev->GetNode()->GetObject<
SatMobilityModel>());
164 uPhy->SetRxAntennaGainPattern(userAgp, dev->GetNode()->GetObject<
SatMobilityModel>());
166 dev->AddUserPhy(uPhy, userBeamId);
170 Ptr<SatOrbiterUserMac> uMac;
171 Ptr<SatOrbiterUserLlc> uLlc;
173 uMac = CreateObject<SatOrbiterUserMac>(satId, userBeamId);
175 Mac48Address userAddress;
178 switch (std::max(Singleton<SatTopology>::Get()->GetForwardLinkRegenerationMode(),
179 Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode()))
184 Ptr<SatNodeInfo> niPhyUser =
187 Mac48Address::ConvertFrom(dev->GetAddress()));
188 uPhy->SetNodeInfo(niPhyUser);
189 uMac->SetNodeInfo(niPhyUser);
195 uLlc = CreateObject<SatOrbiterUserLlc>();
197 dev->AddUserMac(uMac, userBeamId);
203 userAddress = Mac48Address::Allocate();
204 Ptr<SatNodeInfo> niUser =
206 uPhy->SetNodeInfo(niUser);
207 uMac->SetNodeInfo(niUser);
208 uLlc->SetNodeInfo(niUser);
210 dev->AddUserPair(userBeamId, userAddress);
216 uLlc = CreateObject<SatOrbiterUserLlc>();
218 dev->AddUserMac(uMac, userBeamId);
224 userAddress = Mac48Address::Allocate();
225 Ptr<SatNodeInfo> niUser =
227 uPhy->SetNodeInfo(niUser);
228 uMac->SetNodeInfo(niUser);
229 uLlc->SetNodeInfo(niUser);
231 dev->AddUserPair(userBeamId, userAddress);
236 NS_FATAL_ERROR(
"Forward or return link regeneration mode unknown");
240 switch (Singleton<SatTopology>::Get()->GetForwardLinkRegenerationMode())
253 Ptr<SatFwdLinkScheduler> fwdScheduler =
254 CreateObject<SatScpcScheduler>(
m_bbFrameConfFwd, userAddress, carrierBandwidth);
255 uMac->SetFwdScheduler(fwdScheduler);
257 uMac->StartPeriodicTransmissions();
261 fwdScheduler->SetTxOpportunityCallback(
268 NS_FATAL_ERROR(
"Forward link regeneration mode unknown");
272 switch (Singleton<SatTopology>::Get()->GetReturnLinkRegenerationMode())
277 uPhy->SetAttribute(
"ReceiveCb", CallbackValue(uCb));
285 uPhy->SetAttribute(
"ReceiveCb", CallbackValue(uCb));
293 uPhy->SetAttribute(
"ReceiveCb", CallbackValue(uCb));
297 uLlc->SetReceiveSatelliteCallback(
303 NS_FATAL_ERROR(
"Return link regeneration mode unknown");
308 uPhy->BeginEndScheduling();
309 uPhy->SetSendControlMsgToFeederCallback(
313 Singleton<SatTopology>::Get()
314 ->AddOrbiterUserLayersDvb(dev->GetNode(), satId, userBeamId, dev, uLlc, uMac, uPhy);