Commit Graph

181 Commits

Author SHA1 Message Date
Matteo Cypriani 4a3fd2ac8a [Positioner] Use Markdown in Doxygen comments
Fix some comments as well, and uniformise the use of @returns instead of
@return.
2013-06-03 17:46:10 -04:00
Matteo Cypriani 486d2c9670 [Positioner] CSV*Reader: don't use namespace boost
Remove the using namespace boost declaration.
2013-06-03 17:46:10 -04:00
Matteo Cypriani f352295e9d [Positioner] Get rid of Boost's unordered_*
Stop using Boost for unordered_set, unordered_map and hashes.
2013-06-03 17:46:10 -04:00
Matteo Cypriani 081c559fc5 [Positioner] Fix a few small issues
Fix three minor performance issues signaled by cppcheck and a couple of
problems with Doxygen.
2013-06-03 17:46:10 -04:00
Matteo Cypriani e9cecbe1c0 [Positioner] Update Doxyfile
Update Doxyfile to Doxygen 1.8.1.2 and change a couple of options.
2013-06-03 17:45:02 -04:00
Matteo Cypriani 80fd5b287b Update and centralise copyright information 2013-05-29 13:19:06 -04:00
Matteo Cypriani be6d369fcc CMake: test for the presence of Boost (Positioner) 2013-05-22 18:36:21 -04:00
Matteo Cypriani 1cb5742ef9 CMake: rework compilation/link flags
- Default compiler and linker flags were added silently. They are now
  set in the cache if no previous values are present.
- Debug flags and regular flags have been merged.
- Position-independent code (doesn't appear in the cache because CMake
  lacks variables like CMAKE_EXE_COMPILE_FLAGS):
  - Shared libraries are compiled with -fPIC.
  - Executables and static libraries are compiled with -fPIE.
  - Executables are linked with -pie -fPIE.
