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 
34 namespace ns3
35 {
36 
55 class SatLinkResults : public Object
56 {
57  public:
62 
67  static TypeId GetTypeId();
68 
76  void Initialize();
77 
78  protected:
87  virtual void DoInitialize() = 0;
88 
93  std::string m_inputPath;
94 
99 };
100 
112 {
113  public:
118 
120  {
121  }
122 
127  static TypeId GetTypeId();
128 
139  double GetBler(uint32_t waveformId, double ebNoDb) const;
140 
151  double GetEbNoDb(uint32_t waveformId, double blerTarget) const;
152 
153  protected:
157  virtual void DoInitialize() = 0;
158 
164  std::map<uint32_t, Ptr<SatLookUpTable>> m_table;
165 };
166 
178 {
179  public:
184 
186  {
187  }
188 
193  static TypeId GetTypeId();
194 
195  protected:
199  virtual void DoInitialize();
200 };
201 
213 {
214  public:
219 
221  {
222  }
223 
228  static TypeId GetTypeId();
229 
235  inline double GetNormalizedSymbolInformation(double snirDb) const
236  {
237  return m_mutualInformationTable->GetNormalizedSymbolInformation(snirDb);
238  }
239 
245  inline double GetSnirDb(double symbolInformationTarget) const
246  {
247  return m_mutualInformationTable->GetSnirDb(symbolInformationTarget);
248  }
249 
253  inline Ptr<SatMutualInformationTable> GetMutualInformationTable() const
254  {
256  }
257 
258  protected:
262  void DoInitialize();
263 
264  private:
268  Ptr<SatMutualInformationTable> m_mutualInformationTable;
269 };
270 
282 {
283  public:
288 
290  {
291  }
292 
297  static TypeId GetTypeId();
298 
304  inline double GetNormalizedSymbolInformation(double snirDb) const
305  {
306  return m_mutualInformationTable->GetNormalizedSymbolInformation(snirDb);
307  }
308 
314  inline double GetSnirDb(double symbolInformationTarget) const
315  {
316  return m_mutualInformationTable->GetSnirDb(symbolInformationTarget);
317  }
318 
322  inline Ptr<SatMutualInformationTable> GetMutualInformationTable() const
323  {
325  }
326 
327  protected:
331  void DoInitialize();
332 
333  private:
337  Ptr<SatMutualInformationTable> m_mutualInformationTable;
338 };
339 
353 {
354  public:
359 
361  {
362  }
363 
368  static TypeId GetTypeId();
369 
381  double GetBler(SatEnums::SatModcod_t modcod,
382  SatEnums::SatBbFrameType_t frameType,
383  double esNoDb) const;
384 
396  double GetEsNoDb(SatEnums::SatModcod_t modcod,
397  SatEnums::SatBbFrameType_t frameType,
398  double blerTarget) const;
399 
400  protected:
409  virtual void DoInitialize() = 0;
410 
416  std::map<SatEnums::SatModcod_t, Ptr<SatLookUpTable>> m_table;
417 
419 };
420 
432 {
433  public:
438 
440  {
441  }
442 
447  static TypeId GetTypeId();
448 
449  private:
453  void DoInitialize();
454 };
455 
467 {
468  public:
473 
475  {
476  }
477 
482  static TypeId GetTypeId();
483 
484  private:
488  void DoInitialize();
489 };
490 
491 } // end of namespace ns3
492 
493 #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.