[Positioning] MultilaterationAlgorithm::make_constant_term()

Move the constant term computation from
InterlinkNetworks::estimate_distance() into the new function
MultilaterationAlgorithm::make_constant_term(). This will avoid
duplicate this code into the future FBCM::estimate_distance().
This commit is contained in:
Matteo Cypriani 2010-06-09 12:11:26 +02:00
parent e9eab6876d
commit 3dcf8bc88a
3 changed files with 25 additions and 18 deletions

View File

@ -1,26 +1,11 @@
#include "interlinknetworks.hh"
#include "mobile.hh"
using std::tr1::unordered_map ;
float InterlinkNetworks::estimate_distance(const Measurement &measurement)
float InterlinkNetworks::
estimate_distance(const Measurement &measurement)
{
assert(request) ;
const AccessPoint &ap = *measurement.get_ap() ;
assert(&ap) ;
double constant_term =
ap.get_trx_power() +
ap.get_antenna_gain() +
20 * log10(
300000000.0 /
ap.get_frequency() /
(4 * M_PI)
) +
request->get_mobile()->get_antenna_gain() ;
double constant_term = make_constant_term(measurement) ;
const float &average_ss = measurement.get_average_ss() ;
return pow(10, (constant_term - average_ss) / 35) ;
}

View File

@ -1,5 +1,6 @@
#include "multilaterationalgorithm.hh"
#include "minmax.hh"
#include "mobile.hh"
using namespace std ;
using std::tr1::unordered_map ;
@ -30,6 +31,26 @@ MultilaterationAlgorithm::~MultilaterationAlgorithm()
/* *** Operations *** */
double MultilaterationAlgorithm::
make_constant_term(const Measurement &measurement)
{
assert(request) ;
assert(request->get_mobile()) ;
const AccessPoint *ap = measurement.get_ap() ;
assert(ap) ;
return
ap->get_trx_power() +
ap->get_antenna_gain() +
20 * log10(
300000000.0 /
ap->get_frequency() /
(4 * M_PI)
) +
request->get_mobile()->get_antenna_gain() ;
}
Result MultilaterationAlgorithm::compute(const Request &_request)
{
request = &_request ;

View File

@ -15,6 +15,7 @@ protected:
/** @name Operations */
//@{
double make_constant_term(const Measurement &measurement) ;
void compute_ap_distance_circles() ;
Point3D multilaterate() ;
//@}