27 #include "../model/satellite-bbframe-conf.h"
28 #include "../model/satellite-enums.h"
29 #include "../model/satellite-link-results.h"
30 #include "../model/satellite-utils.h"
31 #include "../model/satellite-wave-form-conf.h"
33 #include "ns3/boolean.h"
34 #include "ns3/config.h"
37 #include "ns3/satellite-env-variables.h"
38 #include "ns3/singleton.h"
61 virtual void DoRun(
void);
65 : TestCase(
"Test DVB-RCS2 waveform configuration table.")
77 Singleton<SatEnvVariables>::Get()->DoInitialize();
78 Singleton<SatEnvVariables>::Get()->SetOutputVariables(
"test-sat-waveform-conf",
82 std::string path = Singleton<SatEnvVariables>::Get()->GetDataPath() +
"/";
83 std::string folderName =
"scenarios/geo-33E/waveforms";
86 Config::SetDefault(
"ns3::SatWaveformConf::AcmEnabled", BooleanValue(
true));
88 Ptr<SatLinkResultsDvbRcs2> lr = CreateObject<SatLinkResultsDvbRcs2>();
91 Ptr<SatWaveformConf> wf = CreateObject<SatWaveformConf>(path + folderName);
92 wf->InitializeEbNoRequirements(lr);
94 uint32_t refResults[21] = {6, 6, 7, 7, 7, 8, 8, 9, 9, 9, 10,
95 11, 11, 11, 12, 12, 12, 12, 12, 12, 12};
98 double symbolRate(250000);
108 for (
double d = 60.0; d <= 70.0; d += 0.5)
111 double cnoThreshold = std::numeric_limits<double>::quiet_NaN();
113 wf->GetBestWaveformId(SatUtils::DbToLinear(d), symbolRate, wfid, cnoThreshold);
115 NS_TEST_ASSERT_MSG_EQ(success,
true,
"A suitable waveform not found");
116 NS_TEST_ASSERT_MSG_EQ(wfid, refResults[i],
"Not expected waveform id");
119 Singleton<SatEnvVariables>::Get()->DoDispose();
138 virtual void DoRun(
void);
142 : TestCase(
"Test DVB-S2 BBFrame configuration.")
154 Singleton<SatEnvVariables>::Get()->DoInitialize();
155 Singleton<SatEnvVariables>::Get()->SetOutputVariables(
"test-sat-waveform-conf",
"dvbs2",
true);
158 double symbolRate(93750000);
160 Ptr<SatLinkResultsDvbS2> lr = CreateObject<SatLinkResultsDvbS2>();
164 Ptr<SatBbFrameConf> bbFrameConf = CreateObject<SatBbFrameConf>(symbolRate, SatEnums::DVB_S2);
165 bbFrameConf->InitializeCNoRequirements(lr);
167 std::vector<SatEnums::SatModcod_t> modcods;
168 SatEnums::GetAvailableModcodsFwdLink(modcods);
181 std::cout <<
"BBFrame config output: " << std::endl;
182 std::cout <<
"----------------------" << std::endl;
185 for (uint32_t i = 0; i < 1; ++i)
188 for (std::vector<SatEnums::SatModcod_t>::iterator it = modcods.begin(); it != modcods.end();
192 Time l = bbFrameConf->GetBbFrameDuration((*it), frameTypes[i]);
195 uint32_t p = bbFrameConf->GetBbFramePayloadBits(*it, frameTypes[i]);
197 std::cout <<
"MODCOD: " << SatEnums::GetModcodTypeName(*it)
198 <<
", frameType: " << frameTypes[i] <<
", length [s]: " << l.GetSeconds()
199 <<
", payload [b]: " << p << std::endl;
202 Singleton<SatEnvVariables>::Get()->DoDispose();
216 : TestSuite(
"sat-waveform-conf-test", Type::UNIT)
Test case to unit test to create BBFrame conf and its public methods.
virtual ~SatDvbS2BbFrameConfTestCase()
SatDvbS2BbFrameConfTestCase()
SatBbFrameType_t
BB frame type used in DVB-S2 FWD link.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.