satellite-antenna-gain-pattern-container.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  *
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: Jani Puttonen <jani.puttonen@magister.fi>
19  */
20 
21 #ifndef SATELLITE_ANTENNA_GAIN_PATTERN_CONTAINER_H_
22 #define SATELLITE_ANTENNA_GAIN_PATTERN_CONTAINER_H_
23 
24 #include "geo-coordinate.h"
26 
27 #include "ns3/satellite-beam-user-info.h"
28 
29 namespace ns3
30 {
31 
32 class SatMobilityModel;
33 
45 class SatAntennaGainPatternContainer : public Object
46 {
47  public:
52  static TypeId GetTypeId(void);
53  TypeId GetInstanceTypeId() const;
54 
59  SatAntennaGainPatternContainer(uint32_t nbSats = 1);
61 
65  typedef std::map<std::pair<uint32_t, uint32_t>, SatBeamUserInfo> BeamUserInfoMap_t;
66 
72 
78  Ptr<SatAntennaGainPattern> GetAntennaGainPattern(uint32_t beamId) const;
79 
85  Ptr<SatMobilityModel> GetAntennaMobility(uint32_t satelliteId) const;
86 
91  uint32_t GetNAntennaGainPatterns() const;
92 
101  uint32_t GetBestBeamId(uint32_t satelliteId, GeoCoordinate coord, bool ignoreNan);
102 
103  void ConfigureBeamsMobility(uint32_t satelliteId, Ptr<SatMobilityModel> mobility);
104 
106 
107  private:
108  std::string m_patternsFolder;
109 
113  std::map<uint32_t, Ptr<SatAntennaGainPattern>> m_antennaPatternMap;
114 
118  std::map<uint32_t, Ptr<SatMobilityModel>> m_mobilityModelMap;
119 };
120 
121 } // namespace ns3
122 
123 #endif /* SATELLITE_ANTENNA_GAIN_PATTERN_CONTAINER_H_ */
GeoCoordinate class is used to store and operate with geodetic coordinates.
Antenna gain pattern container holds all antenna patterns related to a satellite system.
Ptr< SatAntennaGainPattern > GetAntennaGainPattern(uint32_t beamId) const
Get the antenna pattern of a specified beam id.
GeoCoordinate GetDefaultGeoPosition()
Load the default satellite position associated to these traces.
uint32_t GetBestBeamId(uint32_t satelliteId, GeoCoordinate coord, bool ignoreNan)
Get the best beam id based on the antenna patterns in a specified geo coordinate.
std::map< uint32_t, Ptr< SatAntennaGainPattern > > m_antennaPatternMap
Container of antenna patterns.
uint32_t GetNAntennaGainPatterns() const
Get the number of stored antenna pattern.
std::map< std::pair< uint32_t, uint32_t >, SatBeamUserInfo > BeamUserInfoMap_t
definition for beam map key is pair sat ID / beam ID and value is UT/user info.
void ConfigureBeamsMobility(uint32_t satelliteId, Ptr< SatMobilityModel > mobility)
Ptr< SatMobilityModel > GetAntennaMobility(uint32_t satelliteId) const
Get the mobility model of a specified beam id.
SatAntennaGainPatternContainer(uint32_t nbSats=1)
Default constructor.
std::map< uint32_t, Ptr< SatMobilityModel > > m_mobilityModelMap
Container of mobility models.
Class that holds information for each beam regarding UTs and their users camped in each beam.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.