diff --git a/owlps-positioning/src/interlinknetworks.cc b/owlps-positioning/src/interlinknetworks.cc index 21ba497..7f6daea 100644 --- a/owlps-positioning/src/interlinknetworks.cc +++ b/owlps-positioning/src/interlinknetworks.cc @@ -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) ; } diff --git a/owlps-positioning/src/multilaterationalgorithm.cc b/owlps-positioning/src/multilaterationalgorithm.cc index 3affec3..4ef19ce 100644 --- a/owlps-positioning/src/multilaterationalgorithm.cc +++ b/owlps-positioning/src/multilaterationalgorithm.cc @@ -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 ; diff --git a/owlps-positioning/src/multilaterationalgorithm.hh b/owlps-positioning/src/multilaterationalgorithm.hh index 6c18084..905278e 100644 --- a/owlps-positioning/src/multilaterationalgorithm.hh +++ b/owlps-positioning/src/multilaterationalgorithm.hh @@ -15,6 +15,7 @@ protected: /** @name Operations */ //@{ + double make_constant_term(const Measurement &measurement) ; void compute_ap_distance_circles() ; Point3D multilaterate() ; //@}