Update TODO.t2t

This commit is contained in:
Matteo Cypriani 2013-10-03 15:52:22 -04:00
parent 8692a1ba9b
commit f08097ea08
1 changed files with 70 additions and 43 deletions

113
TODO.t2t
View File

@ -5,10 +5,23 @@ Work to do in OwlPS
= Documentation =
- Doxygen: solve problem with structs (member fields are not documented).
- Known Doxygen problems:
- Struct member fields are not documented with INLINE_SIMPLE_STRUCTS
http://bugs.debian.org/725122
- Ugly NAME (new line)
http://bugs.debian.org/630020
- Missing spaces around const
http://bugs.debian.org/630018
- Topics to write on:
- General user manual (common command-line options, etc.)
- Documentation pages to be added:
- owlps-basics.t2t: basics of indoor positioning (definitions:
reference point, etc.), common command-line options, etc.
- owlps-experimenting.t2t: useful information gathered from the
previous experiments.
http://git.lm7.fr/?p=owlps-experiments.git
- Possibly owlps-autocalibration.t2t to expand the section
“Autocalibration algorithms” of owlps-positionerd.t2t. Sources of
information: PhD thesis, IPIN 2013 article.
@ -18,11 +31,6 @@ Work to do in OwlPS
- Known bugs:
- libconfuse bug (Listener & Aggregator): http://bugs.debian.org/639115
- Add a library to parse aggregation files, handling the different
formats ?
It could be used by Positioner and external programs.
- Check the size of the received packets to avoid buffer overflows.
- Use select(2) or poll(2)
@ -36,7 +44,14 @@ Work to do in OwlPS
- Eliminate remaining exit() calls to avoid memory leaks on exit.
- Use atexit() / on_exit() instead of goto to clean at exit?
- Handle IPv6.
= Global maybe someday =
- Use atexit() / on_exit() instead of goto to clean at exit
- Support string-based positioning requests
@ -45,13 +60,16 @@ Work to do in OwlPS
information. This will make easier to develop clients in other
languages than C and over other protocols than UDP.
- Use struct ether_addr to store MAC addresses?
- 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(3) instead of
owl_mac_bytes_to_string().
- Handle IPv6.
- Add a library to parse aggregation files, handling the different
formats ?
It could be used by Positioner and external programs.
@ -136,7 +154,7 @@ Work to do in OwlPS
project: http://necessitas.kde.org/
A port of Qt for Apple iOS was also developed but seems inactive:
https://qt.gitorious.org/+qt-iphone/qt/qt-iphone-clone
https://qt.gitorious.org/qt/qt-iphone-clone/activities
@ -183,11 +201,7 @@ Work to do in OwlPS
- To select the reference CPs, we should use the distance along with the
angle and coverage.
- Handle 2 CPs, not only >2 CPs.
- Find why some CalibrationRequest were not deleted when calling
Stock::delete_calibration_request() (via
ReferencePoint::delete_requests()).
- Handle 2 CPs, not only >2 CPs with mesh autocalibration.
- Option z-level-number: the Z coordinate represents a floor number. If
unactivated, Z is in metres and the topology is used to determine a
@ -203,28 +217,6 @@ Work to do in OwlPS
of packets.
== Refactoring ==
- Move Stock::generate_reference_point() & friends to a dedicated class.
- 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 any more).
- 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 ==
- Move autocalibration-related options from the "positioning" category
@ -248,18 +240,54 @@ Work to do in OwlPS
relative path in owlps-positioner.cfg in the same directory).
== Miscellaneous new features ==
- Add a statistics framework (StatisticsMedium), that would provide
information at the end of the execution.
The information that could be provided include:
- number of requests treated, by type
- for each algorithm:
- mean error
- number of results for which the room is wrong
- number of results for which the floor is wrong
- error information by room
== Refactoring ==
- Move Stock::generate_reference_point() & friends to a dedicated class.
- 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 any more).
- 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
== Optimisation & code improvement ==
- Eliminate const_cast where possible.
- Use the 'ws' stream manipulator to eat whitespaces.
- Change ss_t type to int_fast8_t?
- Multithreading:
- Multithreading (OpenMP?):
- algorithms (parallelize computation of the different algorithms for
the same request);
- and/or requests (parallelize computation of several requests).
-
See OpenMP.
- ReferencePoint: the request list should be an unordered_set instead of
a vector, to guarantee the unicity of the elements.
@ -315,7 +343,6 @@ Work to do in OwlPS
- TrilaterationAlgorithm
- TrilaterationMethod
- Timestamp: there is a probability of 10^-6 that the value in
nanoseconds and the rounded value in milliseconds are identical, in
which case one of the tests can fail. This could be fixed by retrying