diff --git a/TODO b/TODO index 00e88ef..f46cbb2 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,14 @@ * Global +- Add option dump-configuration (displays the config & exits). - Makefiles: ° Translate comments & help. + ° Merge Makefile and Makefile_atheros*. Use template makefiles, + autohell, cmake…? - Use string for network exchanges? - Mark arguments as const in function headers if needed - That is (mostly) done in the owlps-positioning C++ code, but not - constantly in C modules. + Mostly done in the owlps-positioning C++ code (should check that), + but not constantly in C modules. [Done in libowlps & libowlps-client.] - Allow to use hostnames instead of IP addresses in all modules getaddrinfo(3) (or gethostbyname(3)) should be used when opening @@ -25,10 +28,14 @@ * Aggregator +- -o should be optional. +- Add an option to (not) flush the output file. +- Refactor: + ° monitor_requests() + ° got_request() - inet_ntoa() is not secure with threads (But it is currently used by only one thread.) Use inet_ntop() instead? -- Refactor got_request(). - Use the type of a request to identify it? (along with the mobile MAC address and the request time) - got_request(): option for the maximal difference time @@ -36,36 +43,29 @@ and received within an interval of 10ms are part of the same request. We should define an option to allow user to choose the time he wants. -- Allow blank parameters for output options. * Listener - Refactor and review read_packet(). +- Handle better the configuration file reading + Get rid of the "Cannot open configuration file" error, in quiet + mode and when the default configuration file has to be used (no + file specified by the user with -f). - Listen for autocalibration requests without sending requests? - read_packet(): use ieee80211_header_size for all implicit packets Currently the size is corrected only for data packets. -- Move endianess #defines in libowlps? -- Merge Makefile and Makefile_atheros? - Use autohell, cmake, etc.? -- Use positive (USE_CONFUSE) and negative (NO_USE_PTHREAD) options? - The default options could be modified, but that's not so important, - is it? * Client +- Handle signals. +- Add verbose & quiet options. +- Log sent requests? - Allow to use a string for the direction? Could be nice, but probably useless. * Positioning -- Has its own fat TODO file, which I should translate. - - -* writeInDb - -- Do something about that - ° Merge in owlps-positioning? - ° Delete? +- Has its own fat TODO file, which I could merge in here. diff --git a/owlps-positioning/TODO b/owlps-positioning/TODO index 1ac4534..3bf131e 100644 --- a/owlps-positioning/TODO +++ b/owlps-positioning/TODO @@ -1,17 +1,60 @@ -- Multithread algorithm calls. +- Known bugs + ° FBCM always gives the same result. + ° Cannot compute the error (Real) with autocalibration requests. -- Write a class for Request::type? +- 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: @@ -20,6 +63,9 @@ . 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 @@ -27,25 +73,6 @@ ° Compositions : devraient être représentées par des attributs normaux. -- Building - Dans le destructeur, vérifier qu'il faut bien supprimer les Area et - les Waypoint. Si oui, faut-il aussi les enlever des listes dans - Stock ? (Pour l'instant ils ne sont pas dans Stock.) - -- ReferencePoint - ° La liste des requêtes devrait être un unordered_set (et pas un - vector), pour garantir l'unicité des entrées. - -- MinMax - ° Différencier le pas pour X, Y et Z ? - -- 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 - - « C++ en action » ° Espaces de noms ? 109 ° Réserver l'espace mémoire des vector avec reserve(). 217 @@ -59,11 +86,3 @@ 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. - -- Miscellaneous - ° Pointer function arguments: const * const - -- Timestamp - Dans les tests, il y a une probabilité de 1/1000000 que la valeur - en ns et la valeur arrondie en ms soient identiques. Dans ce cas, - certains tests peuvent échouer.