A Discrete-Event Network Simulator
API
uan-tx-mode.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009 University of Washington
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Leonard Tracy <lentracy@gmail.com>
18  */
19 
20 #ifndef UAN_TX_MODE_H
21 #define UAN_TX_MODE_H
22 
23 #include "ns3/object.h"
24 
25 #include <map>
26 
27 namespace ns3
28 {
29 
30 class UanTxModeFactory;
31 class UanTxMode;
32 
42 class UanTxMode
43 {
44  public:
45  UanTxMode();
46  ~UanTxMode();
47 
52  {
53  PSK,
54  QAM,
55  FSK,
56  OTHER
57  };
58 
64  ModulationType GetModType() const;
70  uint32_t GetDataRateBps() const;
76  uint32_t GetPhyRateSps() const;
82  uint32_t GetCenterFreqHz() const;
88  uint32_t GetBandwidthHz() const;
94  uint32_t GetConstellationSize() const;
100  std::string GetName() const;
106  uint32_t GetUid() const;
107 
108  private:
109  friend class UanTxModeFactory;
110  friend std::ostream& operator<<(std::ostream& os, const UanTxMode& mode);
111  friend std::istream& operator>>(std::istream& is, UanTxMode& mode);
112 
113  uint32_t m_uid;
114 
115 }; // class UanTxMode
116 
124 std::ostream& operator<<(std::ostream& os, const UanTxMode& mode);
132 std::istream& operator>>(std::istream& is, UanTxMode& mode);
133 
140 {
141  public:
142  UanTxModeFactory();
144 
158  uint32_t dataRateBps,
159  uint32_t phyRateSps,
160  uint32_t cfHz,
161  uint32_t bwHz,
162  uint32_t constSize,
163  std::string name);
164 
171  static UanTxMode GetMode(std::string name);
178  static UanTxMode GetMode(uint32_t uid);
179 
180  private:
181  friend class UanTxMode;
182  uint32_t m_nextUid;
183 
189  {
191  uint32_t m_cfHz;
192  uint32_t m_bwHz;
193  uint32_t m_dataRateBps;
194  uint32_t m_phyRateSps;
195  uint32_t m_constSize;
196  uint32_t m_uid;
197  std::string m_name;
198  };
199 
209  std::map<uint32_t, UanTxModeItem> m_modes;
210 
217  bool NameUsed(std::string name);
218 
224  static UanTxModeFactory& GetFactory();
225 
232  UanTxModeItem& GetModeItem(uint32_t uid);
233 
239  UanTxModeItem& GetModeItem(std::string name);
240 
248 
249 }; // class UanTxModeFactory
250 
259 {
260  public:
261  UanModesList();
262  virtual ~UanModesList();
263 
268  void AppendMode(UanTxMode mode);
273  void DeleteMode(uint32_t num);
280  UanTxMode operator[](uint32_t index) const;
286  uint32_t GetNModes() const;
287 
288  private:
290  std::vector<UanTxMode> m_modes;
291 
292  friend std::ostream& operator<<(std::ostream& os, const UanModesList& ml);
293  friend std::istream& operator>>(std::istream& is, UanModesList& ml);
294 
295 }; // class UanModesList
296 
304 std::ostream& operator<<(std::ostream& os, const UanModesList& ml);
312 std::istream& operator>>(std::istream& is, UanModesList& ml);
313 
315 
316 } // namespace ns3
317 
318 #endif /* UAN_TX_MODE_H */
Container for UanTxModes.
Definition: uan-tx-mode.h:259
void DeleteMode(uint32_t num)
Delete the mode at given index.
Definition: uan-tx-mode.cc:236
friend std::ostream & operator<<(std::ostream &os, const UanModesList &ml)
Write UanModesList to stream os.
Definition: uan-tx-mode.cc:262
UanModesList()
Constructor.
Definition: uan-tx-mode.cc:220
uint32_t GetNModes() const
Get the number of modes in this list.
Definition: uan-tx-mode.cc:256
void AppendMode(UanTxMode mode)
Add mode to this list.
Definition: uan-tx-mode.cc:230
UanTxMode operator[](uint32_t index) const
Retrieve a mode by index.
Definition: uan-tx-mode.cc:249
virtual ~UanModesList()
Destructor.
Definition: uan-tx-mode.cc:224
std::vector< UanTxMode > m_modes
The vector of modes in this list.
Definition: uan-tx-mode.h:290
friend std::istream & operator>>(std::istream &is, UanModesList &ml)
Read UanModesList from stream is.
Definition: uan-tx-mode.cc:274
Global database of UanTxMode objects, retrievable by id or name.
Definition: uan-tx-mode.h:140
static UanTxMode CreateMode(UanTxMode::ModulationType type, uint32_t dataRateBps, uint32_t phyRateSps, uint32_t cfHz, uint32_t bwHz, uint32_t constSize, std::string name)
Definition: uan-tx-mode.cc:132
UanTxMode MakeModeFromItem(const UanTxModeItem &item)
Create a public UanTxMode from an internal UanTxModeItem.
Definition: uan-tx-mode.cc:206
UanTxModeFactory()
Constructor.
Definition: uan-tx-mode.cc:106
static UanTxModeFactory & GetFactory()
Construct and get the static global factory instance.
Definition: uan-tx-mode.cc:214
static UanTxMode GetMode(std::string name)
Get a mode by name.
Definition: uan-tx-mode.cc:192
std::map< uint32_t, UanTxModeItem > m_modes
Container for modes.
Definition: uan-tx-mode.h:209
~UanTxModeFactory()
Destructor.
Definition: uan-tx-mode.cc:111
bool NameUsed(std::string name)
Check if the mode name already exists.
Definition: uan-tx-mode.cc:117
uint32_t m_nextUid
next id number
Definition: uan-tx-mode.h:182
UanTxModeItem & GetModeItem(uint32_t uid)
Get a mode by id.
Definition: uan-tx-mode.cc:166
Abstraction of packet modulation information.
Definition: uan-tx-mode.h:43
uint32_t GetUid() const
Get a unique id for the mode.
Definition: uan-tx-mode.cc:82
ModulationType
Modulation type.
Definition: uan-tx-mode.h:52
@ QAM
Quadrature amplitude modulation.
Definition: uan-tx-mode.h:54
@ OTHER
Unspecified/undefined.
Definition: uan-tx-mode.h:56
@ PSK
Phase shift keying.
Definition: uan-tx-mode.h:53
@ FSK
Frequency shift keying.
Definition: uan-tx-mode.h:55
friend std::ostream & operator<<(std::ostream &os, const UanTxMode &mode)
Writes tx mode entry to stream os.
Definition: uan-tx-mode.cc:88
uint32_t GetConstellationSize() const
Get the number of constellation points in the modulation scheme.
Definition: uan-tx-mode.cc:70
uint32_t GetPhyRateSps() const
Get the physical signaling rate.
Definition: uan-tx-mode.cc:52
friend std::istream & operator>>(std::istream &is, UanTxMode &mode)
Reads tx mode entry from stream is.
Definition: uan-tx-mode.cc:95
uint32_t GetDataRateBps() const
Get the data rate of the transmit mode.
Definition: uan-tx-mode.cc:46
~UanTxMode()
Destructor.
Definition: uan-tx-mode.cc:35
uint32_t GetBandwidthHz() const
Get the transmission signal bandwidth.
Definition: uan-tx-mode.cc:64
std::string GetName() const
Get the mode name.
Definition: uan-tx-mode.cc:76
UanTxMode()
Constructor.
Definition: uan-tx-mode.cc:31
uint32_t m_uid
Mode id.
Definition: uan-tx-mode.h:113
ModulationType GetModType() const
Get the modulation type of the mode.
Definition: uan-tx-mode.cc:40
uint32_t GetCenterFreqHz() const
Get the transmission center frequency.
Definition: uan-tx-mode.cc:58
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ATTRIBUTE_HELPER_HEADER(ValueClassTest)
std::istream & operator>>(std::istream &is, Angles &a)
Definition: angles.cc:183
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:159
Container for the UanTxMode properties.
Definition: uan-tx-mode.h:189
uint32_t m_constSize
Modulation constellation size (2 for BPSK, 4 for QPSK).
Definition: uan-tx-mode.h:195
uint32_t m_phyRateSps
Symbol rate in symbols per second.
Definition: uan-tx-mode.h:194
std::string m_name
Unique string name for this transmission mode.
Definition: uan-tx-mode.h:197
UanTxMode::ModulationType m_type
Modulation type.
Definition: uan-tx-mode.h:190
uint32_t m_bwHz
Bandwidth in Hz.
Definition: uan-tx-mode.h:192
uint32_t m_dataRateBps
Data rate in BPS.
Definition: uan-tx-mode.h:193
uint32_t m_cfHz
Center frequency in Hz.
Definition: uan-tx-mode.h:191