SimplePathlossModel.h

00001 #ifndef PATHLOSSMODEL_H_
00002 #define PATHLOSSMODEL_H_
00003 
00004 #include "AnalogueModel.h"
00005 #include "Mapping.h"
00006 #include "BaseWorldUtility.h"
00007 
00008 #include <cstdlib>
00009 
00010 class SimplePathlossModel;
00011 
00023 class SimplePathlossConstMapping : public SimpleConstMapping
00024 {
00025 
00026 protected:
00028   const double distFactor;
00030   SimplePathlossModel* model;
00032   bool hasFrequency;
00033 
00034 public:
00039   SimplePathlossConstMapping(const DimensionSet& dimensions,
00040                  SimplePathlossModel* model,
00041                  const double distFactor);
00042 
00048   virtual double getValue(const Argument& pos) const;
00049 
00055   ConstMapping* constClone() const
00056   {
00057     return new SimplePathlossConstMapping(*this);
00058   }
00059 
00060 };
00061 
00062 
00085 class SimplePathlossModel : public AnalogueModel
00086 {
00087 protected:
00088   friend class SimplePathlossConstMapping;
00089 
00091     double pathLossAlphaHalf;
00092 
00094     double carrierFrequency;
00095 
00097     const Move& myMove;
00098 
00100   const bool useTorus;
00101 
00103   const Coord& playgroundSize;
00104 
00106   bool debug;
00107 
00108 public:
00125   SimplePathlossModel(double alpha, double carrierFrequency, const Move* myMove,
00126           bool useTorus, const Coord& playgroundSize, bool debug):
00127     pathLossAlphaHalf(alpha * 0.5),
00128     carrierFrequency(carrierFrequency),
00129     myMove(*myMove),
00130     useTorus(useTorus),
00131     playgroundSize(playgroundSize),
00132     debug(debug)
00133   {
00134 
00135   }
00136 
00141   virtual void filterSignal(Signal& s);
00142 
00153   virtual double calcPathloss(const Coord& myPos, const Coord& sendersPos);
00154 };
00155 
00156 #endif /*PATHLOSSMODEL_H_*/