- Known bugs ° FBCM always gives the same result. ° Cannot compute the error (Real) with autocalibration requests. - Algorithms ° Check MultilaterationAlgorithm::make_constant_term(). Hint: mobile.trx_power() vs. ap.trx_power(). ° MinMax: use a different step for X, Y and Z? - Autocalibration ° Generate reference points in 3D. ° Handle 2 APs, not only >2 APs. ° Find why some CalibrationRequest were not deleted when calling Stock::delete_calibration_request() (via ReferencePoint::delete_requests()). - Refactoring ° Split Stock::regenerate_reference_points() into several functions. ° Create virtual class OutputSocket to factorise code of OutputUDPSocket & OutputTCPSocketEvAAL. ° Synchronise InputCSV & InputUDPSocket (calibration requests), factorise code into InputMedium. ° Write a class for Request::type? CalibrationRequest::direction uses a dedicated class Direction, why not Request::type? That would simplify writing of the type to streams (no need to cast each time anymore). ° Wi-Fi devices' list . Merge Stock::mobiles & Stock::aps? . Factorise AccessPointsReaderCSV & MobilesReaderCSV? ° Members renaming . InputMedium: . - current_line_nb & get_current_line_nb() . - get_next_request() −> read_next_request() . Input: get_next_request() −> read_next_request() . Area: p_min et p_max −> coord_min et coord_max - User interface ° Add the area to the result in OutputCSV. ° When reading the APs, add them to the mobiles' list (or another way to be able to have a single entry for an AP). ° Rename minmax-start & stop, since it is used elsewhere (grep minmax-start). ° Review the option names & descriptions. ° Add option positioning.self-calibrate (or autocalibrate), to activate automatically the options needed by the autocalibration. ° Improve --verbose (and/or debug level): print the options, etc. ° Case-insensitive string comparison (for algorithm names, etc.). ° Use a prefix for configuration files (search for config files set with relative path in owlps-positioning.cfg in the same directory). - Optimisation & code improvement ° Multithread algorithm calls. ° ReferencePoint: the request list should be an unordered_set instead of a vector, to guarantee the unicity of the elements. - Unit tests ° Update tests (currently unmaintained). ° Unfinished tests: . InputDataReader . Input . Output . Positioning ° Test InterlinkNetworks::compute() ? ° Timestamp: there is a probability of 10^-6 that the value in nanoseconds and the rounded value in milliseconds are identical, in which case some tests can fail. - Revoir le diagramme UML ° Associations : devraient êtres représentées par des attributs pointeurs. ° Compositions : devraient être représentées par des attributs normaux. - « C++ en action » ° Espaces de noms ? 109 ° Réserver l'espace mémoire des vector avec reserve(). 217 ° Copie de conteneur vers un flux (cas de certains operator<<). 275 - « Coder proprement » ° Revoir toutes les classes pour respecter si possible les principes exposés dans le chapitre 6 (p. 103) : implanter systématiquement des accesseurs pour tous les attributs d'une classe expose l'implantation de la classe et rend ses attributs publics. La classe Direction (et maintenant Timestamp) tend à respecter ce principe en utilisant mieux les opérateurs et en ne proposant pas d'accesseur direct.