From 4752198ce78eaa2d5e15b990902fca59348b36a0 Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Thu, 31 Mar 2011 19:42:35 +0200 Subject: [PATCH] [Positioning] Include algorithm name in results --- owlps-positioning/TODO | 2 -- owlps-positioning/src/cartographyalgorithm.cc | 2 +- owlps-positioning/src/fbcm.hh | 2 +- owlps-positioning/src/frbhmbasic.cc | 2 +- owlps-positioning/src/frbhmbasic.hh | 3 ++- owlps-positioning/src/interlinknetworks.hh | 2 +- .../src/multilaterationalgorithm.cc | 2 +- owlps-positioning/src/outputcsv.cc | 2 ++ owlps-positioning/src/positioningalgorithm.hh | 7 ++++++- owlps-positioning/src/radar.hh | 2 +- owlps-positioning/src/realposition.cc | 4 ++-- owlps-positioning/src/realposition.hh | 2 ++ owlps-positioning/src/result.cc | 13 ++++++------ owlps-positioning/src/result.hh | 21 +++++++++++++++---- 14 files changed, 44 insertions(+), 22 deletions(-) diff --git a/owlps-positioning/TODO b/owlps-positioning/TODO index 82cc2b9..2891c6c 100644 --- a/owlps-positioning/TODO +++ b/owlps-positioning/TODO @@ -26,8 +26,6 @@ normaux. - Positioning - ° Afficher le nom de chaque algorithme lors de la sortie d'un - résultat. ° Pour une requête, la sortie des résultats de tous les algos devrait se faire simultanément sur le medium de sortie, ce qui permettrait par exemple de créer un tableau pour l'affichage CSV diff --git a/owlps-positioning/src/cartographyalgorithm.cc b/owlps-positioning/src/cartographyalgorithm.cc index 6aa88ba..9895ce6 100644 --- a/owlps-positioning/src/cartographyalgorithm.cc +++ b/owlps-positioning/src/cartographyalgorithm.cc @@ -5,5 +5,5 @@ Result CartographyAlgorithm::compute(const Request &request) { Point3D position(select_point(request)) ; - return Result(&request, position) ; + return Result(&request, position, name) ; } diff --git a/owlps-positioning/src/fbcm.hh b/owlps-positioning/src/fbcm.hh index 1b60b11..a1f8421 100644 --- a/owlps-positioning/src/fbcm.hh +++ b/owlps-positioning/src/fbcm.hh @@ -10,7 +10,7 @@ protected: float friis_index(const AccessPoint *const ap) const ; public: - FBCM(void) {} + FBCM(void): PositioningAlgorithm("FBCM") {} ~FBCM(void) {} float estimate_distance(const Measurement &measurement) ; diff --git a/owlps-positioning/src/frbhmbasic.cc b/owlps-positioning/src/frbhmbasic.cc index aad1e0e..e7616f2 100644 --- a/owlps-positioning/src/frbhmbasic.cc +++ b/owlps-positioning/src/frbhmbasic.cc @@ -12,7 +12,7 @@ Result FRBHMBasic::compute(const Request &_request) compute_ap_distance_circles() ; Point3D position(multilaterate_2d(closest_in_ss->get_z())) ; - return Result(request, position) ; + return Result(request, position, name) ; } diff --git a/owlps-positioning/src/frbhmbasic.hh b/owlps-positioning/src/frbhmbasic.hh index a4b4358..44f1470 100644 --- a/owlps-positioning/src/frbhmbasic.hh +++ b/owlps-positioning/src/frbhmbasic.hh @@ -13,7 +13,8 @@ protected: float friis_index(const AccessPoint *const ap) const ; public: - FRBHMBasic(void): closest_in_ss(NULL) {} + FRBHMBasic(void): + PositioningAlgorithm("FRBHMBasic"), closest_in_ss(NULL) {} ~FRBHMBasic(void) {} /** @name Operations */ diff --git a/owlps-positioning/src/interlinknetworks.hh b/owlps-positioning/src/interlinknetworks.hh index 0be86a6..ae67fde 100644 --- a/owlps-positioning/src/interlinknetworks.hh +++ b/owlps-positioning/src/interlinknetworks.hh @@ -7,7 +7,7 @@ class InterlinkNetworks: public MultilaterationAlgorithm { public: - InterlinkNetworks(void) {} + InterlinkNetworks(void): PositioningAlgorithm("InterlinkNetworks") {} ~InterlinkNetworks(void) {} float estimate_distance(const Measurement &measurement) ; diff --git a/owlps-positioning/src/multilaterationalgorithm.cc b/owlps-positioning/src/multilaterationalgorithm.cc index edc03da..867318d 100644 --- a/owlps-positioning/src/multilaterationalgorithm.cc +++ b/owlps-positioning/src/multilaterationalgorithm.cc @@ -58,7 +58,7 @@ Result MultilaterationAlgorithm::compute(const Request &_request) compute_ap_distance_circles() ; Point3D position(multilaterate()) ; - return Result(request, position) ; + return Result(request, position, name) ; } diff --git a/owlps-positioning/src/outputcsv.cc b/owlps-positioning/src/outputcsv.cc index c413e09..667e85a 100644 --- a/owlps-positioning/src/outputcsv.cc +++ b/owlps-positioning/src/outputcsv.cc @@ -27,6 +27,8 @@ const string OutputCSV::result_to_csv(const Result &result) else csv_line << ";;;" ; + csv_line << ';' << result.get_algorithm() ; + Point3D position = result.get_position() ; csv_line << ';' << position.get_x() diff --git a/owlps-positioning/src/positioningalgorithm.hh b/owlps-positioning/src/positioningalgorithm.hh index e1b0c7a..daf8387 100644 --- a/owlps-positioning/src/positioningalgorithm.hh +++ b/owlps-positioning/src/positioningalgorithm.hh @@ -7,8 +7,13 @@ /// Super-class of all positioning algorithms class PositioningAlgorithm { +protected: + /// Name of the algorithm + const std::string name ; + public: - PositioningAlgorithm(void) {} + PositioningAlgorithm(const std::string _name = "UnknownAlgorithm"): + name(_name) {} virtual ~PositioningAlgorithm(void) {} virtual Result compute(const Request &request) = 0 ; diff --git a/owlps-positioning/src/radar.hh b/owlps-positioning/src/radar.hh index 4821175..1549cb7 100644 --- a/owlps-positioning/src/radar.hh +++ b/owlps-positioning/src/radar.hh @@ -13,7 +13,7 @@ class RADAR: public CartographyAlgorithm { public: - RADAR(void) {} + RADAR(void): PositioningAlgorithm("RADAR") {} ~RADAR(void) {} const ReferencePoint& select_point(const Request &request) ; diff --git a/owlps-positioning/src/realposition.cc b/owlps-positioning/src/realposition.cc index 2c6327b..144db02 100644 --- a/owlps-positioning/src/realposition.cc +++ b/owlps-positioning/src/realposition.cc @@ -14,8 +14,8 @@ Result RealPosition::compute(const Request &request) Point3D *coordinates = static_cast( calibration_request->get_reference_point()) ; - return Result(&request, *coordinates) ; + return Result(&request, *coordinates, name) ; } - return Result(&request) ; + return Result(&request, name) ; } diff --git a/owlps-positioning/src/realposition.hh b/owlps-positioning/src/realposition.hh index 8067b79..783d440 100644 --- a/owlps-positioning/src/realposition.hh +++ b/owlps-positioning/src/realposition.hh @@ -11,6 +11,8 @@ class RealPosition: public PositioningAlgorithm { public: + RealPosition(void): PositioningAlgorithm("RealPosition") {} + Result compute(const Request &request) ; } ; diff --git a/owlps-positioning/src/result.cc b/owlps-positioning/src/result.cc index 50131a5..0929e15 100644 --- a/owlps-positioning/src/result.cc +++ b/owlps-positioning/src/result.cc @@ -11,6 +11,7 @@ const Result& Result::operator=(const Result &source) if (this == &source) return *this ; + algorithm = source.algorithm ; position = source.position ; request = source.request ; @@ -21,6 +22,7 @@ const Result& Result::operator=(const Result &source) bool Result::operator==(const Result &source) const { return + algorithm == source.algorithm && position == source.position && request == source.request ; } @@ -30,12 +32,11 @@ bool Result::operator==(const Result &source) const std::ostream& operator<<(std::ostream &os, const Result &r) { if (r.request == NULL) - os << "For an unknown request, the result is: " ; + os << "For an unknown request, the " ; else - os - << "For the following request: " - << *(r.request) - << "\nThe result is: " ; - os << r.position ; + os << "For the following request: " << *(r.request) << "\nThe " ; + os + << "result of the algorithm " << r.algorithm + << " is: " << r.position ; return os ; } diff --git a/owlps-positioning/src/result.hh b/owlps-positioning/src/result.hh index 7772b97..951eaaa 100644 --- a/owlps-positioning/src/result.hh +++ b/owlps-positioning/src/result.hh @@ -5,22 +5,29 @@ class Request ; #include "point3d.hh" +#include + /// Represents a result computed by a positioning algorithm class Result { protected: Point3D position ; Request *request ; + std::string algorithm ; public: - Result(const Request *_request = NULL): - request(const_cast(_request)) {} - Result(const Request *_request, const Point3D &_position): - position(_position), request(const_cast(_request)) {} + Result(const Request *_request = NULL, + const std::string &_algorithm = "UnknownAlgorithm"): + request(const_cast(_request)), algorithm(_algorithm) {} + Result(const Request *_request, const Point3D &_position, + const std::string &_algorithm): + position(_position), request(const_cast(_request)), + algorithm(_algorithm) {} ~Result(void) {} /** @name Read accessors */ //@{ + const std::string& get_algorithm(void) const ; const Point3D& get_position(void) const ; const Request* get_request(void) const ; //@} @@ -41,6 +48,12 @@ public: /* *** Read accessors *** */ +inline const std::string& Result::get_algorithm() const +{ + return algorithm ; +} + + inline const Point3D& Result::get_position() const { return position ;