27 #include <ns3/satellite-helper.h>
28 #include <ns3/satellite-stats-antenna-gain-helper.h>
29 #include <ns3/satellite-stats-backlogged-request-helper.h>
30 #include <ns3/satellite-stats-beam-service-time-helper.h>
31 #include <ns3/satellite-stats-capacity-request-helper.h>
32 #include <ns3/satellite-stats-carrier-id-helper.h>
33 #include <ns3/satellite-stats-composite-sinr-helper.h>
34 #include <ns3/satellite-stats-delay-helper.h>
35 #include <ns3/satellite-stats-frame-load-helper.h>
36 #include <ns3/satellite-stats-frame-type-usage-helper.h>
37 #include <ns3/satellite-stats-fwd-link-scheduler-symbol-rate-helper.h>
38 #include <ns3/satellite-stats-jitter-helper.h>
39 #include <ns3/satellite-stats-link-delay-helper.h>
40 #include <ns3/satellite-stats-link-jitter-helper.h>
41 #include <ns3/satellite-stats-link-modcod-helper.h>
42 #include <ns3/satellite-stats-link-rx-power-helper.h>
43 #include <ns3/satellite-stats-link-sinr-helper.h>
44 #include <ns3/satellite-stats-marsala-correlation-helper.h>
45 #include <ns3/satellite-stats-packet-collision-helper.h>
46 #include <ns3/satellite-stats-packet-drop-rate-helper.h>
47 #include <ns3/satellite-stats-packet-error-helper.h>
48 #include <ns3/satellite-stats-plt-helper.h>
49 #include <ns3/satellite-stats-queue-helper.h>
50 #include <ns3/satellite-stats-rbdc-request-helper.h>
51 #include <ns3/satellite-stats-resources-granted-helper.h>
52 #include <ns3/satellite-stats-satellite-queue-helper.h>
53 #include <ns3/satellite-stats-signalling-load-helper.h>
54 #include <ns3/satellite-stats-throughput-helper.h>
55 #include <ns3/satellite-stats-waveform-usage-helper.h>
56 #include <ns3/satellite-stats-window-load-helper.h>
57 #include <ns3/string.h>
59 NS_LOG_COMPONENT_DEFINE(
"SatStatsHelperContainer");
64 NS_OBJECT_ENSURE_REGISTERED(SatStatsHelperContainer);
67 : m_satHelper(satHelper)
69 NS_LOG_FUNCTION(
this);
75 NS_LOG_FUNCTION(
this);
132 #define ADD_SAT_STATS_BASIC_OUTPUT_CHECKER \
134 SatStatsHelper::OUTPUT_NONE, "NONE", \
135 SatStatsHelper::OUTPUT_SCALAR_FILE, "SCALAR_FILE", \
136 SatStatsHelper::OUTPUT_SCATTER_FILE, "SCATTER_FILE", \
137 SatStatsHelper::OUTPUT_SCATTER_PLOT, "SCATTER_PLOT"))
139 #define ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER \
141 SatStatsHelper::OUTPUT_NONE, "NONE", \
142 SatStatsHelper::OUTPUT_SCALAR_FILE, "SCALAR_FILE", \
143 SatStatsHelper::OUTPUT_SCATTER_FILE, "SCATTER_FILE", \
144 SatStatsHelper::OUTPUT_HISTOGRAM_FILE, "HISTOGRAM_FILE", \
145 SatStatsHelper::OUTPUT_PDF_FILE, "PDF_FILE", \
146 SatStatsHelper::OUTPUT_CDF_FILE, "CDF_FILE", \
147 SatStatsHelper::OUTPUT_SCATTER_PLOT, "SCATTER_PLOT", \
148 SatStatsHelper::OUTPUT_HISTOGRAM_PLOT, "HISTOGRAM_PLOT", \
149 SatStatsHelper::OUTPUT_PDF_PLOT, "PDF_PLOT", \
150 SatStatsHelper::OUTPUT_CDF_PLOT, "CDF_PLOT"))
152 #define ADD_SAT_STATS_AVERAGED_DISTRIBUTION_OUTPUT_CHECKER \
154 SatStatsHelper::OUTPUT_NONE, "NONE", \
155 SatStatsHelper::OUTPUT_HISTOGRAM_FILE, "HISTOGRAM_FILE", \
156 SatStatsHelper::OUTPUT_PDF_FILE, "PDF_FILE", \
157 SatStatsHelper::OUTPUT_CDF_FILE, "CDF_FILE", \
158 SatStatsHelper::OUTPUT_HISTOGRAM_PLOT, "HISTOGRAM_PLOT", \
159 SatStatsHelper::OUTPUT_PDF_PLOT, "PDF_PLOT", \
160 SatStatsHelper::OUTPUT_CDF_PLOT, "CDF_PLOT"))
162 #define ADD_SAT_STATS_ATTRIBUTE_HEAD(id, desc) \
163 .AddAttribute (# id, \
164 std::string ("Enable the output of ") + desc, \
165 EnumValue (SatStatsHelper::OUTPUT_NONE), \
166 MakeEnumAccessor (&SatStatsHelperContainer::Add ## id),
168 #define ADD_SAT_STATS_ATTRIBUTES_BASIC_SET(id, desc) \
169 ADD_SAT_STATS_ATTRIBUTE_HEAD(Global##id, std::string("global ") + desc) \
170 ADD_SAT_STATS_BASIC_OUTPUT_CHECKER \
171 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerGw##id, std::string("per GW ") + desc) \
172 ADD_SAT_STATS_BASIC_OUTPUT_CHECKER \
173 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerSat##id, std::string("per SAT ") + desc) \
174 ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER \
175 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerBeam##id, std::string("per beam ") + desc) \
176 ADD_SAT_STATS_BASIC_OUTPUT_CHECKER \
177 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerGroup##id, std::string("per group ") + desc) \
178 ADD_SAT_STATS_BASIC_OUTPUT_CHECKER \
179 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerUt##id, std::string("per UT ") + desc) \
180 ADD_SAT_STATS_BASIC_OUTPUT_CHECKER
182 #define ADD_SAT_STATS_ATTRIBUTES_DISTRIBUTION_SET(id, desc) \
183 ADD_SAT_STATS_ATTRIBUTE_HEAD(Global##id, std::string("global ") + desc) \
184 ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER \
185 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerGw##id, std::string("per GW ") + desc) \
186 ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER \
187 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerSat##id, std::string("per SAT ") + desc) \
188 ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER \
189 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerBeam##id, std::string("per beam ") + desc) \
190 ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER \
191 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerGroup##id, std::string("per group ") + desc) \
192 ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER \
193 ADD_SAT_STATS_ATTRIBUTE_HEAD(PerUt##id, std::string("per UT ") + desc) \
194 ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER
196 #define ADD_SAT_STATS_ATTRIBUTES_AVERAGED_DISTRIBUTION_SET(id, desc) \
197 ADD_SAT_STATS_ATTRIBUTE_HEAD(AverageBeam##id, std::string("average beam ") + desc) \
198 ADD_SAT_STATS_AVERAGED_DISTRIBUTION_OUTPUT_CHECKER \
199 ADD_SAT_STATS_ATTRIBUTE_HEAD(AverageGroup##id, std::string("average group ") + desc) \
200 ADD_SAT_STATS_AVERAGED_DISTRIBUTION_OUTPUT_CHECKER \
201 ADD_SAT_STATS_ATTRIBUTE_HEAD(AverageUt##id, std::string("average UT ") + desc) \
202 ADD_SAT_STATS_AVERAGED_DISTRIBUTION_OUTPUT_CHECKER \
203 ADD_SAT_STATS_ATTRIBUTE_HEAD(AverageSat##id, std::string("average SAT ") + desc) \
204 ADD_SAT_STATS_AVERAGED_DISTRIBUTION_OUTPUT_CHECKER
209 static TypeId tid = TypeId (
"ns3::SatStatsHelperContainer")
210 .SetParent<Object> ()
211 .AddAttribute (
"Name",
212 "String to be prepended on every output file name",
213 StringValue (
"stat"),
216 MakeStringChecker ())
220 "forward link application-level delay statistics")
222 "per UT user forward link application-level delay statistics")
225 "forward link application-level delay statistics")
227 "average UT user forward link application-level delay statistics")
232 "forward link device-level delay statistics")
234 "forward link device-level delay statistics")
238 "forward link MAC-level delay statistics")
240 "forward link MAC-level delay statistics")
244 "forward link PHY-level delay statistics")
246 "forward link PHY-level delay statistics")
250 "forward feeder link DEV-level link delay statistics")
252 "forward feeder link DEV-level link delay statistics")
256 "forward user link DEV-level link delay statistics")
258 "forward user link DEV-level link delay statistics")
262 "forward feeder link MAC-level link delay statistics")
264 "forward feeder link MAC-level link delay statistics")
268 "forward user link MAC-level link delay statistics")
270 "forward user link MAC-level link delay statistics")
274 "forward feeder link PHY-level link delay statistics")
276 "forward feeder link PHY-level link delay statistics")
280 "forward user link PHY-level link delay statistics")
282 "forward user link PHY-level link delay statistics")
286 "forward link application-level jitter statistics")
288 "per UT user forward link application-level jitter statistics")
291 "forward link application-level jitter statistics")
293 "average UT user forward link application-level jitter statistics")
298 "forward link device-level jitter statistics")
300 "forward link device-level jitter statistics")
304 "forward link MAC-level jitter statistics")
306 "forward link MAC-level jitter statistics")
310 "forward link PHY-level jitter statistics")
312 "forward link PHY-level jitter statistics")
316 "forward feeder link DEV-level link jitter statistics")
318 "forward feeder link DEV-level link jitter statistics")
322 "forward user link DEV-level link jitter statistics")
324 "forward user link DEV-level link jitter statistics")
328 "forward feeder link MAC-level link jitter statistics")
330 "forward feeder link MAC-level link jitter statistics")
334 "forward user link MAC-level link jitter statistics")
336 "forward user link MAC-level link jitter statistics")
340 "forward feeder link PHY-level link jitter statistics")
342 "forward feeder link PHY-level link jitter statistics")
346 "forward user link PHY-level link jitter statistics")
348 "forward user link PHY-level link jitter statistics")
352 "forward feeder link SINR statistics")
354 "forward feeder link SINR statistics")
358 "forward user link SINR statistics")
360 "forward user link SINR statistics")
364 "return feeder link SINR statistics")
366 "return feeder link SINR statistics")
370 "return user link SINR statistics")
372 "return user link SINR statistics")
376 "forward feeder link RX power statistics")
378 "forward feeder link RX power statistics")
382 "forward user link RX power statistics")
384 "forward user link RX power statistics")
388 "return feeder link RX power statistics")
390 "return feeder link RX power statistics")
394 "return user link RX power statistics")
396 "return user link RX power statistics")
400 "forward feeder link MODCOD statistics")
402 "forward feeder link MODCOD statistics")
406 "forward user link MODCOD statistics")
408 "forward user link MODCOD statistics")
412 "return feeder link MODCOD statistics")
414 "return feeder link MODCOD statistics")
418 "return user link MODCOD statistics")
420 "return user link MODCOD statistics")
424 "forward link application-level PLT statistics")
426 "per UT user forward link application-level PLT statistics")
429 "forward link application-level PLT statistics")
431 "average UT user forward link application-level PLT statistics")
436 "forward link queue size (in bytes) statistics")
440 "forward link queue size (in number of packets) statistics")
444 "forward link signalling load statistics")
448 "forward link composite SINR statistics")
452 "forward link application-level throughput statistics")
454 "per UT user forward link application-level throughput statistics")
457 "forward link application-level throughput statistics")
459 "average UT user forward link application-level throughput statistics")
464 "forward feeder link device-level throughput statistics")
466 "forward feeder link device-level throughput statistics")
470 "forward user link device-level throughput statistics")
472 "forward user link device-level throughput statistics")
476 "forward feeder link MAC-level throughput statistics")
478 "forward feeder link MAC-level throughput statistics")
482 "forward user link MAC-level throughput statistics")
484 "forward user link MAC-level throughput statistics")
488 "forward feeder link PHY-level throughput statistics")
490 "forward feeder link PHY-level throughput statistics")
494 "forward user link PHY-level throughput statistics")
496 "forward user link PHY-level throughput statistics")
500 "return link application-level delay statistics")
502 "per UT user return link application-level delay statistics")
505 "return link application-level delay statistics")
507 "average UT user return link application-level delay statistics")
512 "return link device-level delay statistics")
514 "return link device-level delay statistics")
518 "return link MAC-level delay statistics")
520 "return link MAC-level delay statistics")
524 "return link PHY-level delay statistics")
526 "return link PHY-level delay statistics")
530 "return feeder link DEV-level link delay statistics")
532 "return feeder link DEV-level link delay statistics")
536 "return user link DEV-level link delay statistics")
538 "return user link DEV-level link delay statistics")
542 "return feeder link MAC-level link delay statistics")
544 "return feeder link MAC-level link delay statistics")
548 "return user link MAC-level link delay statistics")
550 "return user link MAC-level link delay statistics")
554 "return feeder link PHY-level link delay statistics")
556 "return feeder link PHY-level link delay statistics")
560 "return user link PHY-level link delay statistics")
562 "return user link PHY-level link delay statistics")
566 "forward feeder link DEV-level link jitter statistics")
568 "forward feeder link DEV-level link jitter statistics")
572 "forward user link DEV-level link jitter statistics")
574 "forward user link DEV-level link jitter statistics")
578 "forward feeder link MAC-level link jitter statistics")
580 "forward feeder link MAC-level link jitter statistics")
584 "forward user link MAC-level link jitter statistics")
586 "forward user link MAC-level link jitter statistics")
590 "forward feeder link PHY-level link jitter statistics")
592 "forward feeder link PHY-level link jitter statistics")
596 "forward user link PHY-level link jitter statistics")
598 "forward user link PHY-level link jitter statistics")
602 "return link application-level jitter statistics")
604 "per UT user return link application-level jitter statistics")
607 "return link application-level jitter statistics")
609 "average UT user return link application-level jitter statistics")
614 "return link device-level jitter statistics")
616 "return link device-level jitter statistics")
620 "return link MAC-level jitter statistics")
622 "return link MAC-level jitter statistics")
626 "return link PHY-level jitter statistics")
628 "return link PHY-level jitter statistics")
632 "return link application-level PLT statistics")
634 "per UT user return link application-level PLT statistics")
637 "return link application-level PLT statistics")
639 "average UT user return link application-level PLT statistics")
644 "return link queue size (in bytes) statistics")
648 "return link queue size (in number of packets) statistics")
652 "return feeder link queue size (in bytes) statistics")
654 "return feeder link queue size (in bytes) statistics")
658 "return feeder link queue size (in number of packets) statistics")
660 "return feeder link queue size (in number of packets) statistics")
664 "forward user link queue size (in bytes) statistics")
666 "forward user link queue size (in bytes) statistics")
670 "forward user link queue size (in number of packets) statistics")
672 "forward user link queue size (in number of packets) statistics")
676 "return link signalling load statistics")
680 "return link composite SINR statistics")
684 "return link application-level throughput statistics")
686 "per UT user return link application-level throughput statistics")
689 "return link application-level throughput statistics")
691 "average UT user return link application-level throughput statistics")
696 "return feeder link device-level throughput statistics")
698 "return feeder link device-level throughput statistics")
702 "return user link device-level throughput statistics")
704 "return user link device-level throughput statistics")
708 "return feeder link MAC-level throughput statistics")
710 "return feeder link MAC-level throughput statistics")
714 "return user link MAC-level throughput statistics")
716 "return user link MAC-level throughput statistics")
720 "return feeder link PHY-level throughput statistics")
722 "return feeder link PHY-level throughput statistics")
726 "return user link PHY-level throughput statistics")
728 "return user link PHY-level throughput statistics")
732 "Forward feeder link Dedicated Access packet error rate statistics")
734 "Forward user link Dedicated Access packet error rate statistics")
738 "Return feeder link Dedicated Access packet error rate statistics")
740 "Return user link Dedicated Access packet error rate statistics")
744 "Feeder link Random Access Slotted ALOHA packet error rate statistics")
746 "User link Random Access Slotted ALOHA packet error rate statistics")
750 "Random Access Feeder Slotted ALOHA packet collision rate statistics")
752 "Random Access User Slotted ALOHA packet collision rate statistics")
756 "Feeder link Random Access CRDSA packet error rate statistics")
758 "User link Random Access CRDSA packet error rate statistics")
762 "Random Access Feeder CRDSA packet collision rate statistics")
764 "Random Access User CRDSA packet collision rate statistics")
768 "Feeder link Random Access E-SSA packet error rate statistics")
770 "User link Random Access E-SSA packet error rate statistics")
774 "Random Access Feeder E-SSA packet collision rate statistics")
776 "Random Access User E-SSA packet collision rate statistics")
780 "global capacity request statistics")
784 "per GW capacity request statistics")
788 "per beam capacity request statistics")
792 "per group capacity request statistics")
796 "per UT capacity request statistics")
802 "resources granted statistics")
806 "global backlogged request statistics")
810 "per GW backlogged request statistics")
814 "per beam backlogged request statistics")
820 "global frame load (in ratio of allocated symbols) statistics")
824 "per GW frame load (in ratio of allocated symbols) statistics")
828 "per beam frame load (in ratio of allocated symbols) statistics")
832 "global frame load (in number of scheduled users) statistics")
836 "per GW frame load (in number of scheduled users) statistics")
840 "per UT frame load (in number of scheduled users) statistics")
846 "global waveform usage statistics")
850 "per GW waveform usage statistics")
854 "per beam waveform usage statistics")
860 "global return feeder window load statistics")
863 "per gw return feeder window load statistics")
866 "per beam return feeder window load statistics")
871 "global frame type usage statistics")
875 "per GW frame type usage statistics")
879 "per beam frame type usage statistics")
885 "per beam service time statistics")
895 NS_LOG_FUNCTION(
this << name);
898 for (
size_t pos = name.find_first_of(
" /"); pos != std::string::npos;
899 pos = name.find_first_of(
" /", pos + 1, 1))
968 #define SAT_STATS_GLOBAL_METHOD_DEFINITION(id, name) \
969 void SatStatsHelperContainer::AddGlobal##id(SatStatsHelper::OutputType_t type) \
971 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
972 std::string statName = m_name + "-global-" + name + GetOutputTypeSuffix(type); \
973 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
975 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
976 stat->SetName(statName); \
977 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_GLOBAL); \
978 stat->SetOutputType(type); \
980 m_stats.push_back(stat); \
981 m_names.insert(statName); \
985 #define SAT_STATS_PER_GW_METHOD_DEFINITION(id, name) \
986 void SatStatsHelperContainer::AddPerGw##id(SatStatsHelper::OutputType_t type) \
988 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
989 std::string statName = m_name + "-per-gw-" + name + GetOutputTypeSuffix(type); \
990 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
992 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
993 stat->SetName(statName); \
994 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_GW); \
995 stat->SetOutputType(type); \
997 m_stats.push_back(stat); \
998 m_names.insert(statName); \
1002 #define SAT_STATS_PER_BEAM_METHOD_DEFINITION(id, name) \
1003 void SatStatsHelperContainer::AddPerBeam##id(SatStatsHelper::OutputType_t type) \
1005 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1006 std::string statName = m_name + "-per-beam-" + name + GetOutputTypeSuffix(type); \
1007 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1009 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1010 stat->SetName(statName); \
1011 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_BEAM); \
1012 stat->SetOutputType(type); \
1014 m_stats.push_back(stat); \
1015 m_names.insert(statName); \
1019 #define SAT_STATS_PER_GROUP_METHOD_DEFINITION(id, name) \
1020 void SatStatsHelperContainer::AddPerGroup##id(SatStatsHelper::OutputType_t type) \
1022 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1023 std::string statName = m_name + "-per-group-" + name + GetOutputTypeSuffix(type); \
1024 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1026 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1027 stat->SetName(statName); \
1028 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_GROUP); \
1029 stat->SetOutputType(type); \
1031 m_stats.push_back(stat); \
1032 m_names.insert(statName); \
1036 #define SAT_STATS_PER_UT_METHOD_DEFINITION(id, name) \
1037 void SatStatsHelperContainer::AddPerUt##id(SatStatsHelper::OutputType_t type) \
1039 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1040 std::string statName = m_name + "-per-ut-" + name + GetOutputTypeSuffix(type); \
1041 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1043 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1044 stat->SetName(statName); \
1045 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_UT); \
1046 stat->SetOutputType(type); \
1048 m_stats.push_back(stat); \
1049 m_names.insert(statName); \
1053 #define SAT_STATS_PER_UT_USER_METHOD_DEFINITION(id, name) \
1054 void SatStatsHelperContainer::AddPerUtUser##id(SatStatsHelper::OutputType_t type) \
1056 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1057 std::string statName = m_name + "-per-ut-user-" + name + GetOutputTypeSuffix(type); \
1058 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1060 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1061 stat->SetName(statName); \
1062 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_UT_USER); \
1063 stat->SetOutputType(type); \
1065 m_stats.push_back(stat); \
1066 m_names.insert(statName); \
1070 #define SAT_STATS_AVERAGE_BEAM_METHOD_DEFINITION(id, name) \
1071 void SatStatsHelperContainer::AddAverageBeam##id(SatStatsHelper::OutputType_t type) \
1073 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1074 std::string statName = m_name + "-average-beam-" + name + GetOutputTypeSuffix(type); \
1075 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1077 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1078 stat->SetName(statName); \
1079 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_BEAM); \
1080 stat->SetOutputType(type); \
1081 stat->SetAveragingMode(true); \
1083 m_stats.push_back(stat); \
1084 m_names.insert(statName); \
1088 #define SAT_STATS_AVERAGE_GROUP_METHOD_DEFINITION(id, name) \
1089 void SatStatsHelperContainer::AddAverageGroup##id(SatStatsHelper::OutputType_t type) \
1091 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1092 std::string statName = m_name + "-average-group-" + name + GetOutputTypeSuffix(type); \
1093 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1095 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1096 stat->SetName(statName); \
1097 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_GROUP); \
1098 stat->SetOutputType(type); \
1099 stat->SetAveragingMode(true); \
1101 m_stats.push_back(stat); \
1102 m_names.insert(statName); \
1106 #define SAT_STATS_AVERAGE_UT_METHOD_DEFINITION(id, name) \
1107 void SatStatsHelperContainer::AddAverageUt##id(SatStatsHelper::OutputType_t type) \
1109 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1110 std::string statName = m_name + "-average-ut-" + name + GetOutputTypeSuffix(type); \
1111 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1113 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1114 stat->SetName(statName); \
1115 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_UT); \
1116 stat->SetOutputType(type); \
1117 stat->SetAveragingMode(true); \
1119 m_stats.push_back(stat); \
1120 m_names.insert(statName); \
1124 #define SAT_STATS_AVERAGE_UT_USER_METHOD_DEFINITION(id, name) \
1125 void SatStatsHelperContainer::AddAverageUtUser##id(SatStatsHelper::OutputType_t type) \
1127 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1128 std::string statName = m_name + "-average-ut-user-" + name + GetOutputTypeSuffix(type); \
1129 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1131 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1132 stat->SetName(statName); \
1133 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_UT_USER); \
1134 stat->SetOutputType(type); \
1135 stat->SetAveragingMode(true); \
1137 m_stats.push_back(stat); \
1138 m_names.insert(statName); \
1142 #define SAT_STATS_AVERAGE_SAT_METHOD_DEFINITION(id, name) \
1143 void SatStatsHelperContainer::AddAverageSat##id(SatStatsHelper::OutputType_t type) \
1145 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1146 std::string statName = m_name + "-average-sat-" + name + GetOutputTypeSuffix(type); \
1147 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1149 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1150 stat->SetName(statName); \
1151 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_SAT); \
1152 stat->SetOutputType(type); \
1153 stat->SetAveragingMode(true); \
1155 m_stats.push_back(stat); \
1156 m_names.insert(statName); \
1160 #define SAT_STATS_PER_SLICE_METHOD_DEFINITION(id, name) \
1161 void SatStatsHelperContainer::AddPerSlice##id(SatStatsHelper::OutputType_t type) \
1163 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1164 std::string statName = m_name + "-per-slice-" + name + GetOutputTypeSuffix(type); \
1165 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1167 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1168 stat->SetName(statName); \
1169 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_SLICE); \
1170 stat->SetOutputType(type); \
1172 m_stats.push_back(stat); \
1173 m_names.insert(statName); \
1177 #define SAT_STATS_PER_SAT_METHOD_DEFINITION(id, name) \
1178 void SatStatsHelperContainer::AddPerSat##id(SatStatsHelper::OutputType_t type) \
1180 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1181 std::string statName = m_name + "-per-sat-" + name + GetOutputTypeSuffix(type); \
1182 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1184 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1185 stat->SetName(statName); \
1186 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_SAT); \
1187 stat->SetOutputType(type); \
1189 m_stats.push_back(stat); \
1190 m_names.insert(statName); \
1194 #define SAT_STATS_PER_ISL_METHOD_DEFINITION(id, name) \
1195 void SatStatsHelperContainer::AddPerIsl##id(SatStatsHelper::OutputType_t type) \
1197 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1198 std::string statName = m_name + "-per-isl-" + name + GetOutputTypeSuffix(type); \
1199 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1201 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1202 stat->SetName(statName); \
1203 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_ISL); \
1204 stat->SetOutputType(type); \
1206 m_stats.push_back(stat); \
1207 m_names.insert(statName); \
1211 #define SAT_STATS_AVERAGE_ISL_METHOD_DEFINITION(id, name) \
1212 void SatStatsHelperContainer::AddAverageIsl##id(SatStatsHelper::OutputType_t type) \
1214 NS_LOG_FUNCTION(this << SatStatsHelper::GetOutputTypeName(type)); \
1215 std::string statName = m_name + "-average-isl-" + name + GetOutputTypeSuffix(type); \
1216 if (type != SatStatsHelper::OUTPUT_NONE && m_names.count(statName) == 0) \
1218 Ptr<SatStats##id##Helper> stat = CreateObject<SatStats##id##Helper>(m_satHelper); \
1219 stat->SetName(statName); \
1220 stat->SetIdentifierType(SatStatsHelper::IDENTIFIER_ISL); \
1221 stat->SetOutputType(type); \
1222 stat->SetAveragingMode(true); \
1224 m_stats.push_back(stat); \
1225 m_names.insert(statName); \
2079 "feeder-slotted-aloha-collision")
2081 "feeder-slotted-aloha-collision")
2083 "feeder-slotted-aloha-collision")
2085 "feeder-slotted-aloha-collision")
2087 "feeder-slotted-aloha-collision")
2089 "feeder-slotted-aloha-collision")
2095 "user-slotted-aloha-collision")
2097 "user-slotted-aloha-collision")
2420 return "-histogram";
2431 NS_FATAL_ERROR(
"SatStatsHelperContainer - Invalid output type");
2435 NS_FATAL_ERROR(
"SatStatsHelperContainer - Invalid output type");
Container of SatStatsHelper instances.
static TypeId GetTypeId()
inherited from ObjectBase base class
SatStatsHelperContainer(Ptr< const SatHelper > satHelper)
Creates a new instance of container.
virtual void DoDispose()
Inherited from Object base class.
std::string GetName() const
std::string m_name
Prefix of every SatStatsHelper instance names and every output file.
void SetName(std::string name)
Parent abstract class of all satellite statistics helpers.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.
SAT_STATS_GLOBAL_METHOD_DEFINITION(FeederSlottedAlohaPacketCollision, "feeder-slotted-aloha-collision") SAT_STATS_PER_GW_METHOD_DEFINITION(FeederSlottedAlohaPacketCollision
feeder slotted aloha collision SAT_STATS_PER_BEAM_METHOD_DEFINITION(FeederSlottedAlohaPacketCollision, "feeder-slotted-aloha-collision") SAT_STATS_PER_GROUP_METHOD_DEFINITION(FeederSlottedAlohaPacketCollision
feeder slotted aloha collision feeder slotted aloha collision SAT_STATS_PER_UT_METHOD_DEFINITION(FeederSlottedAlohaPacketCollision, "feeder-slotted-aloha-collision") SAT_STATS_PER_SAT_METHOD_DEFINITION(FeederSlottedAlohaPacketCollision
#define SAT_STATS_AVERAGE_GROUP_METHOD_DEFINITION(id, name)
#define SAT_STATS_PER_UT_USER_METHOD_DEFINITION(id, name)
#define SAT_STATS_AVERAGE_UT_METHOD_DEFINITION(id, name)
#define ADD_SAT_STATS_AVERAGED_DISTRIBUTION_OUTPUT_CHECKER
#define ADD_SAT_STATS_ATTRIBUTES_DISTRIBUTION_SET(id, desc)
#define ADD_SAT_STATS_ATTRIBUTE_HEAD(id, desc)
#define SAT_STATS_PER_ISL_METHOD_DEFINITION(id, name)
#define ADD_SAT_STATS_ATTRIBUTES_AVERAGED_DISTRIBUTION_SET(id, desc)
#define SAT_STATS_PER_GROUP_METHOD_DEFINITION(id, name)
#define ADD_SAT_STATS_ATTRIBUTES_BASIC_SET(id, desc)
#define SAT_STATS_PER_GW_METHOD_DEFINITION(id, name)
#define ADD_SAT_STATS_DISTRIBUTION_OUTPUT_CHECKER
#define ADD_SAT_STATS_BASIC_OUTPUT_CHECKER
#define SAT_STATS_PER_SAT_METHOD_DEFINITION(id, name)
#define SAT_STATS_AVERAGE_BEAM_METHOD_DEFINITION(id, name)
#define SAT_STATS_PER_SLICE_METHOD_DEFINITION(id, name)
#define SAT_STATS_AVERAGE_SAT_METHOD_DEFINITION(id, name)
#define SAT_STATS_AVERAGE_UT_USER_METHOD_DEFINITION(id, name)