Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes

UWBIRIEEE802154APathlossModel Class Reference
[analogueModels - AnalogueModel implementationsIEEE 802.15.4A - Classes that implement the IEEE 802.15.4A UWB PHY.]

This class implements the IEEE 802.15.4A Channel Model[1] in the MiXiM omnet++ modeling framework. More...

#include <UWBIRIEEE802154APathlossModel.h>

Inherits AnalogueModel.

Collaboration diagram for UWBIRIEEE802154APathlossModel:
Collaboration graph
[legend]

List of all members.

Classes

struct  CMconfig

Public Member Functions

 UWBIRIEEE802154APathlossModel (int _channelModel, double _threshold, const Move *_move, bool shadowing=true)
void filterSignal (Signal &s)
 Has to be overriden by every implementation.
double Rayleigh (double param)

Static Public Attributes

static const bool implemented_CMs []
static const CMconfig CMconfigs []

Protected Member Functions

void addEchoes (simtime_t pulseStart)
double getPathloss (double fc, double BW)

Protected Attributes

int channelModel
 selected channel model
CMconfig cfg
double tapThreshold
double doShadowing
double doSmallScaleShadowing
const Movemove
TimeMapping< Linear > * newTxPower
ConstMappingtxPower
Argument arg
MappingIteratorpulsesIter
double L
double S
simtime_t clusterStart
simtime_t gamma_l
double Mcluster
double Omega_l
double distance
double averagePower
long nbCalls
cOutVector averagePowers
cOutVector pathlosses

Static Protected Attributes

static const double PL0 = 0.000040738
static const double pathloss_exponent = 1.79
static const double meanL = 3
static const double Lambda = 0.047E9
static const double lambda1 = 1.54E9
static const double lambda2 = 0.15E9
static const double Beta = 0.095
static const double Gamma = 22.61E-9
static const double k_gamma = 0
static const double gamma_0 = 12.53 * 0.001 * 0.001 * 0.01
static const double sigma_cluster = 1.883649089
static const double fc = 4.492E9
static const double BW = 500E6
static const double fcMHz = 4492
static const double d0 = 1
static const double ntx = 1
static const double nrx = 1

Detailed Description

This class implements the IEEE 802.15.4A Channel Model[1] in the MiXiM omnet++ modeling framework.

"IEEE 802.15.4a channel model - final report", 2005, Andreas F. Molisch, Kannan Balakrishnan, Dajana Cassioli, Chia-Chin Chong, Shahriar Emami, Andrew Fort, Johan Karedal, Juergen Kunisch, Hans Schantz, Ulrich Schuster, Kai Siwiak

Citation of the following publication is appreciated if you use the MiXiM UWB PHY model for a publication of your own. J. Rousselot, J.-D. Decotignie, An ultra-wideband impulse radio PHY layer model for network simulation. SIMULATION January 2011 vol. 87 no. 1-2 82-112.

For more information, see also:

[1] J. Rousselot, J.-D. Decotignie, An ultra-wideband impulse radio PHY layer model for network simulation. SIMULATION January 2011 vol. 87 no. 1-2 82-112. http://dx.doi.org/10.1177/0037549710377767 [2] J. Rousselot, Ultra Low Power Communication Protocols for UWB Impulse Radio Wireless Sensor Networks. EPFL Thesis 4720, 2010. http://infoscience.epfl.ch/record/147987 [3] A High-Precision Ultra Wideband Impulse Radio Physical Layer Model for Network Simulation, Jérôme Rousselot, Jean-Dominique Decotignie, Second International Omnet++ Workshop,Simu'TOOLS, Rome, 6 Mar 09. http://portal.acm.org/citation.cfm?id=1537714

Definition at line 64 of file UWBIRIEEE802154APathlossModel.h.


Member Function Documentation

void UWBIRIEEE802154APathlossModel::filterSignal ( Signal s  )  [virtual]

Has to be overriden by every implementation.

Filters a specified Signal by adding an attenuation over time to the Signal.

Implements AnalogueModel.

Definition at line 154 of file UWBIRIEEE802154APathlossModel.cc.

References Signal::addAttenuation(), ConstMapping::createConstIterator(), TimeMapping< Interpolator >::createIterator(), Coord::distance(), Signal::getMove(), ConstMappingIterator::getPosition(), Move::getPositionAt(), Signal::getSignalLength(), Signal::getSignalStart(), Argument::getTime(), Signal::getTransmissionPower(), ConstMappingIterator::getValue(), ConstMappingIterator::hasNext(), ConstMappingIterator::inRange(), IEEE802154A::mandatory_pulse, ConstMappingIterator::next(), and Signal::setTransmissionPower().

                                                          {
    // We create a new "fake" txPower to add multipath taps
    // and then attenuation is applied to all pulses.

  // (1) Power Delay Profile realization

    txPower = s.getTransmissionPower();
    newTxPower = new TimeMapping<Linear>(); //dynamic_cast<TimeMapping<Linear>*> (txPower->clone()); // create working copy
    pulsesIter = newTxPower->createIterator(); // create an iterator that we will use many times in addEchoes
    // generate number of clusters for this channel (channel coherence time > packet air time)
    L = max(1, poisson(cfg.Lmean));
    // Choose block shadowing
    S = pow(10,(normal(0, cfg.sigma_s)/10));

    // Loop on each value of the original mapping and generate multipath echoes
    ConstMappingIterator* iter = txPower->createConstIterator();

    while (iter->inRange()) {
        // generate echoes for each non zero value
        if (iter->getValue() != 0) {
          // give the pulse start position
            addEchoes(iter->getPosition().getTime() - IEEE802154A::mandatory_pulse/2);
        }
        if (!iter->hasNext()) {
            break;
        }
        iter->next();
    }
    delete iter;
    delete pulsesIter;
    s.setTransmissionPower(newTxPower);


    // compute distance
    Move srcMove = s.getMove();
    Coord srcCoord, rcvCoord;
    distance = 0;
    srcCoord = srcMove.getPositionAt(s.getSignalStart());
    rcvCoord = move->getPositionAt(s.getSignalStart());
    distance = rcvCoord.distance(srcCoord);

  // Total radiated power Prx at that distance  [W]
    //double attenuation = 0.5 * ntx * nrx * cfg.PL0 / pow(distance / d0, cfg.n);
    double attenuation = getPathloss(fc, BW);
    pathlosses.record(attenuation);
    // Power intensity I at that distance [W/m²]
    //attenuation = attenuation /(4*PI*pow(distance, cfg.n));
    // create mapping
    SimpleTimeConstMapping* attMapping = new SimpleTimeConstMapping(
        attenuation, s.getSignalStart(), s.getSignalStart()+s.getSignalLength());

    s.addAttenuation(attMapping);

}


Member Data Documentation

const bool UWBIRIEEE802154APathlossModel::implemented_CMs [static]
Initial value:
 {
            false, 
            true,  
            true,  
            true,  
            false, 
            true,  
            true,  
            true,  
            false,  
            false  
        }

Definition at line 94 of file UWBIRIEEE802154APathlossModel.h.


The documentation for this class was generated from the following files: