get rid of reference model for log distance model
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Tue, 28 Oct 2008 13:40:33 +0100
changeset 3909 4e7e594b0b7e
parent 3908 232d52317a18
child 3910 6fa1d439ba1c
get rid of reference model for log distance model
examples/wifi-ap.cc
examples/wifi-wired-bridging.cc
samples/main-propagation-loss.cc
src/devices/wifi/propagation-loss-model.cc
src/devices/wifi/propagation-loss-model.h
src/devices/wifi/wifi-phy-test.cc
src/helper/wifi-helper.cc
--- a/examples/wifi-ap.cc	Tue Oct 28 13:24:04 2008 +0100
+++ b/examples/wifi-ap.cc	Tue Oct 28 13:40:33 2008 +0100
@@ -134,7 +134,6 @@
   Ptr<YansWifiChannel> channel = CreateObject<YansWifiChannel> ();
   channel->SetPropagationDelayModel (CreateObject<ConstantSpeedPropagationDelayModel> ());
   Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
-  log->SetReferenceModel (CreateObject<FriisPropagationLossModel> ());
   channel->SetPropagationLossModel (log);
 
   Ssid ssid = Ssid ("wifi-default");
--- a/examples/wifi-wired-bridging.cc	Tue Oct 28 13:24:04 2008 +0100
+++ b/examples/wifi-wired-bridging.cc	Tue Oct 28 13:40:33 2008 +0100
@@ -20,7 +20,6 @@
   Ptr<YansWifiChannel> channel = CreateObject<YansWifiChannel> ();
   channel->SetPropagationDelayModel (CreateObject<ConstantSpeedPropagationDelayModel> ());
   Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
-  log->SetReferenceModel (CreateObject<FriisPropagationLossModel> ());
   channel->SetPropagationLossModel (log);
   return channel;
 }
--- a/samples/main-propagation-loss.cc	Tue Oct 28 13:24:04 2008 +0100
+++ b/samples/main-propagation-loss.cc	Tue Oct 28 13:40:33 2008 +0100
@@ -30,7 +30,6 @@
   Ptr<StaticMobilityModel> a = CreateObject<StaticMobilityModel> ();
   Ptr<StaticMobilityModel> b = CreateObject<StaticMobilityModel> ();
   Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
-  log->SetReferenceModel (CreateObject<FriisPropagationLossModel> ());
 
   Ptr<PropagationLossModel> model = log;
 
--- a/src/devices/wifi/propagation-loss-model.cc	Tue Oct 28 13:24:04 2008 +0100
+++ b/src/devices/wifi/propagation-loss-model.cc	Tue Oct 28 13:40:33 2008 +0100
@@ -237,11 +237,11 @@
                    DoubleValue (1.0),
                    MakeDoubleAccessor (&LogDistancePropagationLossModel::m_referenceDistance),
                    MakeDoubleChecker<double> ())
-    .AddAttribute ("ReferenceModel",
-                   "The reference model at the reference distance.",
-                   PointerValue (),
-                   MakePointerAccessor (&LogDistancePropagationLossModel::m_reference),
-                   MakePointerChecker<PropagationLossModel> ())
+    .AddAttribute ("ReferenceLoss",
+                   "The distance at which the reference loss is calculated (m)",
+                   DoubleValue (46.6777),
+                   MakeDoubleAccessor (&LogDistancePropagationLossModel::m_referenceDistance),
+                   MakeDoubleChecker<double> ())
     ;
   return tid;
                    
@@ -256,14 +256,10 @@
   m_exponent = n;
 }
 void 
-LogDistancePropagationLossModel::SetReferenceDistance (double referenceDistance)
+LogDistancePropagationLossModel::SetReference (double referenceDistance, double referenceLoss)
 {
   m_referenceDistance = referenceDistance;
-}
-void 
-LogDistancePropagationLossModel::SetReferenceModel (Ptr<PropagationLossModel> model)
-{
-  m_reference = model;
+  m_referenceLoss = referenceLoss;
 }
 double 
 LogDistancePropagationLossModel::GetPathLossExponent (void) const