2013-05-22 18:36:21 -04:00
Matteo Cypriani c41f6d9547 CMake: add installation targets 2013-05-22 18:36:21 -04:00
Matteo Cypriani 4264210dcc CMake: add static targets
The pseudo-targets "semistatic" and "static" were added to build
everything in semistatic or static mode.
2013-05-22 18:36:20 -04:00
Matteo Cypriani d4ef0cc306 CMake: add Positioner's extra targets
Add extra targets for the Positioner:
- indent_positioner calls astyle (old make target: "style")
- check_positioner calls cppcheck (old make target: "check")
2013-05-22 18:36:20 -04:00
Matteo Cypriani 0de28cb3eb CMake: compile Positioner 2013-05-22 18:36:20 -04:00
Matteo Cypriani 005e5da12e Delete Makefiles 2013-05-20 17:08:33 -04:00
Matteo Cypriani 453be9a588 [Positioner] request.cc: add missing #include 2013-05-20 17:07:57 -04:00
Matteo Cypriani e749542ddc [Positioner] PosUtil: improve assert_uppercase() 2013-05-18 23:38:31 -04:00
Matteo Cypriani 6745274c94 [Positioner] Configuration::autocalibration_enabled()
Add Configuration::autocalibration_enabled() as a shortcut to test if
the autocalibration is enabled.
2013-05-17 16:54:57 -04:00
Matteo Cypriani 4650c229ff [Positioner] Allow to generate a RP list
Change the positioning.generate-reference-points option to offer
multiple choices (false, mesh, list, both) and add the
positioning.generated-points-list to allow the user to specify a list of
reference points to generate.
2013-05-17 16:54:57 -04:00
Matteo Cypriani 9ef599b42f [Positioner] Add CSVStringReader(string)
Add a string constructor for CSVStringReader, for easier use outside of
CSVFileReader.
2013-05-17 16:54:57 -04:00
Matteo Cypriani 2e323be423 [Positioner] CSVStringReader: allow "(X;Y;Z)"
CSVStringReader::read_point3D() now allow the first of the three fields
forming a Point3D (that is, X) to start with an opening parenthesis, and
the last (Z) to end with a closing parenthesis. That allows an improved
clarity for strings containing several points, e.g. "(1;2;3);(4;5;6)".
2013-05-17 16:54:57 -04:00
Matteo Cypriani 9944fef40d [Positioner] Switch to C++11
This is a very basic switch, we don't use any of the C++11 features yet.
2013-05-16 17:46:44 -04:00
Matteo Cypriani f55672ef01 [Positioner] Add class CSVStringReader
Code separated from CSVFileReader, which now inherits from both
TextFileReader and CSVStringReader.
2013-05-16 16:59:15 -04:00
Matteo Cypriani 0614b52219 [lib] Stop defining owl_bool (use stdbool.h)
We don't define our own boolean type in owlps.h any more: bool (from
stdbool.h) is used instead.
2013-05-15 15:46:13 -04:00
Matteo Cypriani aa2e72f423 [Positioner] positioner.conf: comment lines
Comment unnecessary lines from cfg/owlps-positioner.conf.
2013-05-14 13:37:18 -04:00
Matteo Cypriani 5a7d30ea84 [Positioner] InputUDPSocket: include unistd.h
Fixes compilation on DragonFly.
2013-05-01 13:41:05 -04:00
Matteo Cypriani 64c2ac9a58 Makefiles: move OS detection in common.mk
This fixes compilation on BSD.
2013-04-30 16:50:14 -04:00
Matteo Cypriani 2a23e31a28 Fix compilation warning/errors for OpenWrt
In lib-resultreader and Positioner.
2013-04-24 13:51:58 -04:00
Matteo Cypriani 4aed9c1ef0 Radiotap Antenna Signal field is signed
Using int8_t instead of uint8_t which was erroneously used to code the
Antenna Signal radiotap field.
2013-04-24 10:59:55 -04:00
Matteo Cypriani ae1fa584a7 [Positioner] Measurement: intervals are uints 2012-11-03 16:51:13 +01:00
Matteo Cypriani 8455dd0d74 Add copyright & license information
Add the file COPYRIGHT, the CeCILL license's text, and update the source
files' headers with the copyright and license information.
2012-11-03 14:52:33 +01:00
Matteo Cypriani 69390a3f6b [Positioner] Fix Request::to_csv() (missing ;) 2012-08-30 16:05:23 +02:00
Matteo Cypriani 3808c2ce6f [Positioner] Add Request::to_csv()
Code moved from InputLogCSV.
2012-08-30 10:23:09 +02:00
Matteo Cypriani 8c93cc467e [Positioner] Add option output.2d-error 2012-08-24 16:39:00 +02:00
Matteo Cypriani 5fd5f13b93 [Positioner] Add Point3D::distance_2d() 2012-08-24 16:33:47 +02:00
Matteo Cypriani b11b63c46b [Positioner] cfg: improve comments 2012-08-24 16:33:47 +02:00
Matteo Cypriani 8cf840ba1b [Positioner] Reindent input.cc 2012-08-24 16:28:44 +02:00
Matteo Cypriani 18761a06ce [Positioner] Input: fix calib. request handling
Reorganise the tests in order to really ignore calibration requests if
positioning.accept-new-calibration-requests = false and
positioning.position-calibration-requests = false.

