WSF
WsfCommMediumUnguided.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2019 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFCOMMMEDIUMUNGUIDED_HPP
13#define WSFCOMMMEDIUMUNGUIDED_HPP
14
15#include "wsf_export.h"
16
17#include "UtTable.hpp"
20
21namespace wsf
22{
23namespace comm
24{
25
26class Result;
27
28namespace medium
29{
30
33{
34public:
35 ModeUnguided() = default;
36 ModeUnguided(const std::string& aName)
37 : ModeGuided(aName)
38 {
39 }
40 ~ModeUnguided() override = default;
41 ModeUnguided(const ModeUnguided& aSrc) = default;
42 ModeUnguided* Clone() const override { return new ModeUnguided(*this); }
43
44 const char* GetScriptClassName() const override { return "WsfCommMediumModeUnguided"; }
45
46 bool ProcessInput(UtInput& aInput) override;
47 double GetTransmissionTime(double aSimTime, Comm& aXmtr, Layer* aLayerPtr, Message& aMessage) override;
48
51 double GetErrorCorrection() const { return mErrorCorrection; }
52 bool GetUseBER_EbNoTable() const { return mUseBER_EbNoTable; }
53
54protected:
55 virtual double CalculateTransferRate(Result& aResult, bool aCanSend);
56
59 UtTable::Curve mSNR_XferRateTable{};
60
63
66
68 double mErrorCorrection{1.0};
69
71 UtTable::Curve mBER_EbNoTable{};
72
74 bool mUseBER_EbNoTable{false};
75};
76
79{
80public:
81 ScriptMediumModeUnguidedClass(const std::string& aClassName, UtScriptTypes* aScriptTypesPtr);
82
83 ~ScriptMediumModeUnguidedClass() override = default;
84
85 UT_DECLARE_SCRIPT_METHOD(GetUseXferRateTable);
86 UT_DECLARE_SCRIPT_METHOD(GetBitErrorProbability);
87 UT_DECLARE_SCRIPT_METHOD(GetErrorCorrection);
88 UT_DECLARE_SCRIPT_METHOD(GetUseBER_EbNoTable);
89};
90
96{
97public:
98 static void RegisterFactory(Types& aTypes);
99
100 Unguided(WsfScenario& aScenario);
101 ~Unguided() override = default;
102
103 const char* GetScriptClassName() const override { return "WsfMediumUnguided"; }
105 Unguided* Clone() const override;
106 bool ProcessInput(UtInput& aInput) override;
107
108 std::unique_ptr<Mode> CreateDefaultMode() const override { return ut::make_unique<ModeUnguided>(); }
109
110 TransmissionResult TransmitMessage(double aSimTime, Layer* aLayerPtr, Message& aMessage, Comm& aXmtr) override;
111
113 void EndTransmission(double aSimTime, MessageStatus& aMessageStatus, const Message::Identifier& aIdentifier) override;
114
115 void EndPropagation(double aSimTime, MessageStatus& aMessageStatus, const Message::Identifier& aIdentifier) override;
116};
117
119
120} // namespace medium
121} // namespace comm
122} // namespace wsf
123
124#endif
#define WSF_COMM_MEDIUM_DECLARE_ROLE_TYPE(TYPE, ROLE)
Definition WsfCommMediumTypeIdentifier.hpp:34
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfComm.hpp:43
Definition WsfCommLayer.hpp:40
Definition WsfCommMessage.hpp:95
Definition WsfCommMessage.hpp:51
Definition WsfCommResult.hpp:34
Guided(WsfScenario &aScenario)
Definition WsfCommMediumGuided.cpp:191
void EndTransmission(double aSimTime, const Message::Identifier &aIdentifier) final
Definition WsfCommMediumGuided.cpp:310
Definition WsfCommMediumMessageStatus.hpp:35
bool GetUseBER_EbNoTable() const
Definition WsfCommMediumUnguided.hpp:52
ModeUnguided * Clone() const override
Definition WsfCommMediumUnguided.hpp:42
double GetErrorCorrection() const
Definition WsfCommMediumUnguided.hpp:51
UtTable::Curve mBER_EbNoTable
A table that defines the value of Eb/No versus the Bit Error Rate.
Definition WsfCommMediumUnguided.hpp:71
~ModeUnguided() override=default
bool mUseSNR_XferRateTable
When set to true, the medium will utilize the mSNR_XferRateTable to determine transfer rate.
Definition WsfCommMediumUnguided.hpp:62
double mBitErrorProbability
The expectation value of the BER (bit error rate) in a message, entered as percentage.
Definition WsfCommMediumUnguided.hpp:65
ModeUnguided(const std::string &aName)
Definition WsfCommMediumUnguided.hpp:36
double mErrorCorrection
The value of the Forward Error Correction (FEC) applied to a message to adjust BER and Eb/No,...
Definition WsfCommMediumUnguided.hpp:68
bool mUseBER_EbNoTable
When set to true, the medium will use the mBER_EbNoTable to determine the message transfer rate.
Definition WsfCommMediumUnguided.hpp:74
bool GetUseXferRateTable() const
Definition WsfCommMediumUnguided.hpp:49
const char * GetScriptClassName() const override
Definition WsfCommMediumUnguided.hpp:44
UtTable::Curve mSNR_XferRateTable
Definition WsfCommMediumUnguided.hpp:59
double GetBitErrorProbability() const
Definition WsfCommMediumUnguided.hpp:50
ModeUnguided(const ModeUnguided &aSrc)=default
ScriptMediumModeGuidedClass(const std::string &aClassName, UtScriptTypes *aScriptTypesPtr)
Definition WsfCommMediumGuided.cpp:159
ScriptMediumModeUnguidedClass(const std::string &aClassName, UtScriptTypes *aScriptTypesPtr)
Definition WsfCommMediumUnguided.cpp:214
Definition WsfCommMediumTypes.hpp:40
Definition WsfCommMediumUnguided.hpp:96
std::unique_ptr< Mode > CreateDefaultMode() const override
Definition WsfCommMediumUnguided.hpp:108
const char * GetScriptClassName() const override
Definition WsfCommMediumUnguided.hpp:103
Unguided(WsfScenario &aScenario)
Definition WsfCommMediumUnguided.cpp:250
static void RegisterFactory(Types &aTypes)
Definition WsfCommMediumUnguided.cpp:261
~Unguided() override=default
TypeIdentifier GetMediumIdentifier() const override
Definition WsfCommMediumUnguided.hpp:104
Definition WsfCommMedium.cpp:31
TypeIdentifier
Definition WsfCommMediumTypeIdentifier.hpp:50
@ cUNGUIDED
Definition WsfCommMediumTypeIdentifier.hpp:53
TransmissionResult
Definition WsfCommMedium.hpp:48
Definition WsfComm.cpp:34
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved