Add class FRBHMBasic, which derives FBCM and RADAR.
ReferencePoint: Add functions friis_index_for_ap() and
friis_indexes_for_ap() (that takes code away from
Stock::update_all_friis_indexes()).
CartographyAlgorithm and MultilaterationAlgorithm now extend
PositioningAlgorithm with "public virtual" instead of "public".
CartographyAlgorithm: select_point() must now return a ReferencePoint.
MultilaterationMethod: Add pure virtual function multilaterate_2d().
MinMax: Add function multilaterate_2d().
MultilaterationAlgorithm: Add function multilaterate_2d() to map
MultilaterationMethod::multilaterate_2d().
Makefile: Fix some dependencies.
Add classes RADAR and CartographyAlgorithm, which is the super-class of
SS map based algorithms.
Measurement: Add functions:
- add_ss_list(), to add several SS in one operation.
- merge(), to merge a Measurement into another.
- ss_square_distance() (from old commented code), to compute the
distance to a SS value or another Measurement.
posexcept: Add exception cannot_merge, used by Measurement::merge().
ReferencePoint:
- Add ss_square_distance() and functions used by it:
complete_with_dummy_measurements(), compute_ss_square_distance() and
get_all_measurements_sorted(). Use of sorted values (map instead of
unordered_map) is useless, should be fixed soon.
- Delete old commented code: getPowerForAp(), addMeasurement() and old
getSsSquareDistance().
Stock: Add function closest_reference_point().
Stock: add Waypoint list and support functions.
Waypoint:
- Use an unordered_set instead of a vector for the Building list.
- Add functions add_building(), add_buildings() and remove_building().
- Add operator string().
cfg/waypoints.csv: change format (add building name).
InputDataReader handles all data input, i.e. data needed to prepare
computation (topology, calibration measurements, etc.).
TopologyReaderCSV reads topology from a CSV file (just Building and Area
for the moment).
cfg/topo.csv: change format (add building name and reorder coordinates).
UserInterface: add data input options.
posexcept: add data input exceptions.
CSVFileReader is a specialisation of TextFileReader, that allow reading
a CSV line field by field.
TextFileReader:
- Make private attributes protected to allow derivation.
- Add attribute current_line_nb.
- Add function read_nonblank_line().
- Delete useless accessor get_name().
Update InputCSV to use CSVFileReader.
Adapt unit tests for InputCSV and InputLogCSV: EOF is not reached right
after reading the last line, but after trying (and failing) to read one
more line.
TextFileReader read lines from a text file. It is aimed to be used by
all classes that read from a text file, as TextFileWriter is used by
those which write to a text file.
Code of TextFileReader is taken from class InputCSV.
Minor fixes on the TextFileWriter unit test.
TextFileWriter:
- OutputFileMedium becomes TextFileWriter.
- Method write_string_to_file() becomes write_text() and is made public.
- Add a unit test.
InputLogCSV and OutputCSV do not extend OutputFileMedium anymore, but
use a TextFileWriter as an attribute.
OutputCSV writes Result to a CSV file. It extends OutputFileMedium.
Update:
- Output.
- UserInterface (add option "output.csv-file").
- posexcept (add class no_output_csv_file).
OutputFileMedium is designed to be a super-class for classes that need
to write to a text file. It could also be a simple writer if the method
write_string_to_file() was public (maybe we should change that and
rename OutputFileMedium to OutputFileWriter or something like that).
InputLogCSV:
- Now extends InputLogMedium *and* OutputFileMedium.
- Make log_request() inline.
- Where possible, use initialisation lists in class definition instead
of explicit variable initialisations in source file.
- Rename some variables (use of "source" in copy constructors and
operators…).
- Suppress useless Doxygen comments, allow non-documented members in
Doxyfile.
The new class Positioning is the interface between Input and Output,
using positioning algorithms to compute results from requests.
Update UserInterface to add option "positioning.algorithm"; update posexcept.
PositioningAlgorithm is the super-class of all positioning algorithms.
RealPosition is the first "positioning algorithm" (it actually computes
nothing, but returns the position declared in a CalibrationRequest).
InputCSV now handles CalibrationRequest, adding position and direction
information.
Input:
- Add add_request_to_stock().
Stock:
- Add list of ReferencePoint.
- Add list of CalibrationRequest.
The new class Direction will be used to represent the direction of a
calibration request.
Update posexcept.hh to add new exception bad_direction, used in class
Direction.
InputMedium:
- Split into two files (inputmedium.{hh,cc}).
- Add polymorphic handling of CalibrationRequest.
- Write unit tests.
InputCSV:
- Use new code of InputMedium to handle calibration requests.
- We detect if the read request is a calibration request, but
specific attributes are not initialised.
Delete class CalibrationMeasurement and add class CalibrationRequest:
the ReferencePoint must be linked by the Request, not by each
Measurement of the Request.
Adapt ReferencePoint to link a CalibrationRequest instead of a
CalibrationMeasurement.
Request:
- Destructor is now virtual to allow polymorphism.
- Reactivate tests on get_measurements() and set_measurements().
Work on unit tests:
- TestUtil:
- Add set_up(), that sets up lists of Request, Mobile and AccessPoint,
primarily to be used with create_test_csv_file().
- Add public attributes for these lists.
- Update create_test_csv_file() to use these lists.
- Update InputCSV_test to use new TestUtil.
- Add class TestSetUp, a global fixture class. Before all tests off all
test suites, it calls TestUtil::set_up().
- Update and clean Makefile.
- Add files posexcept.{hh,cc} that contains exception classes.
- Add class Input, that handles InputMedium (and InputLogMedium, in the
future). Note that for the moment, the unit test is *very* minimal.
- UserInterface: Add options for the input medium and the CSV file.
Add the class TestUtil, that provides functions used in several unit
tests. For the moment, it contains two function:
- fill_file(), that creates and fills a test file.
- remove_file(), that deletes a test file.
- Add class Configuration, a stock for the configuration structure.
- Add class UserInterface, that handles the configuration input.
- Update owlps-positioning.cc (delete old stuff like configuration) and
delete owlps-positioning.hh: we now have a compilable executable.
Area:
- Unit test: test inversion of points.
- Add reorder_coordinates().
- Remove all set_{x,y,z}_{min,max}() accessors.
- Remove set_p_min() and set_p_max().
- Add set_coordinates().
- The constructor now takes 2 Point3D instead of 6 float coordinates.
Point3D:
- Unit test: finish to test distances, test new cast operator.
- Add a cast to string operator.
Unit tests:
- Add valuetraits.hh with class to display correctly a Point3D in a
wrong assertion.
- In all classes where we used a C-style cast to suppress const, we now
use a const_cast.
- Area: Add operator=().
- InputCSV:
- Document get_next_request().
- Handle exception when using Stock::get_{ap,mobile}().
- In constructor, throw an exception in case of error when opening the
input file.
- CalibrationMeasurement: Remove operator<<() which is useless (it is a
simple call to Measurement operator<<()).
- Makefile: Add target 'check'.
- Add/update comments to be Doxygen compliant. Translate existing
comments in English.
- Various fixes (more or less importants):
- NULL pointer verification when adding an element to a vector of
pointers.
- Add some missing accessors.
- Add some more error handling with exceptions. Class Stock: correct
accessors (pure read accessors do not create a missing element any
more, but throw an exception).
- Makefile: Add 'doc' target.
- Update TODO (some things noticed when reviewing the code for
comments).
== code/owlps-positioning ==
- Add new class Request (split of Measurement).
- Update Measurement and CalibrationMeasurement (suppress the 'mobile'
attribute).
- Update InputCSV (and InputMedium) to use Request instead of
Measurement. Complete the file reading (mobile & ap pointers remain to
be implemented).
- PosUtil: Add timespec_to_ms(), timespec_to_ns(), ms_to_timespec(), and
ns_to_timespec().
- Makefile: Update to use stlport, fix all deps and add new classes.
- Minor fixes.
- TODO: Add UML-related things, updates Measurement & Request.
== code ==
- libowlps: Add ms_to_timeval() (commented), may be useful later.
- Add TODO.
- Add classes InputMedium and InputCSV. They handle Measurements.
- Measurement: add set_ss_list() and clear().
- Add new files in Makefile.
- TODO: thinking about Measurement vs. a new class Request.
- Updated Makefile to be able to compile each class.
- Fixed some compilation errors (CalibrationMeasurement, Point3D,
ReferencePoint, WayPoint) and a warning in Measurement.
/!\ This branch does not compile! (But some single files can.)
/!\ All the following commits are broken code. (Hopefully it will work
/!\ in a few days.)
Backup commit. Beginning of the rewriting work on OWLPS Positioning,
following the new class diagram.
Début de revue du code de Julien sur owlps-positioning :
* Cosmétique.
* owlps-positioning.cc, server.cc : correction/amélioration de la
gestion des arguments.
* Fichiers de config : suppression de cfg/config.cfg et
déplacement-renommage de ./owlps-positioning.cfg dans
cfg/owlps-positioning.conf.
* Makefile : passage de Boost 1.35 à 1.38, l'option
-lboost_program_options devient -lboost_program_options-mt.
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@101 785a6c6c-259e-4ff1-8b91-dc31627914f0
Extrait de son courriel :
« Par rapport à la précédente j'ai surtout corrigé des bugs. »
Note : la version du listener portable sur Fonera, envoyée en même temps
par Julien, viendra plus tard (le temps que je l'incorpore).
Détail des changements après analyse du code :
aggregator : correction de bogues.
positioning :
* Ajout d'un fichier de config format boost (cfg/config.cfg).
* Makefile : implantation des cibles "install" et "uninstall" ; la cible
"astyle" devient "style".
* accesspoint.{hh,cc}, area.cc, measurement.hh, point.{hh,cc},
referencepoint.{hh,cc} : cosmétique.
* owlps-positioning.c : correction de la lecture du fichier de config
(ajout d'une option permettant de spécifier un fichier alternatif).
* server.cc : essentiellement correction des requêtes.
* libowlps-positioning.{hh,cc} : passage de "unsigned long long" à
"uint64_t" comme type de retour de timeval_to_ms().
writeInDb :
* Ajout de la gestion d'un fichier de config.
* Ajout de deux scripts pour la BDD.
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@96 785a6c6c-259e-4ff1-8b91-dc31627914f0
Le commentaire de révision initial figure ci-dessous. Les différences
par rapport à ce commit sont :
- Dans code/infrastructure-centred/owlps-client/ : importation des
modifs de Julien dans la dernière version du client (Julien avait
utilisé comme base une ancienne version).
- Dans code/infrastructure-centred/owlps-listener/ : idem.
- Dans code/owlps-positioning/ :
° Suppression de client (déplacé dans les archives).
° Makefile : ajout d'une pseudo-cible .PHONY.
- code/writeInDb/ :
° Le binaire n'est pas versionné.
° Application de astyle --style=gnu.
| r93 | jgraeffly | 2009-05-27 14:51:40 +0200 (mer 27 mai 2009) | 23 lines
| Chemins modifiés :
| R /code/infrastructure-centred/owlps-aggregator/owlps-aggregator.h
| R /code/infrastructure-centred/owlps-aggregator/owlps-aggregatord.c
| R /code/infrastructure-centred/owlps-client/owlps-client.c
| R /code/infrastructure-centred/owlps-listener/owlps-listener.h
| R /code/infrastructure-centred/owlps-listener/owlps-listenerd.c
| R /code/libowlps/owlps.h
| R /code/owlps-positioning/Makefile
| D /code/owlps-positioning/client
| A /code/owlps-positioning/libowlps-positioning.cc
| A /code/owlps-positioning/libowlps-positioning.hh
| R /code/owlps-positioning/owlps-positioning.cc
| A /code/owlps-positioning/owlps-positioning.cfg
| R /code/owlps-positioning/owlps-positioning.hh
| R /code/owlps-positioning/positioning.cc
| R /code/owlps-positioning/positioning.hh
| R /code/owlps-positioning/server.cc
| R /code/owlps-positioning/server.hh
| R /code/owlps-positioning/treatment.cc
| R /code/owlps-positioning/treatment.hh
| A /code/writeInDb
| A /code/writeInDb/writeindb
| A /code/writeInDb/writeindb.cc
| A /code/writeInDb/writeindb.hh
|
| - Mise à jour du positioner :
| Prise en charge de la BdD pour utilisation ainsi que pour la
| sauvegarde des résultats
| Envoi du résultat au client
| Prise en compte du fichier de configuration ainsi que des
| lignes de commande avec la library boost
|
| - Mise à jour de l'aggregator :
| Pris en compte de la BdD pour la sauvegarde des requetes de
| calibration ou de localisation
| Envoi des demandes de localisation uniquement vers le
| positioner
| Ajout des options utilisables en ligne de commande et dans le
| fichier de conf
|
| - Mise à jour du listener :
| Ajout de l'envoi de l'adresse IP du mobile
|
| - Mise à jour du mobile :
| Ajout de la socket de récupération de la réponse du serveur la
| réponse est sous forme de 3 float (x, y, z) et non d'un Point.
|
| - Mise à jour de owlps.h :
| Ajout des ports par défaut du positioner ainsi que du mobile.
|
| - Ajout de writeInDb :
| Programme permettant de mettre les données contenu dans un
| fichier dans la BdD
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@94 785a6c6c-259e-4ff1-8b91-dc31627914f0
Le commentaire de révision initial figure ci-dessous. Différences par
rapport à ce commit : ajout d'une règle "astyle" au Makefile, qui refait
l'indentation de tous les fichiers (à utiliser avant un commit).
| r91 | jgraeffly | 2009-05-15 15:18:47 +0200 (ven 15 mai 2009) | 1 line
| Chemins modifiés :
| M /code/owlps-positioning/Makefile
| M /code/owlps-positioning/server.hh
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@92 785a6c6c-259e-4ff1-8b91-dc31627914f0
Le commentaire de révision initial figure ci-dessous. Les différences
par rapport à ce commit sont les suivantes :
- client/ : la version binaire n'est pas versionnée, ni "toutes.csv".
- Non-suppression de clientinfo.* et de guinumo.* (on verra plus tard).
- Les fichiers de conf restent dans le répertoire "cfg", qui n'est pas
supprimé.
- Le répertoire "csv" reste vide (les données d'entrée n'ont pas à être
versionnées).
- Le répertoire "log" n'est pas supprimé.
| r89 | jgraeffly | 2009-05-15 14:54:13 +0200 (ven 15 mai 2009) | 11 lines
| Chemins modifiés :
| R /code/owlps-positioning/Makefile
| D /code/owlps-positioning/TODO
| D /code/owlps-positioning/cfg
| A /code/owlps-positioning/client
| A /code/owlps-positioning/client/Client
| A /code/owlps-positioning/client/Client.cc
| A /code/owlps-positioning/client/toutes.csv
| D /code/owlps-positioning/clientinfo.cc
| D /code/owlps-positioning/clientinfo.hh
| R /code/owlps-positioning/csv
| A /code/owlps-positioning/csv/minipc.cfg
| A /code/owlps-positioning/csv/topo.csv
| A /code/owlps-positioning/csv/toutes.csv
| A /code/owlps-positioning/csv/waypoints.csv
| D /code/owlps-positioning/guinumo.cc
| D /code/owlps-positioning/guinumo.hh
| D /code/owlps-positioning/log
| A /code/owlps-positioning/positioning.cc
| A /code/owlps-positioning/positioning.hh
| R /code/owlps-positioning/server.cc
| R /code/owlps-positioning/server.hh
| A /code/owlps-positioning/treatment.cc
| A /code/owlps-positioning/treatment.hh
|
| - Création du serveur qui reçois les informations à partir du client
| se trouvant dans le dossier client/
| - Implémentation de la partie calcul dans le serveur (les résultats
| sont cependant les mêmes qu'avant il n'y a pour l'instant pas eu de
| modifications sur le traitement).
| - En sortie, on retrouve le résultat de chaques algo.
| - Sur cette version il n'y a pas encore de commentaires ceci a été
| fait afin d'avoir une meilleure visualisation du programme.
| - La réception des données se fait pour l'instant toujours grâce à un
| vector
| - positioning.cc est une classe qui contient les informations sur la
| topologie les AP ainsi que les points de référence.
| - server.cc contient les méthodes qui permet de recevoir les clients
| et implémente positioning.cc avec les informations reçues par des
| fichiers ces fichiers sont dans csv/
| - treatment.cc est une classe contenant les différents Algo permettant
| de calculer la position.
| - Pour éxécuter le programme : owlps-positioningd csv/minipc.cfg
| csv/toutes.csv csv/topo.csv csv/waypoints.csv
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@90 785a6c6c-259e-4ff1-8b91-dc31627914f0