(no subject)

Dipika Sarkar <[email protected]> Fri, 4 Dec 2015 14:30:02 +0530
Newsgroups gmane.mail.archives.mail-archive
Message-ID <CAFt3Pti5jzDiwgi+p_RRQtuYr87A52pVX6fz28PaDvWE0=k5Vw@mail.gmail.com>
--===============3699925485354468223==
Content-Type: multipart/alternative; boundary=089e0139faa8a0f5ee05260ebbbf

--089e0139faa8a0f5ee05260ebbbf
Content-Type: text/plain; charset=UTF-8

Hello
       I want to calculate the signal strength received from some APS. But
 up to now, I just have written some codes like below to implement this
 function.
 proc record {} {
   global filepr pt l lambda gt gr pi node
    set ns [Simulator instance]
    set time 0.1;# record 0.5 second
   set m_x [$node(1) set X_]
   set m_y [$node(1) set Y_]
   set n_x [$node(0) set X_]
    set n_y [$node(0) set Y_]
    set d [expr (sqrt(pow(($m_x - $n_x),2)+ pow(($m_y-$n_y),2)))]
   set m [expr (1 /(4 * $pi * $d))]
    set pr [expr ($pt * $gr * $gt * $m * $m / 1)]
    set now [$ns now]

    puts $filepr "$d\t$pr"
    $ns at [expr $now + $time] "record"
 }
 I set all the parameters but d to calculate Pr. About d, I record the
 dynamic coordinate(x,y), and then compared it to the coordiate of
 AP(x1,y1) to get d.
 But now, I want to implement using a function written in the file
 /mobile/propagation.cc

 double FreeSpace::Pr(PacketStamp *t, PacketStamp *r, WirelessPhy *ifp)
 {
       double L = ifp->getL();         // system loss
      double lambda = ifp->getLambda();   // wavelength

       double Xt, Yt, Zt;              // location of transmitter
 double Xr, Yr, Zr;


          // location of receiver
t->getNode()->getLoc(&Xt, &Yt, &Zt);
       r->getNode()->getLoc(&Xr, &Yr, &Zr);

       // Is antenna position relative to node position?
       Xr += r->getAntenna()->getX();
       Yr += r->getAntenna()->getY();
       Zr += r->getAntenna()->getZ();
       Xt += t->getAntenna()->getX();
       Yt += t->getAntenna()->getY();
       Zt += t->getAntenna()->getZ();

       double dX = Xr - Xt;
       double dY = Yr - Yt;
       double dZ = Zr - Zt;
       double d = sqrt(dX * dX + dY * dY + dZ * dZ);

       // get antenna gain
       double Gt = t->getAntenna()->getTxGain(dX, dY, dZ, lambda);
       double Gr = r->getAntenna()->getRxGain(dX, dY, dZ, lambda);

       // calculate receiving power at distance
       double Pr = Friis(t->getTxPr(), Gt, Gr, lambda, L, d);
      // warning: use of `l' length character with `f' type character
       //  - Sally Floyd, FreeBSD.
       printf("%lf: d: %lf, Pr: %e\n", Scheduler::instance().clock(), d, Pr);

       return Pr;
 }

The question is I don't know how to call this c++ function using tcl
script

--089e0139faa8a0f5ee05260ebbbf
Content-Type: text/html; charset=UTF-8

<div dir="ltr"><pre>Hello
       I want to calculate the signal strength received from some APS. But
 up to now, I just have written some codes like below to implement this
 function.
 proc record {} {
   global filepr pt l lambda gt gr pi node
    set ns [Simulator instance] 
    set time 0.1;# record 0.5 second
   set m_x [$node(1) set X_]
   set m_y [$node(1) set Y_]
   set n_x [$node(0) set X_]
    set n_y [$node(0) set Y_]
    set d [expr (sqrt(pow(($m_x - $n_x),2)+ pow(($m_y-$n_y),2)))]
   set m [expr (1 /(4 * $pi * $d))]
    set pr [expr ($pt * $gr * $gt * $m * $m / 1)]
    set now [$ns now]
   
    puts $filepr &quot;$d\t$pr&quot;
    $ns at [expr $now + $time] &quot;record&quot;
 }
 I set all the parameters but d to calculate Pr. About d, I record the
 dynamic coordinate(x,y), and then compared it to the coordiate of
 AP(x1,y1) to get d.
 But now, I want to implement using a function written in the file
 /mobile/propagation.cc
 
 double FreeSpace::Pr(PacketStamp *t, PacketStamp *r, WirelessPhy *ifp)
 {
       double L = ifp-&gt;getL();         // system loss
      double lambda = ifp-&gt;getLambda();   // wavelength
 
       double Xt, Yt, Zt;              // location of transmitter       double Xr, Yr, Zr;    <br><br><br>          // location of receiver<br>t-&gt;getNode()-&gt;getLoc(&amp;Xt, &amp;Yt, &amp;Zt);
       r-&gt;getNode()-&gt;getLoc(&amp;Xr, &amp;Yr, &amp;Zr);
 
       // Is antenna position relative to node position?
       Xr += r-&gt;getAntenna()-&gt;getX();
       Yr += r-&gt;getAntenna()-&gt;getY();
       Zr += r-&gt;getAntenna()-&gt;getZ();
       Xt += t-&gt;getAntenna()-&gt;getX();
       Yt += t-&gt;getAntenna()-&gt;getY();
       Zt += t-&gt;getAntenna()-&gt;getZ();
 
       double dX = Xr - Xt;
       double dY = Yr - Yt;
       double dZ = Zr - Zt;
       double d = sqrt(dX * dX + dY * dY + dZ * dZ);
 
       // get antenna gain
       double Gt = t-&gt;getAntenna()-&gt;getTxGain(dX, dY, dZ, lambda);
       double Gr = r-&gt;getAntenna()-&gt;getRxGain(dX, dY, dZ, lambda);
 
       // calculate receiving power at distance
       double Pr = Friis(t-&gt;getTxPr(), Gt, Gr, lambda, L, d);
      // warning: use of `l&#39; length character with `f&#39; type character
       //  - Sally Floyd, FreeBSD.
       printf(&quot;%lf: d: %lf, Pr: %e\n&quot;, Scheduler::instance().clock(), d, Pr);
 
       return Pr;
 }
 
The question is I don&#39;t know how to call this c++ function using tcl
script <br></pre></div>

--089e0139faa8a0f5ee05260ebbbf--


--===============3699925485354468223==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Gossip mailing list
https://www.mail-archive.com/gossip-piJqB+B6DfPJghKJT/[email protected]
https://www.mail-archive.com/cgi-bin/mailman/options/gossip
--===============3699925485354468223==--