[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 "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) ; double constant_term = make_constant_term(measurement) ;
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() ;
const float &average_ss = measurement.get_average_ss() ; const float &average_ss = measurement.get_average_ss() ;
return pow(10, (constant_term - average_ss) / 35) ; return pow(10, (constant_term - average_ss) / 35) ;
} }

View File

@ -1,5 +1,6 @@
#include "multilaterationalgorithm.hh" #include "multilaterationalgorithm.hh"
#include "minmax.hh" #include "minmax.hh"
#include "mobile.hh"
using namespace std ; using namespace std ;
using std::tr1::unordered_map ; using std::tr1::unordered_map ;
@ -30,6 +31,26 @@ MultilaterationAlgorithm::~MultilaterationAlgorithm()
/* *** Operations *** */ /* *** 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) Result MultilaterationAlgorithm::compute(const Request &_request)
{ {
request = &_request ; request = &_request ;

View File

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