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