2011-03-10 20:55:31 +01:00
|
|
|
|
* Global
|
|
|
|
|
|
2011-08-26 16:08:39 +02:00
|
|
|
|
- Known bugs
|
2011-12-30 14:42:37 +01:00
|
|
|
|
° Valgrind / libconfuse bugs (Listener & Aggregator):
|
2011-08-26 16:08:39 +02:00
|
|
|
|
. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=639074
|
|
|
|
|
. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=639115
|
|
|
|
|
- Eliminate remaining exit() calls to avoid memory leaks on exit.
|
2011-12-30 14:42:37 +01:00
|
|
|
|
- Use atexit() / on_exit() instead of goto to clean at exit?
|
2011-07-29 22:26:38 +02:00
|
|
|
|
- Add option dump-configuration (displays the config & exits).
|
2011-05-03 13:53:33 +02:00
|
|
|
|
- Makefiles:
|
2011-12-30 14:42:37 +01:00
|
|
|
|
° Use intall instead of cp?
|
2011-07-29 22:26:38 +02:00
|
|
|
|
° Merge Makefile and Makefile_atheros*. Use template makefiles,
|
|
|
|
|
autohell, cmake…?
|
2011-08-26 16:08:39 +02:00
|
|
|
|
- Use a string for positioning requests
|
|
|
|
|
Instead of a binary packet, use a CSV string containing the request
|
|
|
|
|
information. This will allow easy developments of clients in other
|
|
|
|
|
languages.
|
2011-03-10 20:55:31 +01:00
|
|
|
|
- Mark arguments as const in function headers if needed
|
2011-07-29 22:26:38 +02:00
|
|
|
|
Mostly done in the owlps-positioning C++ code (should check that),
|
|
|
|
|
but not constantly in C modules.
|
2011-06-08 10:56:14 +02:00
|
|
|
|
[Done in libowlps & libowlps-client.]
|
2011-04-07 10:18:06 +02:00
|
|
|
|
- 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.
|
2011-03-25 10:16:41 +01:00
|
|
|
|
- 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).
|
2011-03-10 20:55:31 +01:00
|
|
|
|
|
|
|
|
|
|
2011-03-25 17:20:18 +01:00
|
|
|
|
* libowlps
|
|
|
|
|
|
2011-12-30 14:42:37 +01:00
|
|
|
|
- Use stdbool.h instead of #define owl_bool.
|
2011-04-07 10:18:06 +02:00
|
|
|
|
- Currently unused functions:
|
|
|
|
|
° owl_timestamp_is_null()
|
2011-03-25 17:20:18 +01:00
|
|
|
|
|
|
|
|
|
|
2011-03-10 20:55:31 +01:00
|
|
|
|
* Aggregator
|
|
|
|
|
|
2011-07-29 22:26:38 +02:00
|
|
|
|
- -o should be optional.
|
|
|
|
|
- Add an option to (not) flush the output file.
|
|
|
|
|
- Refactor:
|
|
|
|
|
° monitor_requests()
|
|
|
|
|
° got_request()
|
2011-03-25 17:20:18 +01:00
|
|
|
|
- Use the type of a request to identify it?
|
|
|
|
|
(along with the mobile MAC address and the request time)
|
2011-03-25 10:39:02 +01:00
|
|
|
|
- got_request(): option for the maximal difference time
|
2011-06-08 10:56:14 +02:00
|
|
|
|
For implicit packets, we consider that packets from the same MAC
|
|
|
|
|
and received within an interval of 10ms are part of the same
|
2011-03-25 10:39:02 +01:00
|
|
|
|
request. We should define an option to allow user to choose the
|
|
|
|
|
time he wants.
|
2011-03-10 20:55:31 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Listener
|
|
|
|
|
|
2011-04-07 10:18:06 +02:00
|
|
|
|
- Refactor and review read_packet().
|
2011-07-29 22:26:38 +02:00
|
|
|
|
- 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).
|
2011-08-26 16:08:39 +02:00
|
|
|
|
- Filter the number of implicit packets per mobile?
|
2011-12-30 14:42:37 +01:00
|
|
|
|
Currently, in passive or mixed mode, *all* the received packets are
|
2011-08-26 16:08:39 +02:00
|
|
|
|
transmitted to the aggregator.
|
|
|
|
|
- Option "read-only autocalibration"?
|
|
|
|
|
Listen for autocalibration requests without sending requests.
|
2011-03-10 20:55:31 +01:00
|
|
|
|
- read_packet(): use ieee80211_header_size for all implicit packets
|
|
|
|
|
Currently the size is corrected only for data packets.
|
2011-08-26 16:08:39 +02:00
|
|
|
|
- BSD port
|
|
|
|
|
http://www.unixgarden.com/index.php/programmation/introduction-a-la-programmation-wifi-en-c-sous-netbsd
|
|
|
|
|
- Use the "official" radiotap parser? (Expat license)
|
|
|
|
|
http://git.sipsolutions.net/?p=radiotap.git
|
2011-03-10 20:55:31 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Client
|
|
|
|
|
|
2011-07-29 22:26:38 +02:00
|
|
|
|
- Add verbose & quiet options.
|
|
|
|
|
- Log sent requests?
|
2011-04-07 10:18:06 +02:00
|
|
|
|
- Allow to use a string for the direction?
|
2011-03-10 20:55:31 +01:00
|
|
|
|
Could be nice, but probably useless.
|
|
|
|
|
|
|
|
|
|
|
2011-08-26 16:08:39 +02:00
|
|
|
|
* UDP to HTTP
|
|
|
|
|
|
|
|
|
|
- Command-line options (port numbers, -v/-q, -h, -V).
|
|
|
|
|
- Delete inactive clients after a given amount of time.
|
|
|
|
|
- Refactor prepare_answer().
|
|
|
|
|
|
|
|
|
|
|
2011-03-10 20:55:31 +01:00
|
|
|
|
* Positioning
|
|
|
|
|
|
2011-08-01 10:00:19 +02:00
|
|
|
|
- Known bugs
|
|
|
|
|
° Cannot compute the error (Real) with autocalibration requests.
|
2011-12-30 14:42:37 +01:00
|
|
|
|
° Unit tests are currently unmaintained. Do not try to run them.
|
2011-08-01 10:00:19 +02:00
|
|
|
|
|
|
|
|
|
- Algorithms
|
2011-08-26 16:08:39 +02:00
|
|
|
|
° Add to the result the information "area error" (whether on not the
|
|
|
|
|
computed result is in the same room as the real position).
|
|
|
|
|
° Delete reference points after a given amount of time. This is to
|
|
|
|
|
avoid meaningless old reference points, for instance if an AP was
|
|
|
|
|
shut down.
|
|
|
|
|
° Handle the power and antenna gain difference between the
|
|
|
|
|
calibration mobile (or pseudo-mobile, for autocalibration) and the
|
|
|
|
|
mobile to position.
|
2011-08-01 10:00:19 +02:00
|
|
|
|
° MinMax: use a different step for X, Y and Z?
|
|
|
|
|
|
|
|
|
|
- Autocalibration
|
|
|
|
|
° Generate reference points in 3D.
|
2011-08-26 16:08:39 +02:00
|
|
|
|
° Check what happens with >4 APs, and fix it. We certainly should
|
|
|
|
|
select APs not only by the angle proximity, but also by the
|
|
|
|
|
distance proximity. Maybe implement three options: angle, distance,
|
|
|
|
|
and angle + distance.
|
2011-08-01 10:00:19 +02:00
|
|
|
|
° 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).
|
2011-12-30 14:42:37 +01:00
|
|
|
|
° Add option positioning.self-calibrate (or autocalibrate), short
|
|
|
|
|
option -A, to activate automatically the options needed by the
|
|
|
|
|
autocalibration.
|
2011-08-01 10:00:19 +02:00
|
|
|
|
° 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
|
2011-08-26 16:08:39 +02:00
|
|
|
|
° Multithreading:
|
2011-12-30 14:42:37 +01:00
|
|
|
|
. algorithms (parallelize computation of the different algorithms
|
2011-08-26 16:08:39 +02:00
|
|
|
|
for the same request) ;
|
|
|
|
|
. and/or requests (parallelize computation of several requests).
|
|
|
|
|
It would be possible (overkill?) to have a group of worker threads
|
|
|
|
|
and a job queue.
|
2011-08-01 10:00:19 +02:00
|
|
|
|
° 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
|
2011-12-30 14:42:37 +01:00
|
|
|
|
° Update (rewrite?) tests.
|
2011-08-01 10:00:19 +02:00
|
|
|
|
° 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.
|