ConnectionManager.cc

00001 #include <set>
00002 #include <cmath>
00003 
00004 #include "ConnectionManager.h"
00005 #include "BaseWorldUtility.h"
00006 
00007 #ifndef ccEV
00008 #define ccEV (ev.isDisabled()||!coreDebug) ? ev : ev << getName() << ": "
00009 #endif
00010 
00011 Define_Module( ConnectionManager );
00012 
00013 double ConnectionManager::calcInterfDist()
00014 {
00015   double interfDistance;
00016 
00017   //the minimum carrier frequency for this cell
00018   double carrierFrequency = par("carrierFrequency").doubleValue();
00019   //maximum transmission power possible
00020   double pMax             = par("pMax").doubleValue();
00021   if (pMax <=0) {
00022     error("Max transmission power is <=0!");
00023   }
00024   //minimum signal attenuation threshold
00025   double sat              = par("sat").doubleValue();
00026   //minimum path loss coefficient
00027   double alpha            = par("alpha").doubleValue();
00028 
00029   double waveLength     = (BaseWorldUtility::speedOfLight/carrierFrequency);
00030   //minimum power level to be able to physically receive a signal
00031   double minReceivePower = pow(10.0, sat/10.0);
00032 
00033   interfDistance = pow(waveLength * waveLength * pMax
00034                  / (16.0*M_PI*M_PI*minReceivePower),
00035                1.0 / alpha);
00036 
00037   ccEV << "max interference distance:" << interfDistance << endl;
00038 
00039   return interfDistance;
00040 }
00041