In cxxtest, TS_ASSERT_DIFFERS(a, b) tests !(a == b) and not (a != b).
Therefore, to test a::operator!=(b), we must avoid TS_ASSERT_DIFFERS()
(that will test !a::operator==(b)) and write instead TS_ASSERT(a != b).
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).
- Replace occurences of `container.size() == 0` with
`container.empty()`.
- Fix an allocation in posexcept.cc (false positive?).
- UserInterface: in constructor, handle bad_alloc exception possibly
thrown by `new`.
InputLogCSV now handles calibration requests.
TestUtil:
- Request list become a Request pointer list (to handle polymorphism).
- Add a ReferencePoint list.
- Reorganise create_test_csv_file().
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.
This commit pass finally all unit tests without any warning!
Measurement:
- Finish unit test (test the average SS).
- Fix update_average_ss() and add_ss().
- average_ss is now double.
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.
InputCSV:
- Add eof_close() to automatically close the file when EOF is reached.
- Add read_next_line(), that read the next non-blank line and skips
blank characters.
- Add current_line, a string containing the current line data.
- Update unit test.
InputMedium:
- Rename InputMedium::current_line to current_line_nb.
AccessPoint:
- Fix a bug with the frequency.
- Add an accessor set_channel() that calls set_frequency().
WifiDevice:
- Fix a bug with the antenna gain (which was converted with
PosUtil::channel_to_frequency()).
- Pass float arguments as values and not references.
Fix some errors revealed during writing of unit tests.
Building: Fix wrong #ifndef in building.hh.
Measurement: New default constructor.
PosUtil:
- Remove nanosecond-precision functions.
- Add timespec_round_to_ms() to lower the precision of a struct timespec
to millisecond.
- Add timespec_equals to compare two struct timespec (maybe an
operator==() would be better?).
- 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).
In all classes:
- Read accessors return a const reference instead of a value.
- operator=() returns a const reference.
- Use '\n' instead of std::endl in all stream manipulations, when
buffer flush is not required.
- Use pre-incrementing where possible, instead of post-incrementing.
- Point3D: Destructor must be virtual (thanks cppcheck!).
- Update TODO.
== 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.
Where possible, put the #include in the .cc file instead of the header
file.
Include <ostream> when <iostream> is not needed.
Fix a bug in operator<<() for Measurement: NULL value of ap and mobile
was not checked.
- Add section « C++ en action » in TODO.
- Where possible, class declarations instead of #include.
- Use of iterators and at() instead of operator[] for vectors.
- Const arguments for operator<< where forgotten.
- Updated Makefile to be able to compile each class.
- Fixed some compilation errors (CalibrationMeasurement, Point3D,
ReferencePoint, WayPoint) and a warning in Measurement.
- Adding WifiDevice and Mobile. AccessPoint and Mobile are sub-classes
of WifiDevice.
- Measurement: link to Mobile and AccessPoint.
- Adding CalibrationMeasurement.
- ReferencePoint: add_measurement() and operators, link to
CalibrationMeasurement (not Measurement).
- Area and Waypoint : using pointers (not references) for attribute
setting.
- Deleted class ClientInfo (replaced by Mobile).
Modification of AccessPoint and Measurement to fit the class diagram.
Adding class PosUtil, for static utilitary functions (will be the
successor of the false library libowlps-positioning).
/!\ 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. Différences par
rapport à ce commit : avant les modifications, j'ai renommé guinumo.* en
owlps-positioning.*.
| r90 | jgraeffly | 2009-05-15 15:08:42 +0200 (ven 15 mai 2009) | 1 line
| Chemins modifiés :
| A /code/owlps-positioning/owlps-positioning.cc
| A /code/owlps-positioning/owlps-positioning.hh
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@91 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
Backup du 15-05-2009, restauré pour effacer les mauvais commits de
Julien (mauvaise compréhension de SVN -> mauvaises utilisation).
Du coup j'en profite pour préparer le terrain : un petit coup de astyle
sur chaque fichier, pour que les diffs soient intéressants.
DÉSORMAIS, ASTYLE DEVRA ÊTRE UTILISÉ AVANT CHAQUE COMMIT !
Pour ce faire :
astyle --style=gnu *.cc *.hh
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@89 785a6c6c-259e-4ff1-8b91-dc31627914f0
Retouches mineures et décommentaire de checkTopology() dans le
constructeur de Server.
git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@78 785a6c6c-259e-4ff1-8b91-dc31627914f0