Compare commits

...

62 Commits

Author SHA1 Message Date
Matteo Cypriani 2f84754392 [scripts] AggCheck: fix for recent perl versions 2018-04-13 19:36:59 +02:00
Matteo Cypriani bce8896b4b Add explicit padding for all the structs
Indicate padding bytes explicitly in all the structures. Some of the
structures could have their size reduced by reordering their fields by
size (especially in owlps.h).
2016-11-23 17:02:21 -05:00
Matteo Cypriani 913a62377e Improve README.md 2016-11-05 00:22:41 -04:00
Matteo Cypriani 243dc321b9 [Positioner] explicit ReferencePoint(Point3D&)
Make ReferencePoint's Point3D copy constructor explicit. This implied
the following changes:

* Stock::get_reference_point(ReferencePoint&) becomes
  get_reference_point(Point3D&). Reference points were always
  retrieved by their coordinates only in the Stock anyway.

* Stock::find_create_reference_point(Point3D&) was added, since it can
  have a different outcome than its (ReferencePoint&) counterpart.

* The unit tests for Stock were improved.
2016-11-04 22:30:21 -04:00
Matteo Cypriani c0db11a890 [Positioner] More explicit constructors 2016-11-04 11:11:28 -04:00
Matteo Cypriani 6c17646cc3 [Positioner] Use explicit constructors
Wherever it's possible without further code change, mark one-argument
constructors as explicit.
2016-11-04 11:11:06 -04:00
Matteo Cypriani c4180419e0 COPYRIGHT: update dates again
I believe today's changes deserve adding 2016 to the copyright file!
2016-11-03 22:08:06 -04:00
Matteo Cypriani 78f13f2c0b [Listener] Fix byte order macros for OpenBSD >= 5.6 2016-11-03 22:08:06 -04:00
Matteo Cypriani 550d9008db [doc] preproc.sh: fix for BSD sed 2016-11-03 22:08:06 -04:00
Matteo Cypriani dce4416bc6 Fix missing/wrong includes for BSD
Fix a few missing includes that prevented building on BSD systems.

* Client: the proper way to get MAXHOSTNAMELEN is from <sys/param.h>,
  not from <rpc/types.h>.

* Positioner/Direction: std::hash is declared in <functional>.

* Positioner/OutputNetworkSocket: get struct sockaddr from
  <sys/socket.h>, not from <netinet/in.h>.
