From ea8da6d8ecd78a6521349d205c06d9cc4a8d986f Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Tue, 26 Apr 2011 16:42:35 +0200 Subject: [PATCH] =?UTF-8?q?[Positioning]=20Fix=20InputMedium::=E2=80=A6=5F?= =?UTF-8?q?to=5Fcalibration=5Frequest()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix InputMedium::current_request_to_calibration_request(), that was resulting in a blank request. --- owlps-positioning/src/inputcsv.cc | 7 ++----- owlps-positioning/src/inputmedium.cc | 19 ++++++++++++++----- owlps-positioning/src/inputmedium.hh | 7 ++++++- owlps-positioning/src/inputudpsocket.cc | 10 +++------- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/owlps-positioning/src/inputcsv.cc b/owlps-positioning/src/inputcsv.cc index d38a5c9..8dc0dd4 100644 --- a/owlps-positioning/src/inputcsv.cc +++ b/owlps-positioning/src/inputcsv.cc @@ -132,14 +132,11 @@ const Request& InputCSV::get_next_request() if (type == OWL_REQUEST_CALIBRATION || type == OWL_REQUEST_AUTOCALIBRATION) { - current_request_to_calibration_request(type) ; - CalibrationRequest *request = - static_cast(current_request) ; - request->set_direction(direction) ; ReferencePoint position(pos) ; const ReferencePoint &reference_point = Stock::find_create_reference_point(position) ; - request->set_reference_point(&reference_point) ; + current_request_to_calibration_request(&reference_point, + direction, type) ; } return *current_request ; diff --git a/owlps-positioning/src/inputmedium.cc b/owlps-positioning/src/inputmedium.cc index 4fa7d56..e424633 100644 --- a/owlps-positioning/src/inputmedium.cc +++ b/owlps-positioning/src/inputmedium.cc @@ -24,18 +24,27 @@ InputMedium::~InputMedium() void InputMedium:: -current_request_to_calibration_request(uint_fast8_t request_type) +current_request_to_calibration_request( + const ReferencePoint *const reference_point, + const Direction &direction, + const uint_fast8_t request_type) { - if (dynamic_cast(current_request) != NULL) + CalibrationRequest *calibration_request = + dynamic_cast(current_request) ; + if (calibration_request != NULL) { - current_request->set_type(request_type) ; + calibration_request->set_reference_point(reference_point) ; + calibration_request->set_direction(direction) ; + calibration_request->set_type(request_type) ; return ; } Request *tmp = current_request ; current_request = NULL ; - current_request = new CalibrationRequest(*tmp) ; - current_request->set_type(request_type) ; + current_request = + new CalibrationRequest(*tmp, + const_cast(reference_point), + direction, request_type) ; delete tmp ; } diff --git a/owlps-positioning/src/inputmedium.hh b/owlps-positioning/src/inputmedium.hh index a08d26c..c4a7571 100644 --- a/owlps-positioning/src/inputmedium.hh +++ b/owlps-positioning/src/inputmedium.hh @@ -1,6 +1,9 @@ #ifndef _OWLPS_POSITIONING_INPUTMEDIUM_HH_ #define _OWLPS_POSITIONING_INPUTMEDIUM_HH_ +class ReferencePoint ; +class Direction ; + #include "request.hh" /// Super class of all input media @@ -51,7 +54,9 @@ public: /// Converts #current_request into a CalibrationRequest void current_request_to_calibration_request( - uint_fast8_t request_type = OWL_REQUEST_CALIBRATION) ; + const ReferencePoint *const reference_point, + const Direction &direction, + uint_fast8_t request_type) ; /// Clears (reallocates to Request if needed) #current_request void clear_current_request(void) ; diff --git a/owlps-positioning/src/inputudpsocket.cc b/owlps-positioning/src/inputudpsocket.cc index d2028bf..7f4080a 100644 --- a/owlps-positioning/src/inputudpsocket.cc +++ b/owlps-positioning/src/inputudpsocket.cc @@ -144,18 +144,14 @@ const Request& InputUDPSocket::get_next_request() if (request.type == OWL_REQUEST_CALIBRATION || request.type == OWL_REQUEST_AUTOCALIBRATION) { - current_request_to_calibration_request(request.type) ; - CalibrationRequest *calib_request = - static_cast(current_request) ; - - calib_request->set_direction(Direction(request.direction)) ; - ReferencePoint position(owl_ntohf(request.x_position), owl_ntohf(request.y_position), owl_ntohf(request.z_position)) ; const ReferencePoint &reference_point = Stock::find_create_reference_point(position) ; - calib_request->set_reference_point(&reference_point) ; + current_request_to_calibration_request(&reference_point, + Direction(request.direction), + request.type) ; } return *current_request ;