Public Types | Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Attributes

DeciderUWBIRED Class Reference
[IEEE 802.15.4A - Classes that implement the IEEE 802.15.4A UWB PHY.decider - decider modules]

This class implements a model of an energy detection receiver that demodulates UWB-IR burst position modulation as defined in the IEEE802154A standard (mandatory mode, high PRF). More...

#include <DeciderUWBIRED.h>

Inherits Decider.

Inherited by DeciderUWBIREDSync, and DeciderUWBIREDSyncOnAddress.

Collaboration diagram for DeciderUWBIRED:
Collaboration graph
[legend]

List of all members.

Public Types

enum  UWBIRED_CTRL_KIND { SYNC_SUCCESS = MacToPhyInterface::LAST_BASE_PHY_KIND+1, SYNC_FAILURE }
 

Control message kinds specific to DeciderUWBIRED. Currently defines a message kind that informs the MAC of a successful SYNC event at PHY layer.


Public Member Functions

 DeciderUWBIRED (DeciderToPhyInterface *iface, PhyLayerUWBIR *_uwbiface, double _syncThreshold, bool _syncAlwaysSucceeds, bool _stats, bool _trace, bool alwaysFailOnDataInterference=false)
virtual simtime_t processSignal (AirFrame *frame)
 This function processes a AirFrame given by the PhyLayer and returns the time point when Decider wants to be given the AirFrame again.
double getAvgThreshold ()
double getNoiseValue ()
void cancelReception ()
void finish ()
 Method to be called by an OMNeT-module during its own finish(), to enable a decider to do some things.
virtual ChannelState getChannelState ()
 A function that returns information about the channel state.

Static Public Attributes

static const double noiseVariance = 101.085E-12
static const double peakPulsePower = 1.3E-3

Protected Types

enum  { FIRST, HEADER_OVER, SIGNAL_OVER }
typedef ConcatConstMapping
< std::multiplies< double > > 
MultipliedMapping

Protected Member Functions

bool decodePacket (Signal *signal, vector< bool > *receivedBits)
simtime_t handleNewSignal (Signal *s)
simtime_t handleHeaderOver (map< Signal *, int >::iterator &it)
virtual bool attemptSync (Signal *signal)
simtime_t handleSignalOver (map< Signal *, int >::iterator &it, AirFrame *frame)
pair< double, double > integrateWindow (int symbol, simtime_t now, simtime_t burst, Signal *signal)
simtime_t handleChannelSenseRequest (ChannelSenseRequest *request)
 This function is called by the PhyLayer to hand over a ChannelSenseRequest.

Protected Attributes

double syncThreshold
 Stores the snr value of the last packet seen (see decodePacket).
bool syncAlwaysSucceeds
bool channelSensing
bool synced
bool alwaysFailOnDataInterference
UWBIRPacket packet
int catUWBIRPacket
BaseUtilityutility
double epulseAggregate
double enoiseAggregate
map< Signal *, int > currentSignals
cOutVector receivedPulses
cOutVector syncThresholds
PhyLayerUWBIRuwbiface
Signaltracking
int nbFramesWithInterference
int nbFramesWithoutInterference
int nbCancelReceptions
int nbFinishTrackingFrames
int nbFinishNoiseFrames
vector< ConstMapping * > receivingPowers
ConstMappingsignalPower
vector< simtime_t > offsets
AirFrameVector airFrameVector
AirFrameVector::iterator airFrameIter

Private Attributes

bool trace
bool stats
long nbRandomBits
long nbFailedSyncs
long nbSuccessfulSyncs
double nbSymbols
double allThresholds
double vsignal2
double vnoise2
double snirs
double snirEvals
double pulseSnrs
double packetSNIR
double packetSignal
double packetNoise
double packetSamples
IEEE802154A::config cfg
double snrLastPacket

Detailed Description

This class implements a model of an energy detection receiver that demodulates UWB-IR burst position modulation as defined in the IEEE802154A standard (mandatory mode, high PRF).

The code modeling the frame clock synchronization is implemented in attemptSync(). Simply subclass this class and redefine attemptSync() if you wish to consider more sophisticated synchronization models.

To implement a coherent receiver, the easiest way to start is to copy-paste this code into a new class and rename it accordingly. Then, redefine decodePacket().

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 66 of file DeciderUWBIRED.h.


Member Function Documentation

ChannelState DeciderUWBIRED::getChannelState (  )  [virtual]

A function that returns information about the channel state.

It is an alternative for the MACLayer in order to obtain information immediately (in contrast to sending a ChannelSenseRequest, i.e. sending a cMessage over the OMNeT-control-channel)

Reimplemented from Decider.

Definition at line 365 of file DeciderUWBIRED.cc.

                                             {
  return ChannelState(true, 0);  // channel is always "sensed" free
}

simtime_t DeciderUWBIRED::handleChannelSenseRequest ( ChannelSenseRequest *  request  )  [protected, virtual]

This function is called by the PhyLayer to hand over a ChannelSenseRequest.

The MACLayer is able to send a ChannelSenseRequest to the PhyLayer that calls this function with it and is returned a time point when to re-call this function with the specific ChannelSenseRequest.

The Decider puts the result (ChannelState) to the ChannelSenseRequest and "answers" by calling the "sendControlMsg"-function on the DeciderToPhyInterface, i.e. telling the PhyLayer to send it back.

Reimplemented from Decider.

Definition at line 352 of file DeciderUWBIRED.cc.

References Decider::phy, and DeciderToPhyInterface::sendControlMsg().

                                                                                {
  if (channelSensing) {
    // send back the channel state
    request->setResult(new ChannelState(synced, 0)); // bogus rssi value (0)
    phy->sendControlMsg(request);
    channelSensing = false;
    return -1; // do not call me back ; I have finished
  } else {
    channelSensing = true;
    return -1; //phy->getSimTime() + request->getSenseDuration();
  }
}


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