@@ -294,15 +290,10 @@
    *      
    * rx = rx0(tx) - 10 * n * log (d/d0)
    */
-  static Ptr<StaticMobilityModel> zero = CreateObject<StaticMobilityModel> ();
-  static Ptr<StaticMobilityModel> reference = CreateObject<StaticMobilityModel> ();
-  zero->SetPosition (Vector (0.0, 0.0, 0.0));
-  reference->SetPosition (Vector (m_referenceDistance, 0.0, 0.0));
-  double ref = m_reference->GetLoss (zero, reference);
   double pathLossDb = 10 * m_exponent * log10 (distance / m_referenceDistance);
-  double rxc = ref - pathLossDb;
-  NS_LOG_DEBUG ("distance="<<distance<<"m, reference-attenuation="<<ref<<"dB, "<<
-		"attenuation coefficient="<<rxc<<"dbm");
+  double rxc = -m_referenceLoss - pathLossDb;
+  NS_LOG_DEBUG ("distance="<<distance<<"m, reference-attenuation="<<-m_referenceLoss<<"dB, "<<
+		"attenuation coefficient="<<rxc<<"db");
   return rxc;
 }
 
--- a/src/devices/wifi/propagation-loss-model.h	Tue Oct 28 13:24:04 2008 +0100
+++ b/src/devices/wifi/propagation-loss-model.h	Tue Oct 28 13:40:33 2008 +0100
@@ -208,12 +208,7 @@
    */
   double GetPathLossExponent (void) const;
 
-  /**
-   * \param model the reference propagation model
-   */
-  void SetReferenceModel (Ptr<PropagationLossModel> model);
-
-  void SetReferenceDistance (double referenceDistance);
+  void SetReference (double referenceDistance, double referenceLoss);
   
 private:
   LogDistancePropagationLossModel (const LogDistancePropagationLossModel &o);
@@ -224,7 +219,7 @@
 
   double m_exponent;
   double m_referenceDistance;
-  Ptr<PropagationLossModel> m_reference;
+  double m_referenceLoss;
 };
 
 } // namespace ns3
--- a/src/devices/wifi/wifi-phy-test.cc	Tue Oct 28 13:24:04 2008 +0100
+++ b/src/devices/wifi/wifi-phy-test.cc	Tue Oct 28 13:40:33 2008 +0100
@@ -81,7 +81,6 @@
   Ptr<YansWifiChannel> channel = CreateObject<YansWifiChannel> ();
   channel->SetPropagationDelayModel (CreateObject<ConstantSpeedPropagationDelayModel> ());
   Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
-  log->SetReferenceModel (CreateObject<FriisPropagationLossModel> ());
   channel->SetPropagationLossModel (log);
 
   Ptr<WifiPhy> tx = channel->CreatePhy (0, posTx, UnsafeAttributeList ());
@@ -196,7 +195,6 @@
   Ptr<YansWifiChannel> channel = CreateObject<YansWifiChannel> ();
   channel->SetPropagationDelayModel (CreateObject<ConstantSpeedPropagationDelayModel> ());
   Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
-  log->SetReferenceModel (CreateObject<FriisPropagationLossModel> ());
   channel->SetPropagationLossModel (log);
 
   Ptr<MobilityModel> posTxA = CreateObject<StaticMobilityModel> ();
--- a/src/helper/wifi-helper.cc	Tue Oct 28 13:24:04 2008 +0100
+++ b/src/helper/wifi-helper.cc	Tue Oct 28 13:40:33 2008 +0100
@@ -227,7 +227,6 @@
   Ptr<YansWifiChannel> channel = CreateObject<YansWifiChannel> ();
   channel->SetPropagationDelayModel (CreateObject<ConstantSpeedPropagationDelayModel> ());
   Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
-  log->SetReferenceModel (CreateObject<FriisPropagationLossModel> ());
   channel->SetPropagationLossModel (log);
   return Install (c, channel);
 }