From de9513e4b424084dae0b1e8b7524a774791cb55b Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Thu, 16 Jun 2011 19:05:14 +0200 Subject: [PATCH] [Positioning] Add option update-ap-coordinates-online In InputUDPSocket, update the AP's coordinates when receiving a calibration or autocalibration request that contains the coordinates. This is done if the option positioning.update-ap-coordinates-online is activated. --- owlps-positioning/cfg/owlps-positioning.cfg | 6 ++++++ owlps-positioning/src/inputudpsocket.cc | 9 +++++++++ owlps-positioning/src/userinterface.cc | 5 +++++ 3 files changed, 20 insertions(+) diff --git a/owlps-positioning/cfg/owlps-positioning.cfg b/owlps-positioning/cfg/owlps-positioning.cfg index 321fcfd..b6e5580 100644 --- a/owlps-positioning/cfg/owlps-positioning.cfg +++ b/owlps-positioning/cfg/owlps-positioning.cfg @@ -59,6 +59,12 @@ csv-file = /tmp/owlps-positioning.log # request is compared directly to each calibration request. #radar-average-reference-points = false +# When receiving a calibration or autocalibration request from an AP, +# containing the transmiter's coordinates, memorise the new AP's +# coordinates. +# This is unactivated by default for the sake of security. +#update-ap-coordinates-online = false + [output] # This is the default output if none is specified. diff --git a/owlps-positioning/src/inputudpsocket.cc b/owlps-positioning/src/inputudpsocket.cc index 69bfa2f..a40128e 100644 --- a/owlps-positioning/src/inputudpsocket.cc +++ b/owlps-positioning/src/inputudpsocket.cc @@ -1,6 +1,7 @@ #include "inputudpsocket.hh" #include "posexcept.hh" #include "stock.hh" +#include "configuration.hh" #include @@ -158,6 +159,14 @@ const Request& InputUDPSocket::get_next_request() if (request.type == OWL_REQUEST_AUTOCALIBRATION && ! position) position = transmitter.get_coordinates() ; + // Update the AP's coordinates if allowed. A 'false' position + // (i.e. 0;0;0) is only set for calibration requests, to avoid + // setting the coordinates to 0;0;0 if an autocalibration + // request that does not contain the coordinates is received. + else if (Configuration:: + bool_value("positioning.update-ap-coordinates-online")) + transmitter.set_coordinates(position) ; + const ReferencePoint &reference_point = Stock::find_create_reference_point(position) ; current_request_to_calibration_request(&reference_point, diff --git a/owlps-positioning/src/userinterface.cc b/owlps-positioning/src/userinterface.cc index b27990d..b60432f 100644 --- a/owlps-positioning/src/userinterface.cc +++ b/owlps-positioning/src/userinterface.cc @@ -186,6 +186,11 @@ void UserInterface::fill_positioning_options() " before to compute the SS distance." " The default is false, i.e the positioning request is compared" " directly to each calibration request.") + ("positioning.update-ap-coordinates-online", + po::value()->default_value(false), + "Allow AP's coordinates to be updated when a calibration request" + " with new coordinates is received from the AP (default is false," + " for security purposes).") ; file_options->add(options) ;