Loading...
Searching...
No Matches
satellite-gw-helper.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 Ltd
4 * Copyright (c) 2018 CNES
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation;
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * Author: Sami Rantanen <sami.rantanen@magister.fi>
20 * Author: Mathias Ettinger <mettinger@viveris.toulouse.fr>
21 */
22
23#ifndef SATELLITE_GW_HELPER_H
24#define SATELLITE_GW_HELPER_H
25
26#include "ns3/net-device-container.h"
27#include "ns3/node-container.h"
28#include "ns3/object-factory.h"
29#include "ns3/satellite-bbframe-conf.h"
30#include "ns3/satellite-channel.h"
31#include "ns3/satellite-link-results.h"
32#include "ns3/satellite-mac.h"
33#include "ns3/satellite-ncc.h"
34#include "ns3/satellite-superframe-sequence.h"
35#include "ns3/satellite-typedefs.h"
36#include "ns3/traced-callback.h"
37
38#include <stdint.h>
39#include <string>
40
41namespace ns3
42{
43
44class OutputStreamWrapper;
45
51class SatGwHelper : public Object
52{
53 public:
65
70 static TypeId GetTypeId(void);
71
76
82 uint32_t fwdLinkCarrierCount,
83 Ptr<SatSuperframeSeq> seq,
87 RandomAccessSettings_s randomAccessSettings);
88
89 virtual ~SatGwHelper()
90 {
91 }
92
93 /*
94 * Initializes the GW helper based on attributes
95 * @param lrRcs2 return link results
96 * @param lrFwd DVB-S2 or DVB-S2X link results
97 * @param dvbVersion The DVB version chosen
98 * @param useScpc Use SCPC on return feeder (and then lrFwd link results)
99 */
100 void Initialize(Ptr<SatLinkResultsRtn> lrRcs2,
101 Ptr<SatLinkResultsFwd> lrFwd,
102 SatEnums::DvbVersion_t dvbVersion,
103 bool useScpc);
104
110 Ptr<SatBbFrameConf> GetBbFrameConf() const;
111
122 void SetDeviceAttribute(std::string name, const AttributeValue& value);
123
134 void SetChannelAttribute(std::string name, const AttributeValue& value);
135
145 void SetPhyAttribute(std::string name, const AttributeValue& value);
146
165 NetDeviceContainer Install(NodeContainer c,
166 uint32_t gwId,
167 uint32_t satId,
168 uint32_t beamId,
169 uint32_t feederSatId,
170 uint32_t feederBeamId,
171 Ptr<SatChannel> fCh,
172 Ptr<SatChannel> rCh,
174 Ptr<SatNcc> ncc,
175 Ptr<SatLowerLayerServiceConf> llsConf);
176
191 virtual Ptr<NetDevice> Install(Ptr<Node> n,
192 uint32_t gwId,
193 uint32_t satId,
194 uint32_t beamId,
195 uint32_t feederSatId,
196 uint32_t feederBeamId,
197 Ptr<SatChannel> fCh,
198 Ptr<SatChannel> rCh,
200 Ptr<SatNcc> ncc,
201 Ptr<SatLowerLayerServiceConf> llsConf) = 0;
202
208 void EnableCreationTraces(Ptr<OutputStreamWrapper> stream, CallbackBase& cb);
209
210 protected:
213 Ptr<SatSuperframeSeq> m_superframeSeq;
214
215 Ptr<SatBbFrameConf> m_bbFrameConf;
216
217 // The control message container callbacks
221
222 ObjectFactory m_channelFactory;
223 ObjectFactory m_deviceFactory;
224
225 /*
226 * Configured dedicated access interference model for the return link. Set as an attribute.
227 */
229
230 /*
231 * Configured error model for the return link. Set as an attribute.
232 */
234
235 /*
236 * Constant error rate for dedicated access in the RTN link.
237 */
239
240 /*
241 * Return channel link results (DVB-RCS2) are created if ErrorModel
242 * is configured to be AVI. Note, that only one instance of the
243 * link results is needed for all GWs.
244 */
245 Ptr<SatLinkResults> m_linkResults;
246
250 TracedCallback<std::string> m_creationTrace;
251
253
259
264
269};
270
271} // namespace ns3
272
273#endif /* SATELLITE_GW_HELPER_H */
FwdSchedulingAlgorithm_t
The scheduling algorithm used to fill the BBFrames.
RandomAccessModel_t
The defined random access models.
DvbVersion_t
The scheduling algorithm used to fill the BBFrames.
Ptr< SatSuperframeSeq > m_superframeSeq
SatPhy::ErrorModel m_errorModel
virtual Ptr< NetDevice > Install(Ptr< Node > n, uint32_t gwId, uint32_t satId, uint32_t beamId, uint32_t feederSatId, uint32_t feederBeamId, Ptr< SatChannel > fCh, Ptr< SatChannel > rCh, SatPhy::ChannelPairGetterCallback cbChannel, Ptr< SatNcc > ncc, Ptr< SatLowerLayerServiceConf > llsConf)=0
ObjectFactory m_channelFactory
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
void Initialize(Ptr< SatLinkResultsRtn > lrRcs2, Ptr< SatLinkResultsFwd > lrFwd, SatEnums::DvbVersion_t dvbVersion, bool useScpc)
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
void SetPhyAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Phy created by the helper.
static TypeId GetTypeId(void)
Get the type ID.
SatMac::SendCtrlMsgCallback m_sendCtrlCb
RandomAccessSettings_s m_raSettings
The used random access model settings.
TracedCallback< std::string > m_creationTrace
Trace callback for creation traces.
void EnableCreationTraces(Ptr< OutputStreamWrapper > stream, CallbackBase &cb)
Enables creation traces to be written in given file.
SatEnums::FwdSchedulingAlgorithm_t m_fwdSchedulingAlgorithm
The forward link algorithm used.
bool m_enableChannelEstimationError
Enable channel estimation error modeling at forward link receiver (= UT).
Ptr< SatBbFrameConf > GetBbFrameConf() const
Get BB frame configuration.
SatMac::ReadCtrlMsgCallback m_readCtrlCb
ObjectFactory m_deviceFactory
Ptr< SatBbFrameConf > m_bbFrameConf
Ptr< SatLinkResults > m_linkResults
SatMac::ReserveCtrlMsgCallback m_reserveCtrlCb
SatGwHelper()
Default constructor.
SatPhy::InterferenceModel m_daInterferenceModel
SatTypedefs::CarrierBandwidthConverter_t m_carrierBandwidthConverter
NetDeviceContainer Install(NodeContainer c, uint32_t gwId, uint32_t satId, uint32_t beamId, uint32_t feederSatId, uint32_t feederBeamId, Ptr< SatChannel > fCh, Ptr< SatChannel > rCh, SatPhy::ChannelPairGetterCallback cbChannel, Ptr< SatNcc > ncc, Ptr< SatLowerLayerServiceConf > llsConf)
Callback< uint32_t, Ptr< SatControlMessage > > ReserveCtrlMsgCallback
Callback to reserve an id and initially store the control message.
Callback< uint32_t, uint32_t > SendCtrlMsgCallback
Callback to send a control message and allocate a recv ID for it.
Callback< Ptr< SatControlMessage >, uint32_t > ReadCtrlMsgCallback
Callback to read control messages from container storing control messages.
SatPhyRxCarrierConf::ErrorModel ErrorModel
Define ErrorModel in SatPhy.
SatPhyRxCarrierConf::InterferenceModel InterferenceModel
Define InterferenceModel in SatPhy.
Callback< SatChannelPair::ChannelPair_t, uint32_t, uint32_t > ChannelPairGetterCallback
Callback for retrieving a pair of SatChannel associated to a beam.
InterferenceEliminationModel
Interference cancelation model enum.
RandomAccessCollisionModel
Random access collision model enum.
InterferenceModel
Interference model enum.
Callback< double, SatEnums::ChannelType_t, uint32_t, SatEnums::CarrierBandwidthType_t > CarrierBandwidthConverter_t
Callback for carrier bandwidths.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.
SatPhyRxCarrierConf::InterferenceModel m_raInterferenceModel
SatPhyRxCarrierConf::InterferenceEliminationModel m_raInterferenceEliminationModel
SatEnums::RandomAccessModel_t m_randomAccessModel
SatPhyRxCarrierConf::RandomAccessCollisionModel m_raCollisionModel