src/uan/model/uan-tx-mode.h
author Tom Henderson <tomh@tomh.org>
Mon, 28 Sep 2015 20:27:25 -0700
changeset 11676 05ea1489e509
parent 11141 555cc8046e67
permissions -rw-r--r--
bug 2184: Integer overflow in MacLow
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7353
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     2
/*
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     3
 * Copyright (c) 2009 University of Washington
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     4
 *
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     8
 *
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    12
 * GNU General Public License for more details.
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    13
 *
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    17
 *
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    18
 * Author: Leonard Tracy <lentracy@gmail.com>
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    19
 */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    20
7353
09fccf6195ea bug 1203: Inconsistently named ifndef/define macros in ns-3 headers
Vedran Miletic <rivanvx@gmail.com>
parents: 6852
diff changeset
    21
#ifndef UAN_TX_MODE_H
09fccf6195ea bug 1203: Inconsistently named ifndef/define macros in ns-3 headers
Vedran Miletic <rivanvx@gmail.com>
parents: 6852
diff changeset
    22
#define UAN_TX_MODE_H
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    23
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    24
#include "ns3/object.h"
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    25
#include <map>
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    26
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    27
namespace ns3 {
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    28
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    29
class UanTxModeFactory;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    30
class UanTxMode;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    31
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    32
/**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    33
 * \ingroup uan
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    34
 *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    35
 * Abstraction of packet modulation information.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    36
 *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    37
 * This contains a lightweight globally unique id for the mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    38
 * Mode details are held in the UanTxModeFactory.  Attributes
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    39
 * are set in by the UanTxModeFactory constructor.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    40
 */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    41
class UanTxMode
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    42
{
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    43
public:
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    44
  UanTxMode ();   //!< Constructor.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    45
  ~UanTxMode ();  //!< Destructor.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    46
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    47
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    48
   * Modulation type.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    49
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    50
  typedef enum {
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    51
    PSK,   //!< Phase shift keying.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    52
    QAM,   //!< Quadrature amplitude modulation.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    53
    FSK,   //!< Frequency shift keying.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    54
    OTHER  //!< Unspecified/undefined.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    55
  } ModulationType;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    56
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    57
   * Get the modulation type of the mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    58
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    59
   * \return The modulation type.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    60
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    61
  ModulationType GetModType (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    62
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    63
   * Get the data rate of the transmit mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    64
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    65
   * \return Data rate of the TX mode, in bits per second.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    66
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    67
  uint32_t GetDataRateBps (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    68
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    69
   * Get the physical signaling rate.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    70
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    71
   * \return PHY rate in symbols per second.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    72
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    73
  uint32_t GetPhyRateSps (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    74
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    75
   * Get the transmission center frequency.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    76
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    77
   * \return Center frequency, in Hz.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    78
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    79
  uint32_t GetCenterFreqHz (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    80
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    81
   * Get the transmission signal bandwidth.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    82
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    83
   * \return Bandwidth in Hz.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    84
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    85
  uint32_t GetBandwidthHz (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    86
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    87
   * Get the number of constellation points in the modulation scheme.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    88
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    89
   * \return Number of constellation points.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    90
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    91
  uint32_t GetConstellationSize (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    92
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    93
   * Get the mode name.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    94
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    95
   * \return Name
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    96
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    97
  std::string GetName (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    98
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    99
   * Get a unique id for the mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   100
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   101
   * \return Unique ID.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   102
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   103
  uint32_t GetUid (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   104
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   105
private:
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   106
  friend class UanTxModeFactory;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   107
  friend std::ostream &operator<< (std::ostream & os, const UanTxMode &mode);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   108
  friend std::istream &operator>> (std::istream & is, UanTxMode &mode);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   109
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   110
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   111
  uint32_t m_uid;  //!< Mode id
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   112
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   113
};  // class UanTxMode
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   114
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   115
  
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   116
/**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   117
 * Writes tx mode entry to stream os.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   118
 *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   119
 * \param os The output stream.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   120
 * \param mode The mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   121
 * \return The stream.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   122
 */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   123
std::ostream & operator << (std::ostream & os, const UanTxMode &mode);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   124
/**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   125
 * Reads tx mode entry from stream is
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   126
 *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   127
 * \param is The input stream.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   128
 * \param mode The mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   129
 * \return The stream.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   130
 */
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   131
std::istream & operator >> (std::istream & is, UanTxMode &mode);
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   132
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   133
/**
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   134
 * \ingroup uan
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   135
 *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   136
 * Global database of UanTxMode objects, retrievable by id or name.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   137
 */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   138
class UanTxModeFactory
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   139
{
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   140
public:
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   141
  UanTxModeFactory ();   //!< Constructor.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   142
  ~UanTxModeFactory ();  //!< Destructor.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   143
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   144
  /**
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   145
   *
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   146
   * \param type Modulation type.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   147
   * \param dataRateBps Data rate in BPS.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   148
   * \param phyRateSps  Symbol rate in symbols per second.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   149
   * \param cfHz Center frequency in Hz.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   150
   * \param bwHz Bandwidth in Hz.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   151
   * \param constSize Modulation constellation size (2 for BPSK, 4 for QPSK).
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   152
   * \param name Unique string name for this transmission mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   153
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   154
   * \return the transmit mode object
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   155
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   156
  static UanTxMode CreateMode (UanTxMode::ModulationType type,
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   157
                               uint32_t dataRateBps,
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   158
                               uint32_t phyRateSps,
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   159
                               uint32_t cfHz,
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   160
                               uint32_t bwHz,
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   161
                               uint32_t constSize,
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   162
                               std::string name);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   163
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   164
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   165
   * Get a mode by name.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   166
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   167
   * \param name String name of mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   168
   * \return Mode with given name.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   169
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   170
  static UanTxMode GetMode (std::string name);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   171
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   172
   * Get a mode by id.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   173
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   174
   * \param uid Unique ID of mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   175
   * \return The mode with given uid.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   176
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   177
  static UanTxMode GetMode (uint32_t uid);
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   178
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   179
private:
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   180
  friend class UanTxMode;
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   181
  uint32_t m_nextUid;                  //!< next id number
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   182
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   183
  /**
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   184
   * \ingroup uan
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   185
   * Container for the UanTxMode properties.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   186
   */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   187
  struct UanTxModeItem
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   188
  {
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   189
    UanTxMode::ModulationType m_type;  //!< Modulation type.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   190
    uint32_t m_cfHz;                   //!< Center frequency in Hz.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   191
    uint32_t m_bwHz;                   //!< Bandwidth in Hz.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   192
    uint32_t m_dataRateBps;            //!< Data rate in BPS.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   193
    uint32_t m_phyRateSps;             //!< Symbol rate in symbols per second.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   194
    uint32_t m_constSize;              //!< Modulation constellation size (2 for BPSK, 4 for QPSK).
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   195
    uint32_t m_uid;                    //!< Unique id.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   196
    std::string m_name;                //!< Unique string name for this transmission mode.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   197
  };
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   198
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   199
  /**
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   200
   * Container for modes
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   201
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   202
   * \internal
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   203
   *   Accessed internally by uid and name, so a multimap might be more
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   204
   *   appropriate.  If name accesses are predominant, perhaps a map
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   205
   *   indexed by name, with a find for uid.  If accesses by uid dominate
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   206
   *   then vector (since uid's are sequential), and find by name.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   207
   */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   208
  std::map<uint32_t, UanTxModeItem> m_modes;
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   209
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   210
  /**
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   211
   * Check if the mode \pname{name} already exists.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   212
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   213
   * \param name The mode name to test.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   214
   * \return True if \pname{name} exists.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   215
   */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   216
  bool NameUsed (std::string name);
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   217
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   218
  /**
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   219
   * Construct and get the static global factory instance.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   220
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   221
   * \return The global instance.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   222
   */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   223
  static UanTxModeFactory &GetFactory (void);
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   224
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   225
  /**
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   226
   * Get a mode by id.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   227
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   228
   * \param uid The unique id to find.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   229
   * \return The corresponding mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   230
   */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   231
  UanTxModeItem &GetModeItem (uint32_t uid);
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   232
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   233
  /**
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   234
   * Get a mode by name.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   235
   * \param name The mode name to find.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   236
   * \return The corresponding mode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   237
   */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   238
  UanTxModeItem &GetModeItem (std::string name);
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   239
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   240
  /**
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   241
   * Create a public UanTxMode from an internal UanTxModeItem.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   242
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   243
   * \param item The UanTxModeItem to reference.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   244
   * \return A public UanTxMode.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   245
   */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   246
  UanTxMode MakeModeFromItem (const UanTxModeItem &item);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   247
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   248
};  // class UanTxModeFactory
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   249
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   250
/**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   251
 * \ingroup uan
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   252
 *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   253
 * Container for UanTxModes.
11036
1e03af4311bd [Doxygen] Attribute implementations.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10504
diff changeset
   254
 *
1e03af4311bd [Doxygen] Attribute implementations.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10504
diff changeset
   255
 * \see attribute_UanModesList
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   256
 */
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   257
class UanModesList
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   258
{
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   259
public:
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   260
  UanModesList ();           //!< Constructor
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   261
  virtual ~UanModesList ();  //!< Destructor
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   262
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   263
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   264
   * Add mode to this list.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   265
   * \param mode The mode to add.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   266
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   267
  void AppendMode (UanTxMode mode);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   268
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   269
   * Delete the mode at given index.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   270
   * \param num Index of mode to delete.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   271
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   272
  void DeleteMode (uint32_t num);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   273
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   274
   * Retrieve a mode by index.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   275
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   276
   * \param index Mode index.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   277
   * \return Mode at given index.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   278
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   279
  UanTxMode operator[] (uint32_t index) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   280
  /**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   281
   * Get the number of modes in this list.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   282
   *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   283
   * \return Number of modes.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   284
   */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   285
  uint32_t GetNModes (void) const;
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   286
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   287
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   288
private:
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   289
  /** The vector of modes in this list. */
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   290
  std::vector<UanTxMode> m_modes;
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   291
  
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   292
  friend std::ostream &operator << (std::ostream &os, const UanModesList &ml);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   293
  friend std::istream &operator >> (std::istream &is, UanModesList &ml);
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   294
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   295
};  // class UanModesList
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   296
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   297
/**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   298
 * Write UanModesList to stream os
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   299
 *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   300
 * \param os The output stream.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   301
 * \param ml The mode list.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   302
 * \return The stream.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   303
 */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   304
std::ostream &operator << (std::ostream &os, const UanModesList &ml);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   305
/**
10469
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   306
 * Read UanModesList from stream is.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   307
 *
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   308
 * \param is The input stream.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   309
 * \param ml The mode list to fill.
c4e79d3e3007 [doxygen] Uan module
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
   310
 * \return The stream.
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   311
 */
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   312
std::istream &operator >> (std::istream &is, UanModesList &ml);
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   313
11141
555cc8046e67 [Doxygen] Remove extraneous docs for derivatives of AttributeValue.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11036
diff changeset
   314
ATTRIBUTE_HELPER_HEADER (UanModesList);
6478
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   315
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   316
} // namespace ns3
b401db8531f5 Bug 970 - move UAN over to new directory structure
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   317
7353
09fccf6195ea bug 1203: Inconsistently named ifndef/define macros in ns-3 headers
Vedran Miletic <rivanvx@gmail.com>
parents: 6852
diff changeset
   318
#endif /* UAN_TX_MODE_H */