owlps/owlps-positioning/TODO

89 lines
3.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

- 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.