Compare commits
62 Commits
Author | SHA1 | Date |
---|---|---|
Matteo Cypriani | 2f84754392 | |
Matteo Cypriani | bce8896b4b | |
Matteo Cypriani | 913a62377e | |
Matteo Cypriani | 243dc321b9 | |
Matteo Cypriani | c0db11a890 | |
Matteo Cypriani | 6c17646cc3 | |
Matteo Cypriani | c4180419e0 | |
Matteo Cypriani | 78f13f2c0b | |
Matteo Cypriani | 550d9008db | |
Matteo Cypriani | dce4416bc6 | |
Matteo Cypriani | c6e39f7e70 | |
Matteo Cypriani | 41640da203 | |
Matteo Cypriani | ecb9a689b5 | |
Matteo Cypriani | df0c08c271 | |
Matteo Cypriani | 16d4422a2b | |
Matteo Cypriani | a77ee05239 | |
Matteo Cypriani | 44dcf42180 | |
Matteo Cypriani | 3df3a14762 | |
Matteo Cypriani | 2c9f1a09b0 | |
Matteo Cypriani | 4d309d9c10 | |
Matteo Cypriani | 36966148f3 | |
Matteo Cypriani | 759db45a50 | |
Matteo Cypriani | c4f1ed82e6 | |
Matteo Cypriani | f67d7892a8 | |
Matteo Cypriani | bc6ec14fa8 | |
Matteo Cypriani | fbef235ebf | |
Matteo Cypriani | a567782557 | |
Matteo Cypriani | 8053876588 | |
Matteo Cypriani | 52106177a1 | |
Matteo Cypriani | c567592167 | |
Matteo Cypriani | fe84a5f097 | |
Matteo Cypriani | dc64f050a8 | |
Matteo Cypriani | 7d84e7c957 | |
Matteo Cypriani | e4b8e7239b | |
Matteo Cypriani | b479d6a560 | |
Matteo Cypriani | f3e63ec20f | |
Matteo Cypriani | 093b93a3c5 | |
Matteo Cypriani | 209530ad41 | |
Matteo Cypriani | e51a8d4f1b | |
Matteo Cypriani | 8c5e8c62f6 | |
Matteo Cypriani | a56a8d3d5d | |
Matteo Cypriani | a1c8e0a093 | |
Matteo Cypriani | 36cf7c13cb | |
Matteo Cypriani | 9d3c079b45 | |
Matteo Cypriani | 7e3b41a46f | |
Matteo Cypriani | f35215388b | |
Matteo Cypriani | 92db007d6b | |
Matteo Cypriani | ec8c1244cd | |
Matteo Cypriani | f06c866f8f | |
Matteo Cypriani | e8f3479cdd | |
Matteo Cypriani | 7b0aacd212 | |
Matteo Cypriani | f38527cd93 | |
Matteo Cypriani | 1a40fe3366 | |
Matteo Cypriani | 52940bcfc3 | |
Matteo Cypriani | feb5a715fa | |
Matteo Cypriani | 23d0708ca1 | |
Matteo Cypriani | ebeef80bac | |
Matteo Cypriani | c09ed87f94 | |
Matteo Cypriani | d5755a3df6 | |
Matteo Cypriani | 6c8d97ace3 | |
Matteo Cypriani | dd8497fb53 | |
Matteo Cypriani | 9c83ae3593 |
|
@ -1,3 +1,4 @@
|
|||
/build/
|
||||
\#*\#
|
||||
*~
|
||||
*.bak
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
44
INSTALL.t2t
|
@ -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
|
||||
|
|
|
@ -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.
|
25
README.t2t
|
@ -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/
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
2348
doc/Doxyfile
|
@ -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``.
|
||||
|
|
|
@ -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=$*
|
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 210 KiB |
|
@ -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
|
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 30 KiB |
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}" $@
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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/
|
||||
|
|
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 93 KiB |
|
@ -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
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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) ;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) ;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)) ;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) ;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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_
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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_
|
||||
|
|
|
@ -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() ;
|
||||
|
|
|
@ -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) ;
|
||||
}
|
||||
|
||||
|
|
|
@ -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() ;
|
||||
}
|
||||
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
}
|
||||
|
|
|
@ -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) {}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {}
|
||||
} ;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,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
|
||||
|
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) ;
|
||||
}
|
||||
|
|
|
@ -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 = ';') ;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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() ;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|