[Positioning] Improve CalibrationRequest::type

Add the request type in CalibrationRequest constructors.
Handle (auto)calibration request type in Input*.
This commit is contained in:
Matteo Cypriani 2011-03-31 17:08:24 +02:00
parent 5972e245cc
commit 670dfdc867
6 changed files with 38 additions and 13 deletions

View File

@ -3,6 +3,29 @@
/* *** Constructors *** */
CalibrationRequest::CalibrationRequest(uint_fast8_t _type):
reference_point(NULL), direction(Direction())
{
type = _type ;
}
CalibrationRequest::
CalibrationRequest(const Request &source,
ReferencePoint *_reference_point = NULL,
const Direction &_direction,
uint_fast8_t _type):
Request(source), reference_point(_reference_point),
direction(_direction)
{
type = _type ;
}
/* *** Write accessors *** */

View File

@ -16,18 +16,14 @@ protected:
Direction direction ;
public:
CalibrationRequest(void):
reference_point(NULL), direction(Direction()) {}
CalibrationRequest(uint_fast8_t _type = OWL_REQUEST_AUTOCALIBRATION) ;
CalibrationRequest(const CalibrationRequest &source):
Request(source), reference_point(source.reference_point),
direction(source.direction) {}
CalibrationRequest(const Request &source,
ReferencePoint *_reference_point = NULL,
const Direction &_direction = Direction()):
Request(source), reference_point(_reference_point),
direction(_direction) {}
ReferencePoint *_reference_point,
const Direction &_direction = Direction(),
uint_fast8_t _type = OWL_REQUEST_AUTOCALIBRATION) ;
~CalibrationRequest(void) {}

View File

@ -108,7 +108,7 @@ const Request& InputCSV::get_next_request()
if (type == OWL_REQUEST_CALIBRATION ||
type == OWL_REQUEST_AUTOCALIBRATION)
{
current_request_to_calibration_request() ;
current_request_to_calibration_request(type) ;
CalibrationRequest *request =
static_cast<CalibrationRequest*>(current_request) ;
request->set_direction(direction) ;

View File

@ -23,14 +23,19 @@ InputMedium::~InputMedium()
/* *** Operations *** */
void InputMedium::current_request_to_calibration_request()
void InputMedium::
current_request_to_calibration_request(uint_fast8_t request_type)
{
if (dynamic_cast<CalibrationRequest*>(current_request) != NULL)
return ;
{
current_request->set_type(request_type) ;
return ;
}
Request *tmp = current_request ;
current_request = NULL ;
current_request = new CalibrationRequest(*tmp) ;
current_request->set_type(request_type) ;
delete tmp ;
}

View File

@ -50,7 +50,8 @@ public:
virtual const Request& get_next_request(void) = 0 ;
/// Converts #current_request into a CalibrationRequest
void current_request_to_calibration_request(void) ;
void current_request_to_calibration_request(
uint_fast8_t request_type = OWL_REQUEST_CALIBRATION) ;
/// Clears (reallocates to Request if needed) #current_request
void clear_current_request(void) ;

View File

@ -144,7 +144,7 @@ const Request& InputUDPSocket::get_next_request()
if (request.type == OWL_REQUEST_CALIBRATION ||
request.type == OWL_REQUEST_AUTOCALIBRATION)
{
current_request_to_calibration_request() ;
current_request_to_calibration_request(request.type) ;
CalibrationRequest *calib_request =
static_cast<CalibrationRequest*>(current_request) ;