A Discrete-Event Network Simulator
API
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
27namespace ns3 {
28
29class UanTxModeFactory;
30class UanTxMode;
31
42{
43public:
44 UanTxMode ();
45 ~UanTxMode ();
46
50 typedef enum {
54 OTHER
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
105private:
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
112
113}; // class UanTxMode
114
115
123std::ostream & operator << (std::ostream & os, const UanTxMode &mode);
131std::istream & operator >> (std::istream & is, UanTxMode &mode);
132
139{
140public:
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
179private:
180 friend class UanTxMode;
182
188 {
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
232
238 UanTxModeItem &GetModeItem (std::string name);
239
247
248}; // class UanTxModeFactory
249
258{
259public:
260 UanModesList ();
261 virtual ~UanModesList ();
262
267 void AppendMode (UanTxMode mode);
272 void DeleteMode (uint32_t num);
279 UanTxMode operator[] (uint32_t index) const;
285 uint32_t GetNModes (void) const;
286
287
288private:
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
304std::ostream &operator << (std::ostream &os, const UanModesList &ml);
312std::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:258
void DeleteMode(uint32_t num)
Delete the mode at given index.
Definition: uan-tx-mode.cc:238
UanModesList()
Constructor.
Definition: uan-tx-mode.cc:222
uint32_t GetNModes(void) const
Get the number of modes in this list.
Definition: uan-tx-mode.cc:259
friend std::istream & operator>>(std::istream &is, UanModesList &ml)
Read UanModesList from stream is.
Definition: uan-tx-mode.cc:277
void AppendMode(UanTxMode mode)
Add mode to this list.
Definition: uan-tx-mode.cc:232
UanTxMode operator[](uint32_t index) const
Retrieve a mode by index.
Definition: uan-tx-mode.cc:252
virtual ~UanModesList()
Destructor.
Definition: uan-tx-mode.cc:226
friend std::ostream & operator<<(std::ostream &os, const UanModesList &ml)
Write UanModesList to stream os.
Definition: uan-tx-mode.cc:265
std::vector< UanTxMode > m_modes
The vector of modes in this list.
Definition: uan-tx-mode.h:290
Global database of UanTxMode objects, retrievable by id or name.
Definition: uan-tx-mode.h:139
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:208
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
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
~UanTxModeFactory()
Destructor.
Definition: uan-tx-mode.cc:112
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:181
UanTxModeItem & GetModeItem(uint32_t uid)
Get a mode by id.
Definition: uan-tx-mode.cc:167
Abstraction of packet modulation information.
Definition: uan-tx-mode.h:42
ModulationType
Modulation type.
Definition: uan-tx-mode.h:50
@ QAM
Quadrature amplitude modulation.
Definition: uan-tx-mode.h:52
@ OTHER
Unspecified/undefined.
Definition: uan-tx-mode.h:54
@ PSK
Phase shift keying.
Definition: uan-tx-mode.h:51
@ FSK
Frequency shift keying.
Definition: uan-tx-mode.h:53
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 GetDataRateBps(void) const
Get the data rate of the transmit mode.
Definition: uan-tx-mode.cc:45
std::string GetName(void) const
Get the mode name.
Definition: uan-tx-mode.cc:75
friend std::istream & operator>>(std::istream &is, UanTxMode &mode)
Reads tx mode entry from stream is.
Definition: uan-tx-mode.cc:94
uint32_t GetCenterFreqHz(void) const
Get the transmission center frequency.
Definition: uan-tx-mode.cc:57
uint32_t GetBandwidthHz(void) const
Get the transmission signal bandwidth.
Definition: uan-tx-mode.cc:63
uint32_t GetConstellationSize(void) const
Get the number of constellation points in the modulation scheme.
Definition: uan-tx-mode.cc:69
uint32_t GetPhyRateSps(void) const
Get the physical signaling rate.
Definition: uan-tx-mode.cc:51
uint32_t GetUid(void) const
Get a unique id for the mode.
Definition: uan-tx-mode.cc:81
~UanTxMode()
Destructor.
Definition: uan-tx-mode.cc:33
ModulationType GetModType(void) const
Get the modulation type of the mode.
Definition: uan-tx-mode.cc:39
UanTxMode()
Constructor.
Definition: uan-tx-mode.cc:29
uint32_t m_uid
Mode id.
Definition: uan-tx-mode.h:111
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ATTRIBUTE_HELPER_HEADER(ValueClassTest)
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:139
std::istream & operator>>(std::istream &is, Angles &a)
Definition: angles.cc:162
Container for the UanTxMode properties.
Definition: uan-tx-mode.h:188
uint32_t m_constSize
Modulation constellation size (2 for BPSK, 4 for QPSK).
Definition: uan-tx-mode.h:194
uint32_t m_phyRateSps
Symbol rate in symbols per second.
Definition: uan-tx-mode.h:193
std::string m_name
Unique string name for this transmission mode.
Definition: uan-tx-mode.h:196
UanTxMode::ModulationType m_type
Modulation type.
Definition: uan-tx-mode.h:189
uint32_t m_bwHz
Bandwidth in Hz.
Definition: uan-tx-mode.h:191
uint32_t m_dataRateBps
Data rate in BPS.
Definition: uan-tx-mode.h:192
uint32_t m_cfHz
Center frequency in Hz.
Definition: uan-tx-mode.h:190