22 #ifndef SATELLITE_POSITION_ALLOCATOR_H
23 #define SATELLITE_POSITION_ALLOCATOR_H
28 #include <ns3/object.h>
29 #include <ns3/position-allocator.h>
30 #include <ns3/random-variable-stream.h>
70 virtual Vector
GetNext(
void)
const;
130 mutable std::vector<GeoCoordinate>::const_iterator
m_current;
157 void SetLatitude(Ptr<RandomVariableStream> latitude);
159 void SetAltitude(Ptr<RandomVariableStream> altitude);
245 Ptr<SatAntennaGainPatternContainer> patternContainer,
253 void SetAltitude(Ptr<RandomVariableStream> altitude);
GeoCoordinate class is used to store and operate with geodetic coordinates.
Allocate positions from a deterministic list specified by the user.
virtual void SetToBegin()
SatListPositionAllocator()
Default constructor.
void Add(GeoCoordinate coordinate)
std::vector< GeoCoordinate > m_positions
static TypeId GetTypeId(void)
Get the type ID.
virtual GeoCoordinate GetNextGeoPosition(uint32_t satId=0) const
Get next position.
std::vector< GeoCoordinate >::const_iterator m_current
virtual uint32_t GetCount()
Allocate a set of satellite positions.
virtual Vector GetNext(void) const
SatPositionAllocator()
Default constructor.
static TypeId GetTypeId(void)
Get the type ID.
virtual ~SatPositionAllocator()
Destructor for SatPositionAllocator.
bool m_GetAsGeoCoordinates
virtual GeoCoordinate GetNextGeoPosition(uint32_t satId=0) const =0
Get next position.
virtual int64_t AssignStreams(int64_t stream)
Allocate random positions within a 3D box according to a set of three random variables (longitude,...
SatRandomBoxPositionAllocator()
Default constructor.
Ptr< RandomVariableStream > m_latitude
virtual ~SatRandomBoxPositionAllocator()
Destructor for SatRandomBoxPositionAllocator.
Ptr< RandomVariableStream > m_altitude
virtual int64_t AssignStreams(int64_t stream)
void SetLongitude(Ptr< RandomVariableStream > longitude)
Ptr< RandomVariableStream > m_longitude
virtual GeoCoordinate GetNextGeoPosition(uint32_t satId=0) const
Get next position.
void SetAltitude(Ptr< RandomVariableStream > altitude)
static TypeId GetTypeId(void)
Get the type ID.
void SetLatitude(Ptr< RandomVariableStream > latitude)
Allocate random positions within a circle (center and radius), uniformly distributed.
virtual ~SatRandomCirclePositionAllocator()
Destructor for SatRandomCirclePositionAllocator.
void SetRadius(uint32_t radius)
virtual int64_t AssignStreams(int64_t stream)
virtual GeoCoordinate GetNextGeoPosition(uint32_t satId=0) const
Get next position.
SatRandomCirclePositionAllocator()
Default constructor.
Ptr< RandomVariableStream > m_rand
static TypeId GetTypeId(void)
Get the type ID.
void SetCenter(GeoCoordinate center)
Allocate random positions within the area of a certain spot-beam.
static constexpr double MIN_ANTENNA_GAIN
Minimum accepted antenna gain for a UT.
GeoCoordinate m_geoPos
Position of the GEO satellite.
Ptr< RandomVariableStream > m_altitude
A random variable stream for altitude.
SatSpotBeamPositionAllocator()
Default constructor.
virtual int64_t AssignStreams(int64_t stream)
static constexpr uint32_t MAX_TRIES
Max number of tries to pick a random position for a UT.
void SetAltitude(Ptr< RandomVariableStream > altitude)
virtual ~SatSpotBeamPositionAllocator()
Destructor for SatSpotBeamPositionAllocator.
Ptr< SatAntennaGainPatternContainer > m_antennaGainPatterns
Antenna pattern used to check that the give position is valid based on antenna gains.
virtual GeoCoordinate GetNextGeoPosition(uint32_t satId) const
Get next position.
uint32_t m_targetBeamId
Target beam id to which the UT is tried to be placed.
double m_minElevationAngleInDeg
Minimum accepted elevation angle in degrees for UTs.
static TypeId GetTypeId(void)
Get the type ID.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.