# Sample configuration file for OwlPS Positioner

# [Miscellaneous options]

# This option controls whether or not the output text files are flushed
# (written to the storage support) after each line.
# The default is to flush.
#flush-output-files = true

# "Replay" mode. With this option enabled, the current time is the
# emission timestamp of the most recent request; you will want to
# enable this when reading inputs (requests) off-line to replay
# scenarios, if time-related options are enabled (e.g.
# positioning.calibration-requests-timeout).
# To be useful, this option requires the listener's clocks to be
# synchronised.
# The default is to run in "live mode", i.e. with this option disabled.
#replay = off

[data-input]
# The options in this section are related to the data that are read
# when the program starts.

# Description of the machines running the listeners.
ap-medium = CSV
ap-csv-file = /usr/local/etc/owlps/listeners.csv

# Description of the clients
mobile-medium = CSV
mobile-csv-file = /usr/local/etc/owlps/mobiles.csv

# Description of deployment area topology.
# You probably don't need a full description of the topology, see the
# topology example file for details.
# Uncomment the following line to activate the topology reading.
topology-medium = CSV
areas-csv-file = /usr/local/etc/owlps/topology.csv
waypoints-csv-file = /usr/local/etc/owlps/waypoints.csv

#reference-points-medium = CSV
#reference-points-csv-file = /usr/local/etc/owlps/reference_points.csv

[input]
# The following options are related to the input of the requests
# (positioning requests and (auto-)calibration requests) from the
# aggregator.

#medium = CSV
#csv-file = /tmp/input.csv

medium = UDP
#udp-port = 9902

[log]
# The following options allow to log the requests received from the
# aggregator.

# Uncomment the following line to completely disable logging (has
# precedence over the other logging options):
#medium = none

medium = CSV
csv-file = /tmp/owlps-positioner.log

[positioning]
# The options in this section are related to the way the requests are
# handled and the results are computed.

# Uncomment lines to activate one or more algorithm.
#algorithm = Real
#algorithm = InterlinkNetworks
#algorithm = FBCM
algorithm = NSS
#algorithm = FRBHMBasic

# This option allows to create a new mobile when a request is sent by
# a mobile which is not currently in the mobiles' list (i.e. not
# declared in the mobiles' configuration file). If unset, the requests
# sent by unknown mobiles will be dropped.
# It is unactivated by default, mainly to avoid interferent devices.
#accept-new-mobiles = false

# This option allows to create a new AP when a request is captured by an
# AP which is not currently in the APs' list (i.e. not declared in the
# APs' configuration file), or when a self-calibration request is sent
# by an unknown AP.
# It is unactivated by default for the sake of security.
#accept-new-aps = false

# When receiving a calibration or autocalibration request from an AP,
# containing the transmiter's coordinates, memorise the new AP's
# coordinates.
# This is unactivated by default for the sake of security.
#update-ap-coordinates-online = false

# Coordinates of the deployment area.
# This is used to delimit the area in which reference points are
# generated (when generate-reference-points is activated), and also
# by the MinMax trilateration method.
# Since MinMax is currently the only trilateration method implemented
# in OwlPS, you should define these parameters if you use any of the
# trilateration-based algorithms (InterlinkNetworks, FBCM, FRBHM).
# With the autocalibration, the Z coordinate is the floor number, not
# a true coordinate in meters.
# They are declared as strings (X;Y;Z). Do not quote!
area-start = 1.3;-2.05;1
area-stop = 9.5;7;1

# Algorithm to calculate the similarity, in the signal strength space,
# of two measurements.
# The following algorithms are implemented:
#   - mean: The mean of all the packets in the measurement is
#     computed, then the euclidean distance between the two means is
#     used.
#   - interval: The mean Im and the standard deviation Is of the
#     packets in the measurement I are computed; the closest reference
#     measurement R is the one with the highest number of packets in
#     the interval [Im-Is, Im+Is].
#   - interval2: Derived of the previous one, this algorithm
#     computes the percent of packets in both the intervals
#     [Im-0.674×Is, Im+0.674×Is] and [Im-Is, Im+Is].
#     Assuming a normal distribution, we should find approximately
#     50% of the packets in the first interval, and 68% in the second
#     interval. The closest R is the one for which the percents of
#     the two intervals are the closest to these theoretical scores.
# The default is "mean".
#ss-similarity = mean

# Smallest possible value for a received signal strength, in dBm. This
# depends on the sensibility of the APs' Wi-Fi hardware. It is used to
# compensate for APs that are not in coverage in a given measurement.
# The default value is -99 dBm, which should be fine in most cases.
#smallest-ss = -99

# Generate reference points from the (auto)calibration requests
# received.
generate-reference-points = true

# With this option disabled, each generated reference point contains
# a single packet in a single calibration request, computed from the
# mean of the real measurements.
# If enabled, the generated reference points will contain a series of
# packets, better matching the real requests; if no packet ID from the
# real requests match, a single packet reference point is generated
# instead. Default is enabled.
#generate-multi-packet-reference-points = true

# When the above option is activated, the reference points are generated
# with the specified distance (in meters) between one another, in the X
# and Y axis.
generated-meshing-grain-x = 1.98
generated-meshing-grain-y = 1.5
# The Z option is currently a floor number instead of a vertical
# coordinate in meters. You should leave it to 1, except if you are
# deploying across non-contiguous floors, which is unlikely.
#generated-meshing-grain-z = 1

# This option allows the (auto)calibration requests sent during the
# positioning phase to be added to the calibration request's list. They
# are added to the calibration requests read by InputDataReader during
# the start-up phase. If this option is not activated, the calibration
# requests are handled as positioning requests.
# This option must be activated for the self-calibration to work, but
# it is not activated by default for security purposes.
accept-new-calibration-requests = true

# Maximum age of the calibration requests, in seconds. If greater than
# zero, the positioning requests older than this timeout will be
# deleted. See also the replay option.
#calibration-requests-timeout = 0

# With this option activated, the calibration requests associated with
# an existing reference point are deleted when receiving a new
# calibration request, before to associate the new request with the
# reference point.
# The default is true, as there is generally no point keeping old
# calibration requests.
#unique-calibration-requests = true

# If you activate the above option and want the calibration requests
# to be treated as positioning requests (in addition to the normal
# treatment of calibration requests), activate this option.
# The default is false: the first calibration requests' purpose is to
# serve the positioning process, not to use it.
#position-calibration-requests = false

[positioning.nss]
# This subsection contains the options related to the NSS (a.k.a. RADAR)
# algorithm and derivated.

# For a given positioning request, average all the calibration requests
# associated with a reference point before to compute the SS similarity.
# The default is false, i.e. the positioning request is compared
# directly to each calibration request.
#average-reference-points = false

# Do not select reference points on which an AP is sit, as far as
# possible (i.e. if there are reference points where no AP sits).
# This is useful if you are using autocalibration and want to select
# only the generated reference points.
# The default is false.
ignore-ap-reference-points = true

[output]
# The following options are related to the output of the results.

# This is the default output if none is specified.
#medium = Terminal

medium = CSV
#csv-file = /tmp/owlps-positioner.out

#medium = UDP
# Currently, the host must be an IP address (not a DNS name).
#udp-host =
#udp-port = 9910

# The TCPEvAAL output follows the specification of EvAAL 2011 to
# communicate with the SocketAdapter program developped by the
# organizers.
# Note: you can use only one algorithm when using the TCPEvAAL output.
medium = TCPEvAAL
# Currently, the host must be an IP address (not a DNS name).
#tcpevaal-host = 192.168.1.182
#tcpevaal-port = 4444

# vim: syntax=cfg
