[Positioning] Fix InputMedium::…_to_calibration_request()
Fix InputMedium::current_request_to_calibration_request(), that was resulting in a blank request.
This commit is contained in:
parent
c9d26033e9
commit
ea8da6d8ec
|
@ -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<CalibrationRequest*>(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 ;
|
||||
|
|
|
@ -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<CalibrationRequest*>(current_request) != NULL)
|
||||
CalibrationRequest *calibration_request =
|
||||
dynamic_cast<CalibrationRequest*>(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<ReferencePoint*>(reference_point),
|
||||
direction, request_type) ;
|
||||
delete tmp ;
|
||||
}
|
||||
|
||||
|
|
|
@ -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) ;
|
||||
|
||||
|
|
|
@ -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<CalibrationRequest*>(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 ;
|
||||
|
|
Loading…
Reference in New Issue