src/devices/wifi/propagation-loss-model.h
changeset 3907 56e477db65b2
parent 3388 0258bd0793ab
child 3908 232d52317a18
equal deleted inserted replaced
3906:01acc159ffb1 3907:56e477db65b2
    36 class PropagationLossModel : public Object
    36 class PropagationLossModel : public Object
    37 {
    37 {
    38 public:
    38 public:
    39   static TypeId GetTypeId (void);
    39   static TypeId GetTypeId (void);
    40 
    40 
       
    41   PropagationLossModel ();
    41   virtual ~PropagationLossModel ();
    42   virtual ~PropagationLossModel ();
       
    43 
       
    44   void SetNext (Ptr<PropagationLossModel> next);
       
    45 
    42   /**
    46   /**
    43    * \param a the mobility model of the source
    47    * \param a the mobility model of the source
    44    * \param b the mobility model of the destination
    48    * \param b the mobility model of the destination
    45    * \returns the attenuation coefficient (dB)
    49    * \returns the attenuation coefficient (dB)
    46    */
    50    */
    47   virtual double GetLoss (Ptr<MobilityModel> a,
    51   double GetLoss (Ptr<MobilityModel> a,
    48 			  Ptr<MobilityModel> b) const = 0;
    52                   Ptr<MobilityModel> b) const;
       
    53 private:
       
    54   PropagationLossModel (const PropagationLossModel &o);
       
    55   PropagationLossModel &operator = (const PropagationLossModel &o);
       
    56   virtual double DoGetLoss (Ptr<MobilityModel> a,
       
    57                             Ptr<MobilityModel> b) const = 0;
       
    58 
       
    59   Ptr<PropagationLossModel> m_next;
    49 };
    60 };
    50 
    61 
    51 /**
    62 /**
    52  * \brief The propagation loss is random
    63  * \brief The propagation loss is random
    53  */ 
    64  */ 
    57   static TypeId GetTypeId (void);
    68   static TypeId GetTypeId (void);
    58 
    69 
    59   RandomPropagationLossModel ();
    70   RandomPropagationLossModel ();
    60   virtual ~RandomPropagationLossModel ();
    71   virtual ~RandomPropagationLossModel ();
    61 
    72 
    62   virtual double GetLoss (Ptr<MobilityModel> a,
    73 private:
       
    74   virtual double DoGetLoss (Ptr<MobilityModel> a,
    63 			  Ptr<MobilityModel> b) const;
    75 			  Ptr<MobilityModel> b) const;
    64 private:
       
    65   RandomVariable m_variable;
    76   RandomVariable m_variable;
    66 };
    77 };
    67 
    78 
    68 /**
    79 /**
    69  * \brief a Friis propagation loss model
    80  * \brief a Friis propagation loss model
   145   /**
   156   /**
   146    * \returns the current system loss (dimention-less)
   157    * \returns the current system loss (dimention-less)
   147    */
   158    */
   148   double GetSystemLoss (void) const;
   159   double GetSystemLoss (void) const;
   149 
   160 
   150   virtual double GetLoss (Ptr<MobilityModel> a,
   161 private:
   151 			  Ptr<MobilityModel> b) const;
   162   virtual double DoGetLoss (Ptr<MobilityModel> a,
   152 private:
   163                             Ptr<MobilityModel> b) const;
   153   double DbmToW (double dbm) const;
   164   double DbmToW (double dbm) const;
   154   double DbmFromW (double w) const;
   165   double DbmFromW (double w) const;
   155 
   166 
   156   static const double PI;
   167   static const double PI;
   157   double m_lambda;
   168   double m_lambda;
   198    */
   209    */
   199   void SetReferenceModel (Ptr<PropagationLossModel> model);
   210   void SetReferenceModel (Ptr<PropagationLossModel> model);
   200 
   211 
   201   void SetReferenceDistance (double referenceDistance);
   212   void SetReferenceDistance (double referenceDistance);
   202   
   213   
   203   virtual double GetLoss (Ptr<MobilityModel> a,
   214 private:
   204 			  Ptr<MobilityModel> b) const;
   215   virtual double DoGetLoss (Ptr<MobilityModel> a,
   205 private:
   216                             Ptr<MobilityModel> b) const;
   206   static Ptr<PropagationLossModel> CreateDefaultReference (void);
   217   static Ptr<PropagationLossModel> CreateDefaultReference (void);
   207 
   218 
   208   double m_exponent;
   219   double m_exponent;
   209   double m_referenceDistance;
   220   double m_referenceDistance;
   210   Ptr<PropagationLossModel> m_reference;
   221   Ptr<PropagationLossModel> m_reference;