(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 "$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; <br><br><br> // location of receiver<br>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 <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==--