2016-11-03 22:08:06 -04:00
Matteo Cypriani c6e39f7e70 [libowlps] Use labs() for int_fast32_t
int_fast32_t is at least 32-bit wide, like long. Hence, labs() should be
used instead of abs().
2016-11-03 22:08:06 -04:00
Matteo Cypriani 41640da203 [Positioner] Mobile: fix copy constructor segfault 2016-11-03 22:08:06 -04:00
Matteo Cypriani ecb9a689b5 [Positioner] Mobile: fix operator=() & operator==() 2016-11-03 22:08:06 -04:00
Matteo Cypriani df0c08c271 [Positioner] Add missing ResultList::operator!=() 2016-11-03 22:08:01 -04:00
Matteo Cypriani 16d4422a2b [Positionner] tests: improve Mobile tests 2016-11-03 22:06:18 -04:00
Matteo Cypriani a77ee05239 [Positioner] Point3D: add missing <vector> include 2016-11-03 22:06:17 -04:00
Matteo Cypriani 44dcf42180 CMake: rename test target to "tests"
Comply with CMake policy CMP0037: "test" is a reserved target name.
2016-11-03 22:06:17 -04:00
Matteo Cypriani 3df3a14762 gitignore: add /build/ 2016-11-03 22:06:17 -04:00
Matteo Cypriani 2c9f1a09b0 [doc] Add rendered pictures (PNG) 2016-11-03 22:06:17 -04:00
Matteo Cypriani 4d309d9c10 [doc] Add figures/Makefile 2016-11-03 22:06:17 -04:00
Matteo Cypriani 36966148f3 [doc] Add positioner_class_diagram_simple.plant
This is a simplified, and somewhat more readable version of
positioner_class_diagram.uxf.
2016-11-03 22:05:55 -04:00
Matteo Cypriani 759db45a50 A few old cosmetic changes 2016-11-03 22:00:33 -04:00
Matteo Cypriani c4f1ed82e6 [logo] Add PNG versions 2016-11-03 22:00:33 -04:00
Matteo Cypriani f67d7892a8 Add README.md to accommodate Gogs
README.md is an excerpt of doc/owlps.t2t, and integrates the information
from the former README.t2t, which was deleted.
2016-11-03 22:00:33 -04:00
Matteo Cypriani bc6ec14fa8 Update COPYRIGHT.t2t URL 2016-11-03 22:00:33 -04:00
Matteo Cypriani fbef235ebf [doc] Update URLs
OwlPS is now hosted on a Gogs instance, that replaced the defunct
InDefero.
2016-11-03 21:57:53 -04:00
Matteo Cypriani a567782557 [doc] Some rewording 2016-11-03 00:46:37 -04:00
Matteo Cypriani 8053876588 COPYRIGHT: update dates 2016-11-03 00:46:32 -04:00
Matteo Cypriani 52106177a1 [Aggregator] Improve UDP socket-related code 2014-10-31 13:59:52 -04:00
Matteo Cypriani c567592167 [lib] owl_close_fd(): handle negative fd 2014-10-31 12:59:39 -04:00
Matteo Cypriani fe84a5f097 [doc] INSTALL: recommend building in a subdirectory
Recommend building in ~/owlps/build rather than in ~/owlps-build.
2014-10-31 11:36:34 -04:00
Matteo Cypriani dc64f050a8 [doc] Quit using "CP" where not necessary 2014-10-31 11:36:34 -04:00
Matteo Cypriani 7d84e7c957 [doc] positionerd: add filter options
Also add default value explanation in owlps-positioner.conf.
2014-10-31 11:36:34 -04:00
Matteo Cypriani e4b8e7239b Update Doxygen files (Doxyfile) to 1.8.8 2014-10-31 11:18:15 -04:00
Matteo Cypriani b479d6a560 [doc] INSTALL: improve list of dependencies 2014-07-25 15:37:33 -04:00
Matteo Cypriani f3e63ec20f CMake: precise "g++" in error message 2014-07-25 15:22:59 -04:00
Matteo Cypriani 093b93a3c5 CMake: make sure OWLPS_VERSION is defined
If not defined in the environment and could not retrieved from Git,
OWLPS_VERSION is defined to "unknown version".
2014-07-25 15:17:46 -04:00
Matteo Cypriani 209530ad41 [doc] CMake: use current date if not using Git
If not building against the source from the Git repository, the date
can't be retrieved with Git; in that case we use the current date in the
documentation.
2014-07-25 15:15:48 -04:00
Matteo Cypriani e51a8d4f1b [scripts] AggCheck: detect duplicated timestamps
owlps-aggcheck uses the timestamp alone to identify requests, which
causes problem in case two requests have the same timestamp. This commit
allows the script to detect duplicated timestamps, and documents the
bug.
2014-07-24 12:38:29 -04:00
Matteo Cypriani 8c5e8c62f6 [scripts] AggCheck: -n prints transmitters
When called with -n, owlps-aggcheck now prints the transmitter of each
request as the first column.
2014-07-24 12:38:29 -04:00
Matteo Cypriani a56a8d3d5d [Positioner] New option filter.max-speed-cp
The new option positioning.filter.max-speed-cp allows to set an
alternative maximum speed when the mobile is found to be within
cp-reset-distance, instead of completely disabling the filter.
2014-05-28 17:01:13 -04:00
Matteo Cypriani a1c8e0a093 [Positioner] New option filter.cp-reset-distance
The new option positioning.filter.cp-reset-distance allows to disable
the filter when the unfiltered location of the mobile terminal is found
to be close enough to a capture point.
2014-05-28 17:01:12 -04:00
Matteo Cypriani 36cf7c13cb [Positioner] Add Stock::distance_from_closest_cp() 2014-05-28 17:01:12 -04:00
Matteo Cypriani 9d3c079b45 [Positioner] sqrtf() instead of sqrt() with float
Use sqrtf() instead of sqrt() when returning a float.
2014-05-28 17:01:12 -04:00
Matteo Cypriani 7e3b41a46f [Positioner] Positioning::filter() (refactoring)
Refactor the filtering code into a separate function,
Positioning::filter().
2014-05-28 17:01:12 -04:00
Matteo Cypriani f35215388b [Positioner] Use nullptr instead of NULL 2014-05-28 17:01:12 -04:00
Matteo Cypriani 92db007d6b [Positioner] Test pointers as booleans 2014-05-28 17:01:12 -04:00
Matteo Cypriani ec8c1244cd [Positioner] Eliminate a couple of C-style casts 2014-05-28 17:01:12 -04:00
Matteo Cypriani f06c866f8f [Positioner] Add basic filtering
The new configuration option positioning.filter.max-speed allows to
specify the maximum speed at which the mobile terminals can travel; the
distance between two results for a given mobile will be limited to the
distance that it could have travelled, according to the two requests'
timestamps.
2014-05-28 17:01:12 -04:00
Matteo Cypriani e8f3479cdd [Positioner] Add Mobile::last_request
The last request transmitted by (received from) a mobile is now stored
along with last_results instead of relying on last_results.request which
is not guaranteed to be a valid pointer.
2014-05-13 16:41:51 -04:00
Matteo Cypriani 7b0aacd212 [Positioner] Add ResultList::set_request()
It is now possible to update the Request in a ResultList.
2014-05-13 16:41:51 -04:00
Matteo Cypriani f38527cd93 [Positioner] Add Result::set_position() 2014-05-12 19:41:38 -04:00
Matteo Cypriani 1a40fe3366 [Positioner] Point3D: new interpolation function
Add Point3D::interpolate(point, speed, duration), that returns a single
interpolated point computed according to speed and duration of the
mobile's movement.
2014-05-12 19:15:34 -04:00
Matteo Cypriani 52940bcfc3 [Positioner] Add ResultList::get_result_for_algo() 2014-05-12 14:58:59 -04:00
Matteo Cypriani feb5a715fa [Positioner] Add Mobile::last_results
Allow to store the last results for each algorithm in a Mobile.
2014-05-12 12:30:30 -04:00
Matteo Cypriani 23d0708ca1 [logo] README: explain how to get the right font 2014-05-05 13:05:48 -04:00
Matteo Cypriani ebeef80bac [Positioner] cfg: warn about CPs in mobiles.csv 2014-05-05 13:04:47 -04:00
Matteo Cypriani c09ed87f94 [lib] captured_request's alignment in comment
Add position and size of alignment bytes in the _owl_captured_request
structure (in comments).
2014-05-05 12:54:41 -04:00
Matteo Cypriani d5755a3df6 [Client] Display sleeping time only in verbose
Display sleeping and transmission times only in verbose mode.
2014-03-24 07:53:17 -04:00
Matteo Cypriani 6c8d97ace3 [Client] With -N, print nb of remaining trx
When the -N option is used, the number of remaining request
transmissions is printed after each transmission.
2014-03-24 07:50:11 -04:00
Matteo Cypriani dd8497fb53 [Listener] Radiotap: handle Extended Present Flags
Check the 31st bit of the Present Flags field, i.e. the Ext bit, set
when additional Present Flags fields follow.
2014-03-20 14:53:58 -04:00
Matteo Cypriani 9c83ae3593 [Positioner] using instead of typedef
Declare type aliases with "using" instead of "typedef".
2014-02-25 18:11:59 -05:00
217 changed files with 5109 additions and 3147 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
/build/
\#*\#
*~
*.bak

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -66,6 +66,8 @@ else()
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (${RET} EQUAL 0)
add_definitions(-DOWLPS_VERSION="${OWLPS_VERSION}")
else()
add_definitions(-DOWLPS_VERSION="unknown version")
endif()
endif()
@ -177,7 +179,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL GNU) # Are we using GCC?
${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS ${POSITIONER_MIN_GCC_VERSION})
# GCC's version is too low
message(WARNING
"OwlPS Positioner requires GCC >= ${POSITIONER_MIN_GCC_VERSION}")
"OwlPS Positioner requires GCC (g++) >= ${POSITIONER_MIN_GCC_VERSION}")
else()
# GCC's version is OK or we couldn'd get it
add_subdirectory(owlps-positioner)
@ -231,6 +233,6 @@ add_custom_target(static DEPENDS ${OWLPS_STATIC_TARGETS})
### Tests ###
add_custom_target(test
add_custom_target(tests
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_positioner
DEPENDS test_positioner)

View File

@ -2,13 +2,13 @@ OwlPS (Owl Positioning System) software distribution
Copyright:
2013 Matteo Cypriani
2013 Université du Québec en Abitibi-Témiscamingue (Canada)
2007-2012 Université de Franche-Comté (France)
2013-2014, 2016 Matteo Cypriani
2013 Université du Québec en Abitibi-Témiscamingue (Canada)
2007-2012 Université de Franche-Comté (France)
The following people contributed writing this software:
- //2007-2013// Matteo Cypriani
- //2007-2016// Matteo Cypriani
- //2011// François Spies
- //2011// Florian Taillard
- //2009// Julien Graeffly
@ -22,7 +22,7 @@ Corresponding author: Matteo Cypriani <mcy@lm7.fr>
For a detailed view of each author's contribution, please have a look at
the Git history:
http://git.lm7.fr/?p=owlps.git
https://code.lm7.fr/mcy/owlps
This software is governed by the **CeCILL license** (version 2) under

View File

@ -20,24 +20,33 @@ libraries installed:
You also need support for POSIX threads, which should be provided by
default by your system in most cases, and the GCC C++ compiler (g++)
version 4.7 or above; the Clang C++ compiler (clang++) version 3.2 or
above should also work in most cases.
above should also work. Compilation of the C modules has been tested
with GCC and Clang and should work with older versions of these
compilers.
If you miss one or more of the requirements, the concerned modules will
not be built, but the others can still be.
The following additional tools are recommended:
- ``perl``
- ``pod2man`` (normally provided in the same package as //Perl//)
- ``doxygen``
- ``txt2tags``
If you're missing one or more of the requirements, all the modules will
not be built.
OwlPS uses //CMake// as a build manager. You need to install it (package
``cmake`` on most distributions), and you should install ``ccmake`` as
well if it is not shipped with the main CMake package (package
``cmake`` on most distributions) as well as the ``make`` tool if not
readily available on your system. You should also install ``ccmake`` if
it is not shipped with the main CMake package (package
``cmake-curses-gui`` on Debian).
It is strongly advised to build out of the source tree, which can be
achieved by typing for instance (assuming OwlPS' source files are in
``~/owlps``):
achieved by typing the following commands from the source tree:
```
mkdir ~/owlps-build
cd ~/owlps-build
cmake ~/owlps
mkdir build
cd build
cmake ..
```
CMake will generate a set of Makefiles, and display warnings if
@ -121,7 +130,7 @@ OwlPS Client, just type ``make owlps-client.static``. If you want to
generate static executables for all the modules, call the ``static``
meta-target (``make static``).
So called “semistatic” targets are also provided. The semistatic
So-called “semistatic” targets are also provided. The semistatic
executables are statically linked to OwlPS libraries (such as libowlps),
but dynamically linked to other libraries. This allows for quick testing
of libraries changes as well as running on systems where you can install
@ -139,11 +148,12 @@ To display all the available targets, type:
= Running the tests =
To run the unit tests, use the ``test`` target:
To run the unit tests, you will need to install ``cxxtest``. Then use
the ``tests`` target from your build directory:
``` make test
``` make tests
Currently, only OwlPS Positioner has unit tests.
Currently, only OwlPS Positioner has (partial) unit tests.
= Compiling for OpenWrt =
@ -166,9 +176,9 @@ In the configuration (``make menuconfig``), you have to:
+ Select the components needed to build (press the <space> key to have a
//M// or a //*//). For example:
- in the //Libraries// menu, select //confuse// and //libiw//;
- in the //Base system// menu, //libpthread// and //librt// should now
be automatically selected (the latter is only needed for OwlPS
Positioner).
- in the //Base system// menu, select //libpthread// and //librt// if
they were not automatically selected (the latter is only needed for
OwlPS Positioner).
Note that at the moment, //libclaw_tween// is not provided by the

54
README.md Normal file
View File

@ -0,0 +1,54 @@
# Owl Positioning System
**OwlPS** (_Owl Positioning System_) is a positioning (localization) system
based on the IEEE 802.11 radio network (Wi-Fi), targeting mainly indoor
environments. It uses an infrastructure-centred architecture, which means
deployed hardware takes care of the measurements and computes the mobile
terminals' positions, rather than the terminals computing their own positions
(as it is the case for instance with the GPS).
OwlPS implements various positioning techniques and algorithms based on the
radio signal strength. It features a self-calibration (or autocalibration)
mechanism that avoids the time-consuming manual fingerprinting phase and allows
taking into account dynamic changes of the environment (human, climatic, etc.)
when computing the location of mobile terminals.
**This presentation is an excerpt of `doc/owlps.t2t`. Please refer to this file
for a more in-depth introduction to OwlPS.**
## News
OwlPS is not currently actively maintained, as I'm not working on indoor
positioning at the moment, but I'll happily consider any patch (or job offer).
The `CHANGELOG` file lists the changes that occurred in OwlPS, version by
version, since its early stages.
## Contribute
If you would like to contribute to OwlPS, you can:
* use it, test it, and report suggestions and bugs on the forge:
<https://code.lm7.fr/mcy/owlps/issues/>
* get the latest development code, add functionalities and send me pull
requests by email or on the forge: <https://code.lm7.fr/mcy/owlps/pulls>
If you're looking for ideas, the `TODO.t2t` file could be a good start.
## Installation
For a guide to installing OwlPS, please consult `INSTALL.t2t`.
## License
OwlPS is free software, released under the terms of the
[CeCILL](http://www.cecill.info/index.en.html) license (GNU GPL-compatible).
For more detail, please consult `COPYRIGHT.t2t`.
## Note on the `t2t` file extension
Most of the documentation in this repository is provided as text files in the
**txt2tags** format (`*.t2t` files). You can convert them to various formats
(HTML, man pages, etc.) using the [txt2tags](http://txt2tags.org/) utility; if
you mind the markup tags, you can even strip them using the `txt` output.

View File

@ -1,25 +0,0 @@
This is the OwlPS (Owl Positioning System) software distribution.
For an introduction to OwlPS, please consult ``doc/owlps.t2t``, which is
the documentation's entry point.
For copyright and license informations, please consult
``COPYRIGHT.t2t``.
For a guide to installing OwlPS, please consult ``INSTALL.t2t``.
The file ``CHANGELOG`` lists the changes occured in OwlPS, version by
version, since its early stages.
Finally, the file ``TODO.t2t`` is a list of potential work to do on the
system. If you are willing to contribute and are looking for ideas, that
can be a good start.
: Note on the t2t file extension
The documentation is provided as text files in the txt2tags format
(file extension ``*.t2t``). You can convert them to various formats
(HTML, man pages, etc.) using the ``txt2tags`` utility; if you mind
the markup tags, you can even strip them using the ``txt`` output.
``txt2tags`` is distributed at http://txt2tags.org/

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -97,8 +97,19 @@ else()
OUTPUT_VARIABLE DATE
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Take only the first field (the date without the time)
string(REGEX REPLACE " .*" "" DATE ${DATE})
if (DATE)
# Take only the first field (the date without the time)
string(REGEX REPLACE " .*" "" DATE ${DATE})
else()
# Take today's date from the system instead
execute_process(
COMMAND date --iso-8601
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE RET
OUTPUT_VARIABLE DATE
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
# Command to generate the man page
add_custom_command(

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,10 @@
List of figures provided with the OwlPS distribution
The figures are described below, as well as a way to render the picture
from the source file. You may also use the ``Makefile`` provided in this
directory to generate the pictures.
: **Aggregation sequence diagram**
This is actually a sequence diagram showing the whole process of
positioning, but it is focused on and best suited to illustrate the
@ -11,8 +15,8 @@ List of figures provided with the OwlPS distribution
- PNG conversion command (assuming ``plantuml`` is an alias for
``java -jar /path/to/plantuml.jar``):
``` plantuml -tpng owlps_sequence_diagram.plant
PlantUML also allow to generate SVG or EPS (which in turn can be
converted to PDF with [Inkscape http://inkscape.org/] or
PlantUML also allows one to generate SVG or EPS (which in turn can
be converted to PDF with [Inkscape http://inkscape.org/] or
[epstopdf http://ctan.org/pkg/epstopdf], respectively).
: **OwlPS Positioner's input and output facilities**
@ -20,15 +24,27 @@ List of figures provided with the OwlPS distribution
- Format: [Graphviz http://www.graphviz.org/]
- PDF conversion command:
``` dot -Tpdf -o positioner_input_output.pdf positioner_input_output.dot
- PNG conversion: use ``-Tpng`` instead of ``-Tpdf``.
: **OwlPS Positioner's class diagram**
- File name: ``positioner_class_diagram.uxf``
- Format: [UMLet http://umlet.com/]
- PDF conversion command:
``` umlet -action=convert -format=pdf -filename=positioner_class_diagram.uxf
``` umlet -action=convert -format=pdf \
``` -filename=positioner_class_diagram.uxf \
``` -output=positioner_class_diagram
- PNG conversion: use ``-format=png``.
: **OwlPS Positioner's simplified class diagram**
- File name: ``positioner_class_diagram_simple.plant``
- Format: [PlantUML http://plantuml.sourceforge.net/]
- PNG conversion command (see the explanations for the aggregation
sequence diagram above):
``` plantuml -tpng positioner_class_diagram_simple.plant
: **OwlPS Positioner's internal process**
- File name: ``positioner_process.dot``
- Format: [Graphviz http://www.graphviz.org/]
- PDF conversion command:
``` dot -Tpdf -o positioner_process.pdf positioner_process.dot
- PNG conversion: use ``-Tpng`` instead of ``-Tpdf``.

52
doc/figures/Makefile Normal file
View File

@ -0,0 +1,52 @@
.PHONY: all bitmap pdf clean
all: bitmap
@echo
@echo "Bitmap files generated successfully."
@echo "You can use the 'pdf' target to build PDF files."
bitmap: \
owlps_sequence_diagram.png \
positioner_input_output.png \
positioner_class_diagram.png \
positioner_class_diagram_simple.png \
positioner_process.png
pdf: \
owlps_sequence_diagram.pdf \
positioner_input_output.pdf \
positioner_class_diagram.pdf \
positioner_class_diagram_simple.pdf \
positioner_process.pdf
clean:
rm -f *.png *.pdf *~
### Generic targets ###
# Graphviz files
%.png: %.dot
dot -Tpng -o $@ $<
%.pdf: %.dot
dot -Tpdf -o $@ $<
# PlantUML files
%.png: %.plant
plantuml -tpng $<
%.eps: %.plant
plantuml -teps $<
%.pdf: %.eps
epstopdf $<
# UMLet files
%.png: %.uxf
umlet -action=convert -format=png -filename=$< -output=$*
%.pdf: %.uxf
umlet -action=convert -format=pdf -filename=$< -output=$*

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,208 @@
@startuml
'''''''''''''''''''
' Syntax reminder '
'''''''''''''''''''
'
' <|-- ' Extension
' *-- ' Composition
' o-- ' Agregation
'
' Orientation of the links:
' 2 dashes: vertical
' 1 dash: horizontal
''''''''''''''
' Parameters '
''''''''''''''
hide empty members
title (Somewhat simplified) OwlPS Positioner's class diagram
''''''''''''''
' Executable '
''''''''''''''
class "owlps-positionerd" as owlps_positionerd << (X, orchid) executable >>
owlps_positionerd *-- Positioning
'''''''''''''''''''''
' Utilitary classes '
'''''''''''''''''''''
' Note: for the sake of clarity, PosUtil and posexcept are not
' associated with the other classes, but they should actually be
' linked with pretty much all of them.
package "Utilitary classes" {
class PosUtil << static >>
note top
The functions of <i>PosUtil</i> are
used by too many classes to
link them all in this diagram
end note
class posexcept
note bottom
<i>posexcept</i> is the super-class of
a bunch of exception classes that
do not appear in this diagram
end note
' Text file reading and writing
class TextFileWriter
class TextFileReader
CSVFileReader <|-- TextFileReader
}
'''''''''''''''''''''''''
' Configuration classes '
'''''''''''''''''''''''''
package "Configuration classes" {
class Configuration << static >>
UserInterface ..> Configuration
}
owlps_positionerd *-- UserInterface
Configuration <.. Positioning
''''''''''''''''''''''
' Data input classes '
''''''''''''''''''''''
package "Data input classes" {
class InputDataReader
MobilesReaderCSV <.. InputDataReader
CapturePointsReaderCSV <.. InputDataReader
TopologyReaderCSV <.. InputDataReader
}
owlps_positionerd *-- InputDataReader
UserInterface --> InputDataReader
CSVFileReader <-- MobilesReaderCSV
CSVFileReader <-- CapturePointsReaderCSV
CSVFileReader <-- TopologyReaderCSV
'''''''''''''''''
' Input classes '
'''''''''''''''''
package "Input classes" {
class Input
abstract InputMedium --* Input
InputCSV --|> InputMedium
InputUDPSocket --|> InputMedium
abstract InputLogMedium --* Input
InputLogCSV --|> InputLogMedium
}
Input --* Positioning
InputMedium <-- InputDataReader
CSVFileReader <-- InputCSV
TextFileWriter <-- InputLogCSV
'''''''''''''''''''''''''''''''''
' Positioning algorithm classes '
'''''''''''''''''''''''''''''''''
package "Positioning algorithm classes" {
abstract PositioningAlgorithm
RealPosition --|> PositioningAlgorithm
abstract TrilaterationAlgorithm --|> PositioningAlgorithm
InterlinkNetworks --|> TrilaterationAlgorithm
FBCM --|> TrilaterationAlgorithm
abstract TrilaterationMethod <-- TrilaterationAlgorithm
MinMax --|> TrilaterationMethod
abstract CartographyAlgorithm --|> PositioningAlgorithm
NSS --|> CartographyAlgorithm
FRBHMBasic --|> FBCM
FRBHMBasic --|> NSS
}
PositioningAlgorithm <.. Positioning
''''''''''''''''''
' Output classes '
''''''''''''''''''
package "Output classes" {
class Output
abstract OutputMedium --* Output
OutputCSV --|> OutputMedium
OutputTerminal --|> OutputMedium
abstract OutputNetworkSocket --|> OutputMedium
OutputUDPSocket --|> OutputNetworkSocket
OutputTCPSocketEvAAL --|> OutputNetworkSocket
}
Output --* Positioning
TextFileWriter <-- OutputCSV
''''''''''''''''
' Data classes '
''''''''''''''''
package "Data classes" {
class Stock << static >>
' Points
class Point3D
Waypoint --|> Point3D
ReferencePoint --|> Point3D
ReferencePoint --o Stock
' Deployment area
Building --o Stock
Area --o Building
Waypoint --o Stock
Waypoint -- Area
Waypoint -- Building
' Devices
WifiDevice <|-- Mobile
Mobile --o Stock
WifiDevice <|-- CapturePoint
CapturePoint --o Stock
' Requests & results
Request <-- InputMedium
Mobile <-- Request
Timestamp --* Request
Measurement --* Request
Measurement -- CapturePoint
Result -- Request
Result *-- Point3D
ResultList *-- Result
CalibrationRequest --|> Request
ReferencePoint -- CalibrationRequest
Direction --* CalibrationRequest
}
owlps_positionerd o-- Stock
ReferencePoint <-- Positioning
ResultList <-- Output
@enduml
' vim: tw=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -167,7 +167,7 @@ the **-K** option).
(default: 35 s).
: **-C** //ac_order_interval//
Time (in milliseconds) between two transmissions of autocalibration
orders to the stored CPs (default: 1000 ms).
orders to the stored capture points (default: 1000 ms).
@ -288,7 +288,7 @@ This documentation is part of the Owl Positioning System (OwlPS)
project. It is subject to the copyright notice and license terms
in the COPYRIGHT.t2t file found in the top-level directory of the
OwlPS distribution and at
http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t

View File

@ -128,7 +128,7 @@ This documentation is part of the Owl Positioning System (OwlPS)
project. It is subject to the copyright notice and license terms
in the COPYRIGHT.t2t file found in the top-level directory of the
OwlPS distribution and at
http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t

View File

@ -159,7 +159,7 @@ This documentation is part of the Owl Positioning System (OwlPS)
project. It is subject to the copyright notice and license terms
in the COPYRIGHT.t2t file found in the top-level directory of the
OwlPS distribution and at
http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t

View File

@ -215,7 +215,7 @@ This documentation is part of the Owl Positioning System (OwlPS)
project. It is subject to the copyright notice and license terms
in the COPYRIGHT.t2t file found in the top-level directory of the
OwlPS distribution and at
http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t

View File

@ -202,7 +202,7 @@ This documentation is part of the Owl Positioning System (OwlPS)
project. It is subject to the copyright notice and license terms
in the COPYRIGHT.t2t file found in the top-level directory of the
OwlPS distribution and at
http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t

View File

@ -140,13 +140,13 @@ below.
declared in the mobiles' configuration file) to the mobiles' list.
Default: false.
: **--positioning.accept-new-cps** < //true// | //false// >
When receiving requests, add unknown CPs (CPs which are not declared
in the CPs' configuration file) to the CPs' list (default is false,
for security purposes).
When receiving requests, add unknown capture points (those which are
not declared in the configuration file) to the list of capture points
(default is false, for security purposes).
: **--positioning.update-cp-coordinates-online** < //true// | //false// >
Allow CP's coordinates to be updated when a calibration request with
new coordinates is received from the CP (default is false, for
security purposes).
Allow capture points' coordinates to be updated when a calibration
request with new coordinates is received from the capture point
(default is false, for security purposes).
: **--positioning.area-start** //3d_point//
Coordinates of the first point of the deployment area; this is used to
delimit the area in which the MinMax trilateration method tests points
@ -193,8 +193,8 @@ below.
Path of reference points to generate, if **generate-reference-points**
includes “line”; the reference points are generated in straight lines
between the given points, and one of the points must be the
coordinates of a CP (string format: “(X1;Y1;Z1);(X2;Y2;Z2);...” or
“X1;Y1;Z1;X2;Y2;Z2;...”).
coordinates of a capture point (string format:
(X1;Y1;Z1);(X2;Y2;Z2);...” or “X1;Y1;Z1;X2;Y2;Z2;...”).
: **--positioning.generated-line-step** //distance//
When **generate-reference-points** includes “line”, two generated
points will be separated approximately by this distance (in metres).
@ -227,7 +227,30 @@ below.
request is compared directly to each calibration request.
: **--positioning.nss.ignore-cp-reference-points** < //true// | //false// >
With the NSS algorithm, try to avoid selecting the reference points
which are coordinates of a CP. Default: false.
which are coordinates of a capture point. Default: false.
: **--positioning.filter.max-speed** //max-speed//
Maximal speed at which the mobile terminal can move, in km/h. This
option also controls the activation of the filter. Default: 0
(disabled).
: **--positioning.filter.cp-reset-distance** //distance//
With this option set to a positive number, the maximum speed is
temporarily set to //max-speed-cp// instead of //max-speed// (see
these options) when the mobile terminal is found to be close enough to
a capture point. This option determines this “close enough” distance,
in metres.
This is useful in deployments where the system is much more accurate
when the mobile is close to a capture point, such as underground
mining tunnels; in such environments, 15 m appears to be a reasonable
value to start experimenting.
Default: 0 (disabled, i.e. never change the speed even when the
terminal is close to a capture point).
: **--positioning.filter.max-speed-cp** //max-speed-cp//
Maximal (virtual) speed at which the mobiles can move when they are
within //cp-reset-distance// (see this option), in km/h.
//max-speed// × 10 seems to be a good value to start experimenting.
Default: 0, which corresponds to an unlimited speed (i.e. filtering
will be completely disabled when the mobile is found to be close to a
capture point).
== Output options ==
@ -552,7 +575,7 @@ This documentation is part of the Owl Positioning System (OwlPS)
project. It is subject to the copyright notice and license terms
in the COPYRIGHT.t2t file found in the top-level directory of the
OwlPS distribution and at
http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t

View File

@ -123,7 +123,7 @@ This documentation is part of the Owl Positioning System (OwlPS)
project. It is subject to the copyright notice and license terms
in the COPYRIGHT.t2t file found in the top-level directory of the
OwlPS distribution and at
http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t

View File

@ -23,12 +23,12 @@ June 2013
+ What is OwlPS? +
**OwlPS** (//Owl Positioning System//) is a positioning (localization)
system based on the IEEE 802.11 radio network (Wi-Fi). It targets mainly
UNIX-like operating systems and is developed and tested primarily on
GNU/Linux, but it should work on BSD platforms as well. Originally
developed at the University of Franche-Comté (Université de
Franche-Comté, France), it is released under the terms of the CeCILL
free software license (GNU GPL-compatible).
system based on the IEEE 802.11 radio network (Wi-Fi), targeting mainly
indoor environments. It is developed and tested primarily on GNU/Linux,
but it should work on BSD platforms as well. Originally developed at the
University of Franche-Comté (Université de Franche-Comté, France), it is
released under the terms of the CeCILL free software license (GNU
GPL-compatible).
OwlPS uses an infrastructure-centred architecture, which means the
infrastructure does the measurements and computes the mobile terminals'
@ -45,13 +45,13 @@ the radio signal strength (trilateration, signal strength
fingerprinting, and hybrid techniques). //OwlPS Listener// uses the
Radiotap header of the network packets to extract the RSS value. It
would be possible to extend the system to work with the TOF (Time of
Flight, i.e. the signal propagation time), but that is out of scope for
Flight, i.e. the signal propagation time), but that is out of scope for
now (unless someone is willing to contribute).
OwlPS features a self-calibration (or autocalibration) mechanism for
signal strength fingerprinting-based algorithms, that avoids the
time-consuming manual fingerprinting phase and allows considering
dynamic changes of the environment (human, climatic, etc.) when
time-consuming manual fingerprinting phase and allows taking into
account dynamic changes of the environment (human, climatic, etc.) when
computing the location of mobile terminals.
@ -62,11 +62,13 @@ computing the location of mobile terminals.
If you would like to contribute to OwlPS, you can:
- use it, test it, and report suggestions and bugs on the forge:
http://code.lm7.fr/p/owlps/issues/
https://code.lm7.fr/mcy/owlps/issues
- get the last development code, add functionalities and send me pull
requests by email or submit code reviews on the forge:
http://code.lm7.fr/p/owlps/review/
- get the latest development code, add functionalities and send me pull
requests by email or on the forge:
https://code.lm7.fr/mcy/owlps/pulls
You can get improvement ideas from the ``TODO.t2t`` file.
@ -76,8 +78,8 @@ If you would like to contribute to OwlPS, you can:
++ Timeline ++
There is no precise timeline for OwlPS, but the file TODO.t2t lists a
bunch of things that should be addressed at some point. A development
There is no precise timeline for OwlPS, but the file ``TODO.t2t`` lists
a bunch of things that should be addressed at some point. A development
point release is made after some work has been done, usually mainly on a
particular topic. Usually such a release represents between 30 and 90
commits.
@ -114,11 +116,12 @@ revision number is not mandatory, but it is allowed. For example:
The communication protocol between the elements of the system is
guaranteed to stay the same across revisions of a given stable branch
(e.g. mixing modules of versions 1.2, 1.2.1 and 1.2.2 is possible). In
development branches, the protocol can evolve from one point release to
the next (e.g. mixing modules of versions 1.3.0 and 1.3.1 is not
possible). Changes in communication protocols, libraries' APIs, file
formats, etc., are pointed out in the ``CHANGELOG`` file.
(e.g. mixing modules of versions 1.2, 1.2.1 and 1.2.2 would be
possible). In development branches, the protocol can evolve from one
point release to the next (e.g. mixing modules of versions 1.3.0 and
1.3.1 may not be possible). Changes in communication protocols,
libraries' APIs, file formats, etc., are documented in the ``CHANGELOG``
file.
@ -154,10 +157,10 @@ formats, etc., are pointed out in the ``CHANGELOG`` file.
http://owlps.pu-pm.univ-fcomte.fr/
- Project manager (source code, bug reports, documentation):
http://code.lm7.fr/p/owlps/
https://code.lm7.fr/mcy/owlps
- Experimentations using OwlPS:
http://git.lm7.fr/?p=owlps-experiments.git
https://code.lm7.fr/mcy/owlps-experiments
@ -168,4 +171,4 @@ This documentation is part of the Owl Positioning System (OwlPS)
project. It is subject to the copyright notice and license terms
in the COPYRIGHT.t2t file found in the top-level directory of the
OwlPS distribution and at
http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t

View File

@ -8,6 +8,7 @@
# - Replaces all the occurrences of {{INSTALL_PREFIX}} by the value of
# the INSTALL_PREFIX environment variable.
sed "{ \
s/{{OWLPS_VERSION}}/${OWLPS_VERSION}/g ; \
s@{{INSTALL_PREFIX}}@${INSTALL_PREFIX}@g }" $@
sed "{
s@{{OWLPS_VERSION}}@${OWLPS_VERSION}@g
s@{{INSTALL_PREFIX}}@${INSTALL_PREFIX}@g
}" $@

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -98,6 +98,7 @@ struct _owl_result
{
char mobile_mac_addr[OWL_ETHER_ADDR_STRLEN] ; ///< Mobile's MAC address
uint8_t request_type ; ///< Type of the request
unsigned char __pad0; // 1 byte alignment
/// Local time on the mobile when sending the request
owl_timestamp mobile_timestamp ;
unsigned int nb_results ; ///< Number of results generated

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -83,6 +83,7 @@ void owl_mac_bytes_to_string_r(const uint8_t *const mac_binary,
bool owl_mac_equals(const uint8_t *const mac1,
const uint8_t *const mac2)
{
// TODO: we could use memcmp()
int i ;
for (i = ETHER_ADDR_LEN - 1 ; i >= 0 ; --i)
if(mac1[i] != mac2[i])
@ -320,7 +321,7 @@ void owl_time_elapsed(const owl_timestamp *const d1,
if (sec == 0)
{
elapsed->tv_sec = 0 ;
elapsed->tv_nsec = abs(nsec) ;
elapsed->tv_nsec = labs(nsec) ;
}
else if (sec > 0)
{
@ -339,13 +340,13 @@ void owl_time_elapsed(const owl_timestamp *const d1,
{
if (nsec > 0)
{
elapsed->tv_sec = abs(sec) - 1 ;
elapsed->tv_sec = labs(sec) - 1 ;
elapsed->tv_nsec = 1000000000ul - nsec ;
}
else // nsec <= 0
{
elapsed->tv_sec = abs(sec) ;
elapsed->tv_nsec = abs(nsec) ;
elapsed->tv_sec = labs(sec) ;
elapsed->tv_nsec = labs(nsec) ;
}
}
}
@ -413,6 +414,8 @@ float owl_swap_float(const float f)
/**
* Opens a UDP transmission socket and returns its descriptor.
* Uppon error, a message is displayed and a negative error code is
* returned.
*
* @param[in] server_address The server's IP address.
* @param[in] server_port The listening port on the server.
@ -585,15 +588,16 @@ void owl_sigterm_handler(const int num)
/**
* Closes the file descriptor `fd`.
* `fd` must be passed as an int pointer (`int*`). If `fd` is `NULL`,
* nothing will be done. Uppon error, a message is displayed on the
* standard error.
* or if the pointed value is negative, nothing will be done.
* Uppon error, a message is displayed on the standard error.
*/
void owl_close_fd(void *const fd)
{
if (fd == NULL)
const int *const file_desc = fd;
if (file_desc == NULL || *file_desc < 0)
return ;
const int *const file_desc = fd ;
if (close(*file_desc) != 0)
perror("Error closing file descriptor") ;
#ifndef NDEBUG

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -110,23 +110,30 @@ typedef struct _owl_timestamp owl_timestamp ;
/**
* Message sent by the Listener to the Aggregator for each captured
* request.
*
* TODO: This structure's size could be reduced from 60 to 52 byte by reordering
* the fields by size.
*/
struct _owl_captured_request
{
uint8_t type ; ///< Type of the captured request
unsigned char __pad0; // 1 byte alignment
uint16_t nb_packets ; ///< Number of packets for this request
uint16_t packet_id ; ///< Number of the current packet
uint8_t cp_mac_addr_bytes[ETHER_ADDR_LEN] ; ///< MAC of the listener
uint8_t mobile_mac_addr_bytes[ETHER_ADDR_LEN] ; ///< MAC of the mobile
uint8_t mobile_ip_addr_bytes[4] ; ///< IP of the mobile
unsigned char __pad1[2]; // 2 bytes alignment
owl_timestamp request_time ; ///< Timestamp on the mobile
owl_timestamp capture_time ; ///< Timestamp of arrival on the listener
int8_t ss_dbm ; ///< Signal strength measured by the listener (dBm)
unsigned char __pad2[3]; // 3 bytes alignment
/* Calibration data */
float x_position ; ///< X coordinate
float y_position ; ///< Y coordinate
float z_position ; ///< Z coordinate
owl_direction direction ; ///< Orientation of the mobile
unsigned char __pad3[3]; // 3 bytes alignment
} ;
/// Captured request type
typedef struct _owl_captured_request owl_captured_request ;
@ -136,20 +143,27 @@ typedef struct _owl_captured_request owl_captured_request ;
/**
* Message sent by the Aggregator to the Positioner containing
* the main data of a request.
*
* TODO: This structure's size could be reduced from 44 to 36 bytes by
* reordering the fields by size.
*/
struct _owl_request
{
uint8_t type ; ///< Type of the request
unsigned char __pad0; // 1 byte alignment
uint16_t nb_packets ; ///< Number of packets sent for this request
uint8_t mobile_mac_addr_bytes[ETHER_ADDR_LEN] ; ///< MAC of the mobile
uint8_t mobile_ip_addr_bytes[4] ; ///< IP of the mobile
unsigned char __pad1[2]; // 2 bytes alignment
owl_timestamp request_time ; ///< Timestamp on the mobile
uint16_t nb_info ; ///< Number of owl_request_info
unsigned char __pad2[2]; // 2 bytes alignment
/* Calibration data */
float x_position ; ///< X coordinate
float y_position ; ///< Y coordinate
float z_position ; ///< Z coordinate
owl_direction direction ; ///< Orientation of the mobile
unsigned char __pad3[3]; // 3 bytes alignment
} ;
/// Aggregated request type
typedef struct _owl_request owl_request ;
@ -167,6 +181,7 @@ struct _owl_request_info
uint8_t cp_mac_addr_bytes[ETHER_ADDR_LEN] ; ///< MAC of the listener
owl_timestamp capture_time ; ///< Timestamp of arrival on the listener
int8_t ss_dbm ; ///< Signal strength measured by the listener (dBm)
unsigned char __pad0[3]; // 3 bytes alignment
} ;
/// Aggregated request information type
typedef struct _owl_request_info owl_request_info ;

View File

@ -2,6 +2,9 @@ This logo has been inspired from a photograph [1] by Peter Trimming [2],
which is released under the terms of the Creative Commons Attribution
2.0 Generic license [3].
The police “El Abogado Loco” must be installed on your system for the
SVG to render properly (package fonts-dustin on Debian).
[1]
http://commons.wikimedia.org/wiki/File:Bubo_bubo_-British_Wildlife_Centre,_Surrey,_England_-flying-8a.jpg
http://flickr.com/photos/peter-trimming/5670201689/

BIN
logo/owlps_logo-black.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
logo/owlps_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -57,6 +57,7 @@ typedef struct _request_info_list
owl_timestamp capture_time ;
// Signal strength received by the CP from the mobile:
int8_t ss_dbm ;
unsigned char __pad0[7]; // 7 bytes alignment
struct _request_info_list *next ;
} request_info_list ;
@ -65,12 +66,14 @@ typedef struct _request_info_list
typedef struct _request_list
{
uint8_t type ;
unsigned char __pad0; // 1 byte alignment
// Number of packets sent by the mobile for this request:
uint16_t nb_packets ;
/* Request identifier */
uint8_t mobile_mac_addr_bytes[ETHER_ADDR_LEN] ; // Mobile MAC address
unsigned char __pad1[2]; // 2 bytes alignment
owl_timestamp request_time ; // Request time on the mobile
/* Calibration data */
@ -81,6 +84,7 @@ typedef struct _request_list
/* Other data */
uint8_t mobile_ip_addr_bytes[4] ; // Mobile IP address
unsigned char __pad2[3]; // 3 bytes alignment
// Arrival time of the first packet of the request on the aggregator:
owl_timestamp start_time ;
request_info_list *info ; // Data for this request
@ -95,6 +99,7 @@ typedef struct _cp_list
uint8_t mac_addr_bytes[ETHER_ADDR_LEN] ;
char ip_addr[INET_ADDRSTRLEN] ;
unsigned char __pad0[2]; // 2 bytes alignment
owl_timestamp last_seen ;
struct _cp_list *previous ;

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -860,6 +860,13 @@ void* monitor_requests(void *const NULL_value)
if (VERBOSE_WARNING)
fprintf(stderr, "Monitor requests thread launched.\n") ;
/* Open the socket to the positioning server
* We don't need to check wether or not the socket was opened
* successfuly because the network transmission is not mandatory
* (aggregated data will be written to the output file
* anyway). owl_close_fd() and the rest of the code here handle
* negative file descriptors.
*/
sockfd =
owl_create_udp_trx_socket(cfg_getstr(cfg, "positioner_host"),
cfg_getint(cfg, "positioner_port"),
@ -1020,7 +1027,8 @@ void flush_request_list(FILE *const stream,
* Parameters:
* - request_ptr: the request to print
* - stream: the stream to print to
* - sockfd: the file descriptor of the socket to send to
* - sockfd: the file descriptor of the socket to send to (can be
* negative, in which case no transmission will be attempted)
* - serv: the server's information
*/
void output_request(request_list *const request_ptr,
@ -1082,7 +1090,13 @@ void output_request(request_list *const request_ptr,
}
request.nb_info = htons(request.nb_info) ;
// Send the request's main data:
sendto(sockfd, &request, sizeof(request), 0, serv, serv_len) ;
if (sockfd >= 0)
{
ssize_t n;
n = sendto(sockfd, &request, sizeof(request), 0, serv, serv_len);
if (n != sizeof(request))
perror("Couldn't send the request's main data");
}
// Send request's per-CP information to the server and delete it
// from the request
@ -1096,7 +1110,13 @@ void output_request(request_list *const request_ptr,
info.capture_time = request_info_ptr->capture_time ;
owl_hton_timestamp(&info.capture_time) ;
info.ss_dbm = request_info_ptr->ss_dbm ;
sendto(sockfd, &info, sizeof(info), 0, serv, serv_len) ;
if (sockfd >= 0)
{
ssize_t n;
n = sendto(sockfd, &info, sizeof(info), 0, serv, serv_len);
if (n != sizeof(info))
perror("Couldn't send the CP information");
}
// Print CP info to the output file
owl_mac_bytes_to_string_r(request_info_ptr->cp_mac_addr_bytes,
@ -1497,6 +1517,11 @@ void order_send(const cp_list *const cp)
cfg_getint(cfg,
"autocalibration_order_port"),
&serv) ;
if (sockfd < 0)
{
fprintf(stderr, "Can't transmit autocalibration order.\n");
return;
}
message.order = AUTOCALIBRATION_ORDER_SEND ;
nsent = sendto(sockfd, &message, sizeof(message), 0, &serv, serv_len) ;

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -33,7 +33,7 @@
#include <signal.h>
#include <net/if.h>
#include <rpc/types.h> // for MAXHOSTNAMELEN
#include <sys/param.h> // for MAXHOSTNAMELEN
/* Number of packets to send */
@ -75,21 +75,26 @@ void print_version(void) ;
/* Options */
// TODO: the size of this structure could be reduced by reordering its fields.
struct {
bool daemon ;
bool verbose ;
char dest_host[MAXHOSTNAMELEN] ; // Destination host of the packets
// 6 bytes alignment
uint_fast16_t dest_port ;
char iface[IFNAMSIZ + 1] ; // Source network interface
// 7 bytes alignment
int_fast32_t delay ; // Time between two packet transmissions
uint_fast16_t nb_pkt ; // Number of packets to send
uint_fast16_t pkt_size ; // Size of the packet to send
int_fast32_t flood_delay ; // Time between two request transmissions
bool add_flood_delay ; // Add the delay to the transmission time?
// 7 bytes alignment
uint_fast16_t nb_requests ; // Number of requests to send
uint_fast16_t listening_port ;
// Calibration data:
owl_direction direction ;
// 3 bytes alignment
float x ;
float y ;
float z ;
@ -166,23 +171,30 @@ int main(int argc, char *argv[])
uint_fast32_t trx_time, sleep_time ;
owl_timestamp now ;
if (options.verbose && options.nb_requests)
printf("%"PRIuFAST16" more requests to transmit.\n",
nb_requests_left) ;
if (options.add_flood_delay)
owl_msleep(options.flood_delay) ;
else
{
owl_timestamp_now(&now) ;
trx_time = owl_time_elapsed_ms(&start_time, &now) ;
printf("Transmission time was %"PRIuFAST32" ms", trx_time) ;
if (options.verbose)
printf("Transmission time was %"PRIuFAST32" ms", trx_time) ;
// Sleep only if the sleep delay is greater than the
// transmission time
if (trx_time < (uint_fast32_t) options.flood_delay)
{
sleep_time = options.flood_delay - trx_time ;
printf(", sleeping for %"PRIuFAST32" ms...\n", sleep_time) ;
if (options.verbose)
printf(", sleeping for %"PRIuFAST32" ms...\n",
sleep_time) ;
owl_msleep(sleep_time) ;
}
else
else if (options.verbose)
printf(" > %"PRIdFAST32" ms, no sleeping required.\n",
options.flood_delay) ;

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -62,11 +62,22 @@
# else // __BYTE_ORDER
# error "This program does not handle strange architectures."
# endif // __BYTE_ORDER
/* Non-glibc systems (mostly BSDs at this point).
* - OpenBSD 5.6 and higher defines le*toh in <endian.h>. Former versions
* defined letoh* in <sys/types.h>.
* - NetBSD, FreeBSD and DragonFly define le*toh in <sys/endian.h>.
*/
#else // __GLIBC__
# include <sys/endian.h>
# ifdef OpenBSD
# define le32toh letoh32
# define le16toh letoh16
# if defined(OpenBSD)
# if OpenBSD < 201411 // OpenBSD < 5.6
# include <sys/types.h>
# define le32toh letoh32
# define le16toh letoh16
# else // OpenBSD < 5.6
# include <endian.h>
# endif // OpenBSD < 5.6
# else // OpenBSD
# include <sys/endian.h>
# endif // OpenBSD
#endif // __GLIBC__
@ -140,8 +151,11 @@ enum {MODE_ACTIVE = 'a', MODE_PASSIVE = 'p', MODE_MIXED = 'm'} ;
#define RTAP_CHANNEL 3 // Channel frequency and flags
#define RTAP_FHSS 4 // FHSS hop set and hop pattern
#define RTAP_ANTENNASIGNAL 5
// ... (we use only the antenna signal field, so we don't need to handle
// the bits greater than RTAP_ANTENNASIGNAL)
/* We use only the first Antenna Signal field, so we don't need to handle
* the bits greater than RTAP_ANTENNASIGNAL, except for the Ext bit
* (Extended Presence), to be able to jump after all the Present Flags
* fields: */
#define RTAP_EXT 31
/* Lengths of the radiotap optional fields (in bytes) */
#define RTAP_L_TSFT 8 // MAC timestamp (Time Synchronization Function Timer)

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -87,21 +87,27 @@ cfg_t *cfg = NULL ; // Configuration structure
/* If we do not use libconfuse, we declare a structure to store getopt
* options.
*/
// TODO: the size of this structure could be reduced by reordering its fields.
// Note: the alignment comments below are for the case where all the #ifdef
// match.
struct {
bool daemon ;
char mode ;
char aggregation_host[MAXHOSTNAMELEN] ;
// 6 bytes alignment
uint_fast16_t aggregation_port ;
uint_fast16_t listening_port ;
#ifdef OWLPS_LISTENER_KEEPS_MONITOR
bool keep_monitor ;
#endif // OWLPS_LISTENER_KEEPS_MONITOR
char rtap_iface[IFNAMSIZ + 1] ;
// 7 bytes alignment
char *pcap_file ;
char wifi_iface[IFNAMSIZ + 1] ;
#ifdef OWLPS_LISTENER_USES_PTHREAD
bool autocalibration ;
char autocalibration_host[MAXHOSTNAMELEN] ;
// 6 bytes alignment
uint_fast16_t autocalibration_request_port ;
uint_fast16_t autocalibration_order_port ;
uint_fast16_t autocalibration_hello_port ;
@ -109,11 +115,13 @@ struct {
uint_fast32_t autocalibration_delay ;
uint_fast16_t autocalibration_nb_packets ;
owl_direction my_direction ;
// 3 bytes alignment
float my_position_x ;
float my_position_y ;
float my_position_z ;
#endif // OWLPS_LISTENER_USES_PTHREAD
uint_fast8_t verbose ;
// 7 bytes alignment
} options = { // Initalise default options:
false, // daemon
MODE_ACTIVE, // mode
@ -1332,15 +1340,33 @@ bool extract_radiotap_ss(const u_char *const pkt_data,
{
uint32_t rtap_presentflags ;
uint_fast16_t rtap_position ;
bool rtap_ext ;
// Get rtap flags:
// Get the first Present Flags field from the Radiotap header:
memcpy(&rtap_presentflags,
&pkt_data[RTAP_P_PRESENTFLAGS], RTAP_L_PRESENTFLAGS) ;
// The Radiotap header is little-endian
rtap_presentflags = le32toh(rtap_presentflags) ;
// The fields dependent on present flags start at byte 8
rtap_position = 8 ;
// The optional fields start right after the Present Flags field:
rtap_position =
RTAP_L_HREVISION + RTAP_L_HPAD +
RTAP_L_HLENGTH + RTAP_L_PRESENTFLAGS ;
// Skip the potential additional Present Flags fields:
rtap_ext = FIELD_PRESENT(rtap_presentflags, RTAP_EXT) ;
while (rtap_ext)
{
// Get the additional Present Flags field:
uint32_t rtap_presentflags_ext ;
memcpy(&rtap_presentflags_ext,
&pkt_data[rtap_position], RTAP_L_PRESENTFLAGS) ;
rtap_presentflags_ext = le32toh(rtap_presentflags_ext) ;
// Check if there is another one after it:
rtap_ext = FIELD_PRESENT(rtap_presentflags_ext, RTAP_EXT) ;
// Skip the current field:
rtap_position += SKIP_FIELD(rtap_position, RTAP_L_PRESENTFLAGS) ;
}
// Test the first bits of the flag field in order to check their
// presence, up to the antenna signal field which is the only one

View File

@ -2,7 +2,7 @@
# It is subject to the copyright notice and license terms in the
# COPYRIGHT.t2t file found in the top-level directory of this
# distribution and at
# http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
# https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
# No part of the OwlPS Project, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -35,7 +35,7 @@ protected:
void reorder_coordinates(void) ;
public:
Area(const Building *const _building = NULL,
Area(const Building *const _building = nullptr,
const std::string &_name = "Unnamed area",
const Point3D &p1 = Point3D(0,0,0),
const Point3D &p2 = Point3D(0,0,0)) ;

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -56,7 +56,7 @@ protected:
virtual bool compute_single_packet_ss(pkt_id_t pkt_id) = 0 ;
public:
Autocalibration(const Point3D &_point): point(_point) {}
explicit Autocalibration(const Point3D &_point): point(_point) {}
/// Generates a single reference point
void generate_reference_point(void) ;

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -33,14 +33,14 @@ using namespace std ;
/**
* @param _point The coordinates of the reference point to generate.
* @param _cp1 The first capture point (receiver) to use the measurements
* of to generate the reference points; it cannot be NULL.
* of to generate the reference points; it cannot be null.
* @param _cp2 The second receiver capture point (optional).
*/
AutocalibrationLine::AutocalibrationLine(
const Point3D &_point,
const CapturePoint *const _cp1, const CapturePoint *const _cp2):
Autocalibration(_point), cp1(_cp1), cp2(_cp2),
trx_cp(NULL), trx_rp(NULL)
trx_cp(nullptr), trx_rp(nullptr)
{
assert(cp1) ;
}
@ -120,7 +120,7 @@ void AutocalibrationLine::sort_reference_cps()
Stock::get_reference_point(ref->second.get_coordinates()) ;
const vector<CalibrationRequest*> &ref_cr = ref_rp.get_requests() ;
/* Search for the first measurement made by RX in ref_rp */
const Measurement *rx_measurement = NULL ;
const Measurement *rx_measurement = nullptr ;
const string &rx_mac = rx->second.get_mac_addr() ;
for (auto cr = ref_cr.begin() ; cr != ref_cr.end() ; ++cr)
{
@ -153,7 +153,7 @@ void AutocalibrationLine::compute_multi_packet_ss()
const vector<CalibrationRequest*> &ref_cr = trx_rp->get_requests() ;
/* Search for the first measurement made by RX in trx_rp */
const Measurement *rx_measurement = NULL ;
const Measurement *rx_measurement = nullptr ;
vector<CalibrationRequest*>::const_iterator cr ;
const string &rx_mac = rx->second.get_mac_addr() ;
for (cr = ref_cr.begin() ; cr != ref_cr.end() ; ++cr)

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -49,7 +49,7 @@ protected:
public:
AutocalibrationLine(const Point3D &_point,
const CapturePoint *const _cp1,
const CapturePoint *const _cp2 = NULL) ;
const CapturePoint *const _cp2 = nullptr) ;
} ;
#endif // _OWLPS_POSITIONING_AUTOCALIBRATIONLINE_HH_

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -187,7 +187,7 @@ void AutocalibrationMesh::compute_multi_packet_ss()
const vector<CalibrationRequest*> &ref1_cr = ref1_rp.get_requests() ;
/* Search for the first measurement made by RX in ref1_rp */
const Measurement *rx_measurement = NULL ;
const Measurement *rx_measurement = nullptr ;
vector<CalibrationRequest*>::const_iterator cr ;
const string &rx_mac = rx->second.get_mac_addr() ;
for (cr = ref1_cr.begin() ; cr != ref1_cr.end() ; ++cr)

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -78,7 +78,7 @@ protected:
const float point_dst) ;
public:
AutocalibrationMesh(const Point3D &_point): Autocalibration(_point) {}
explicit AutocalibrationMesh(const Point3D &_point): Autocalibration(_point) {}
} ;
#endif // _OWLPS_POSITIONING_AUTOCALIBRATIONMESH_HH_

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -50,7 +50,7 @@ Building::~Building()
/**
* If `area` is NULL, nothing is done.
* If `area` is null, nothing is done.
* If `area` is a pointer to an Area that is already stored in #areas,
* nothing is done.
* If `area` has the same name as (but is not identical to) an Area that
@ -61,7 +61,7 @@ Building::~Building()
*/
void Building::add_area(const Area *const area)
{
if (area == NULL)
if (!area)
return ;
string area_name = area->get_name() ;

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -34,7 +34,7 @@ protected:
std::unordered_set<Waypoint*> waypoints ;
public:
Building(const std::string &_name = "Unnamed building"):
explicit Building(const std::string &_name = "Unnamed building"):
name(_name) {}
Building(const Building &source):
@ -107,12 +107,12 @@ inline void Building::set_name(const std::string &_name)
/**
* @param wp A pointer to the Waypoint to add. If `wp` is NULL,
* @param wp A pointer to the Waypoint to add. If `wp` is null,
* nothing will be added.
*/
inline void Building::add_waypoint(Waypoint *const wp)
{
if (wp != NULL)
if (wp)
waypoints.insert(wp) ;
}

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -20,7 +20,7 @@
CalibrationRequest::CalibrationRequest(const uint_fast8_t _type):
reference_point(NULL), direction(Direction())
reference_point(nullptr), direction(Direction())
{
type = _type ;
}
@ -57,7 +57,7 @@ void CalibrationRequest::reference_point_backward_link() const
void CalibrationRequest::clear()
{
Request::clear() ;
reference_point = NULL ;
reference_point = nullptr ;
direction.clear() ;
}

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -30,14 +30,15 @@ protected:
Direction direction ;
public:
CalibrationRequest(const uint_fast8_t _type = OWL_REQUEST_AUTOCALIBRATION) ;
explicit CalibrationRequest(const uint_fast8_t _type
= OWL_REQUEST_AUTOCALIBRATION);
CalibrationRequest(const CalibrationRequest &source):
Request(source), reference_point(source.reference_point),
direction(source.direction) {}
CalibrationRequest(const Request &source,
ReferencePoint *const _reference_point = NULL,
ReferencePoint *const _reference_point = nullptr,
const Direction &_direction = Direction(),
const uint_fast8_t _type = OWL_REQUEST_AUTOCALIBRATION) ;
@ -126,7 +127,7 @@ public:
PosUtil::hash_combine(seed, static_cast<Request>(source)) ;
PosUtil::hash_combine(seed, source.get_direction()) ;
if (source.get_reference_point() != NULL)
if (source.get_reference_point())
PosUtil::hash_combine(seed, *source.get_reference_point()) ;
return seed ;

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -123,7 +123,7 @@ ostream &operator<<(ostream &os, const CapturePoint &cp)
<< "Coordinates: " << cp.coordinates << '\n'
<< "Frequency: " << cp.frequency << " Hz" << '\n'
<< "Friis index: " << cp.friis_index << '\n'
<< (WifiDevice) cp ;
<< static_cast<WifiDevice>(cp) ;
return os ;
}

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -57,7 +57,7 @@ public:
frequency(PosUtil::wifi_channel_to_hz(channel)),
friis_index(0) {}
CapturePoint(const WifiDevice &source):
explicit CapturePoint(const WifiDevice &source):
WifiDevice(source), coordinates(Point3D()), frequency(0),
friis_index(0) {}

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -35,7 +35,7 @@ protected:
void process_device_line(void) ;
public:
CapturePointsReaderCSV(const std::string &file_name) ;
explicit CapturePointsReaderCSV(const std::string &file_name);
~CapturePointsReaderCSV(void) {}
} ;

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -1,5 +1,9 @@
# Capture points' (listeners') physical description file.
#
# IMPORTANT:
# You may need to add the listeners to the file listing the mobile
# devices. See mobiles.csv for more detail.
#
# Each line follows this format:
# MAC address;X;Y;Z;Channel (Hz);Antenna gain (dBi);Trx power (dBm)
#
@ -7,4 +11,4 @@
# their FIRST character.
# Example listener:
#00:11:22:33:44:55;4;0.5;7.95;2417000000;5.0;20.0
#00:11:22:33:44:55;4;0.5;7.95;2417000000;3.5;20

1 # Capture points' (listeners') physical description file.
2 #
3 # IMPORTANT:
4 # You may need to add the listeners to the file listing the mobile
5 # devices. See mobiles.csv for more detail.
6 #
7 # Each line follows this format:
8 # MAC address;X;Y;Z;Channel (Hz);Antenna gain (dBi);Trx power (dBm)
9 #
11 # their FIRST character.
12 # Example listener:
13 #00:11:22:33:44:55;4;0.5;7.95;2417000000;5.0;20.0 #00:11:22:33:44:55;4;0.5;7.95;2417000000;3.5;20
14

View File

@ -1,5 +1,10 @@
# Mobiles' physical description file.
#
# IMPORTANT:
# Until a more elegant solution is implemented, if you are using
# autocalibration you must also declare the capture points as mobiles
# here.
#
# Each line follows this format:
# MAC address;Antenna gain (dBi);Trx power (dBm)
#
@ -7,4 +12,4 @@
# their FIRST character.
# Example mobile:
#aa:bb:cc:dd:ee:ff;1.8;18.0
#aa:bb:cc:dd:ee:ff;1.8;18

1 # Mobiles' physical description file.
2 #
3 # IMPORTANT:
4 # Until a more elegant solution is implemented, if you are using
5 # autocalibration you must also declare the capture points as mobiles
6 # here.
7 #
8 # Each line follows this format:
9 # MAC address;Antenna gain (dBi);Trx power (dBm)
10 #
12 # their FIRST character.
13 # Example mobile:
14 #aa:bb:cc:dd:ee:ff;1.8;18.0 #aa:bb:cc:dd:ee:ff;1.8;18
15

View File

@ -250,6 +250,30 @@ mobile-csv-file = /usr/local/etc/owlps/mobiles.csv
# The default is false.
#ignore-cp-reference-points = false
[positioning.filter]
# This subsection contains filtering-related options.
# Maximal speed at which the mobile terminal can move, in km/h.
# This option also controls the activation of the filter (0 = disabled).
#max-speed = 0
# With this option set to a positive number, the maximum speed is
# temporarily set to max-speed-cp (instead of max-speed) when the mobile
# terminal is found to be close enough to a capture point. This option
# determines this "close enough" distance, in metres.
# This is useful in deployments where the system is much more accurate
# when the mobile is close to a capture point, such as underground
# mining tunnels; in such environments, 15 m appears to be a reasonable
# value to start experimenting.
# The default is 0, i.e. never change the maximum speed.
#cp-reset-distance = 0
# Maximal (virtual) speed at which the mobiles can move when they are
# within cp-reset-distance, in km/h. 0 (the default value) corresponds
# to an unlimited speed, i.e. filtering will be completely disabled when
# the mobile is found to be close to a CP.
#max-speed-cp = 0
[output]
# The following options are related to the output of the results.

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -30,7 +30,7 @@ using boost::bad_lexical_cast ;
CSVStringReader::
CSVStringReader(const std::string &_str, const char _separator):
separator(_separator), current_token(NULL), current_field_nb(0)
separator(_separator), current_token(nullptr), current_field_nb(0)
{
set_str(_str) ;
}

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -38,8 +38,8 @@ protected:
void print_error_cast(void) const ;
public:
CSVStringReader(const char _separator = ';'):
separator(_separator), current_token(NULL), current_field_nb(0) {}
explicit CSVStringReader(const char _separator = ';'):
separator(_separator), current_token(nullptr), current_field_nb(0) {}
CSVStringReader(const std::string &_str, const char _separator = ';') ;

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -15,6 +15,7 @@
#ifndef _OWLPS_POSITIONING_DIRECTION_HH_
#define _OWLPS_POSITIONING_DIRECTION_HH_
#include <functional> // for std::hash
#include <string>
/// Represents a direction in which a mobile is when it sends a
@ -31,7 +32,7 @@ public:
enum {north = 1, east, south, west} ;
Direction(void): direction(0) {}
Direction(const uint_fast8_t source) ;
explicit Direction(const uint_fast8_t source);
Direction(const Direction &source): direction(source.direction) {}
/** @name Accessors */

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -28,7 +28,7 @@ protected:
public:
FRBHMBasic(void):
PositioningAlgorithm("FRBHMBasic"), closest_in_ss(NULL) {}
PositioningAlgorithm("FRBHMBasic"), closest_in_ss(nullptr) {}
~FRBHMBasic(void) {}
/** @name Operations */

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -32,7 +32,7 @@ using namespace std ;
Input::Input():
medium(NULL)
medium(nullptr)
{
initialise_input_medium() ;
initialise_log_media() ;
@ -147,7 +147,7 @@ const Request& Input::get_next_request() const
/* If the request is a calibration request, add it to the Stock */
CalibrationRequest *calibration_request =
dynamic_cast<CalibrationRequest*>(const_cast<Request*>(&request)) ;
if (calibration_request != NULL)
if (calibration_request)
{
if (Configuration::bool_value(
"positioning.accept-new-calibration-requests"))
@ -183,7 +183,7 @@ const Request& Input::get_next_request() const
bool Input::eof() const
{
if (medium == NULL)
if (!medium)
throw null_input_medium() ;
return medium->eof() ;
}

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -44,7 +44,7 @@ protected:
//@}
public:
InputCSV(const std::string &filename):
explicit InputCSV(const std::string &filename):
file(filename) {}
~InputCSV(void) {}

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -255,7 +255,7 @@ void InputDataReader::read_from_reference_points_media()
CalibrationRequest *calibration_request =
dynamic_cast<CalibrationRequest*>(
const_cast<Request*>(&request)) ;
if (calibration_request == NULL)
if (!calibration_request)
cerr << "Warning! Invalid calibration request at line "
<< (*i)->get_current_line_nb() << endl ;
else

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be

View File

@ -3,7 +3,7 @@
* It is subject to the copyright notice and license terms in the
* COPYRIGHT.t2t file found in the top-level directory of this
* distribution and at
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
* https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
* No part of the OwlPS Project, including this file, may be copied,
* modified, propagated, or distributed except according to the terms
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
@ -28,7 +28,7 @@ protected:
TextFileWriter file ;
public:
InputLogCSV(const std::string &filename):
explicit InputLogCSV(const std::string &filename):
file(filename) {}
/** @name Operations */

Some files were not shown because too many files have changed in this diff Show More