Display a message when a calibration request is ignored.
2012-07-24 16:21:03 +02:00
Matteo Cypriani f6fa26507f [Positioner] EvAAL: do not send \0
The NULL character must not be sent at the end of the result string, or
the Socket Server behaves weirdly.
2012-07-10 16:15:45 +02:00
Matteo Cypriani 307da87760 [Positioner] EvAAL: fix AOI printing
The AOI (Area Of Interest) number must be printed only if greater than
zero.
2012-07-10 16:13:15 +02:00
Matteo Cypriani db63c88a45 [Positioner] EvAAL: handle empty results' lists 2012-07-10 16:11:25 +02:00
Matteo Cypriani 2d2b8551fb [Positioner] Rename cfg/listeners.csv (typo) 2012-06-28 21:44:00 +02:00
Matteo Cypriani 8f3bf50aa5 [Positioner] Fix "interval" similarity algorithm
The "interval" similarity algorithm now handles the case where no packet
is found within the interval.
2012-06-20 18:39:21 +02:00
Matteo Cypriani 1f22ece3d9 [Positioner] PosUtil::is_in_interval(): bound == 0
PosUtil::is_in_interval() now handles a zero interval width. That is
required in case of standard deviation equals to zero.
2012-06-20 18:36:30 +02:00
Matteo Cypriani 6a13e4fc54 [Positioner] Fix Point3D::operator bool() 2012-06-20 17:26:00 +02:00
Matteo Cypriani 91ff55ca0e [Positioner] Measurement: variance in dBm
Along with the variance in mW, compute the variance of the dBm values.
2012-06-19 17:56:10 +02:00
Matteo Cypriani 6d40ecc8c5 [Positioner] Measurement: fix recalculate_average()
Adds the attribute variance_size to handle the number of elements taken
into account in the variance computation, instead of relying on
ss_list.size(), which is a mistake in the case of recalculate_average().
2012-06-19 17:41:10 +02:00
Matteo Cypriani b952dc94ab [Positioner] Measurement: rename variance variables
We compute only the variance for the milliwatt values, so the
variance-related variables are renamed with the _mw suffix.
2012-06-19 17:13:27 +02:00
Matteo Cypriani 812c616841 [Positioner] autocalibration.cc: missing includes 2012-06-14 13:42:05 +02:00
Matteo Cypriani 3640bcf0ba [Positioner] replay option is boolean
Fixes the test of the replay option: it is a boolean, not a
configured/not configured option.
2012-06-08 19:27:49 +02:00
Matteo Cypriani dce842bad3 [Positioner] Add option unique-calibration-requests
The default behaviour is preserved.
2012-06-08 19:27:49 +02:00
Matteo Cypriani 167cc1fcb6 [Positioner] Input: test the request earlier
Return before to update the current time if the request is empty.
2012-06-08 19:27:49 +02:00
Matteo Cypriani 85c955bb03 [Positioner] Clean requests in Input
Delete the old requests in the Input class rather than in Positioning,
so autocalibration does not use old requests.
2012-06-08 18:00:37 +02:00
Matteo Cypriani f3c00334bf [Positioner] cfg: add a few comments 2012-06-08 14:42:12 +02:00
Matteo Cypriani f8f6ca4660 [Positioner] CR timeout depends on replay mode
In Stock::delete_calibration_requests_older_than(), test if we run in
replay mode or not.
2012-06-08 14:41:50 +02:00
Matteo Cypriani 4e3843a502 [Positioner] Verbose Timestamp::update_current_time() 2012-06-08 14:41:50 +02:00
Matteo Cypriani 451e665eda [Positioner] Timestamp::elapsed(): use current time
Timestamp::elapsed() now calls Timestamp::get_current_time() instead of
comparing to now().
2012-06-08 14:41:50 +02:00
Matteo Cypriani 69461e5c94 [Positioner] Input: update current time (replay)
In replay mode, update the current time when getting a new request.
2012-06-08 14:41:50 +02:00
Matteo Cypriani d44680751c [Positioner] Timestamp: *current_time() use "replay"
Timestamp::get_current_time() now returns the current time if the replay
mode is unactivated, or the most recent request's time in replay mode.
2012-06-08 14:41:50 +02:00
Matteo Cypriani 692571e382 [Positioner] UserInterface: add option "replay" 2012-06-08 14:41:37 +02:00
Matteo Cypriani 0d527ec77d [Positioner] Add Timestamp::current_time 2012-06-08 12:29:29 +02:00
Matteo Cypriani ff5bab01cc [Positioner] Timestamp: less/greater -> before/after
Renames less_than() and greater_than(), they become before() and
after().
2012-06-08 12:29:29 +02:00
Matteo Cypriani 57cdeeb360 [Positioner] Generated requests: time received=sent
For generated calibration requests, time_sent is now equals to
time_received.
2012-06-01 19:34:58 +02:00
Matteo Cypriani 7da5196627 [Positioner] CR timeout computed with time_received
In Stock::delete_calibration_requests_older_than(), use
request.time_received instead of request.time_sent to compute the
timeout.
2012-06-01 18:49:39 +02:00
Matteo Cypriani edd0d48faa [Positioner] InputMedium: initialise time_received
When reading a new request, set current_request.time_received.
2012-06-01 17:17:58 +02:00
Matteo Cypriani 7e55f8495c [Positioner] Request: bool op -= time_received
Fixes Request::operator bool(): since time_received is initialised at
the creation, we must not take it into account.
2012-06-01 17:17:57 +02:00
Matteo Cypriani a93653c299 [Positioner] Request: add time_received
Adds an attribute for the date at which Positioner received a request
from Aggregator.
2012-06-01 14:27:20 +02:00
Matteo Cypriani b6f167c549 [Positioner] Rename single-packet option
Option positioning.generate-single-packet-reference-points becomes
positioning.generate-multi-packet-reference-points. The default is still
true, which means the default behaviour changed.
2012-05-31 20:18:49 +02:00
Matteo Cypriani 573cb2f256 [Positioner] InputUDPSocket: s/cout/cerr/ 2012-05-31 19:47:28 +02:00
Matteo Cypriani 569cdefd94 [Positioner] Autocalibration & Stock: assertion 2012-05-31 19:47:02 +02:00
Matteo Cypriani 6e40e14863 [Positioner] Autocalibration: single packet if error
When generating multi-packets RPs, if the RPs associated with the two
APs have no packet in common, we fall back to generating a single-packet
(averaged) RP.
2012-05-31 19:47:02 +02:00
Matteo Cypriani ecae107163 [Positioner] Fix Request(Request)
Copy constructor fixed to copy nb_packets and real_positon.
2012-05-31 19:47:02 +02:00
Matteo Cypriani 14eb08b37e [Positioner] Autocalibration: fix multi-packet loop
Fixes the Autocalibration::compute_multi_packet_ss() loop that searches
for the first good measurement.
2012-05-31 19:47:02 +02:00
Matteo Cypriani d3733c2083 [Positioner] AccessPoint: avoid division by zero 2012-05-31 19:47:02 +02:00
Matteo Cypriani b8722b6a6c [Positioner] ReferencePoint: fix comments
Fixes/adds comments in delete_generated_requests().
2012-05-31 19:47:01 +02:00
Matteo Cypriani f54426c3bb [Positioner] Fix calibration-requests-timeout
Fixes Stock::delete_calibration_requests_older_than(), by calling the
new function ReferencePoint::delete_request().
2012-05-31 19:46:57 +02:00
Matteo Cypriani 038c24da05 [Positioner] PosUtil: macrofy assert_uppercase()
PosUtil::assert_uppercase() becomes a macro, to avoid a warning when
compiling with -D NDEBUG. The new name is assert_uppercase(), still
defined in posutil.hh.
2012-05-26 13:34:19 +02:00
Matteo Cypriani 77b0a13896 [Positioner] Autocalibration: clean lists
Clean ref_aps and sorted_*_angles between two iterations.
2012-05-26 12:52:50 +02:00
Matteo Cypriani 98085172de [Positioner] Cosmetics (InputCSV & Stock) 2012-05-26 12:24:00 +02:00
Matteo Cypriani bc2129a36b [Positioner] Autocalibration: fix segfault 2012-05-26 12:23:09 +02:00
Matteo Cypriani 316db76861 Makefiles: add common-rules.mk, drop openwrt files
This is the sequel of the work on the Makefiles' unification.
2012-05-24 14:19:04 +02:00
Matteo Cypriani 437c5fec8c [Positioner] Makefile: specify astyle indentation
As of Artistic Style 2.02, the default indent size changed, so we force
it to 2 spaces.
2012-05-17 11:47:30 +02:00
Matteo Cypriani 59a0ac12bd [Positioning] Autocalibration: #include <vector> 2012-05-10 11:38:21 +02:00
Matteo Cypriani f0e23521c3 [Positioner] OutputNetworkSocket: include unistd.h 2012-05-09 17:48:06 +02:00
Matteo Cypriani 92485f3f67 Add common.mk
Adapt all the Makefiles to use it.
Rename all the Makefile_atheros_openwrt-10.03 to
Makefile_atheros_openwrt.
2012-05-09 15:55:17 +02:00
Matteo Cypriani 38f34a693a [Positioner] s/level/floor/ 2012-05-02 17:32:01 +02:00
Matteo Cypriani d2f40bb49e [Positioner] Autocalibration: compute origin angle
The angle P-RX-O (formerly named angle_p) was left uninitialised. This
is fixed, and the variable was renamed origin_angle.
2012-05-02 17:32:01 +02:00
Matteo Cypriani efba4fa09b [Positioner] Fix Autocalibration::sort_reference_aps()
Fix the angle calculation in sort_reference_aps() and better comment the
code.
2012-05-02 17:32:00 +02:00
Matteo Cypriani c51d9c1c12 [Positioner] Autocalibration: fix reference angle 2012-05-02 17:32:00 +02:00
Matteo Cypriani 300c338023 [Positioner] Autocalibration: signed angles
This commit changes the way the APs are selected. Until now, the two
most acute angles were selected. Now, the angles are signed, i.e. we
differentiate the APs that are before the point to generate on the
trigonometric circle, and those that are after.

