134 lines
4.8 KiB
Plaintext
134 lines
4.8 KiB
Plaintext
* 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
|
||
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
|
||
sockets in libowlps, then string buffer size have to be adapted in
|
||
all modules to be able to contain a long hostname.
|
||
- Use struct ether_addr to store MAC addresses?
|
||
We could use the struct ether_addr to store binary MAC addresses,
|
||
and convert them to strings with ether_ntoa() instead of
|
||
owl_mac_bytes_to_string(). See ether_aton(3).
|
||
|
||
|
||
* libowlps
|
||
|
||
- Currently unused functions:
|
||
° owl_timestamp_is_null()
|
||
|
||
|
||
* 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?
|
||
- 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
|
||
For implicit packets, we consider that packets from the same MAC
|
||
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.
|
||
|
||
|
||
* 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.
|
||
|
||
|
||
* Client
|
||
|
||
- Add verbose & quiet options.
|
||
- Log sent requests?
|
||
- Allow to use a string for the direction?
|
||
Could be nice, but probably useless.
|
||
|
||
|
||
* Positioning
|
||
|
||
- Known bugs
|
||
° Cannot compute the error (Real) with autocalibration requests.
|
||
|
||
- Algorithms
|
||
° 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::generate_reference_point() into several functions.
|
||
° 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
|
||
° When reading the APs, add them to the mobiles' list (or another
|
||
way to be able to have a single entry for an AP).
|
||
° 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.
|
||
° Pre-allocate vectors' memory with reserve().
|
||
"C++ en action", p. 217.
|
||
° Copy of containers to streams (in some operator<<() for
|
||
instance).
|
||
"C++ en action", p. 275.
|
||
° Review all the classes to respect principles exposed in "Coder
|
||
proprement", chapter 6, p. 103: do implement accessors for each
|
||
class attribute, etc.
|
||
|
||
- 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.
|