A Discrete-Event Network Simulator
API
tv-spectrum-transmitter-helper.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2014 University of Washington
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: Benjamin Cizdziel <ben.cizdziel@gmail.com>
19  */
20 
21 #ifndef TV_SPECTRUM_TRANSMITTER_HELPER_H
22 #define TV_SPECTRUM_TRANSMITTER_HELPER_H
23 
24 #include <ns3/spectrum-value.h>
25 #include <ns3/spectrum-phy.h>
26 #include <ns3/spectrum-channel.h>
27 #include <ns3/antenna-model.h>
28 #include <ns3/spectrum-signal-parameters.h>
29 #include <ns3/mobility-model.h>
30 #include <ns3/net-device.h>
31 #include <ns3/net-device-container.h>
32 #include <ns3/node-container.h>
33 #include <ns3/non-communicating-net-device.h>
34 #include <ns3/random-variable-stream.h>
35 #include <ns3/tv-spectrum-transmitter.h>
36 #include "ns3/object-factory.h"
37 
38 namespace ns3
39 {
40 
65 {
66 
67 public:
71  enum Region
72  {
76  };
77 
81  enum Density
82  {
86  };
87 
89  virtual ~TvSpectrumTransmitterHelper ();
90 
97 
104  void SetAttribute (std::string name, const AttributeValue &val);
105 
122 
144  Region region,
145  uint16_t channelNumber);
146 
172 
201  Region region,
202  uint16_t channelNumber);
203 
210  int64_t AssignStreams (int64_t streamNum);
211 
246  void CreateRegionalTvTransmitters (Region region,
247  Density density,
248  double originLatitude,
249  double originLongitude,
250  double maxAltitude,
251  double maxRadius);
252 
253 
254 private:
256 
274  std::list<int> GenerateRegionalTransmitterIndices (const double startFrequencies[],
275  const int startFrequenciesLength,
276  Density density);
277 
301  int GetRandomNumTransmitters (Density density, uint32_t numChannels);
302 
315  std::list<int> transmitterIndicesToCreate,
316  std::list<Vector> transmitterLocations);
317 
320 
321 };
322 
323 } // namespace ns3
324 
325 #endif /* TV_SPECTRUM_TRANSMITTER_HELPER_H */
Ptr< UniformRandomVariable > m_uniRand
Object to generate uniform random numbers.
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:73
ObjectFactory m_factory
Object factory for attribute setting.
Hold a value for an Attribute.
Definition: attribute.h:68
std::list< int > GenerateRegionalTransmitterIndices(const double startFrequencies[], const int startFrequenciesLength, Density density)
Generates random indices of given region frequency array (ignoring indices referring to invalid chann...
void CreateRegionalTvTransmitters(Region region, Density density, double originLatitude, double originLongitude, double maxAltitude, double maxRadius)
Generates and installs (starts transmission on the spectrum channel) a random number of TV transmitte...
Region
geographical region that TV transmitters are being set up in
tuple nodes
Definition: first.py:25
NetDeviceContainer Install(NodeContainer nodes)
Set up and start the TV Transmitter's transmission on the spectrum channel.
Density
density of location that TV transmitters are being set up in
int GetRandomNumTransmitters(Density density, uint32_t numChannels)
Randomly generates the number of TV transmitters to be created based on given density and number of p...
holds a vector of ns3::NetDevice pointers
Ptr< SpectrumChannel > m_channel
Pointer to spectrum channel object.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
int64_t AssignStreams(int64_t streamNum)
Assigns the stream number for the uniform random number generator to use.
NetDeviceContainer InstallAdjacent(NodeContainer nodes)
Set up and start the TV Transmitter's transmission on the spectrum channel.
void InstallRandomRegionalTransmitters(Region region, std::list< int > transmitterIndicesToCreate, std::list< Vector > transmitterLocations)
Installs each randomly generated regional TV transmitter.
Instantiate subclasses of ns3::Object.
Helper class which uses TvSpectrumTransmitter class to create customizable TV transmitter(s) that tra...
void SetAttribute(std::string name, const AttributeValue &val)
Set attribute for each TvSpectrumTransmitter instance to be created.
void SetChannel(Ptr< SpectrumChannel > c)
Set the spectrum channel for the device(s) to transmit on.