A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
uan-tx-mode.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009 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: Leonard Tracy <lentracy@gmail.com>
19  */
20 
21 #ifndef UAN_TX_MODE_H
22 #define UAN_TX_MODE_H
23 
24 #include "ns3/object.h"
25 #include <map>
26 
27 namespace ns3 {
28 
29 class UanTxModeFactory;
30 class UanTxMode;
31 
41 class UanTxMode
42 {
43 public:
44  UanTxMode ();
45  ~UanTxMode ();
46 
50  typedef enum {
51  PSK,
52  QAM,
53  FSK,
61  ModulationType GetModType (void) const;
67  uint32_t GetDataRateBps (void) const;
73  uint32_t GetPhyRateSps (void) const;
79  uint32_t GetCenterFreqHz (void) const;
85  uint32_t GetBandwidthHz (void) const;
91  uint32_t GetConstellationSize (void) const;
97  std::string GetName (void) const;
103  uint32_t GetUid (void) const;
104 
105 private:
106  friend class UanTxModeFactory;
107  friend std::ostream &operator<< (std::ostream & os, const UanTxMode &mode);
108  friend std::istream &operator>> (std::istream & is, UanTxMode &mode);
109 
110 
111  uint32_t m_uid;
112 
113 }; // class UanTxMode
114 
115 
123 std::ostream & operator << (std::ostream & os, const UanTxMode &mode);
131 std::istream & operator >> (std::istream & is, UanTxMode &mode);
132 
139 {
140 public:
141  UanTxModeFactory ();
142  ~UanTxModeFactory ();
143 
157  uint32_t dataRateBps,
158  uint32_t phyRateSps,
159  uint32_t cfHz,
160  uint32_t bwHz,
161  uint32_t constSize,
162  std::string name);
163 
170  static UanTxMode GetMode (std::string name);
177  static UanTxMode GetMode (uint32_t uid);
178 
179 private:
180  friend class UanTxMode;
181  uint32_t m_nextUid;
182 
188  {
190  uint32_t m_cfHz;
191  uint32_t m_bwHz;
192  uint32_t m_dataRateBps;
193  uint32_t m_phyRateSps;
194  uint32_t m_constSize;
195  uint32_t m_uid;
196  std::string m_name;
197  };
198 
208  std::map<uint32_t, UanTxModeItem> m_modes;
209 
216  bool NameUsed (std::string name);
217 
223  static UanTxModeFactory &GetFactory (void);
224 
231  UanTxModeItem &GetModeItem (uint32_t uid);
232 
238  UanTxModeItem &GetModeItem (std::string name);
239 
247 
248 }; // class UanTxModeFactory
249 
256 {
257 public:
258  UanModesList ();
259  virtual ~UanModesList ();
260 
265  void AppendMode (UanTxMode mode);
270  void DeleteMode (uint32_t num);
277  UanTxMode operator[] (uint32_t index) const;
283  uint32_t GetNModes (void) const;
284 
285 
286 private:
288  std::vector<UanTxMode> m_modes;
289 
290  friend std::ostream &operator << (std::ostream &os, const UanModesList &ml);
291  friend std::istream &operator >> (std::istream &is, UanModesList &ml);
292 
293 }; // class UanModesList
294 
302 std::ostream &operator << (std::ostream &os, const UanModesList &ml);
310 std::istream &operator >> (std::istream &is, UanModesList &ml);
311 
318  ;
319 
320 } // namespace ns3
321 
322 #endif /* UAN_TX_MODE_H */
ATTRIBUTE_HELPER_HEADER(ObjectFactory)
Global database of UanTxMode objects, retrievable by id or name.
Definition: uan-tx-mode.h:138
std::istream & operator>>(std::istream &is, Angles &a)
initialize a struct Angles from input
Definition: angles.cc:49
uint32_t m_cfHz
Center frequency in Hz.
Definition: uan-tx-mode.h:190
uint32_t GetNModes(void) const
Get the number of modes in this list.
Definition: uan-tx-mode.cc:259
std::string GetName(void) const
Get the mode name.
Definition: uan-tx-mode.cc:75
~UanTxMode()
Destructor.
Definition: uan-tx-mode.cc:33
friend std::istream & operator>>(std::istream &is, UanTxMode &mode)
Reads tx mode entry from stream is.
Definition: uan-tx-mode.cc:94
UanTxModeFactory()
Constructor.
Definition: uan-tx-mode.cc:107
static UanTxMode GetMode(std::string name)
Get a mode by name.
Definition: uan-tx-mode.cc:194
Container for UanTxModes.
Definition: uan-tx-mode.h:255
std::map< uint32_t, UanTxModeItem > m_modes
Container for modes.
Definition: uan-tx-mode.h:208
static UanTxModeFactory & GetFactory(void)
Construct and get the static global factory instance.
Definition: uan-tx-mode.cc:216
virtual ~UanModesList()
Destructor.
Definition: uan-tx-mode.cc:226
ModulationType GetModType(void) const
Get the modulation type of the mode.
Definition: uan-tx-mode.cc:39
uint32_t m_constSize
Modulation constellation size (2 for BPSK, 4 for QPSK).
Definition: uan-tx-mode.h:194
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
friend std::ostream & operator<<(std::ostream &os, const UanModesList &ml)
Write UanModesList to stream os.
Definition: uan-tx-mode.cc:265
Unspecified/undefined.
Definition: uan-tx-mode.h:54
uint32_t m_dataRateBps
Data rate in BPS.
Definition: uan-tx-mode.h:192
Quadrature amplitude modulation.
Definition: uan-tx-mode.h:52
uint32_t GetDataRateBps(void) const
Get the data rate of the transmit mode.
Definition: uan-tx-mode.cc:45
UanTxModeItem & GetModeItem(uint32_t uid)
Get a mode by id.
Definition: uan-tx-mode.cc:167
UanTxMode::ModulationType m_type
Modulation type.
Definition: uan-tx-mode.h:189
Abstraction of packet modulation information.
Definition: uan-tx-mode.h:41
ModulationType
Modulation type.
Definition: uan-tx-mode.h:50
Phase shift keying.
Definition: uan-tx-mode.h:51
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
Definition: angles.cc:43
UanTxMode operator[](uint32_t index) const
Retrieve a mode by index.
Definition: uan-tx-mode.cc:252
uint32_t m_uid
Mode id.
Definition: uan-tx-mode.h:111
Frequency shift keying.
Definition: uan-tx-mode.h:53
std::string m_name
Unique string name for this transmission mode.
Definition: uan-tx-mode.h:196
~UanTxModeFactory()
Destructor.
Definition: uan-tx-mode.cc:112
uint32_t m_phyRateSps
Symbol rate in symbols per second.
Definition: uan-tx-mode.h:193
uint32_t GetCenterFreqHz(void) const
Get the transmission center frequency.
Definition: uan-tx-mode.cc:57
UanTxMode()
Constructor.
Definition: uan-tx-mode.cc:29
UanModesList()
Constructor.
Definition: uan-tx-mode.cc:222
uint32_t m_nextUid
next id number
Definition: uan-tx-mode.h:181
uint32_t GetPhyRateSps(void) const
Get the physical signaling rate.
Definition: uan-tx-mode.cc:51
Container for the UanTxMode properties.
Definition: uan-tx-mode.h:187
friend std::istream & operator>>(std::istream &is, UanModesList &ml)
Read UanModesList from stream is.
Definition: uan-tx-mode.cc:277
uint32_t m_bwHz
Bandwidth in Hz.
Definition: uan-tx-mode.h:191
void AppendMode(UanTxMode mode)
Add mode to this list.
Definition: uan-tx-mode.cc:232
UanTxMode MakeModeFromItem(const UanTxModeItem &item)
Create a public UanTxMode from an internal UanTxModeItem.
Definition: uan-tx-mode.cc:208
uint32_t GetConstellationSize(void) const
Get the number of constellation points in the modulation scheme.
Definition: uan-tx-mode.cc:69
uint32_t GetBandwidthHz(void) const
Get the transmission signal bandwidth.
Definition: uan-tx-mode.cc:63
bool NameUsed(std::string name)
Check if the mode name already exists.
Definition: uan-tx-mode.cc:117
friend std::ostream & operator<<(std::ostream &os, const UanTxMode &mode)
Writes tx mode entry to stream os.
Definition: uan-tx-mode.cc:87
uint32_t GetUid(void) const
Get a unique id for the mode.
Definition: uan-tx-mode.cc:81
std::vector< UanTxMode > m_modes
The vector of modes in this list.
Definition: uan-tx-mode.h:288
void DeleteMode(uint32_t num)
Delete the mode at given index.
Definition: uan-tx-mode.cc:238