satellite-link-results.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2013 Magister Solutions
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Budiarto Herman <budiarto.herman@magister.fi>
19  *
20  */
21 
22 #ifndef SATELLITE_LINK_RESULTS_H
23 #define SATELLITE_LINK_RESULTS_H
24 
25 #include "satellite-enums.h"
28 
29 #include <ns3/object.h>
30 #include <ns3/ptr.h>
31 
32 #include <map>
33 #include <stdint.h>
34 #include <string>
35 
36 namespace ns3
37 {
38 
57 class SatLinkResults : public Object
58 {
59  public:
64 
69  static TypeId GetTypeId();
70 
78  void Initialize();
79 
80  protected:
89  virtual void DoInitialize() = 0;
90 
95  std::string m_inputPath;
96 
101 };
102 
114 {
115  public:
120 
122  {
123  }
124 
129  static TypeId GetTypeId();
130 
141  double GetBler(uint32_t waveformId, double ebNoDb) const;
142 
153  double GetEbNoDb(uint32_t waveformId, double blerTarget) const;
154 
155  protected:
159  virtual void DoInitialize() = 0;
160 
166  std::map<uint32_t, Ptr<SatLookUpTable>> m_table;
167 };
168 
180 {
181  public:
186 
188  {
189  }
190 
195  static TypeId GetTypeId();
196 
197  protected:
201  virtual void DoInitialize();
202 };
203 
215 {
216  public:
221 
223  {
224  }
225 
230  static TypeId GetTypeId();
231 
237  inline double GetNormalizedSymbolInformation(double snirDb) const
238  {
239  return m_mutualInformationTable->GetNormalizedSymbolInformation(snirDb);
240  }
241 
247  inline double GetSnirDb(double symbolInformationTarget) const
248  {
249  return m_mutualInformationTable->GetSnirDb(symbolInformationTarget);
250  }
251 
255  inline Ptr<SatMutualInformationTable> GetMutualInformationTable() const
256  {
258  }
259 
260  protected:
264  void DoInitialize();
265 
266  private:
270  Ptr<SatMutualInformationTable> m_mutualInformationTable;
271 };
272 
284 {
285  public:
290 
292  {
293  }
294 
299  static TypeId GetTypeId();
300 
306  inline double GetNormalizedSymbolInformation(double snirDb) const
307  {
308  return m_mutualInformationTable->GetNormalizedSymbolInformation(snirDb);
309  }
310 
316  inline double GetSnirDb(double symbolInformationTarget) const
317  {
318  return m_mutualInformationTable->GetSnirDb(symbolInformationTarget);
319  }
320 
324  inline Ptr<SatMutualInformationTable> GetMutualInformationTable() const
325  {
327  }
328 
329  protected:
333  void DoInitialize();
334 
335  private:
339  Ptr<SatMutualInformationTable> m_mutualInformationTable;
340 };
341 
355 {
356  public:
361 
363  {
364  }
365 
370  static TypeId GetTypeId();
371 
383  double GetBler(SatEnums::SatModcod_t modcod,
384  SatEnums::SatBbFrameType_t frameType,
385  double esNoDb) const;
386 
398  double GetEsNoDb(SatEnums::SatModcod_t modcod,
399  SatEnums::SatBbFrameType_t frameType,
400  double blerTarget) const;
401 
402  protected:
411  virtual void DoInitialize() = 0;
412 
418  std::map<SatEnums::SatModcod_t, Ptr<SatLookUpTable>> m_table;
419 
421 };
422 
434 {
435  public:
440 
442  {
443  }
444 
449  static TypeId GetTypeId();
450 
451  private:
455  void DoInitialize();
456 };
457 
469 {
470  public:
475 
477  {
478  }
479 
484  static TypeId GetTypeId();
485 
486  private:
490  void DoInitialize();
491 };
492 
493 } // end of namespace ns3
494 
495 #endif /* SATELLITE_LINK_RESULTS_H */
SatBbFrameType_t
BB frame type used in DVB-S2 FWD link.
SatModcod_t
Modulation scheme and coding rate for DVB-S2.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.