Commit Graph

162 Commits

Author SHA1 Message Date
Matteo Cypriani 2b12e49374 [Positioning] Fix ReferencePoint::delete_generated_requests()
Use a while loop instead of for to check the requests.
2011-07-29 23:02:25 +02:00
Matteo Cypriani 232551c150 [Positioning] ReferencePoint::delete_generated_requests() 2011-07-29 23:02:25 +02:00
Matteo Cypriani 6c48bc7e29 [Positioning] Add Stock::get_aps() 2011-07-29 23:02:25 +02:00
Matteo Cypriani d1b575c95e [Positioning] Add Stock::nb_virtual_mobiles 2011-07-29 23:02:25 +02:00
Matteo Cypriani 1abe54b7be [Positioning] Add PosUtil::int_to_mac() 2011-07-29 23:02:25 +02:00
Matteo Cypriani a2a289f651 [Positioning] Debug checks for CR deletion
Add asserts and debug messages in ReferencePoint::delete_requests() and
Stock::delete_calibration_request().
2011-07-29 23:02:14 +02:00
Matteo Cypriani 9c76d87b0c [Positioning] Add option accept-new-mobiles
The option positioning.accept-new-mobiles allows the program to add
on-line mobiles that are not declared in the mobiles' configuration
file. This was the default till now; now this option is unactivated by
default to avoid unexpected Wi-Fi devices retransmitting positioning
requests.
2011-07-25 14:18:17 +02:00
Matteo Cypriani 6b662a597a [Positioning] Add Stock::mobile_exists() 2011-07-25 14:18:17 +02:00
Matteo Cypriani 0b43e7f5fc [Positioning] Read mobiles characteristics
Add MobilesReaderCSV, that reads the known mobiles from a CSV file.
2011-07-25 14:18:17 +02:00
Matteo Cypriani 8878bb2390 [Positioning] Add Stock::nb_mobiles() 2011-07-25 14:18:17 +02:00
Matteo Cypriani b04cd1cdb8 [Positioning] Add Stock::find_create_mobile(Mobile&) 2011-07-25 14:18:17 +02:00
Matteo Cypriani d9bfd9e2c2 [Positioning] AccessPointsReaderCSV: s/ap/device/ 2011-07-25 14:18:17 +02:00
Matteo Cypriani f5a4f4fedc [Positioning] Point3D: fix angle()
Use doubles instead of floats.
Handle the cases where points are equal.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 33b027d472 [Positioning] Tweak ReferencePoint::friis_indexes_for_ap() 2011-07-25 14:18:16 +02:00
Matteo Cypriani f418fc15f1 [Positioning] Add Point3D::angle() 2011-07-25 14:18:16 +02:00
Matteo Cypriani 855291b31d [Positioning] Add PosUtil::rad2deg() 2011-07-25 14:18:16 +02:00
Matteo Cypriani 948bd577a2 [Positioning] Output*: do not output empty RequestList 2011-07-25 14:18:16 +02:00
Matteo Cypriani 773fd559cd [Positioning] Add ResultList::empty() 2011-07-25 14:18:16 +02:00
Matteo Cypriani d43267fcd3 [Positioning] Positioning: catch compute exceptions
Catch the exception potentially thrown by
PositioningAlgorithm::compute().
2011-07-25 14:18:16 +02:00
Matteo Cypriani 0df91eaa94 [Positioning] Input*: skip requests without measurements 2011-07-25 14:18:16 +02:00
Matteo Cypriani 1f46075aa3 [Positioning] Add option accept-new-aps
The option positioning.accept-new-aps allows the program to add on-line
APs that are not declared in the APs' configuration file.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 2b1248fbec [Positioning] Add Stock::ap_exists() 2011-07-25 14:18:16 +02:00
Matteo Cypriani 68b97451aa [Positioning] Print new created APs when verbose 2011-07-25 14:18:16 +02:00
Matteo Cypriani 37997242c5 [Positioning] Uppercase all MAC addresses on input 2011-07-25 14:18:16 +02:00
Matteo Cypriani e9e8308a9c [Positioning] PosUtil: add string functions
Add PosUtil::to_upper(string) and PosUtil::assert_uppercase(string).
2011-07-25 14:18:16 +02:00
Matteo Cypriani 05859da49b [Positioning] Reorder 2 headers in stock.hh 2011-07-25 14:18:16 +02:00
Matteo Cypriani 0491fe0a62 [Positioning] Input: del RP's requests on new CR
When a new calibration request is received, all the calibration requests
of the corresponding reference point are now cleared prior to add the
new request.
We should probably use a timeout to delete only the old calibration
requests and keep the recent ones.
2011-07-25 14:18:16 +02:00
Matteo Cypriani b8bd2acf44 [Positioning] Add option accept-new-calibration-requests
The option positioning.accept-new-calibration-requests allows the
calibration requests sent during the positioning phase to be added to
the Stock. They are added to the calibration requests read by
InputDataReader during the start-up phase.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 586cfdb77e [Positioning] Stock::store_calibration_request()
InputDataReader::stock_calibration_request() becomes
Stock::store_calibration_request(), so other classes can use it.
2011-07-25 14:18:16 +02:00
Matteo Cypriani de9513e4b4 [Positioning] Add option update-ap-coordinates-online
In InputUDPSocket, update the AP's coordinates when receiving a
calibration or autocalibration request that contains the coordinates.
This is done if the option positioning.update-ap-coordinates-online is
activated.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 0dd57b8ea7 [Positioning] InputUDPSocket: use AP's coordinates
Use the transmitting AP's coordinates when receiving an autocalibration
request that does not contain the coordinates.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 71784342e7 [Positioning] Add Stock::ap_matrix_get_ss()
Add double Stock::ap_matrix_get_ss(transmitter, receiver).
This is the first step to handle self-calibration in owlps-positioning.

