29#include "ns3/address.h"
30#include "ns3/cbr-helper.h"
31#include "ns3/config-store.h"
32#include "ns3/config.h"
35#include "ns3/nrtv-helper.h"
36#include "ns3/packet-sink-helper.h"
37#include "ns3/packet-sink.h"
38#include "ns3/pointer.h"
39#include "ns3/random-variable-stream.h"
40#include "ns3/satellite-env-variables.h"
41#include "ns3/satellite-topology.h"
42#include "ns3/singleton.h"
43#include "ns3/string.h"
44#include "ns3/three-gpp-http-satellite-helper.h"
45#include "ns3/uinteger.h"
55NS_LOG_COMPONENT_DEFINE(
"SimulationHelper");
66 TypeId(
"ns3::SimulationHelperConf")
68 .AddConstructor<SimulationHelperConf>()
69 .AddAttribute(
"SimTime",
71 TimeValue(Seconds(100)),
73 MakeTimeChecker(Seconds(1)))
74 .AddAttribute(
"BeamsIDs",
76 StringValue(
"10 11 12 23 24 25"),
79 .AddAttribute(
"UserCountPerUt",
80 "Amount of user per User Terminal",
81 StringValue(
"ns3::ConstantRandomVariable[Constant=1]"),
83 MakePointerChecker<RandomVariableStream>())
84 .AddAttribute(
"UserCountPerMobileUt",
85 "Amount of user per mobile User Terminal",
86 StringValue(
"ns3::ConstantRandomVariable[Constant=1]"),
88 MakePointerChecker<RandomVariableStream>())
89 .AddAttribute(
"UtCountPerBeam",
90 "Amount of User Terminal associated to each Beam",
91 StringValue(
"ns3::ConstantRandomVariable[Constant=1]"),
93 MakePointerChecker<RandomVariableStream>())
94 .AddAttribute(
"ActivateStatistics",
95 "Enable outputing values from stats helpers",
99 .AddAttribute(
"ActivateProgressLogs",
100 "Enable outputing progress of the simulation",
103 MakeBooleanChecker())
104 .AddAttribute(
"MobileUtsFolder",
105 "Select the folder where mobile UTs traces should be found",
107 "/utpositions/mobiles/"),
109 MakeStringChecker());
123 NS_LOG_FUNCTION(
this);
128 NS_LOG_FUNCTION(
this);
137 TypeId(
"ns3::SimulationHelper").SetParent<Object>().AddConstructor<SimulationHelper>();
163 "SimulationHelper: Default constructor not in use. Please create with simulation name. ");
186 NS_LOG_FUNCTION(
this << simulationName);
189 Config::SetDefault(
"ns3::SatEnvVariables::SimulationCampaignName",
191 Config::SetDefault(
"ns3::SatEnvVariables::EnableSimulationOutputOverwrite", BooleanValue(
true));
194 Config::SetDefault(
"ns3::SatSuperframeConf0::FrameConfigType", StringValue(
"ConfigType_2"));
195 Config::SetDefault(
"ns3::SatWaveformConf::AcmEnabled", BooleanValue(
true));
198 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService3_ConstantAssignmentProvided",
199 BooleanValue(
false));
200 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService3_RbdcAllowed", BooleanValue(
true));
201 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService3_MinimumServiceRate",
203 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService3_VolumeAllowed",
204 BooleanValue(
false));
209 NS_LOG_FUNCTION(
this);
215 NS_LOG_FUNCTION(
this);
224 NS_LOG_FUNCTION(
this << count);
226 Ptr<RandomVariableStream> utCount = CreateObject<ConstantRandomVariable>();
227 utCount->SetAttribute(
"Constant", DoubleValue(count));
229 m_utCount.insert(std::make_pair(0, utCount));
235 NS_LOG_FUNCTION(
this << &rs);
243 NS_LOG_FUNCTION(
this << beamId << count);
245 Ptr<RandomVariableStream> utCount = CreateObject<ConstantRandomVariable>();
246 utCount->SetAttribute(
"Constant", DoubleValue(count));
248 m_utCount.insert(std::make_pair(beamId, utCount));
254 NS_LOG_FUNCTION(
this << &rs);
256 m_utCount.insert(std::make_pair(beamId, rs));
262 NS_LOG_FUNCTION(
this << count);
271 NS_LOG_FUNCTION(
this << &rs);
279 NS_LOG_FUNCTION(
this << count);
288 NS_LOG_FUNCTION(
this << &rs);
296 NS_LOG_FUNCTION(
this << gwUserCount);
298 Config::SetDefault(
"ns3::SatHelper::GwUsers", UintegerValue(gwUserCount));
304 NS_LOG_FUNCTION(
this << seconds);
312 NS_LOG_FUNCTION(
this << tag);
321 NS_LOG_FUNCTION(
this << path);
330 NS_LOG_FUNCTION(
this);
333 cmd.AddValue(
"InputXml",
"Input attributes in XML file", xmlInputFile);
339 NS_LOG_FUNCTION(
this);
342 cmd.AddValue(
"OutputPath",
"Output path for storing the simulation statistics",
m_outputPath);
348 NS_LOG_FUNCTION(
this);
353 Config::SetDefault(
"ns3::SatConf::SuperFrameConfForSeq0", StringValue(
"Configuration_0"));
354 Config::SetDefault(
"ns3::SatSuperframeConf0::FrameConfigType", StringValue(
"ConfigType_2"));
355 Config::SetDefault(
"ns3::SatSuperframeSeq::TargetDuration", TimeValue(MilliSeconds(100)));
357 Config::SetDefault(
"ns3::SatRequestManager::EvaluationInterval", TimeValue(MilliSeconds(100)));
358 Config::SetDefault(
"ns3::SatRequestManager::EnableOnDemandEvaluation", BooleanValue(
false));
360 Config::SetDefault(
"ns3::SatBbFrameConf::BBFrameUsageMode", StringValue(
"NormalFrames"));
377 Config::SetDefault(
"ns3::SatUtHelper::EnableChannelEstimationError", BooleanValue(
true));
378 Config::SetDefault(
"ns3::SatGwHelper::EnableChannelEstimationError", BooleanValue(
true));
380 Config::SetDefault(
"ns3::SatFwdLinkScheduler::DummyFrameSendingEnabled", BooleanValue(
false));
382 Config::SetDefault(
"ns3::SatQueue::MaxPackets", UintegerValue(10000));
388 NS_LOG_FUNCTION(
this);
390 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaServiceCount", UintegerValue(4));
391 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService0_ConstantAssignmentProvided",
392 BooleanValue(
false));
393 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService0_RbdcAllowed",
394 BooleanValue(
false));
395 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService0_VolumeAllowed",
396 BooleanValue(
false));
397 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService1_ConstantAssignmentProvided",
398 BooleanValue(
false));
399 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService1_RbdcAllowed",
400 BooleanValue(
false));
401 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService1_VolumeAllowed",
402 BooleanValue(
false));
403 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService2_ConstantAssignmentProvided",
404 BooleanValue(
false));
405 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService2_RbdcAllowed",
406 BooleanValue(
false));
407 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService2_VolumeAllowed",
408 BooleanValue(
false));
409 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService3_ConstantAssignmentProvided",
410 BooleanValue(
false));
411 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService3_RbdcAllowed",
412 BooleanValue(
false));
413 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DaService3_VolumeAllowed",
414 BooleanValue(
false));
420 NS_LOG_FUNCTION(
this << rcIndex << rateKbps);
422 std::stringstream ss;
424 std::string attributeDefault(
"ns3::SatLowerLayerServiceConf::DaService" + ss.str());
426 Config::SetDefault(attributeDefault +
"_ConstantAssignmentProvided", BooleanValue(
true));
427 Config::SetDefault(attributeDefault +
"_RbdcAllowed", BooleanValue(
false));
428 Config::SetDefault(attributeDefault +
"_VolumeAllowed", BooleanValue(
false));
434 NS_LOG_FUNCTION(
this << rcIndex);
436 std::stringstream ss;
438 std::string attributeDefault(
"ns3::SatLowerLayerServiceConf::DaService" + ss.str());
440 Config::SetDefault(attributeDefault +
"_ConstantAssignmentProvided", BooleanValue(
false));
441 Config::SetDefault(attributeDefault +
"_RbdcAllowed", BooleanValue(
true));
442 Config::SetDefault(attributeDefault +
"_VolumeAllowed", BooleanValue(
false));
444 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DynamicRatePersistence", UintegerValue(10));
450 NS_LOG_FUNCTION(
this << rcIndex);
452 std::stringstream ss;
454 std::string attributeDefault(
"ns3::SatLowerLayerServiceConf::DaService" + ss.str());
456 Config::SetDefault(attributeDefault +
"_ConstantAssignmentProvided", BooleanValue(
false));
457 Config::SetDefault(attributeDefault +
"_RbdcAllowed", BooleanValue(
false));
458 Config::SetDefault(attributeDefault +
"_VolumeAllowed", BooleanValue(
true));
460 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::VolumeBacklogPersistence",
467 NS_LOG_FUNCTION(
this);
469 Config::SetDefault(
"ns3::SatSuperframeAllocator::FcaEnabled", BooleanValue(
true));
475 NS_LOG_FUNCTION(
this);
477 Config::SetDefault(
"ns3::SatSuperframeAllocator::FcaEnabled", BooleanValue(
false));
483 NS_LOG_FUNCTION(
this << periodicity.GetSeconds());
486 Config::SetDefault(
"ns3::SatBeamScheduler::ControlSlotsEnabled", BooleanValue(
true));
487 Config::SetDefault(
"ns3::SatBeamScheduler::ControlSlotInterval", TimeValue(periodicity));
493 NS_LOG_FUNCTION(
this << dir);
498 Config::SetDefault(
"ns3::SatLlc::FwdLinkArqEnabled", BooleanValue(
true));
500 Config::SetDefault(
"ns3::SatGenericStreamEncapsulatorArq::MaxNoOfRetransmissions",
502 Config::SetDefault(
"ns3::SatGenericStreamEncapsulatorArq::RetransmissionTimer",
503 TimeValue(MilliSeconds(600)));
504 Config::SetDefault(
"ns3::SatGenericStreamEncapsulatorArq::WindowSize", UintegerValue(10));
505 Config::SetDefault(
"ns3::SatGenericStreamEncapsulatorArq::ArqHeaderSize", UintegerValue(1));
506 Config::SetDefault(
"ns3::SatGenericStreamEncapsulatorArq::RxWaitingTime",
507 TimeValue(Seconds(1.8)));
511 Config::SetDefault(
"ns3::SatLlc::RtnLinkArqEnabled", BooleanValue(
true));
513 Config::SetDefault(
"ns3::SatReturnLinkEncapsulatorArq::MaxRtnArqSegmentSize",
515 Config::SetDefault(
"ns3::SatReturnLinkEncapsulatorArq::MaxNoOfRetransmissions",
517 Config::SetDefault(
"ns3::SatReturnLinkEncapsulatorArq::RetransmissionTimer",
518 TimeValue(MilliSeconds(600)));
519 Config::SetDefault(
"ns3::SatReturnLinkEncapsulatorArq::WindowSize", UintegerValue(10));
520 Config::SetDefault(
"ns3::SatReturnLinkEncapsulatorArq::ArqHeaderSize", UintegerValue(1));
521 Config::SetDefault(
"ns3::SatReturnLinkEncapsulatorArq::RxWaitingTime",
522 TimeValue(Seconds(1.8)));
526 NS_FATAL_ERROR(
"Unsupported SatLinkDir_t!");
536 Config::SetDefault(
"ns3::SatBeamHelper::RaInterferenceModel",
538 Config::SetDefault(
"ns3::SatBeamHelper::RaInterferenceEliminationModel",
540 Config::SetDefault(
"ns3::SatBeamHelper::RaCollisionModel",
542 Config::SetDefault(
"ns3::SatPhyRxCarrierConf::EnableRandomAccessDynamicLoadControl",
543 BooleanValue(
false));
549 NS_LOG_FUNCTION(
this);
553 NS_FATAL_ERROR(
"Random access already configured!");
556 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaService0_NumberOfInstances",
564 NS_LOG_FUNCTION(
this);
568 NS_FATAL_ERROR(
"Random access already configured!");
571 Config::SetDefault(
"ns3::SatUtHelper::UseCrdsaOnlyForControlPackets", BooleanValue(
false));
572 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaService0_NumberOfInstances",
580 NS_LOG_FUNCTION(
this);
582 Config::SetDefault(
"ns3::SatBeamScheduler::ControlSlotsEnabled", BooleanValue(
false));
584 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::DefaultControlRandomizationInterval",
585 TimeValue(MilliSeconds(100)));
586 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaServiceCount", UintegerValue(1));
587 Config::SetDefault(
"ns3::SatBeamHelper::RandomAccessModel",
589 Config::SetDefault(
"ns3::SatBeamHelper::RaInterferenceModel",
591 Config::SetDefault(
"ns3::SatBeamHelper::RaInterferenceEliminationModel",
593 Config::SetDefault(
"ns3::SatBeamHelper::RaCollisionModel",
595 Config::SetDefault(
"ns3::SatBeamHelper::RaConstantErrorRate", DoubleValue(0.0));
597 Config::SetDefault(
"ns3::SatPhyRxCarrierConf::EnableRandomAccessDynamicLoadControl",
598 BooleanValue(
false));
600 "ns3::SatPhyRxCarrierConf::RandomAccessAverageNormalizedOfferedLoadMeasurementWindowSize",
603 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaService0_MaximumUniquePayloadPerBlock",
605 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaService0_MaximumConsecutiveBlockAccessed",
607 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaService0_MinimumIdleBlock",
609 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaService0_BackOffTimeInMilliSeconds",
611 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaService0_BackOffProbability",
613 Config::SetDefault(
"ns3::SatLowerLayerServiceConf::RaService0_HighLoadBackOffProbability",
616 "ns3::SatLowerLayerServiceConf::RaService0_AverageNormalizedOfferedLoadThreshold",
627 NS_LOG_FUNCTION(
this);
629 Config::SetDefault(
"ns3::SatChannel::EnableExternalFadingInputTrace", BooleanValue(
false));
630 Config::SetDefault(
"ns3::SatChannel::ForwardingMode", StringValue(
"OnlyDestNode"));
631 Config::SetDefault(
"ns3::SatChannel::RxPowerCalculationMode",
632 StringValue(
"RxPowerCalculation"));
633 Config::SetDefault(
"ns3::SatBeamHelper::FadingModel", StringValue(
"FadingOff"));
634 Config::SetDefault(
"ns3::SatUtHelper::EnableChannelEstimationError", BooleanValue(
false));
635 Config::SetDefault(
"ns3::SatGwHelper::EnableChannelEstimationError", BooleanValue(
false));
636 Config::SetDefault(
"ns3::SatBeamHelper::RaInterferenceModel", StringValue(
"Constant"));
637 Config::SetDefault(
"ns3::SatBeamHelper::RaInterferenceEliminationModel",
638 StringValue(
"Perfect"));
639 Config::SetDefault(
"ns3::SatBeamHelper::RaCollisionModel",
640 StringValue(
"RaCollisionNotDefined"));
649 NS_LOG_FUNCTION(
this << dir);
654 Config::SetDefault(
"ns3::SatBbFrameConf::AcmEnabled", BooleanValue(
true));
655 Config::SetDefault(
"ns3::SatBbFrameConf::DefaultModCod", StringValue(
"QPSK_1_TO_2"));
656 Config::SetDefault(
"ns3::SatRequestManager::CnoReportInterval", TimeValue(Seconds(0.1)));
657 Config::SetDefault(
"ns3::SatFwdLinkScheduler::CnoEstimationMode",
658 StringValue(
"AverageValueInWindow"));
659 Config::SetDefault(
"ns3::SatFwdLinkScheduler::CnoEstimationWindow", TimeValue(Seconds(2)));
663 Config::SetDefault(
"ns3::SatBeamScheduler::CnoEstimationMode",
664 StringValue(
"MinimumValueInWindow"));
665 Config::SetDefault(
"ns3::SatBeamScheduler::CnoEstimationWindow", TimeValue(Seconds(2)));
666 Config::SetDefault(
"ns3::SatWaveformConf::AcmEnabled", BooleanValue(
true));
670 NS_FATAL_ERROR(
"Unsupported SatLinkDir_t!");
679 NS_LOG_FUNCTION(
this << dir);
684 Config::SetDefault(
"ns3::SatBbFrameConf::AcmEnabled", BooleanValue(
false));
685 Config::SetDefault(
"ns3::SatBbFrameConf::DefaultModCod", StringValue(
"QPSK_1_TO_2"));
686 Config::SetDefault(
"ns3::SatRequestManager::CnoReportInterval", TimeValue(Seconds(100)));
690 Config::SetDefault(
"ns3::SatWaveformConf::AcmEnabled", BooleanValue(
false));
694 NS_FATAL_ERROR(
"Unsupported SatLinkDir_t!");
703 std::cout <<
"Progress: " << Simulator::Now().GetSeconds() <<
"/" <<
GetSimTime().GetSeconds()
712 NS_ASSERT_MSG(
m_satHelper !=
nullptr,
"Satellite scenario not created yet!");
716 Config::SetDefault(
"ns3::SatEnvVariables::EnableSimulationOutputOverwrite",
728 NS_LOG_FUNCTION(
this);
732 Config::SetDefault(
"ns3::SatEnvVariables::EnableSimulationOutputOverwrite",
758 Config::SetDefault(
"ns3::SatStatsThroughputHelper::AveragingMode", BooleanValue(
true));
788 Config::SetDefault(
"ns3::SatStatsFrameTypeUsageHelper::Percentage", BooleanValue(
true));
800 NS_LOG_FUNCTION(
this);
804 Config::SetDefault(
"ns3::SatEnvVariables::EnableSimulationOutputOverwrite",
890 NS_LOG_FUNCTION(
this << em << errorRate);
892 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
893 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
897 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkConstantErrorRate", DoubleValue(errorRate));
898 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkConstantErrorRate", DoubleValue(errorRate));
906 NS_LOG_FUNCTION(
this << ifModel << constantIf);
908 Config::SetDefault(
"ns3::SatUtHelper::DaFwdLinkInterferenceModel", EnumValue(ifModel));
909 Config::SetDefault(
"ns3::SatGwHelper::DaRtnLinkInterferenceModel", EnumValue(ifModel));
913 Config::SetDefault(
"ns3::SatConstantInterference::ConstantInterferencePower",
914 DoubleValue(constantIf));
923 double carrierSpacing,
926 NS_LOG_FUNCTION(
this << bw << carrierBw << rollOff << carrierSpacing << isRandomAccess);
928 std::stringstream sfId, fId;
929 sfId << superFrameId;
931 std::string attributeDefault(
"ns3::SatSuperframeConf" + sfId.str() +
"::Frame" + fId.str());
933 Config::SetDefault(attributeDefault +
"_AllocatedBandwidthHz", DoubleValue(bw));
934 Config::SetDefault(attributeDefault +
"_CarrierAllocatedBandwidthHz", DoubleValue(carrierBw));
935 Config::SetDefault(attributeDefault +
"_CarrierRollOff", DoubleValue(rollOff));
936 Config::SetDefault(attributeDefault +
"_CarrierSpacing", DoubleValue(carrierSpacing));
937 Config::SetDefault(attributeDefault +
"_RandomAccessFrame", BooleanValue(isRandomAccess));
941 Config::SetDefault(
"ns3::SatSuperframeConf" + sfId.str() +
"::FrameCount",
948 NS_LOG_FUNCTION(
this);
950 Config::SetDefault(
"ns3::SatConf::FwdFeederLinkBandwidth", DoubleValue(2e+09));
951 Config::SetDefault(
"ns3::SatConf::FwdFeederLinkBaseFrequency", DoubleValue(2.75e+10));
952 Config::SetDefault(
"ns3::SatConf::FwdUserLinkBandwidth", DoubleValue(5e+08));
953 Config::SetDefault(
"ns3::SatConf::FwdUserLinkBaseFrequency", DoubleValue(1.97e+10));
955 Config::SetDefault(
"ns3::SatConf::RtnFeederLinkBandwidth", DoubleValue(2e+09));
956 Config::SetDefault(
"ns3::SatConf::RtnFeederLinkBaseFrequency", DoubleValue(1.77e+10));
957 Config::SetDefault(
"ns3::SatConf::RtnUserLinkBandwidth", DoubleValue(5e+08));
958 Config::SetDefault(
"ns3::SatConf::RtnUserLinkBaseFrequency", DoubleValue(2.95e+10));
960 Config::SetDefault(
"ns3::SatConf::FwdUserLinkChannels", UintegerValue(4));
961 Config::SetDefault(
"ns3::SatConf::FwdFeederLinkChannels", UintegerValue(16));
962 Config::SetDefault(
"ns3::SatConf::RtnUserLinkChannels", UintegerValue(4));
963 Config::SetDefault(
"ns3::SatConf::RtnFeederLinkChannels", UintegerValue(16));
965 Config::SetDefault(
"ns3::SatConf::FwdCarrierAllocatedBandwidth", DoubleValue(1.25e+08));
966 Config::SetDefault(
"ns3::SatConf::FwdCarrierRollOff", DoubleValue(0.2));
967 Config::SetDefault(
"ns3::SatConf::FwdCarrierSpacing", DoubleValue(0.0));
973 NS_LOG_FUNCTION(
this);
976 Config::SetDefault(
"ns3::SatBeamHelper::EnableFwdLinkBeamHopping", BooleanValue(
true));
978 Config::SetDefault(
"ns3::SatBstpController::BeamHoppingMode",
980 Config::SetDefault(
"ns3::SatBstpController::StaticBeamHoppingConfigFileName",
981 StringValue(
m_scenarioPath +
"/beamhopping/SatBstpConf_GW1.txt"));
982 Config::SetDefault(
"ns3::SatBstpController::SuperframeDuration", TimeValue(MilliSeconds(1)));
985 Config::SetDefault(
"ns3::SatConf::FwdFeederLinkBandwidth", DoubleValue(2e+09));
986 Config::SetDefault(
"ns3::SatConf::FwdFeederLinkBaseFrequency", DoubleValue(2.75e+10));
987 Config::SetDefault(
"ns3::SatConf::FwdUserLinkBandwidth", DoubleValue(5e+08));
988 Config::SetDefault(
"ns3::SatConf::FwdUserLinkBaseFrequency", DoubleValue(1.97e+10));
990 Config::SetDefault(
"ns3::SatConf::FwdUserLinkChannels", UintegerValue(1));
991 Config::SetDefault(
"ns3::SatConf::FwdFeederLinkChannels", UintegerValue(4));
993 Config::SetDefault(
"ns3::SatConf::FwdCarrierAllocatedBandwidth", DoubleValue(5e+08));
994 Config::SetDefault(
"ns3::SatConf::FwdCarrierRollOff", DoubleValue(0.2));
995 Config::SetDefault(
"ns3::SatConf::FwdCarrierSpacing", DoubleValue(0.0));
1001 NS_LOG_FUNCTION(
this);
1003 Config::SetDefault(
"ns3::SatPhyRxCarrier::EnableCompositeSinrOutputTrace", BooleanValue(
true));
1004 Config::SetDefault(
"ns3::SatPhyRxCarrierConf::EnableIntfOutputTrace", BooleanValue(
true));
1005 Config::SetDefault(
"ns3::SatChannel::EnableRxPowerOutputTrace", BooleanValue(
true));
1006 Config::SetDefault(
"ns3::SatChannel::EnableFadingOutputTrace", BooleanValue(
true));
1012 NS_LOG_FUNCTION(
this);
1014 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::RxTemperatureDbk", DoubleValue(28.4));
1015 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::RxMaxAntennaGainDb", DoubleValue(54));
1016 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::TxMaxAntennaGainDb", DoubleValue(54));
1017 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::TxMaxPowerDbw", DoubleValue(-4.38));
1018 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::TxOutputLossDb", DoubleValue(1.75));
1019 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::TxPointingLossDb", DoubleValue(0));
1020 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::TxOboLossDb", DoubleValue(4));
1021 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::TxAntennaLossDb", DoubleValue(1));
1022 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::RxAntennaLossDb", DoubleValue(1));
1023 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::DefaultFadingValue", DoubleValue(1));
1024 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::ExtNoisePowerDensityDbwhz", DoubleValue(-207));
1025 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::ImIfCOverIDb", DoubleValue(27));
1026 Config::SetDefault(
"ns3::SatOrbiterFeederPhy::FixedAmplificationGainDb", DoubleValue(82));
1027 Config::SetDefault(
"ns3::SatOrbiterUserPhy::RxTemperatureDbk", DoubleValue(28.4));
1028 Config::SetDefault(
"ns3::SatOrbiterUserPhy::RxMaxAntennaGainDb", DoubleValue(54));
1029 Config::SetDefault(
"ns3::SatOrbiterUserPhy::TxMaxAntennaGainDb", DoubleValue(54));
1030 Config::SetDefault(
"ns3::SatOrbiterUserPhy::TxMaxPowerDbw", DoubleValue(15));
1031 Config::SetDefault(
"ns3::SatOrbiterUserPhy::TxOutputLossDb", DoubleValue(2.85));
1032 Config::SetDefault(
"ns3::SatOrbiterUserPhy::TxPointingLossDb", DoubleValue(0));
1033 Config::SetDefault(
"ns3::SatOrbiterUserPhy::TxOboLossDb", DoubleValue(0));
1034 Config::SetDefault(
"ns3::SatOrbiterUserPhy::TxAntennaLossDb", DoubleValue(1));
1035 Config::SetDefault(
"ns3::SatOrbiterUserPhy::RxAntennaLossDb", DoubleValue(1));
1036 Config::SetDefault(
"ns3::SatOrbiterUserPhy::DefaultFadingValue", DoubleValue(1));
1037 Config::SetDefault(
"ns3::SatOrbiterUserPhy::OtherSysIfCOverIDb", DoubleValue(27.5));
1038 Config::SetDefault(
"ns3::SatOrbiterUserPhy::AciIfCOverIDb", DoubleValue(17));
1039 Config::SetDefault(
"ns3::SatGwPhy::RxTemperatureDbk", DoubleValue(24.62));
1040 Config::SetDefault(
"ns3::SatGwPhy::RxMaxAntennaGainDb", DoubleValue(61.5));
1041 Config::SetDefault(
"ns3::SatGwPhy::TxMaxAntennaGainDb", DoubleValue(65.2));
1042 Config::SetDefault(
"ns3::SatGwPhy::TxMaxPowerDbw", DoubleValue(8.97));
1043 Config::SetDefault(
"ns3::SatGwPhy::TxOutputLossDb", DoubleValue(2));
1044 Config::SetDefault(
"ns3::SatGwPhy::TxPointingLossDb", DoubleValue(1.1));
1045 Config::SetDefault(
"ns3::SatGwPhy::TxOboLossDb", DoubleValue(6));
1046 Config::SetDefault(
"ns3::SatGwPhy::TxAntennaLossDb", DoubleValue(0));
1047 Config::SetDefault(
"ns3::SatGwPhy::RxAntennaLossDb", DoubleValue(0));
1048 Config::SetDefault(
"ns3::SatGwPhy::DefaultFadingValue", DoubleValue(1));
1049 Config::SetDefault(
"ns3::SatGwPhy::ImIfCOverIDb", DoubleValue(22));
1050 Config::SetDefault(
"ns3::SatGwPhy::AciIfWrtNoisePercent", DoubleValue(10));
1051 Config::SetDefault(
"ns3::SatUtPhy::RxTemperatureDbk", DoubleValue(24.6));
1052 Config::SetDefault(
"ns3::SatUtPhy::RxMaxAntennaGainDb", DoubleValue(44.6));
1053 Config::SetDefault(
"ns3::SatUtPhy::TxMaxAntennaGainDb", DoubleValue(45.2));
1054 Config::SetDefault(
"ns3::SatUtPhy::TxMaxPowerDbw", DoubleValue(4));
1055 Config::SetDefault(
"ns3::SatUtPhy::TxOutputLossDb", DoubleValue(0.5));
1056 Config::SetDefault(
"ns3::SatUtPhy::TxPointingLossDb", DoubleValue(1));
1057 Config::SetDefault(
"ns3::SatUtPhy::TxOboLossDb", DoubleValue(0.5));
1058 Config::SetDefault(
"ns3::SatUtPhy::TxAntennaLossDb", DoubleValue(1));
1059 Config::SetDefault(
"ns3::SatUtPhy::RxAntennaLossDb", DoubleValue(0));
1060 Config::SetDefault(
"ns3::SatUtPhy::DefaultFadingValue", DoubleValue(1));
1061 Config::SetDefault(
"ns3::SatUtPhy::OtherSysIfCOverIDb", DoubleValue(24.7));
1067 NS_LOG_FUNCTION(
this);
1073 Config::SetDefault(
"ns3::SatFadingExternalInputTraceContainer::UtRtnUpIndexFileName",
1074 StringValue(
"BeamId-1_256_UT_fading_rtnup_trace_index.txt"));
1075 Config::SetDefault(
"ns3::SatFadingExternalInputTraceContainer::UtFwdDownIndexFileName",
1076 StringValue(
"BeamId-1_256_UT_fading_fwddwn_trace_index.txt"));
1082 Config::SetDefault(
"ns3::SatFadingExternalInputTraceContainer::UtInputMode",
1083 StringValue(
"ListMode"));
1086 Config::SetDefault(
"ns3::SatChannel::EnableExternalFadingInputTrace", BooleanValue(
true));
1092 NS_LOG_FUNCTION(
this);
1098 Ptr<SatListPositionAllocator> posAllocator)
1100 NS_LOG_FUNCTION(
this << beamId);
1107 NS_LOG_FUNCTION(
this << inputFile);
1113Ptr<SatStatsHelperContainer>
1116 NS_LOG_FUNCTION(
this);
1120 Config::SetDefault(
"ns3::SatEnvVariables::EnableSimulationOutputOverwrite",
1121 BooleanValue(
true));
1128Ptr<SatTrafficHelper>
1131 NS_LOG_FUNCTION(
this);
1145 NS_LOG_FUNCTION(
this);
1158 NS_LOG_FUNCTION(
this);
1171 NS_LOG_FUNCTION(
this);
1184 Config::SetDefault(
"ns3::SatEnvVariables::SimulationTag", StringValue(
m_simulationTag));
1199 const std::string& mobileUtsFolder)
1201 NS_LOG_FUNCTION(
this);
1203 std::stringstream ss;
1204 ss <<
"Created scenario: " << std::endl;
1211 NS_FATAL_ERROR(
"Must specify a scenario folder name from data submodule");
1225 Ptr<SatAntennaGainPatternContainer> antennaGainPatterns =
m_satHelper->GetAntennaGainPatterns();
1226 m_satHelper->GetBeamHelper()->SetAntennaGainPatterns(antennaGainPatterns);
1237 m_satHelper->SetUtPositionAllocatorForBeam(it.first, it.second);
1248 for (uint32_t satId = 0; satId < Singleton<SatTopology>::Get()->GetNOrbiterNodes();
1252 for (uint32_t i = 1; i <=
m_satHelper->GetBeamCount(); i++)
1257 beamInfo.insert(std::make_pair(std::make_pair(satId, i), info));
1264 for (uint32_t satId = 0; satId < Singleton<SatTopology>::Get()->GetNOrbiterNodes();
1268 for (uint32_t i = 1; i <=
m_satHelper->GetBeamCount(); i++)
1271 beamInfo.insert(std::make_pair(std::make_pair(satId, i), info));
1279 NS_FATAL_ERROR(
"Incorrect scenario chosen with a constellation");
1287 std::vector<std::pair<GeoCoordinate, uint32_t>> additionalNodesVector =
1289 std::map<uint32_t, std::vector<std::pair<GeoCoordinate, uint32_t>>> additionalNodes;
1290 for (std::vector<std::pair<GeoCoordinate, uint32_t>>::iterator it =
1291 additionalNodesVector.begin();
1292 it != additionalNodesVector.end();
1295 uint32_t bestBeamId = antennaGainPatterns->GetBestBeamId(0, it->first,
false);
1296 additionalNodes[bestBeamId].push_back(*it);
1299 for (std::map<uint32_t, std::vector<std::pair<GeoCoordinate, uint32_t>>>::iterator it =
1300 additionalNodes.begin();
1301 it != additionalNodes.end();
1306 NS_LOG_WARN(
"Beam ID " << it->first <<
" is not enabled, cannot add "
1307 << it->second.size() <<
" UTs from SatGroupHelper");
1308 std::cout <<
"Beam ID " << it->first <<
" is not enabled, cannot add "
1309 << it->second.size() <<
" UTs from SatGroupHelper" << std::endl;
1312 beamInfo[std::make_pair(0, it->first)].SetPositions(it->second);
1313 for (uint32_t i = 0; i < it->second.size(); i++)
1319 if (mobileUtsFolder !=
"")
1328 m_satHelper->CreateUserDefinedScenarioFromListPositions(
1344 for (uint32_t i = 1; i <=
m_satHelper->GetBeamCount(); i++)
1351 std::map<uint32_t, Ptr<RandomVariableStream>>::iterator iti =
m_utCount.find(i);
1352 std::map<uint32_t, Ptr<RandomVariableStream>>::iterator it0 =
m_utCount.find(0);
1355 NS_LOG_WARN(
"No UT count per beam set. Must be set for GEO scenarios");
1363 ss <<
" Beam " << i <<
": UT count= " << utCount;
1365 for (uint32_t j = 1; j < utCount + 1; j++)
1369 ss <<
", " << j <<
". UT user count= " << utUserCount;
1372 beamInfo.insert(std::make_pair(std::make_pair(0, i), info));
1378 std::vector<std::pair<GeoCoordinate, uint32_t>> additionalNodesVector =
1380 std::map<uint32_t, std::vector<std::pair<GeoCoordinate, uint32_t>>> additionalNodes;
1381 for (std::vector<std::pair<GeoCoordinate, uint32_t>>::iterator it =
1382 additionalNodesVector.begin();
1383 it != additionalNodesVector.end();
1386 uint32_t bestBeamId = antennaGainPatterns->GetBestBeamId(0, it->first,
false);
1387 additionalNodes[bestBeamId].push_back(*it);
1390 for (std::map<uint32_t, std::vector<std::pair<GeoCoordinate, uint32_t>>>::iterator it =
1391 additionalNodes.begin();
1392 it != additionalNodes.end();
1397 NS_LOG_WARN(
"Beam ID " << it->first <<
" is not enabled, cannot add "
1398 << it->second.size() <<
" UTs from SatGroupHelper");
1399 std::cout <<
"Beam ID " << it->first <<
" is not enabled, cannot add "
1400 << it->second.size() <<
" UTs from SatGroupHelper" << std::endl;
1403 beamInfo[std::make_pair(0, it->first)].SetPositions(it->second);
1404 for (uint32_t i = 0; i < it->second.size(); i++)
1410 if (mobileUtsFolder !=
"")
1419 m_satHelper->CreateUserDefinedScenarioFromListPositions(
1435 NS_LOG_INFO(ss.str());
1445 NS_LOG_FUNCTION(
this << node->GetId() << port);
1447 for (uint32_t i = 0; i < node->GetNApplications(); i++)
1449 auto sink = DynamicCast<PacketSink>(node->GetApplication(i));
1450 if (sink !=
nullptr)
1453 sink->GetAttribute(
"Local", av);
1454 if (InetSocketAddress::ConvertFrom(av.Get()).GetPort() == port)
1469 Config::SetDefault(
"ns3::SatBeamHelper::RandomAccessModel",
1471 Config::SetDefault(
"ns3::SatBeamScheduler::ControlSlotsEnabled", BooleanValue(
true));
1475 Config::SetDefault(
"ns3::SatBeamHelper::RandomAccessModel",
1477 Config::SetDefault(
"ns3::SatBeamScheduler::ControlSlotsEnabled", BooleanValue(
false));
1481 Config::SetDefault(
"ns3::SatBeamHelper::RandomAccessModel",
1483 Config::SetDefault(
"ns3::SatBeamScheduler::ControlSlotsEnabled", BooleanValue(
false));
1484 Config::SetDefault(
"ns3::SatUtHelper::UseCrdsaOnlyForControlPackets", BooleanValue(
false));
1488 NS_FATAL_ERROR(
"Unsupported crTxConf: " << crTxConf);
1497 NS_LOG_FUNCTION(
this << enabledBeams);
1501 std::stringstream bss(enabledBeams);
1510 std::string garbage;
1523 NS_LOG_FUNCTION(
this);
1526 std::stringstream bss;
1527 for (
auto beamId : beamSet)
1529 bss << beamId <<
" ";
1534const std::set<uint32_t>&
1537 NS_LOG_FUNCTION(
this);
1545 NS_LOG_FUNCTION(
this << beamId);
1547 bool beamEnabled =
false;
1560 NS_LOG_FUNCTION(
this << beamId);
1565 return m_utCount.at(beamId)->GetInteger();
1574 NS_LOG_FUNCTION(
this);
1577 NS_LOG_INFO(
" Simulation length: " <<
m_simTime.GetSeconds());
1579 NS_LOG_INFO(
" Number of UTs: " << Singleton<SatTopology>::Get()->GetNGwUserNodes());
1580 NS_LOG_INFO(
" Number of end users: " << Singleton<SatTopology>::Get()->GetNUtUserNodes());
1585 Simulator::Destroy();
1591 NS_LOG_FUNCTION(
this);
1612 NS_LOG_FUNCTION(
this);
1621 NS_LOG_FUNCTION(
this << name);
1627 NS_FATAL_ERROR(
"Scenario in " << path <<
" does not exist");
1636 NS_LOG_FUNCTION(
this);
1641 bool overrideManualConfiguration)
1644 Ptr<SimulationHelperConf> simulationConf = CreateObject<SimulationHelperConf>();
1646 if (overrideManualConfiguration)
1648 SetBeams(simulationConf->m_enabledBeams);
1656 if (simulationConf->m_activateProgressLogging)
1661 Ptr<SatTrafficHelperConf> satTrafficHelperConf =
1663 satTrafficHelperConf->InstallTrafficModels();
1665 if (simulationConf->m_activateStatistics)
1674 NS_LOG_FUNCTION(
this << filePath);
1677 Config::SetDefault(
"ns3::ConfigStore::Filename", StringValue(filePath));
1678 Config::SetDefault(
"ns3::ConfigStore::Mode", StringValue(
"Load"));
1679 Config::SetDefault(
"ns3::ConfigStore::FileFormat", StringValue(
"Xml"));
1680 ConfigStore inputConfig;
1681 inputConfig.ConfigureDefaults();
1687 NS_LOG_FUNCTION(
this);
1689 std::string outputPath;
1693 Config::SetDefault(
"ns3::ConfigStore::Filename", StringValue(outputPath +
"/" + fileName));
1694 Config::SetDefault(
"ns3::ConfigStore::FileFormat", StringValue(
"Xml"));
1695 Config::SetDefault(
"ns3::ConfigStore::Mode", StringValue(
"Save"));
1696 ConfigStore outputConfig;
1697 outputConfig.ConfigureDefaults();
1699 if (outputAttributes)
1701 outputConfig.ConfigureAttributes();
Class that holds information for each beam regarding UTs and their users camped in each beam.
void AppendUt(uint32_t userCount)
Appends new UT to end of the list with given user count for the appended UT.
SatLinkDir_t
Link direction used for packet tracing.
@ RA_MODEL_RCS2_SPECIFICATION
static Ptr< SatEnvVariables > GetInstance()
PreDefinedScenario_t
Values for pre-defined scenarios to be used by helper when building satellite network topology base.
@ LARGER
LARGER Larger scenario used as base.
@ FULL
FULL Full scenario used as base.
@ SIMPLE
SIMPLE Simple scenario used as base.
std::map< std::pair< uint32_t, uint32_t >, SatBeamUserInfo > BeamUserInfoMap_t
definition for beam map key is pair sat ID / beam ID and value is UT/user info.
ErrorModel
Error model enum.
@ RA_COLLISION_CHECK_AGAINST_SINR
@ RA_COLLISION_NOT_DEFINED
InterferenceModel
Interference model enum.
Ptr< RandomVariableStream > m_utCount
Ptr< RandomVariableStream > m_utUserCount
std::string m_enabledBeams
bool m_activateStatistics
Ptr< RandomVariableStream > m_utMobileUserCount
std::string m_mobileUtsFolder
SimulationHelperConf()
Default constructor.
static TypeId GetTypeId(void)
Derived from Object.
bool m_activateProgressLogging
virtual ~SimulationHelperConf()
Destructor.
A helper to make it easier to create example simulation cases.
uint32_t GetNextUtCount(uint32_t beamId=0) const
Get next UT count from internal random variable stream.
Time & GetSimTime()
Get simulation time.
void EnableCrdsa()
Enable CRDSA random access.
Ptr< SatCnoHelper > m_cnoHelper
void ProgressCb()
Callback that prints simulation progress to stdout.
std::string m_simulationName
void SetErrorModel(SatPhyRxCarrierConf::ErrorModel em, double errorRate=0.0)
Set simulation error model.
Ptr< SatTrafficHelper > m_trafficHelper
void SetupOutputPath()
Check if output path has been set.
void SetUserCountPerMobileUt(uint32_t count)
Set user count per mobile UT.
void EnableAcm(SatEnums::SatLinkDir_t dir)
Enable ACM for a simulation direction.
Ptr< SatHelper > GetSatelliteHelper()
If lower layer API access is required, use this to access SatHelper.
void DoDispose(void)
Disposing.
void ParseScenarioFolder()
parse scenario folder to load all variables that can be
SimulationHelper()
Default constructor, which is not used.
void ConfigureFrequencyBands()
Configure the default setting for the forward and return link frequencies.
std::string m_inputFileUtListPositions
virtual ~SimulationHelper()
Destructor.
void DisableAcm(SatEnums::SatLinkDir_t dir)
Disable ACM for a simulation direction.
void ConfigureAttributesFromFile(std::string filePath, bool overrideManualConfiguration=true)
Configure this instance after reading input attributes from XML file.
std::map< uint32_t, Ptr< RandomVariableStream > > m_utCount
Ptr< SatCnoHelper > GetCnoHelper()
Get the C/N0 helper to customize C/N0 on some nodes.
void DisableProgressLogs()
Disables simulation progress logs.
void SetIdealPhyParameterization()
Set ideal channel/physical layer parameterization.
void DisableFca()
Disable free capacity allocation.
Ptr< SatHelper > m_satHelper
Ptr< SatHelper > CreateSatScenario(SatHelper::PreDefinedScenario_t scenario=SatHelper::NONE, const std::string &mobileUtsFolder="")
Create the satellite scenario.
void CreateDefaultRtnLinkStats()
Create stats collectors if needed and set default statistics settings for both RTN link.
Ptr< SatGroupHelper > m_groupHelper
Ptr< SatListPositionAllocator > m_commonUtPositions
void RunSimulation()
Run the simulation.
void SetSimulationTime(double seconds)
Set simulation time in seconds.
void EnableFca()
Enable free capacity allocation.
std::string StoreAttributesToFile(std::string fileName, bool outputAttributes=false)
Store all used attributes.
void SetCrTxConf(CrTxConf_t crTxConf)
void SetGwUserCount(uint32_t gwUserCount)
Set the number of GW users in the scenario.
void EnableOnlyConstantRate(uint32_t rcIndex, double rateKbps)
Enable only CRA for a given RC index.
EventId m_progressReportEvent
void EnableExternalFadingInputTrace()
Enable external fading input.
void EnableOutputTraces()
Enable all output traces.
void ConfigureLinkBudget()
Configure all link budget related attributes.
void EnableSlottedAloha()
Enable slotted ALOHA random access.
void DisableAllCapacityAssignmentCategories()
Disable all capacity allocation categories: CRA/VBDC/RBDC.
void EnableArq(SatEnums::SatLinkDir_t dir)
Enable ARQ.
void ConfigureFrame(uint32_t superFrameId, double bw, double carrierBw, double rollOff, double carrierSpacing, bool isRandomAccess=false)
Configure a frame for a certain superframe id.
void EnableOnlyRbdc(uint32_t rcIndex)
Enable only RBDC for a given RC index.
void EnableOnlyVbdc(uint32_t rcIndex)
Enable only VBDC for a given RC index.
void SetUtPositionAllocatorForBeam(uint32_t beamId, Ptr< SatListPositionAllocator > posAllocator)
Set a list position allocator for UTs of a specific beam.
void SetUtCountPerBeam(uint32_t count)
Set UT count per beam.
Time m_progressUpdateInterval
bool m_progressLoggingEnabled
Ptr< SatTrafficHelper > GetTrafficHelper()
Get the traffic helper to create more complex traffics.
void ReadInputAttributesFromFile(std::string filePath)
Read input attributes from XML file.
void CreateDefaultFwdLinkStats()
Create stats collectors if needed and set default statistics settings for both FWD link.
void DisableRandomAccess()
Disable random access.
void EnablePeriodicalControlSlots(Time periodicity)
Enable periodical control slots.
Ptr< SatStatsHelperContainer > GetStatisticsContainer()
Get the statistics container of this helper.
void EnableRandomAccess()
Enable random access.
void EnableUtListPositionsFromInputFile(std::string inputFile, bool checkBeams=true)
Enable reading UT list positions from input file.
std::set< uint32_t > m_enabledBeams
void SetUserCountPerUt(uint32_t count)
Set user count per UT.
void CreateDefaultStats()
Create stats collectors and set default statistics settings for both FWD and RTN links.
std::string m_simulationTag
void SetOutputPath(std::string path)
Force a output file path to this simulation instead of default satellite/data/sims/.
uint32_t GetNextUtUserCount() const
Get next UT user count from internal random variable stream.
Ptr< SatGroupHelper > GetGroupHelper()
Get the group helper.
void SetInterferenceModel(SatPhyRxCarrierConf::InterferenceModel ifModel, double constantIf=0.0)
Set simulation interference model.
void LoadScenario(std::string name)
Load a scenario from data submodule.
void SetBeams(const std::string &beamList)
Ptr< RandomVariableStream > m_utMobileUserCount
const std::set< uint32_t > & GetBeams()
Get enabled beams in integer format.
bool HasSinkInstalled(Ptr< Node > node, uint16_t port)
Check if node has a PacketSink installed at certain port.
std::map< uint32_t, Ptr< SatListPositionAllocator > > m_utPositionsByBeam
void EnableProgressLogs()
Enables simulation progress logging.
bool m_inputFileUtPositionsCheckBeams
std::string m_scenarioPath
bool IsBeamEnabled(uint32_t beamId) const
Check if a beam is enabled.
void SetCommonUtPositionAllocator(Ptr< SatListPositionAllocator > posAllocator)
Set common UT position allocator for all beams.
void ConfigureFwdLinkBeamHopping()
Configure the beam hopping functionality for the FWD link.
void AddDefaultUiArguments(CommandLine &cmd)
Add default command line arguments for the simulation.
Ptr< SatStatsHelperContainer > m_statContainer
void SetOutputTag(std::string tag)
Set simulation output tag, which is the basename of the directory where output files are stored.
Ptr< RandomVariableStream > m_utUserCount
bool m_randomAccessConfigured
uint32_t m_numberOfConfiguredFrames
static TypeId GetTypeId(void)
Derived from Object.
std::string m_enabledBeamsStr
void SetDefaultValues()
Set default values shared by all examples using SimulationHelper.
void SetBeamSet(std::set< uint32_t > beamSet)
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.