[Positioning] InputCSV: prepare handling CalibrationRequest
InputMedium: - Split into two files (inputmedium.{hh,cc}). - Add polymorphic handling of CalibrationRequest. - Write unit tests. InputCSV: - Use new code of InputMedium to handle calibration requests. - We detect if the read request is a calibration request, but specific attributes are not initialised.
This commit is contained in:
parent
1ceab071a2
commit
6ad31f9af4
|
@ -33,8 +33,8 @@ OBJ = posutil.o stock.o timestamp.o point3d.o referencepoint.o \
|
||||||
mobile.o measurement.o request.o calibrationrequest.o \
|
mobile.o measurement.o request.o calibrationrequest.o \
|
||||||
configuration.o userinterface.o input.o \
|
configuration.o userinterface.o input.o \
|
||||||
inputcsv.o inputlogcsv.o
|
inputcsv.o inputlogcsv.o
|
||||||
OBJ_NOTEST = posexcept.o
|
OBJ_NOTEST = posexcept.o inputmedium.o
|
||||||
INTERFACES = inputmedium.hh inputlogmedium.hh
|
INTERFACES = inputlogmedium.hh
|
||||||
|
|
||||||
TESTS_XX = $(TESTS_DIR)/tests.cc
|
TESTS_XX = $(TESTS_DIR)/tests.cc
|
||||||
TESTS_OBJ = $(TESTS_DIR)/tests.o
|
TESTS_OBJ = $(TESTS_DIR)/tests.o
|
||||||
|
@ -68,7 +68,7 @@ mobile.o: wifidevice.o
|
||||||
measurement.o: accesspoint.o
|
measurement.o: accesspoint.o
|
||||||
request.o: timestamp.o measurement.o
|
request.o: timestamp.o measurement.o
|
||||||
calibrationrequest.o: request.o referencepoint.o
|
calibrationrequest.o: request.o referencepoint.o
|
||||||
inputcsv.o: inputmedium.hh request.o stock.o
|
inputcsv.o: inputmedium.o request.o stock.o
|
||||||
inputlogcsv.o: inputlogmedium.hh request.o
|
inputlogcsv.o: inputlogmedium.hh request.o
|
||||||
input.o: posexcept.o
|
input.o: posexcept.o
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ $(TESTS_XX): $(SOURCE_TESTS)
|
||||||
--include=$(TESTUTIL_OBJ:.o=.hh) \
|
--include=$(TESTUTIL_OBJ:.o=.hh) \
|
||||||
-o $@ $^
|
-o $@ $^
|
||||||
|
|
||||||
$(TESTS_OBJ): $(TESTS_XX) $(OBJ) $(INCLUDES_TESTS)
|
$(TESTS_OBJ): $(TESTS_XX) $(OBJ) $(OBJ_NOTEST) $(INCLUDES_TESTS)
|
||||||
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
|
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
|
||||||
|
|
||||||
$(TESTS_TARGET): $(TESTS_OBJ) $(OBJ_TESTS)
|
$(TESTS_TARGET): $(TESTS_OBJ) $(OBJ_TESTS)
|
||||||
|
@ -125,4 +125,4 @@ check:
|
||||||
@$(CPPCHECK) \
|
@$(CPPCHECK) \
|
||||||
$(OBJ:.o=.hh) $(OBJ:.o=.cc) \
|
$(OBJ:.o=.hh) $(OBJ:.o=.cc) \
|
||||||
$(OBJ_NOTEST:.o=.hh) $(OBJ_NOTEST:.o=.cc) \
|
$(OBJ_NOTEST:.o=.hh) $(OBJ_NOTEST:.o=.cc) \
|
||||||
$(INTERFACES)
|
$(INTERFACES) $(TARGET).cc
|
||||||
|
|
|
@ -116,12 +116,10 @@ void InputCSV::read_next_line()
|
||||||
*/
|
*/
|
||||||
const Request& InputCSV::get_next_request()
|
const Request& InputCSV::get_next_request()
|
||||||
{
|
{
|
||||||
if (eof_close())
|
clear_current_request() ;
|
||||||
{
|
|
||||||
// End of file or error: blank current request
|
if (eof_close()) // End of file or error
|
||||||
current_request->clear() ;
|
return *current_request ;
|
||||||
return *current_request ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Split read string into fields (semicolon-separated)
|
// Split read string into fields (semicolon-separated)
|
||||||
tokenizer<escaped_list_separator<char> > tok(
|
tokenizer<escaped_list_separator<char> > tok(
|
||||||
|
@ -130,12 +128,8 @@ const Request& InputCSV::get_next_request()
|
||||||
tokenizer<escaped_list_separator<char> >::const_iterator ti(tok.begin()) ;
|
tokenizer<escaped_list_separator<char> >::const_iterator ti(tok.begin()) ;
|
||||||
|
|
||||||
// Read Mobile MAC field
|
// Read Mobile MAC field
|
||||||
if (ti == tok.end())
|
if (ti == tok.end()) // Wrong number of fields
|
||||||
{
|
return *current_request ;
|
||||||
// Wrong number of fields: blank current request
|
|
||||||
current_request->clear() ;
|
|
||||||
return *current_request ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the mobile did not exist, we create it
|
// If the mobile did not exist, we create it
|
||||||
try
|
try
|
||||||
|
@ -167,7 +161,7 @@ const Request& InputCSV::get_next_request()
|
||||||
<< *ti << " » at line "
|
<< *ti << " » at line "
|
||||||
<< current_line_nb << ", field « Timestamp », of input file « "
|
<< current_line_nb << ", field « Timestamp », of input file « "
|
||||||
<< input_file_name << " »!" << endl ;
|
<< input_file_name << " »!" << endl ;
|
||||||
current_request->clear() ; // Blank current request
|
current_request->clear() ;
|
||||||
return *current_request ;
|
return *current_request ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,7 +190,7 @@ const Request& InputCSV::get_next_request()
|
||||||
<< current_line_nb << ", position field #" << i
|
<< current_line_nb << ", position field #" << i
|
||||||
<< ", of input file « " << input_file_name << " »!"
|
<< ", of input file « " << input_file_name << " »!"
|
||||||
<< endl ;
|
<< endl ;
|
||||||
current_request->clear() ; // Blank current request
|
current_request->clear() ;
|
||||||
return *current_request ;
|
return *current_request ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,7 +216,7 @@ const Request& InputCSV::get_next_request()
|
||||||
<< *ti << " » at line "
|
<< *ti << " » at line "
|
||||||
<< current_line_nb << ", field « Direction », of input file « "
|
<< current_line_nb << ", field « Direction », of input file « "
|
||||||
<< input_file_name << " »!" << endl ;
|
<< input_file_name << " »!" << endl ;
|
||||||
current_request->clear() ; // Blank current request
|
current_request->clear() ;
|
||||||
return *current_request ;
|
return *current_request ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,7 +271,7 @@ const Request& InputCSV::get_next_request()
|
||||||
read_next_line() ;
|
read_next_line() ;
|
||||||
|
|
||||||
if (is_calibration_request)
|
if (is_calibration_request)
|
||||||
{} // TODO
|
current_request_to_calibration_request() ;
|
||||||
|
|
||||||
return *current_request ;
|
return *current_request ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
#include "inputmedium.hh"
|
||||||
|
#include "calibrationrequest.hh"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *** Constructors *** */
|
||||||
|
|
||||||
|
|
||||||
|
InputMedium::InputMedium()
|
||||||
|
{
|
||||||
|
current_request = new Request() ;
|
||||||
|
current_line_nb = 0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
InputMedium::~InputMedium()
|
||||||
|
{
|
||||||
|
delete current_request ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *** Operations *** */
|
||||||
|
|
||||||
|
void InputMedium::current_request_to_calibration_request()
|
||||||
|
{
|
||||||
|
if (dynamic_cast<CalibrationRequest*>(current_request) != NULL)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
Request *tmp = current_request ;
|
||||||
|
current_request = NULL ;
|
||||||
|
current_request = new CalibrationRequest(*tmp) ;
|
||||||
|
delete tmp ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void InputMedium::clear_current_request()
|
||||||
|
{
|
||||||
|
if (dynamic_cast<CalibrationRequest*>(current_request) == NULL)
|
||||||
|
current_request->clear() ;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
delete current_request ;
|
||||||
|
current_request = NULL ;
|
||||||
|
current_request = new Request() ;
|
||||||
|
}
|
||||||
|
}
|
|
@ -52,28 +52,16 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual const Request& get_next_request(void) = 0 ;
|
virtual const Request& get_next_request(void) = 0 ;
|
||||||
|
|
||||||
|
/// Converts #current_request into a CalibrationRequest
|
||||||
|
void current_request_to_calibration_request(void) ;
|
||||||
|
/// Clears (reallocates to Request if needed) #current_request
|
||||||
|
void clear_current_request(void) ;
|
||||||
|
|
||||||
//@} // End Operations
|
//@} // End Operations
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* *** Constructors *** */
|
|
||||||
|
|
||||||
|
|
||||||
inline InputMedium::InputMedium()
|
|
||||||
{
|
|
||||||
current_request = new Request() ;
|
|
||||||
current_line_nb = 0 ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline InputMedium::~InputMedium()
|
|
||||||
{
|
|
||||||
delete current_request ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* *** Read accessors *** */
|
/* *** Read accessors *** */
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue