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; |