/usr/include/ns3.26/ns3/wifi-tx-current-model.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 140 141 142 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2014 Universita' degli Studi di Napoli "Federico II"
*
* 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: Stefano Avallone <stefano.avallone@unina.it>
*/
#ifndef WIFI_TX_CURRENT_MODEL_H
#define WIFI_TX_CURRENT_MODEL_H
#include "ns3/object.h"
namespace ns3 {
/**
* \ingroup energy
*
* \brief Modelize the transmit current as a function of the transmit power and mode
*
*/
class WifiTxCurrentModel : public Object
{
public:
static TypeId GetTypeId (void);
WifiTxCurrentModel ();
virtual ~WifiTxCurrentModel ();
/**
* \param txPowerDbm the nominal tx power in dBm
* \returns the transmit current (in Ampere)
*/
virtual double CalcTxCurrent (double txPowerDbm) const = 0;
/**
* Convert from dBm to Watts.
*
* \param dbm the power in dBm
* \return the equivalent Watts for the given dBm
*/
static double DbmToW (double dbm);
};
/**
* \ingroup energy
*
* \brief a linear model of the Wifi transmit current
*
* This model assumes that the transmit current is a linear function
* of the nominal transmit power used to send the frame.
* In particular, the power absorbed during the transmission of a frame \f$ W_{tx} \f$
* is given by the power absorbed by the power amplifier \f$ W_{pa} \f$ plus the power
* absorbed by the RF subsystem. The latter is assumed to be the same as the power
* absorbed in the IDLE state \f$ W_{idle} \f$.
*
* The efficiency \f$ \eta \f$ of the power amplifier is given by
* \f$ \eta = \frac{P_{tx}}{W_{pa}} \f$, where \f$ P_{tx} \f$ is the output power, i.e.,
* the nominal transmit power. Hence, \f$ W_{pa} = \frac{P_{tx}}{\eta} \f$
*
* It turns out that \f$ W_{tx} = \frac{P_{tx}}{\eta} + W_{idle} \f$. By dividing both
* sides by the supply voltage \f$ V \f$: \f$ I_{tx} = \frac{P_{tx}}{V \cdot \eta} + I_{idle} \f$,
* where \f$ I_{tx} \f$ and \f$ I_{idle} \f$ are, respectively, the transmit current and
* the idle current.
*
* For more information, refer to:
* Francesco Ivan Di Piazza, Stefano Mangione, and Ilenia Tinnirello.
* "On the Effects of Transmit Power Control on the Energy Consumption of WiFi Network Cards",
* Proceedings of ICST QShine 2009, pp. 463--475
*
* If the tx current corresponding to a given nominal transmit power is known, the efficiency
* of the power amplifier is given by the above formula:
* \f$ \eta = \frac{P_{tx}}{(I_{tx}-I_{idle})\cdot V} \f$
*
*/
class LinearWifiTxCurrentModel : public WifiTxCurrentModel
{
public:
static TypeId GetTypeId (void);
LinearWifiTxCurrentModel ();
virtual ~LinearWifiTxCurrentModel ();
/**
* \param eta (dimension-less)
*
* Set the power amplifier efficiency.
*/
void SetEta (double eta);
/**
* \param voltage (Volts)
*
* Set the supply voltage.
*/
void SetVoltage (double voltage);
/**
* \param idleCurrent (Ampere)
*
* Set the current in the IDLE state.
*/
void SetIdleCurrent (double idleCurrent);
/**
* \return the power amplifier efficiency.
*/
double GetEta (void) const;
/**
* \return the supply voltage.
*/
double GetVoltage (void) const;
/**
* \return the current in the IDLE state.
*/
double GetIdleCurrent (void) const;
double CalcTxCurrent (double txPowerDbm) const;
private:
double m_eta;
double m_voltage;
double m_idleCurrent;
};
} // namespace ns3
#endif /* WIFI_TX_CURRENT_MODEL_H */
|