satellite-orbiter-helper-lora.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 SAT_ORBITER_HELPER_LORA_H
24 #define SAT_ORBITER_HELPER_LORA_H
25 
27 
28 #include "ns3/error-model.h"
29 #include "ns3/net-device-container.h"
30 #include "ns3/node-container.h"
31 #include "ns3/object-factory.h"
32 #include "ns3/output-stream-wrapper.h"
33 #include "ns3/satellite-bbframe-conf.h"
34 #include "ns3/satellite-channel.h"
35 #include "ns3/satellite-fwd-link-scheduler.h"
36 #include "ns3/satellite-ncc.h"
37 #include "ns3/satellite-orbiter-feeder-mac.h"
38 #include "ns3/satellite-orbiter-net-device.h"
39 #include "ns3/satellite-phy.h"
40 #include "ns3/satellite-scpc-scheduler.h"
41 #include "ns3/satellite-superframe-sequence.h"
42 #include "ns3/satellite-typedefs.h"
43 #include "ns3/traced-callback.h"
44 #include <ns3/pointer.h>
45 
46 #include <map>
47 #include <stdint.h>
48 #include <string>
49 #include <utility>
50 #include <vector>
51 
52 namespace ns3
53 {
54 
61 {
62  public:
67  static TypeId GetTypeId(void);
68  TypeId GetInstanceTypeId(void) const;
69 
74 
80  uint32_t rtnLinkCarrierCount,
81  uint32_t fwdLinkCarrierCount,
82  Ptr<SatSuperframeSeq> seq,
85  RandomAccessSettings_s randomAccessSettings);
86 
88  {
89  }
90 
96  virtual Ptr<SatOrbiterNetDevice> CreateOrbiterNetDevice();
97 
98  /*
99  * Attach the SatChannels for the beam to NetDevice
100  * \param dev NetDevice to attach channels
101  * \param uf user forward channel
102  * \param uf user return channel
103  * \param userAgp user beam antenna gain pattern
104  * \param ncc NCC (Network Control Center)
105  * \param satId ID of satellite associated to this channel
106  * \param userBeamId Id of the beam
107  */
108  virtual void AttachChannelsUser(Ptr<SatOrbiterNetDevice> dev,
109  Ptr<SatChannel> uf,
110  Ptr<SatChannel> ur,
111  Ptr<SatAntennaGainPattern> userAgp,
112  Ptr<SatNcc> ncc,
113  uint32_t satId,
114  uint32_t userBeamId);
115 };
116 
117 } // namespace ns3
118 
119 #endif /* SAT_ORBITER_HELPER_LORA_H */
Callback< Ptr< SatControlMessage >, uint32_t > ReadCtrlMsgCallback
Callback to read control messages from container storing control messages.
Creates needed objects for Satellite node like SatorbiterNetDevice objects.
Creates needed objects for Satellite node like SatorbiterNetDevice objects.
static TypeId GetTypeId(void)
Get the type ID.
virtual Ptr< SatOrbiterNetDevice > CreateOrbiterNetDevice()
Create a SatOrbiterNetDevice instance, with correct type infered from child classes.
virtual void AttachChannelsUser(Ptr< SatOrbiterNetDevice > dev, Ptr< SatChannel > uf, Ptr< SatChannel > ur, Ptr< SatAntennaGainPattern > userAgp, Ptr< SatNcc > ncc, uint32_t satId, uint32_t userBeamId)
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.