Some more refactoring was achieved, and some bugs fixed.
2012-05-02 17:32:00 +02:00
Matteo Cypriani 291ef457f5 [Positioner] Add Point3D::rotate_2d() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 88a90a7abd [Positioner] Add PosUtil::deg2rad() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 90fc329f82 [Positioner] Autocalibration: refactor generate_ss() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 7a631e3962 [Positioner] Add class Autocalibration
The new class Autocalibration contains the code from the former huge
function Stock::generate_reference_point(). It is refactored a bit, but
still needs work. The function Stock::generate_reference_points() stays
in the Stock class for now.
2012-05-02 17:32:00 +02:00
Matteo Cypriani d479f9d080 [Positioner] posexcept: add autocalibration_error 2012-05-02 17:32:00 +02:00
Matteo Cypriani 579adbee1c [Positioner] Point3D: angle() becomes angle_2d() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 8d4fa6883d [Positioner] Point3D: add square_distance_2d() 2012-05-02 17:32:00 +02:00
Matteo Cypriani 007594683c [Positioner] Point3D: delete unused distance()
Delete unused functions distance(x,y,z) and square_distance(x,y,z).
2012-05-02 17:32:00 +02:00
Matteo Cypriani 987773a4df [Positioner] s/multilateration/trilateration/
This fixes an old, forgotten, vocabulary mistake.
2012-05-02 17:32:00 +02:00
Matteo Cypriani 153d4c0ea6 [Positioner] Add similarity method "interval2" 2012-05-02 17:32:00 +02:00
Matteo Cypriani 54a387190f [Positioner] Add Measurement::nb_in_interval()
Refactor Measurement::similarity() thanks to this new function.
2012-05-02 17:32:00 +02:00
Matteo Cypriani 6a8d8ec3be [Positioner] Add PosUtil::is_in_interval() 2012-05-02 17:32:00 +02:00