/usr/include/ns3.26/ns3/uan-channel.h is in libns3-dev 3.26+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 University of Washington
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Leonard Tracy <lentracy@gmail.com>
*/
#ifndef UAN_CHANNEL_H
#define UAN_CHANNEL_H
#include "ns3/net-device.h"
#include "ns3/channel.h"
#include "ns3/packet.h"
#include "ns3/uan-prop-model.h"
#include "ns3/uan-noise-model.h"
#include <list>
#include <vector>
namespace ns3 {
class UanNetDevice;
class UanPhy;
class UanTransducer;
class UanTxMode;
/**
* \ingroup uan
*
* Channel class used by UAN devices.
*/
class UanChannel : public Channel
{
public:
/**
* UanDeviceList is a standard template vector of pairs
* (UanNetDevice, UanTransducer)
*/
typedef std::vector<std::pair<Ptr<UanNetDevice>, Ptr<UanTransducer> > > UanDeviceList;
UanChannel (); //!< Constructor
virtual ~UanChannel (); //!< Dummy destructor, see DoDispose.
/**
* Register this type.
* \return The object TypeId.
*/
static TypeId GetTypeId (void);
// Inherited methods
virtual uint32_t GetNDevices (void) const;
virtual Ptr<NetDevice> GetDevice (uint32_t i) const;
/**
* Send a packet out on the channel.
*
* \param src Transducer transmitting packet.
* \param packet Packet to be transmitted.
* \param txPowerDb Transmission power in dB.
* \param txmode UanTxMode defining modulation of transmitted packet.
*/
void TxPacket (Ptr<UanTransducer> src, Ptr<Packet> packet, double txPowerDb,
UanTxMode txmode);
/**
* Adds device to receiver list for this channel.
*
* \param dev Net Device of node.
* \param trans Transducer of net device attached to this channel.
*/
void AddDevice (Ptr<UanNetDevice> dev, Ptr<UanTransducer> trans);
/**
* Set the propagation model this channel will use
* for path loss/propagation delay.
*
* \param prop The propagation model.
*/
void SetPropagationModel (Ptr<UanPropModel> prop);
/**
* Set the noise model this channel will use
* to determine ambient channel noise.
*
* \param noise The noise model.
*/
void SetNoiseModel (Ptr<UanNoiseModel> noise);
/**
* Get the noise level on the channel.
*
* \param fKhz Frequency in kHz.
* \return Ambient noise in dB/Hz on channel at a frequency.
*/
double GetNoiseDbHz (double fKhz);
/**
* Clear all pointer references. */
void Clear (void);
private:
UanDeviceList m_devList; //!< The list of devices on this channel.
Ptr<UanPropModel> m_prop; //!< The propagation model.
Ptr<UanNoiseModel> m_noise; //!< The noise model.
/** Has Clear ever been called on the channel. */
bool m_cleared;
/**
* Send a packet up to the receiving UanTransducer.
*
* \param i Device number.
* \param packet The received packet.
* \param rxPowerDb Signal power in dB of arriving packet.
* \param txMode Mode arriving packet is using.
* \param pdp PDP of arriving signal.
*/
void SendUp (uint32_t i, Ptr<Packet> packet, double rxPowerDb, UanTxMode txMode, UanPdp pdp);
protected:
virtual void DoDispose (void);
}; // class UanChannel
} // namespace ns3
#endif /* UAN_CHANNEL_H */
|