The idea is to simulates a square matrix of the listeners, with the
transmitters in one dimension and the receivers in the other dimension.
matrix[transmitter][receiver] is the signal strength received by
'receiver' from 'transmitter'.
The purpose of Stock::ap_matrix_get_ss() is precisely to access the
entry matrix[transmitter][receiver].

Note that the access is read-only, as the pseudo-matrix is (or will be)
filled by the standard mechanism of (auto)calibration requests and
measurements stored in Stock.
2011-07-25 14:18:16 +02:00
Matteo Cypriani f84276d8d7 [Positioning] ReferencePoint::average_measurements()
Add double ReferencePoint::average_measurements(string mac_transmitter),
that allows to get the average of all the Measurements sent by a given
transmitter.

Add, as protected functions, get_all_measurements(string
mac_transmitter) and get_requests(string mac_transmitter), that do the
same as get_all_measurements(void) and get_requests(void), but filtering
on the transmitter of the packets.
2011-07-25 14:18:16 +02:00
Matteo Cypriani 88aaded78c [Positioning] Add Stock::get_reference_point() 2011-07-25 14:18:16 +02:00
Matteo Cypriani fc13bc296c [Positioning] Fix ReferencePoint::operator<<() 2011-07-22 11:36:05 +02:00
Matteo Cypriani cf7bcecd10 [Positioning] Input: delete unused header
The function add_request_to_stock() was declared in input.hh, but not
defined anywhere.
2011-07-22 11:11:26 +02:00
Matteo Cypriani 25c3f53983 [Point3D] Fix Doxygen warning with operator string 2011-07-18 13:38:29 +02:00
Matteo Cypriani c63da8bdfc [Positioning] InputDataReader: print nb requests
In verbose mode, display the number of calibration requests stored.
2011-06-29 10:56:08 +02:00
Matteo Cypriani 84ea723528 [Positioning] Direction: 0 is valid to construct
Accept 0 as a "valid" value for the constructor and operator=()
(constructing a Direction with 0 value was possible any way, using the
default constructor).
This fixes the reception of requests on UDP.
2011-06-24 16:48:55 +02:00
Matteo Cypriani 2ebb8c49bc [Positioning] *.hh: fix typos in comments 2011-06-20 12:11:20 +02:00
Matteo Cypriani 3b8121643b [Positioning] InputCSV: --verbose instead of #ifdef
Test if the verbose mode is activated instead of using #ifdef DEBUG.
2011-06-16 14:21:12 +02:00
Matteo Cypriani 67ccf674a5 [Positioning] InputDataReader: print --verbose info
Display the number of elements read when the verbose mode is activated.
2011-06-16 14:10:43 +02:00
Matteo Cypriani abd4b0803e [Positioning] UserInterface: add --verbose option
Currently, --verbose / -v is only a switch. It would probably be better
to have a verbose level instead.
2011-06-16 13:46:21 +02:00
Matteo Cypriani 332881b305 [Positioning] Standardise InputCSV & InputUDPSocket 2011-06-16 13:13:13 +02:00
Matteo Cypriani cce949f32a [Positioning] Fix some Doxygen comments 2011-06-14 16:44:17 +02:00
Matteo Cypriani 48fa965c54 [Positioning] UserInterface: reformat strings 2011-06-08 19:05:48 +02:00
Matteo Cypriani 507072bd24 [Positioning] Option radar-average-reference-points
For RADAR, the default is now to compare the current positioning request
to each stored CalibrationRequest instead of each ReferencePoint
(averaging the calibration requests associated with the reference
point).

The new option --positioning.radar-average-reference-points allows to
activate the old behaviour (compare to reference points).

Note: the bug fixed in the previous commit caused the creation of
a ReferencePoint for each CalibrationRequest, implying the 'new'
default behaviour (one ReferencePoint was associated to only one
CalibrationRequest, so comparing each ReferencePoint or each
CalibrationRequest was giving the same result). Anyway, there was
(hopefully) no such bug in OwlPS v0.8, so it is actually the old
behaviour :-)
2011-06-08 10:25:38 +02:00
Matteo Cypriani d322221d21 [Positioning] Stock: fix ReferencePoint creation
For each calibration request read, a new ReferencePoint was created in
Stock. This is because of the behaviour of unordered_set: as pertaining
to unordered_set, two elements are not considered equal if the hashes
alone are identical, they must also be actually equal (operator==).

The problem was fixed by using a custom equality check function that
checks the equality only on the coordinates of the ReferencePoint (as if
it was a Point3D).
2011-06-07 18:48:33 +02:00
Matteo Cypriani a39e06cf19 [Positioning] Stock::closest_calibration_request()
Add CalibrationRequest Stock::closest_calibration_request(Request).
2011-05-13 10:51:52 +02:00
Matteo Cypriani 920e4491ef [Positioning] Stock: s/look for/search for/ 2011-05-13 10:51:52 +02:00