#ifndef _OWLPS_POSITIONING_MULTILATERATIONALGORITHM_HH_ #define _OWLPS_POSITIONING_MULTILATERATIONALGORITHM_HH_ #include "positioningalgorithm.hh" #include "multilaterationmethod.hh" /// Super-class of multilateration-based positioning algorithms class MultilaterationAlgorithm: public virtual PositioningAlgorithm { protected: const Request *request ; std::tr1::unordered_map ap_distances ; MultilaterationMethod *multilateration_method ; /** @name Operations */ //@{ double make_constant_term(const Measurement &measurement) ; void compute_ap_distance_circles() ; Point3D multilaterate() ; Point3D multilaterate_2d(float z) ; //@} public: MultilaterationAlgorithm(void) ; virtual ~MultilaterationAlgorithm(void) ; /** @name Operations */ //@{ Result compute(const Request &_request) ; virtual float estimate_distance(const Measurement &measurement) = 0 ; //@} } ; inline Point3D MultilaterationAlgorithm::multilaterate() { return multilateration_method->multilaterate(ap_distances) ; } inline Point3D MultilaterationAlgorithm::multilaterate_2d(float z) { return multilateration_method->multilaterate_2d(ap_distances, z) ; } #endif // _OWLPS_POSITIONING_MULTILATERATIONALGORITHM_HH_