diff --git a/owlps-positioning/src/multilaterationalgorithm.cc b/owlps-positioning/src/multilaterationalgorithm.cc index 4ef19ce..edc03da 100644 --- a/owlps-positioning/src/multilaterationalgorithm.cc +++ b/owlps-positioning/src/multilaterationalgorithm.cc @@ -43,7 +43,7 @@ make_constant_term(const Measurement &measurement) ap->get_trx_power() + ap->get_antenna_gain() + 20 * log10( - 300000000.0 / + static_cast(PosUtil::LIGHT_SPEED) / ap->get_frequency() / (4 * M_PI) ) + diff --git a/owlps-positioning/src/posutil.hh b/owlps-positioning/src/posutil.hh index 16f46ab..aa66643 100644 --- a/owlps-positioning/src/posutil.hh +++ b/owlps-positioning/src/posutil.hh @@ -5,6 +5,9 @@ class PosUtil { public: + /// The speed of light, in m/s + static const unsigned long LIGHT_SPEED = 299792458 ; + /** @name Wi-Fi */ //@{ /// Converts a Wi-Fi channel to the corresponding frequency in Hz diff --git a/owlps-positioning/tests/interlinknetworks_test.hh b/owlps-positioning/tests/interlinknetworks_test.hh index 7b95d20..beda92f 100644 --- a/owlps-positioning/tests/interlinknetworks_test.hh +++ b/owlps-positioning/tests/interlinknetworks_test.hh @@ -24,11 +24,11 @@ public: Measurement measurement(&ap, ss_list) ; /* ** How to check ref_distance in Scilab? ** - * C = 5 + 20 + 20 * log10(300000000 / 2412000000 / (4 * PI)) + 3 + * C = 5 + 20 + 20 * log10(299792458 / 2412000000 / (4 * PI)) + 3 * L = -42 * ref_distance = 10^((C-L)/35) */ - float ref_distance = 7.1547 ; + float ref_distance = 7.1519 ; float computed_distance = algo->estimate_distance(measurement) ; TS_ASSERT_DELTA(computed_distance, ref_distance, 0.0001) ;