.. highlight:: rst

.. _seedlink:

########
seedlink
########

**Real-time waveform server implementing the SeedLink protocol.**


Description
===========

SeedLink is a real-time data acquisition protocol and a client-server software
that implements this protocol. The SeedLink protocol is based on TCP. All
connections are initiated by the client. During handshaking phase the client can
subscribe to specific stations and streams using simple commands in ASCII coding.
When handshaking is completed, a stream of SeedLink "packets" consisting of a
8-byte SeedLink header (containing the sequence number) followed by a 512-byte
miniSEED record, is sent to the client. The packets of each individual station
are always transferred in timely (FIFO) order. The SeedLink implementation used
in SeisComP is the oldest and most widely used, however, other implementations
exist. Another well-known implementation is deployed in IRIS DMC and some
manufacturers have implemented SeedLink in their digitizer firmware. All
implementations are generally compatible, but not all of them support the full
SeedLink protocol. On the other hand IRIS DMC implements some extensions which
are not supported by other servers. In the following we use "SeedLink" to denote
the SeedLink implementation used in SeisComP. The data source of a SeedLink
server can be anything which is supported by a SeedLink plugin - a small program
that sends data to the SeedLink server. Plugins are controlled by the SeedLink
server, e.g., a plugin is automatically restarted if it crashes or a timeout
occurs. Data supplied by a plugin can be a form of miniSEED packets or just
raw integer samples with accompanying timing information. In the latter case,
the SeedLink server uses an inegrated "Stream Processor" to create the desired
data streams and assemble miniSEED packets.


Supported data sources
----------------------

The table below lists digitizers and data acquisition systems that are supported by
SeedLink plugins. More plugins (Kinemetrics K2, Lennartz MARS-88, Lennartz PCM
5800, etc.) have been implemented by various users, but are not (yet) included
in the package. The included C language plugin interface is described in
section 5.1.1.5. Antelope, Earthworm and NAQS can also import data from
SeisComP. In SeisComP the class :ref:`RecordStream <global_recordstream>` is implemented that supports both
SeedLink and ArcLink sources; this class is used by all SeisComP modules that
work with waveform data. On a lower level, SeedLink clients can be implemented
using the :cite:t:`libslink` software library or its Java counterpart, JSeedLink. Libslink
supports Linux/UNIX, Windows and MacOS X platforms, and comes with an exhaustive
documentation in form of UNIX manual pages.

.. csv-table::
   :widths: 2 3 5
   :header: Plugin name, Source or Digitizer/DAS, Plugin Implementer
   :align: left

   :ref:`seedlink-sources-antelope-label` * ,  Antelope, Chad Trabant (IRIS)
   :ref:`seedlink-sources-caps-label`       ,  CAPS server :cite:p:`caps` , `gempa GmbH <https://www.gempa.de>`_
   :ref:`seedlink-sources-chain-label`      ,  SeedLink, GFZ
   dm24 **                                  ,  Guralp DM24, GFZ; based on libgcf2 from Guralp
   :ref:`seedlink-sources-dr24-label`       ,  Geotech DR24, GFZ
   :ref:`seedlink-sources-echopro_3ch100hz-label` /  :ref:`seedlink-sources-echopro_6ch200hz-label`, Kelunji Echo/EchoPro, Oyvind Natvik (UiB)
   :ref:`seedlink-sources-edata-label`      ,  Earth Data PS2400/PS6-24, GFZ
   :ref:`seedlink-sources-ewexport-label`   ,  Earthworm export server (TCP/IP), Chad Trabant (IRIS)
   :ref:`seedlink-sources-ewexport_pasv-label`,  Earthworm passive export server (TCP/IP), Chad Trabant (IRIS)
   :ref:`seedlink-sources-fs_mseed-label`   ,  miniSEED file plugin, GFZ
   :ref:`seedlink-sources-gdrt-label`       ,  GDRT server, GFZ
   :ref:`seedlink-sources-hrd24-label`      ,  Nanometrics HRD24, GFZ; Recai Yalgin
   :ref:`seedlink-sources-liss-label`       ,  LISS, Chad Trabant (IRIS)
   :ref:`seedlink-sources-m24-label` *      ,  Lennartz M24, Lennartz Electronic GmbH
   :ref:`seedlink-sources-maram-label`      ,  maRam Weatherstation V1, GFZ
   :ref:`seedlink-sources-minilogger-label` ,  SEP064 USB Seismometer Interface, GFZ; Anthony Lomax
   :ref:`seedlink-sources-mseedfifo-label`  ,  Generic, GFZ
   :ref:`seedlink-sources-mseedscan-label`  ,  Transfers miniSEED files from a directory, Chad Trabant (IRIS)
   :ref:`seedlink-sources-mk6-label` *      ,  MK6, Jan Wiszniowski (IGPAS)
   :ref:`seedlink-sources-mppt-label` *     ,  SunSaver MPPT via Modbus TCP/IP, GFZ
   :ref:`seedlink-sources-mws-label`        ,  Reinhardt MWS5/MWS9 Weather Station, GFZ
   :ref:`seedlink-sources-naqs-label`       ,  NAQS, "Chad Trabant (IRIS); based on sample code from Nanometrics, Inc."
   :ref:`seedlink-sources-nmxp-label` *     ,  NAQS, Matteo Quintiliani (INGV)
   nrts **    ,  NRTS, GFZ; based on ISI toolkit from David E. Chavez
   :ref:`seedlink-sources-optodas-label`    ,  OptoDAS interrogator via ZeroMQ, GFZ
   :ref:`seedlink-sources-ps2400_eth-label` ,  Earth Data PS2400/PS6 Ethernet, GFZ; `gempa GmbH <https://www.gempa.de>`_
   :ref:`seedlink-sources-q330-label`       ,  Quanterra Q330, "GFZ; based on lib330 maintained by ISTI, Inc."
   comserv ** ,  "Quanterra Q380/Q680, Q4120, Q720", "GFZ; based on Comserv by Quanterra, Inc."
   :ref:`seedlink-sources-reftek-label`     ,  RefTek RTPD, "GFZ; based on software library provided by RefTek, Inc."
   :ref:`seedlink-sources-sadc-label`       ,  SARA SADC10/18/20/30, GFZ
   :ref:`seedlink-sources-scream-label`     ,  SCREAM, Reinoud Sleeman (KNMI)
   :ref:`seedlink-sources-scream_ring-label`,  SCREAM, "Reinoud Sleeman (KNMI), This is the second revision of the scream plugin which supports buffering for short-term completeness."
   :ref:`seedlink-sources-vaisala-label`    ,  Vaisala ASCII protocol (serial plugin), GFZ
   :ref:`seedlink-sources-wago-label`       ,  WAGO MODBUS/TCP devices, GFZ
   :ref:`seedlink-sources-wave24-label` *   ,  Wave24, MicroStep-MIS
   :ref:`seedlink-sources-win-label`        ,  WIN, GFZ; based on source code of WIN system
   ws2300 **  ,  Lacrosse 2300 Weather Station, GFZ; based on open2300 library from Kenneth Lavrsen

\* Third-party plugin, not included in SeisComP distribution

\*\* No longer supported


Telnet interface
----------------

:program:`seedlink` provides a telnet interface accepting the commands set out in
:ref:`seedlink_commands` through the seedlink :confval:`port` ::

   telnet [host] [port]

Example fetching the SeedLink version: ::

   $ telnet localhost 18000
   Trying 127.0.0.1...
   Connected to localhost.gempa.de.
   Escape character is '^]'.
   hello
   SeedLink v3.3 (2020.122)
   bye
   Connection closed by foreign host.


Queries
-------

:program:`seedlink` provides a query interface.
Use :program:`slinktool` to send queries
for fetching:

* Station and stream information
* Waveform data


Protocol
========

A SeedLink session starts with opening the TCP/IP connection and ends with
closing the TCP/IP connection. During the session the following steps are
performed in order:

* Opening the connection
* Handshaking
* Transferring SeedLink packets

We will take a closer look at the protocol. Note, the details are normally
hidden from the clients by the libslink software library; therefore it is not
necessary to be familiar with the protocol in order to implement clients.


Handshaking
-----------

When the TCP/IP connection has been established the server will wait for the
client to start handshaking without initially sending any data to the client.
During handshaking the client sends SeedLink commands to the server. The
commands are used to set the connection into a particular mode, setup stream
selectors, request a packet sequence number to start with and eventually start
data transmission. SeedLink commands consist of an ASCII string followed by
zero or several arguments separated by spaces and terminated with carriage
return (<cr>, ASCII code 13) followed by an optional linefeed
(<lf>, ASCII code 10). The commands can be divided into two categories: "action
commands" and "modifier commands". Action commands perform a function such as
starting data transfer. Modifier commands are used to specialize or modify the
function performed by the action commands that follow. When a server receives a
modifier command it responds with the ASCII string "OK" followed by a carriage
return and a line feed to acknowledge that the command has been accepted. If
the command was not recognized by the server or has invalid parameters, then
the ASCII string "ERROR" is sent as a response to the client followed by a
carriage return and a line feed. The client should not send any further
commands before it has received a response to the previous modifier command. If
a network error or timeout occurs the client should close the connection and
start a new session. Data transmission is started when the server receives the
commands DATA, FETCH, TIME or END as described in section 5.1.1.3. Once the data
transfer has been started no more commands, except INFO, should be sent to the
server. The flow diagram of handshaking in uni-station vs. multi-station mode
is shown in :ref:`seedlink-handshaking`.

.. _seedlink-handshaking:

.. figure::  media/seedlink/Handshaking_uni_multi_station_mode.*
   :width: 10cm

   Handshaking in uni-station vs. multi-station mode.


Data Transfer
-------------

When handshaking has been completed the server starts sending data packets, each
consisting of an 8-byte SeedLink header followed by a 512-byte miniSEED record.
The SeedLink header is an ASCII string consisting of the letters "SL" followed
by a six-digit hexadecimal packet sequence number. Each station has its own
sequence numbers. If multiple stations are requested using a single TCP channel
the client should look at the contents of the miniSEED header to determine the
station name (or to maintain the current sequence numbers for each station). A
sequence number in the same format is used as an argument to the commands "DATA"
or "FETCH" to start the data transfer from a particular packet. Each SeedLink
node re-assigns sequence numbers for technical reasons. It is not possible to
use the same sequence numbers when communicating with alternative servers.
Within a particular node the sequence numbers of a single station are
consecutive and wrap around at FFFFFF. This can be used by the client to detect
"sequence gaps" (e.g., some data has been missed by the client due to long
network outage or a software bug). However, if stream selectors are used the
sequence numbers are only guaranteed to be in increasing order (with wrap)
because some packets might be filtered out by the server. In this case the
first packet is not necessarily the one requested, but the nearest packet (not
older than requested) that matches installed selectors.
The data is transferred as a continuous stream without any error detections or
flow control because these functions are performed by the TCP protocol. This
guarantees the highest data transfer rate that is possible with the particular
hardware and TCP/IP implementation.
Obviously, the average data transfer rate must be greater than the rate at
which new data becomes ready to send at the server. If this is the case, sooner
or later the server has sent all data available to the client. When this
happens, depending on the SeedLink mode, the server sends new data as soon as
it arrives or appends ASCII string "END" to the last packet and waits for the
client to close connection. The latter mode is called "dial-up mode" because
it is normally used in conjunction with dial-up lines to open the connection
periodically for a short time and download all data available. A SeedLink
packet can never start with "END" thus no ambiguity arises.


.. _seedlink_commands:

Commands
--------

HELLO
    responds with a two-line message (both lines terminated with <cr><lf>). The first line contains the version number of the SeedLink daemon, the second  line contains station or data center description specified in the configuration. HELLO is used mainly for testing a SeedLink server with "telnet". It is also used by libslink to determine the server version.

CAT
    shows the station list. Used mainly for testing a SeedLink server with "telnet".

BYE
    closes the connection. Used mainly for testing a SeedLink server with "telnet".

STATION station code [network code]
    turns on multi-station mode, used to transfer data of multiple stations over a single TCP channel. The STATION command, followed by SELECT (optional) and FETCH, DATA or TIME commands is repeated for each station and the handshaking is finished with END. STATION is a modifier command (it modifies the function of subsequent SELECT, and DATA, FETCH or TIME commands) so it responds with "OK" on success, "ERROR" otherwise.

END
    end of handshaking in multi-station mode. This is an action command, because it starts data transfer. No explicit response is sent.

SELECT [pattern]
    when used without pattern, all selectors are canceled. Otherwise, the pattern is a positive selector to enable matching miniSEED stream transfer. The pattern can be used as well as a negative selector with a leading "!" to prevent the transfer of some miniSEED streams. Only one selector can be used in a single SELECT request. A SeedLink packet is sent to the client if it matches any positive selector and doesn’t match any negative selectors.

General format of selectors is LLCCC.T where LL is location, CCC is channel, and T is type (one of DECOTL for data, event, calibration, blockette, timing, and log records). "LL", ".T", and "LLCCC." can be omitted, meaning "any". It is also possible to use "?" in place of L and C. Some examples can be found in table 3-1 in section 3.3.3.2.
SELECT is a modifier command (it modifies the function of subsequent DATA, FETCH or TIME commands) so a response follows with "OK" on success, "ERROR" otherwise.

DATA [n [begin time]]
    in multi-station mode this sets the current station into real-time mode and (optionally) the current sequence number to n; in uni-station mode this starts data transfer in real-time mode from packet n or from the next packet available if used without arguments. If begin time is used, any older packets are filtered out. begin time should be in the form of 6 decimal numbers separated by commas in the form: year,month,day,hour,minute,second, e.g. ’2002,08,05,14,00,00’. DATA is a modifier command in multi-station mode (responds with "OK" or "ERROR"); in uni-station mode it is an action command (no explicit response is sent).

FETCH [n [begin time]]
    works like DATA but sets the station to dial-up mode instead of real-time mode.

TIME [begin time [end time]]
    extracts the time window from begin time to end time. The times are specified in the form of 6 decimal numbers separated by commas in the form: year,month,day,hour,minute,second, e.g. ’2002,08,05,14,00,00’.

INFO level
    requests an INFO packet containing XML data embedded in a miniSEED log record. level should be one of the following: ID, CAPABILITIES, STATIONS, STREAMS, GAPS, CONNECTIONS, ALL. The XML document conforms to the Document Type Definition (DTD) shown in section ???. The amount of info available depends on the configuration of the SeedLink server.


Plugin Interface
================

In order to implement a SeedLink plugin a developer needs two files included in the SeisComP distribution: :file:`plugin.h` and :file:`plugin.c`.
In these files the following public functions are defined:

.. c:function:: int send_raw3(const char *station, const char *channel, const struct ptime *pt, int usec_correction, int timing_quality, const int32_t *dataptr, int number_of_samples)

is used to send a raw packet (array of 32-bit integer samples) to SeedLink. The parameters are:

station
    station ID, must match one of the defined stations in seedlink.ini. (Up to 10 characters.)

channel
    channel ID, referenced by the "input" element in streams.xml. (Up to 10 characters.)

pt
    time of the first sample in the array. If NULL then time is calculated relative to the previous send_raw3() call. struct ptime is defined in :file:`plugin.h`.

usec_correction
    time correction in microseconds to be written in the SEED data header. Can be useful if the digitizer is not phase locked to GPS.

timing_quality
    timing quality in percent (0-100). The number is directly written into miniSEED header (blockette 1001). Semantics is implementation-defined. Usually 100 means that GPS is in lock and 0 means there never was a GPS lock, so the timing is completely unreliable. When GPS goes out of lock, the value can slowly decrease reflecting a possible timedrift.

dataptr
    Array of signed 32-bit samples.

Number_of_samples
    Length of the sample array.

Special cases:

* If timing_quality = -1, blockette 1001 is omitted.
* If number_of_samples = 0 & pt = NULL set new time without sending any data.
* If dataptr = NULL send a gap (advance time as if number of samples was sent without sending any actual data).

.. c:function:: int send_raw_depoch(const char *station, const char *channel, double depoch, int usec_correction, int timing_quality, const int32_t dataptr, int number_of_samples)

same as send_raw3() except time is measured in seconds since 1 January 1970 (depoch). Leap seconds are ignored.

.. c:function:: int send_flush3(const char *station, const char *channel)

flushes all miniSEED data streams associated with a channel. All buffered data is sent out creating "unfilled" miniSEED records if necessary. The parameters are:

station
    station ID.

Channel
    channel ID.

.. c:function:: int send_mseed(const char *station, const void *dataptr, int packet_size)

is used to send a miniSEED packet to SeedLink. Such packets are not further processed. The parameters are:

station
    station ID.

dataptr
    pointer to 512-byte miniSEED packet.

packet size
    must be 512.


.. c:function:: int send_log3(const char *station, const struct ptime *pt, const char *fmt, ...)

is used to send a log message to SeedLink (LOG stream). It must be noted that encapsulating log messages in miniSEED records is relatively inefficient because each message takes at least one record (512 bytes), regardless of message size. Due to 64-byte miniSEED header, up to 448 bytes per record can be used \*  The parameters are:

station
    station ID.

pt
    the timestamp of the message.

fmt
    format string, as used by printf(), followed by a variable number of arguments.


Compatibility with Earlier Versions
===================================

It is possible to determine the version of the plugin interface by looking at the C macro PLUGIN_INTERFACE_VERSION. The current version is 3, therefore all functions that have changed since earlier versions end with "3". It is possible to enable full backward compatibility with earlier versions of the plugin interface by defining the C macro PLUGIN_COMPATIBILITY. In this case the old functions are also defined.


SeedLink configuration files
============================

The following configuration files are used by SeedLink and its plugins.

.. warning::

   Some files such as seedlink.ini, plugin.ini and chain\*.xml are generated by the :program:`seiscomp` tool according
   to the configuration in :file:`etc/seedlink.cfg` and its bindings. They live in :file:`var/lib/seedlink` and should
   not be modified. If modifications are necessary then the generator needs to be changed to better support
   the desired user options.

plugins.ini
    Configuration file for SeedLink plugins. Used by serial_plugin, fs_plugin and comserv_plugin.

seedlink.ini
    Main configuration file for SeedLink. For more details see below.

filters.fir
    Coefficients of SeedLink’s decimating FIR filters. If a filter’s name ends with "M", it is a minimum-phase filter – causal filter with minimized (non-constant) phase delay; since the filter is non-symmetric all coefficients must be given. Otherwise the filter is a zero-phase filter, i.e. a non-causal filter with zero phase delay; in this case the filter is symmetric and so only half of the coefficients must be given (it is not possible to use a zero-phase filter with an odd number of coefficients).

.. warning::

   The coefficients for non-symmetric (minimum-phase) FIR filters in the filters.fir file are stored
   in reverse order. It is important to reverse the order of coefficients if the operator adds
   a new minimum-phase filter or uses the included minimum-phase filters for another application.
   The coefficients for symmetric (zero-phase) FIR filters are not stored in reverse order. As a
   sanity check for symmetric filters the largest coefficient is always in the middle of the symmetry.

streams.xml
    SeedLink stream configuration file for the internal stream processor, referenced from seedlink.ini. For details see below.


\*.ini files have a somewhat obscure syntax. They contain zero or more sections, each beginning with a section name
in squared brackets which should appear on a line of its own. Section name cannot contain spaces and squared brackets,
but it can be optionally surrounded by spaces. Each section consists of zero or more entries – definitions and assignments.
A definition consists of a keyword and a name separated by spaces (e.g. "station EDD"). An assignment consists of a
parameter and a value separated by the "=" sign and optionally surrounded by spaces (e.g. "network = GE").

The set of assignments that immediately follow a definition is in the scope of that definition. Assignments in the
beginning of a section are "global" – they are used to set some generic parameters and provide default values
(e.g. "network = GE" in the beginning of the section sets the default network that can be overridden in the scope
of a station definition).

Parameters and keywords are case insensitive and must not contain the symbols "=", "[", "]" or spaces. Names must
not contain "=" signs or spaces. Values must not contain "=" signs or spaces, unless enclosed in double quotes.
Double quotes that are part of the value itself must be preceded by "\".

Each assignment must be complete on a single line, but several assignments can appear on one line, separated by spaces.
Any line beginning with a "#" or "*" character is regarded as a comment and ignored.


seedlink.ini
------------

seedlink.ini may contain several sections, but only one having the same name as
the executable to be used. A section in seedlink.ini has the following structure
(parameters are shown in courier, default values are shown in squared brackets,
but relying on them is not recommended):

seedlink.ini is generated from :file:`\~/.seiscomp/seedlink.cfg` and
:file:`etc/seedlink.cfg`.


streams.xml
-----------

This file, like all XML documents, has a tree-like structure. The root element
is called "stream" and it in turn contains "proc" elements which are referenced
by name in seedlink.ini. A "proc" element contains one or more "tree" elements,
which in turn contain "input" and "node" elements. There should be one "input"
element per plugin channel; if an "input" element is missing, the channel is
ignored and you will see a message like::

    Jun 24 12:56:28 st55 seedlink: EDD channel X ignored

Here is the description of all elements and attributes:

**element** streams
    root element, has no attributes.

**element** proc
    defines a "proc" object (set of "stream trees"), referenced from seedlink.ini.

**attribute** name
    name of "proc" object, for reference.

**element** using
    used to include all "stream trees" defined by one "proc" object in another "proc" object.

**attribute** name
    the name of referenced "proc" object.

**element** tree
    defines a "stream tree" – a downsampling scheme of an input channel.

**element** input
    associates an input channel with the stream tree.

**attribute** name
    name of the input channel; depends on the configuration of the particular plugin (usual channel names are "Z", "N" and "E").

**attribute** channel
    name of the output channel (last letter of a miniSEED stream name).

**attribute** location
    miniSEED location code of the output channel (up to two characters).

**attribute** rate
    sampling rate of the input channel (must match the actual sampling rate, which is dependent on the configuration of the plugin and digitizer).

**element** node
    defines a node of a stream tree; this element is recursive, meaning that it may contain one or more "node" elements itself.

**attribute** filter
    use the named filter for decimation; filters are defined in file filters.fir.

**attribute** stream
    create miniSEED output stream at this node. The value of the attribute should be a miniSEED stream name without the last character (which is taken from the attribute "channel" of element "input").

:file:`streams.xml` is generated into :file:`var/lib/seedlink/streams.xml`. Each
data plugin provides templates with predefined procs. If e.g. the *chain* plugin
is configured with proc *stream100* then :file:`share/templates/seedlink/chain/streams_stream100.tpl`
is being read and generated into the final :file:`streams.xml`. Own proc definitions
can be added by creation a corresponding template file.

Again, the **source** and **proc** definition is used to resolve the streams proc
template file at :file:`share/templates/seedlink/[source]/streams_[proc].tpl`.


.. _seedlink_configuration:

Module Configuration
====================


.. note::

   seedlink is a :term:`standalone module` and does not inherit :ref:`global options <global-configuration>`.


| :file:`etc/defaults/seedlink.cfg`
| :file:`etc/seedlink.cfg`
| :file:`~/.seiscomp/seedlink.cfg`



.. confval:: port

   Default: ``18000``

   Type: *int*

   Defines the Seedlink port to accept requests. If this port
   is changed and other modules depend on it \(slarchive, processing\)
   those ports must be updated as well\!


.. confval:: filebase

   Type: *dir*

   Path to the base directory of SeedLink data files \(disk buffer\).


.. confval:: network

   Type: *string*

   Default network code. Used when a network code is omitted by a client
   in STATION request. Should be set to the network code of the majority
   of configured stations. 1 or 2 characters long, uppercase.


.. confval:: trusted

   Default: ``127.0.0.0/8``

   Type: *list:string*

   List of trusted addresses.


.. confval:: access

   Default: ``0.0.0.0/0``

   Type: *list:string*

   List of IP addresses or IP\/mask pairs \(in ipchains\/iptables syntax\)
   that can access stations. Per station access definitions
   supersede this parameter. By default any client can access
   all stations.


.. confval:: stream_check

   Default: ``true``

   Type: *boolean*

   Check start and end times of streams.


.. confval:: gap_check_pattern

   Default: ``XXXXX``

   Type: *string*

   If stream_check \= enabled, also check for gaps in all channels that
   match given pattern. Register all gaps that are larger than +\-0.5 seconds.
   gap_check_pattern \= [EBLV][HLNG][ZNE]\|S[NG][ZNE].
   Disabled to save memory.


.. confval:: gap_treshold

   Default: ``500000``

   Type: *int*

   Time difference between records \(microseconds\) above which a gap is declared.


.. confval:: window_extraction

   Default: ``true``

   Type: *boolean*

   Can be enabled or disabled. Required for slinktool option \-tw.


.. confval:: window_extraction_trusted

   Default: ``true``

   Type: *boolean*

   Same as window_extraction for trusted IP addresses.


.. confval:: websocket

   Default: ``false``

   Type: *boolean*

   Allow websocket connections.


.. confval:: websocket_trusted

   Default: ``false``

   Type: *boolean*

   Same as websocket for trusted IP addresses.


.. confval:: msrtsimul

   Default: ``false``

   Type: *boolean*

   If activated Seedlink uses the mseedfifo to read records and
   only the mseedfifo_plugin is started. This command is useful
   to playback historic data by eg msrtsimul.


.. confval:: inventory_connection

   Type: *string*

   Defines a database read connection to be used for Seedlink
   station descriptions. If no database is to be used \(the default;
   configure with \"\"\) then the station code will be used. Example:
   \"mysql:\/\/sysop:sysop\@localhost\/seiscomp\". If a remote host is
   specified, ensure that its database server is reachable from
   this computer.


.. confval:: info

   Default: ``streams``

   Type: *string*

   Info level provided to arbitrary hosts.


.. confval:: info_trusted

   Default: ``all``

   Type: *string*

   Info level provided to trusted hosts.


.. confval:: request_log

   Default: ``true``

   Type: *boolean*

   Whether requests should be logged.


.. confval:: proc_gap_warn

   Default: ``10``

   Type: *int*

   Unit: *microseconds*

   Give warning if an input channel has time gap larger than this \(microseconds\).


.. confval:: proc_gap_flush

   Default: ``100000``

   Type: *int*

   Flush streams if an input channel has time gap larger than this \(microseconds\).


.. confval:: proc_gap_reset

   Default: ``1000000``

   Type: *int*

   Reset FIR filters if an input channel has time gap larger than this \(microseconds\).


.. confval:: backfill_buffer

   Default: ``0``

   Type: *float*

   Unit: *s*

   Enable backfilling buffer for out\-of\-order records.
   This values defines its capacity in seconds.


.. confval:: seq_gap_limit

   Default: ``100000``

   Type: *int*

   Maximum allowed deviation from the sequence number of oldest packet if
   packet with requested sequence number is not found. If seq_gap_limit is
   exceeded, data flow starts from the next packet coming in, otherwise
   from the oldest packet in buffer.


.. confval:: connections

   Default: ``500``

   Type: *int*

   Total number of TCP\/IP connections allowed.


.. confval:: connections_per_ip

   Default: ``20``

   Type: *int*

   Maximum number of TCP\/IP connections per IP.


.. confval:: bytespersec

   Default: ``0``

   Type: *int*

   Unit: *B/s*

   Maximum speed per connection \(0: throttle disabled\).


.. confval:: lockfile

   Default: ``@ROOTDIR@/var/run/seedlink.pid``

   Type: *string*

   Path to lockfile to prevent multiple instances.


.. confval:: buffers

   Default: ``100``

   Type: *int*

   Size of memory buffer \(number of recent Mini\-SEED records kept in RAM\).


.. confval:: segments

   Default: ``50``

   Type: *int*

   Number of disk buffer segments \(files under <dir>\/station\/segments\/
   where <dir> is the directory given by the filebase parameter\).


.. confval:: segsize

   Default: ``1000``

   Type: *int*

   Size of one disk buffer segment in the records \(512\-byte units\).


.. confval:: blanks

   Default: ``10``

   Type: *int*

   Number of blank records to insert after the re\-scan of disk buffer
   if <dir>\/station\/buffer.xml is not found \(assuming the server
   did not terminate correctly\).


.. confval:: encoding

   Default: ``steim2``

   Type: *string*

   Encoding of Mini\-SEED records created by SeedLink. The value must be
   steim1 or steim2. If omitted, the global encoding parameter is used.


.. confval:: sequence_file_cleanup

   Default: ``0``

   Type: *int*

   Unit: *min*

   If configured with a value greater than zero then all sequence files
   created by the chain plugin are deleted which are older than X minutes
   before Seedlink is started.


.. _seedlink/mseedfifo:


mseedfifo extension
-------------------

Global options for the mseedfifo plugin


.. confval:: plugins.mseedfifo.fifo

   Type: *string*

   Path to named fifo pipe. Default:
   \$SEISCOMP_ROOT\/var\/run\/seedlink\/mseedfifo for seedlink.
   Alias modules automatically replace \"seedlink\"
   by the alias name.


.. confval:: plugins.mseedfifo.noexit

   Default: ``false``

   Type: *boolean*

   Do not exit plugin if writer closes the fifo.


.. _seedlink/q330:


q330 extension
--------------

Global options for the Q330 plugin


.. confval:: plugins.q330.udpbase

   Default: ``5500``

   Type: *int*

   UDP base port used when udp port is defined as \"auto\"


.. _seedlink/chain:


chain extension
---------------

Global options for the chain plugin


.. confval:: plugins.chain.dialupConnections

   Default: ``0``

   Type: *int*

   Defines the maximum number of concurrent dial\-up
   connections. A value of 0 does not limit the
   concurrent connections.


.. confval:: plugins.chain.loadTimeTable

   Default: ``true``

   Type: *boolean*

   If enabled load_timetable is used by the chain plugin to request
   the available time windows of each stream in the Seedlink buffer
   to discard older records.


.. _seedlink/caps:


caps extension
--------------

Global options for the CAPS plugin


.. confval:: plugins.caps.maxTimeDiff

   Default: ``86400``

   Type: *float*

   The maxmimum time difference with respect to current
   time of the end time of a received record. If
   exceeded then the end time will not be logged into
   the state file.


.. confval:: plugins.caps.inOrder

   Default: ``false``

   Type: *boolean*

   Request all records in\-order. Out\-of\-order records will
   be skipped.



Bindings Parameters
===================



.. confval:: access

   Default: ``0.0.0.0/0``

   Type: *list:string*

   List of IP addresses or IP\/mask pairs \(in ipchains\/iptables syntax\).
   Only if a client's IP address
   matches one of those the station is shown \(slinktool \-L, etc.\) and
   accessible. If omitted, the global access parameter is used.
   If the global access parameter is not set any client can access the station.


.. confval:: buffers

   Default: ``100``

   Type: *int*

   Size of memory buffer \(number of recent Mini\-SEED records kept in RAM\).


.. confval:: segments

   Default: ``50``

   Type: *int*

   Number of disk buffer segments \(files under <dir>\/station\/segments\/
   where <dir> is the directory given by the filebase parameter\).


.. confval:: segsize

   Default: ``1000``

   Type: *int*

   Size of one disk buffer segment in the records \(512\-byte units\).


.. confval:: blanks

   Default: ``10``

   Type: *int*

   Number of blank records to insert after the re\-scan of disk buffer
   if <dir>\/station\/buffer.xml is not found \(assuming the server
   did not terminate correctly\).


.. confval:: encoding

   Type: *string*

   Encoding of Mini\-SEED records created by SeedLink. The value must be
   steim1 or steim2. If omitted, the global encoding parameter is used.


.. confval:: backfill_buffer

   Default: ``0``

   Type: *float*

   Unit: *s*

   Enable backfilling buffer for out\-of\-order records when raw samples
   are transmitted. This values defines its capacity in seconds.


.. confval:: proc

   Type: *string*

   Name of the proc object uniquely defined in a seedlink template file, e.g.
   \$SEISCOMP_ROOT\/share\/templates\/seedlink\/streams_{name}.tpl.
   proc is used for processing, e.g. renaming or resampling of raw
   streams \(streams submitted by a plugin as raw samples\).
   The template file is used to generate
   \$SEISCOMP_ROOT\/var\/lib\/seedlink\/streams.xml .
   
   Example template: \$SEISCOMP_ROOT\/share\/templates\/seedlink\/streams_stream100.tpl

.. confval:: sources

   Type: *list:string*

   Defines a list of extension bindings to be used.
   Each binding can then be configured individually.

   Available identifiers: :ref:`seedlink-sources-antelope-label` :ref:`seedlink-sources-caps-label` :ref:`seedlink-sources-chain-label` :ref:`seedlink-sources-dr24-label` :ref:`seedlink-sources-echopro_3ch100hz-label` :ref:`seedlink-sources-echopro_6ch200hz-label` :ref:`seedlink-sources-edata-label` :ref:`seedlink-sources-ewexport-label` :ref:`seedlink-sources-ewexport_pasv-label` :ref:`seedlink-sources-fs_mseed-label` :ref:`seedlink-sources-gdrt-label` :ref:`seedlink-sources-gmeteo-label` :ref:`seedlink-sources-hrd24-label` :ref:`seedlink-sources-liss-label` :ref:`seedlink-sources-m24-label` :ref:`seedlink-sources-maram-label` :ref:`seedlink-sources-minilogger-label` :ref:`seedlink-sources-miscScript-label` :ref:`seedlink-sources-miscSerial-label` :ref:`seedlink-sources-mk6-label` :ref:`seedlink-sources-mppt-label` :ref:`seedlink-sources-mseedfifo-label` :ref:`seedlink-sources-mseedscan-label` :ref:`seedlink-sources-mws-label` :ref:`seedlink-sources-naqs-label` :ref:`seedlink-sources-nmxp-label` :ref:`seedlink-sources-optodas-label` :ref:`seedlink-sources-ps2400_eth-label` :ref:`seedlink-sources-q330-label` :ref:`seedlink-sources-reftek-label` :ref:`seedlink-sources-sadc-label` :ref:`seedlink-sources-scream-label` :ref:`seedlink-sources-scream_ring-label` :ref:`seedlink-sources-vaisala-label` :ref:`seedlink-sources-wago-label` :ref:`seedlink-sources-wave24-label` :ref:`seedlink-sources-win-label`

   .. code-block:: sh

      # param1 and param2 are just placeholders.
      sources = antelope, caps
      sources.antelope1.param1 = value11
      sources.antelope1.param2 = value12
      sources.caps2.param1 = value21
      sources.caps2.param2 = value22

      # To use the same binding twice, aliases must be used.
      # Aliases are created by prepending a unique name followed by a colon
      sources = antelope, antelope_2:antelope
      sources.antelope.param1 = value11
      sources.antelope.param2 = value12
      sources.antelope_2.param1 = value21
      sources.antelope_2.param2 = value22


.. _seedlink-sources-antelope-label:

antelope
--------

Antelope ORB (TCP/IP)

.. confval:: sources.antelope.select

   Default: ``*``

   Type: *string*

   Regular expression to match ORB packets, default is all
   waveform data.


.. confval:: sources.antelope.address

   Default: ``localhost``

   Type: *string*

   Hostname or IP of the Antelope ORB.


.. confval:: sources.antelope.port

   Default: ``39136``

   Type: *int*

   Port of the Antelope ORB.


.. confval:: sources.antelope.proc

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-caps-label:

caps
----

Transfers data from CAPS to SeedLink server

.. confval:: sources.caps.address

   Default: ``localhost:18002``

   Type: *string*

   CAPS URL to fetch data from, format: [[caps\|capss]:\/\/][user:pass\@]host[:port]


.. confval:: sources.caps.streams

   Default: ``*.*``

   Type: *string*

   Comma\-separated list of streams. Stream format is [LOC.CHA].
   Streams may contain wildcards


.. confval:: sources.caps.unpack

   Type: *string*

   Comma\-separated list of streams to unpack. Stream format is [LOC.CHA].
   Streams may contain wildcards. Unpacking in this context means that
   incoming data is converted to RAW data before sending
   it to SeedLink. The proc option must be set when using this option.
   For each stream there must be a corresponding entry in the proc object
   so that the raw stream can be processed by SeedLink. The name of the
   input entry must match the chanel ID, e.g., 00ENZ or ENZ.


.. confval:: sources.caps.proc

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-chain-label:

chain
-----

Seedlink server (TCP/IP)

.. confval:: sources.chain.address

   Default: ``geofon.gfz-potsdam.de``

   Type: *string*

   Hostname or IP of the Seedlink server.


.. confval:: sources.chain.port

   Default: ``18000``

   Type: *int*

   Port of the Seedlink server


.. confval:: sources.chain.selectors

   Type: *list:string*

   List of stream selectors. If left empty all available
   streams will be requested. See slinktool manpage for
   more information.


.. confval:: sources.chain.station

   Type: *string*

   Defines the remote station code if different from the inventory
   station code. Usually leave this parameter unconfigured. If
   configured and different from the inventory station code,
   the remote station code will be renamed to match the inventory
   station code.


.. confval:: sources.chain.network

   Type: *string*

   Defines the remote network code if different from the inventory
   network code. Usually leave this parameter unconfigured. If
   configured and different from the inventory network code,
   the remote network code will be renamed to match the inventory
   network code.


.. confval:: sources.chain.group

   Type: *string*

   Usually stations with the same source addresses and dialup
   options are grouped together and managed by a chain plugin
   process. Here you can define an additional group ID. Available
   placeholders are \$NET and \$STA that are replaced by the
   network code or station code. Whitespaces are replaced by
   underscores when generating chain.xml.


.. confval:: sources.chain.defaultTimingQuality

   Type: *int*

   The default timing quality is used when unpacking data that
   does not contain blockette 1001, that allows SeedLink to
   construct blockette 1001 for downsampled data.


.. confval:: sources.chain.overlapRemoval

   Type: *string*

   If overlap removal is set to \"initial\" or \"full\", then
   earlier records will be discarded \(record number is used
   in case several subsequent records have the same header time\).
   All other values are treated as \"none\". Leave this option
   unset unless you know what you are doing.


.. confval:: sources.chain.batchmode

   Default: ``true``

   Type: *boolean*

   If enabled then the chain plugin tries to subscribe for
   channels with the BATCH command which is magnitudes faster
   than the old handshake. Not all SeedLink servers support
   the BATCH mode so it needs to be turned off in case of
   problems.


.. confval:: sources.chain.dialup.enable

   Default: ``false``

   Type: *boolean*

   Enables dialup mode. Needs schedule and uptime to be
   set accordingly.


.. confval:: sources.chain.dialup.uptime

   Default: ``600``

   Type: *int*

   Unit: *s*

   Dialup uptime in seconds.


.. confval:: sources.chain.dialup.schedule

   Default: ``0,30 * * * *``

   Type: *string*

   The dialup schedula in cron format.


.. confval:: sources.chain.dialup.ifup

   Type: *string*

   An optional dialup ifup script.


.. confval:: sources.chain.dialup.ifdown

   Type: *string*

   An optional dialup ifdown script.


.. confval:: sources.chain.channels.rename

   Type: *list:string*

   Optionally rename channels. This is a comma separated list
   of strings where each item defines one mapping from source to
   destination in the format \"LOCCHA:LOCCHA\".
   Either LOC or CHA can contain wildcard characters \(question mark\)
   and the location code \(LOC\) in both identifiers is optional.
   ??HHZ:10HHZ renames all HHZ location codes to 10,
   0J???:??? renames all 0J location codes to nothing \(''\),
   HH?:EH? renames all HH channels to EH, etc.


.. confval:: sources.chain.channels.unpack

   Type: *list:string*

   Optionally unpack channels instead of sending them as
   miniseed to Seedlink. Unpacked streams can be downsampled
   by Seedlink. This is a list of strings where each item
   defines one unpack mapping  in the format \"LOCCHA:ID:1\" where
   ID can be an arbitrary channel id which must match the definition
   of a stream in streams.xml. The last \":1\" is optional and defines
   if the unpacked data should be doubled \(duplicate each sample\).
   In case rename mappings are active, LOCCHA refers to
   the final channel name after renaming.


.. _seedlink-sources-dr24-label:

dr24
----

Geotech DR24 (serial plugin)

.. confval:: sources.dr24.comport

   Default: ``/dev/data``

   Type: *string*

   Serial port.


.. confval:: sources.dr24.baudrate

   Default: ``19200``

   Type: *int*

   Baud rate.


.. confval:: sources.dr24.proc

   Default: ``dr24_20``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-echopro_3ch100hz-label:

echopro_3ch100hz
----------------

Kelunji Echo/EchoPro serial plugin (3 Ch, 200 Hz)

.. confval:: sources.echopro_3ch100hz.comport

   Default: ``/dev/ttyS0``

   Type: *string*

   Serial Port.


.. confval:: sources.echopro_3ch100hz.proc

   Default: ``echopro_100``

   Type: *string*

   Name of stream processing scheme.


.. _seedlink-sources-echopro_6ch200hz-label:

echopro_6ch200hz
----------------

Kelunji Echo/EchoPro serial plugin (6 Ch, 100 Hz)

.. confval:: sources.echopro_6ch200hz.comport

   Default: ``/dev/ttyS0``

   Type: *string*

   Serial Port.


.. confval:: sources.echopro_6ch200hz.proc

   Default: ``echopro_200``

   Type: *string*

   Name of stream processing scheme.


.. _seedlink-sources-edata-label:

edata
-----

EarthData PS6-24 (serial plugin)

.. confval:: sources.edata.comport

   Default: ``/dev/data``

   Type: *string*

   Serial port.


.. confval:: sources.edata.baudrate

   Default: ``115200``

   Type: *int*

   Baud rate.


.. confval:: sources.edata.proc

   Default: ``edata_100``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-ewexport-label:

ewexport
--------

Earthworm export server (TCP/IP)

.. confval:: sources.ewexport.address

   Type: *string*

   Hostname or IP of the Earthworm export server.


.. confval:: sources.ewexport.port

   Type: *int*

   Port of the Earthworm export server.


.. confval:: sources.ewexport.proc

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. confval:: sources.ewexport.heartbeat.message

   Default: ``alive``

   Type: *string*

   Text for heartbeat to server.


.. confval:: sources.ewexport.heartbeat.rate

   Default: ``120``

   Type: *int*

   Rate at which to expect heartbeats from server in seconds.


.. _seedlink-sources-ewexport_pasv-label:

ewexport_pasv
-------------

Earthworm passive export server (TCP/IP)

.. confval:: sources.ewexport_pasv.address

   Type: *string*

   Bind IP of the Earthworm passive export server.


.. confval:: sources.ewexport_pasv.port

   Type: *int*

   Port of the Earthworm passive export server.


.. confval:: sources.ewexport_pasv.proc

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. confval:: sources.ewexport_pasv.heartbeat.message

   Default: ``alive``

   Type: *string*

   Text for heartbeat to server.


.. confval:: sources.ewexport_pasv.heartbeat.rate

   Default: ``120``

   Type: *int*

   Rate at which to expect heartbeats from server in seconds.


.. _seedlink-sources-fs_mseed-label:

fs_mseed
--------

Mini-SEED file plugin

.. confval:: sources.fs_mseed.input_type

   Default: ``ddb``

   Type: *string*

   *No description available*

.. confval:: sources.fs_mseed.data_format

   Default: ``mseed``

   Type: *string*

   *No description available*

.. confval:: sources.fs_mseed.location

   Default: ``@ROOTDIR@/var/lib/seedlink/indata``

   Type: *path*

   *No description available*

.. confval:: sources.fs_mseed.pattern

   Type: *string*

   \"pattern\" is a POSIX extended regular expression that
   must match input file names \(useful for filtering out non\-data
   files\). For example \"BH[NEZ]\" would match any files
   that contained \"BHE\", \"BHN\" or \"BHZ\".
   If no pattern is specified all files will be processed.


.. confval:: sources.fs_mseed.scan_level

   Default: ``2``

   Type: *int*

   Look for data files at the 1st or 2nd directory level.


.. confval:: sources.fs_mseed.move_files

   Default: ``true``

   Type: *boolean*

   Move file to subdirectory \"processed\" before starting to read it.


.. confval:: sources.fs_mseed.delete_files

   Default: ``false``

   Type: *boolean*

   Delete processed files.


.. confval:: sources.fs_mseed.use_timestamp

   Default: ``false``

   Type: *boolean*

   Look only for files that are newer than the last file processed.


.. confval:: sources.fs_mseed.timestamp_file

   Default: ``@ROOTDIR@/var/run/seedlink/fs_mseed.tim``

   Type: *path*

   Timestamp file is used to save the modification time of the last
   file processed.


.. confval:: sources.fs_mseed.polltime

   Default: ``10``

   Type: *int*

   Unit: *s*

   New files are searched for every \"polltime\" seconds.


.. confval:: sources.fs_mseed.delay

   Default: ``30``

   Type: *int*

   Unit: *s*

   Wait until the file is at least n seconds old, before trying to
   read it.


.. confval:: sources.fs_mseed.verbosity

   Default: ``1``

   Type: *int*

   Tells how many debugging messages are printed.


.. confval:: sources.fs_mseed.zero_sample_limit

   Default: ``10``

   Type: *int*

   Maximum number of consecutive zeros in datastream before data
   gap will be declared \(\-1 \= disabled\).


.. confval:: sources.fs_mseed.default_timing_quality

   Default: ``-1``

   Type: *int*

   If timing quality is not available, use this value as default
   \(\-1 \= disabled\).


.. confval:: sources.fs_mseed.proc

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. note::
   **sources.fs_mseed.channels.\***
   *Channel definitions (Mini-SEED streams are defined in streams.xml,*
   *look for <proc name="generic_3x50">).*



.. note::

   **sources.fs_mseed.channels.$name.\***
   $name is a placeholder for the name to be used.


.. confval:: sources.fs_mseed.channels.$name.source_id

   Type: *string*

   *No description available*

.. _seedlink-sources-gdrt-label:

gdrt
----

GDRT (GFZ Displacement Real-Time) is the data format of the Real-time Precise
Point Positioning (RTPPP) provided by the Helmholtz Centre Potsdam – GFZ German
Research Centre for Geosciences. This development was supported by the German
Federal Ministry of Education and Research (BMBF) within the EWRICA project.

The GDRT plugin is a SeedLink plugin that converts GDRT UDP messages to
miniSEED channels according to the following table:

+-------+---------------------+----------------+---------------------------------------+-------------------+
| Index | Field name          | Format         | Description                           | miniSEED channel  |
+=======+=====================+================+=======================================+===================+
|   1   | Start of message    | character(1)   | A fixed character '>'                 |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|   2   | Station ID          | character(4)   | GDRT station ID                       |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|   3   | Epoch time          | integer(4)     | UTC time (year, month, day, hour,     |                   |
|       |                     | integer(2)     | minute, second)                       |                   |
|       |                     | integer(2)     |                                       |                   |
|       |                     | integer(2)     |                                       |                   |
|       |                     | integer(2)     |                                       |                   |
|       |                     | double(%5.2f)  |                                       |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|   4   | Solution type       | integer(2)     | 0: Single point positioning (SPP)     |     LBS           |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | +1: Precise point positioning (PPP)   |                   |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | +2: Precise point positioning         |                   |
|       |                     |                | ambiguity resolution (PPP-AR)         |                   |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | +4: Precise point positioning         |                   |
|       |                     |                | regional augmentation (PPP-RA)        |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|   5   | Observation type    | integer(2)     | +1: GPS                               |     LBO           |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | +2: GLONASS                           |                   |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | +4: Galileo                           |                   |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | +8: BDS                               |                   |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | +16: Seismic data                     |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|   6   | Positioning type    | integer(2)     | 1: Coordinate fixed solution          |     LBP           |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | 2: Static solution                    |                   |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | 3: Kinematic solution                 |                   |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | 4: Dynamic solution                   |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|   7   | Processing type     | integer(2)     | 1: Real-time solution                 |     LBT           |
|       |                     |                +---------------------------------------+                   |
|       |                     |                | 2: Post-processing solution           |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|   8   | Ratio of            | double(%6.2f)  | The ratio value of PPP ambiguty       |     LBR (×100)    |
|       | ambiguity fix       |                | fixing (larger value means more       |                   |
|       |                     |                | reliable ambiguity fixing)            |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|   9   | Number of           | integer(2)     | Number of satellites used for the     |     LBC (summed)  |
|       | satellites          | integer(2)     | solution (GPS, GLONASS, Galileo, BDS) |                   |
|       |                     | integer(2)     |                                       |                   |
|       |                     | integer(2)     |                                       |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|  10   | Coordinate X        | double(%14.4f) | Coordinates X, Y, and Z in the Earth  |     LBX           |
+-------+---------------------+----------------+ Centered Earth Fixed (ECEF)           +-------------------+
|  11   | Coordinate Y        | double(%14.4f) | coordinate system in meters           |     LBY           |
+-------+---------------------+----------------+                                       +-------------------+
|  12   | Coordinate Z        | double(%14.4f) |                                       |     LBZ           |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|  13   | Variance of         | double(%14.4f) | Variance of coordinates (m²)          |     LB1           |
|       | coordinate X        |                |                                       |                   |
+-------+---------------------+----------------+                                       +-------------------+
|  14   | Variance of         | double(%14.4f) |                                       |     LB2           |
|       | coordinate Y        |                |                                       |                   |
+-------+---------------------+----------------+                                       +-------------------+
|  15   | Variance of         | double(%14.4f) |                                       |     LB3           |
|       | coordinate Z        |                |                                       |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|  16   | Covariance of       | double(%14.4f) | Covariance of coordinates (m²)        |     LB4           |
|       | coordinates X and Y |                |                                       |                   |
+-------+---------------------+----------------+                                       +-------------------+
|  17   | Covariance of       | double(%14.4f) |                                       |     LB5           |
|       | coordinates X and Z |                |                                       |                   |
+-------+---------------------+----------------+                                       +-------------------+
|  18   | Covariance of       | double(%14.4f) |                                       |     LB6           |
|       | coordinates Y and Z |                |                                       |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|  19   | Correction          | string(4)      | Name of orbit/clock/upd product and   |                   |
|       | information         |                | name of three used reference stations |                   |
|       |                     |                | in PPP-RA, separated with '+'         |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+
|  20   | End of message      | character(1)   | A fixed character '!'                 |                   |
+-------+---------------------+----------------+---------------------------------------+-------------------+

.. confval:: sources.gdrt.station

   Type: *string*

   GDRT station code.


.. confval:: sources.gdrt.locationCode

   Type: *string*

   Sensor location code.


.. confval:: sources.gdrt.sampleRate

   Default: ``1.0``

   Type: *double*

   Unit: *Hz*

   Sample rate in Hz.


.. confval:: sources.gdrt.udpport

   Default: ``9999``

   Type: *int*

   UDP port for receiving GDRT messages. By default port 9999 will be used.


.. _seedlink-sources-gmeteo-label:

gmeteo
------

GFZ meteo protocol (serial plugin)

.. confval:: sources.gmeteo.comport

   Default: ``/dev/meteo``

   Type: *string*

   Serial port.


.. confval:: sources.gmeteo.baudrate

   Default: ``19200``

   Type: *int*

   Baud rate.


.. confval:: sources.gmeteo.proc

   Default: ``gmeteo``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-hrd24-label:

hrd24
-----

Nanometrics HRD24 (serial plugin)

.. confval:: sources.hrd24.comport

   Default: ``/dev/data``

   Type: *string*

   Serial port.


.. confval:: sources.hrd24.baudrate

   Default: ``19200``

   Type: *int*

   Baud rate.


.. confval:: sources.hrd24.bundles

   Default: ``59``

   Type: *int*

   Number of bundles in packet.


.. confval:: sources.hrd24.proc

   Default: ``hrd24_100``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-liss-label:

liss
----

LISS server (TCP/IP)

.. confval:: sources.liss.address

   Default: ``"$STATION.$NET.liss.org"``

   Type: *string*

   Hostname or IP of the LISS server.


.. confval:: sources.liss.port

   Default: ``4000``

   Type: *int*

   Port of the LISS server


.. _seedlink-sources-m24-label:

m24
---

Lennartz M24

.. confval:: sources.m24.comport

   Default: ``/dev/data``

   Type: *string*

   Serial port.


.. confval:: sources.m24.baudrate

   Default: ``19200``

   Type: *int*

   Baud rate.


.. confval:: sources.m24.time_offset

   Default: ``0``

   Type: *int*

   Time offset in usecs.


.. confval:: sources.m24.proc

   Default: ``m24_100``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-maram-label:

maram
-----

maRam Weatherstation V1 (serial plugin)

.. confval:: sources.maram.comport

   Default: ``/dev/meteo``

   Type: *string*

   Serial port.


.. confval:: sources.maram.baudrate

   Default: ``9600``

   Type: *int*

   Baud rate.


.. confval:: sources.maram.proc

   Default: ``maram``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-minilogger-label:

minilogger
----------

SEP064 USB Seismometer Interface

.. confval:: sources.minilogger.port_path_hint

   Default: ``/dev/ttyACM0``

   Type: *string*

   Device path and name of port for USB Seismometer Interface.
   If the specified port cannot be opened or is not a USB Seismometer
   Interface device, all available ports will be scanned.


.. confval:: sources.minilogger.allow_set_interface_attribs

   Default: ``1``

   Type: *int*

   Allow low\-level setting of port interface attributes when available
   ports are scanned to find a USB Seismometer Interface device, 0\=NO, 1\=Yes.
   Setting 1 \(\=Yes\) may help successful detection and correct reading of the
   USB Seismometer Interface device, particularly for the RasberryPi, but can
   have adverse effects on other devices, terminals, etc. open on the system.


.. confval:: sources.minilogger.mswrite_header_sample_rate

   Default: ``-1``

   Type: *double*

   Sets a fixed sample rate to report in the miniseed file header.
   The default \(\-1\) sets an estimated sample rate based on recent packet start
   times. This estimated sample rate will vary slightly over time, potentially
   producing errors in some software when reading the miniseed files.
   See also: nominal_sample_rate


.. confval:: sources.minilogger.mswrite_data_encoding_type

   Default: ``STEIM2``

   Type: *string*

   SEED data encoding type for writing miniseed files.
   Supported values are: INT16, INT32, STEIM1, STEIM2


.. confval:: sources.minilogger.channel_prefix

   Default: ``SH``

   Type: *string*

   The initial letters to set for the miniseed header 'channel', will be
   prepended to the component.


.. confval:: sources.minilogger.component

   Default: ``Z``

   Type: *string*

   Component of seismogram, one of Z, N or E.


.. confval:: sources.minilogger.do_settings_sep064

   Default: ``1``

   Type: *int*

   Set sample rate and gain on SEP 064 device, 0\=NO, 1\=Yes.


.. confval:: sources.minilogger.nominal_sample_rate

   Default: ``80``

   Type: *int*

   Nominal sample rate per second, one of 20, 40 or 80.


.. confval:: sources.minilogger.nominal_gain

   Default: ``4``

   Type: *int*

   Nominal gain, one of 1, 2 or 4.


.. _seedlink-sources-miscScript-label:

miscScript
----------

Misceallaneous script

.. confval:: sources.miscScript.script_path

   Type: *string*

   Script path.


.. confval:: sources.miscScript.script_args

   Type: *string*

   Script arguments.


.. confval:: sources.miscScript.proc

   Default: ``auto``

   Type: *string*

   Name of the proc object used for channel naming \(and eventually down sampling\). If this field is left to default \(auto\), a basic proc \(without decimation\) will be automatically generated.


.. confval:: sources.miscScript.channels

   Default: ``HHZ,HHN,HHE``

   Type: *string*

   Names of the channels. These names are only used if you choose to automatically generate the proc. Nevertheless, even if you are not using the auto proc, it is important to declare correctly this list as the number of channels is used to size the internal plugin's buffers. If you do not want seedlink to use one of the channels, replace it names with \"none\". Example : 01HHZ,none,none,02HHZ,HHE,HHN


.. confval:: sources.miscScript.sample_frequency

   Default: ``1``

   Type: *string*

   Sampling frequency. Must be integer or a fraction of integers.


.. confval:: sources.miscScript.flush_period

   Default: ``0``

   Type: *int*

   This parameter aims at enforcing the sending of seedlink data blocks \(512bytes\) even if they are not yet full. 0 means no enforcing.


.. _seedlink-sources-miscSerial-label:

miscSerial
----------

Miscellaneous ASCII serial Plugin (serial plugin)

.. confval:: sources.miscSerial.comport

   Default: ``/dev/data``

   Type: *string*

   Serial port.


.. confval:: sources.miscSerial.baudrate

   Default: ``9600``

   Type: *int*

   Baud rate.


.. confval:: sources.miscSerial.proc

   Default: ``auto``

   Type: *string*

   Name of the proc object used for channel naming \(and eventually down sampling\). If this field is left to default \(auto\), a basic proc \(without decimation\) will be automatically generated.


.. confval:: sources.miscSerial.channels

   Default: ``HHZ,HHN,HHE``

   Type: *string*

   Names of the channels. These names are only used if you choose to automatically generate the proc. Nevertheless, even if you are not using the auto proc, it is important to declare correctly this list as the number of channels is used to size the internal plugin's buffers. If you do not want seedlink to use one of the channels, replace it names with \"none\". Example : 01HHZ,none,none,02HHZ,HHE,HHN


.. confval:: sources.miscSerial.sample_frequency

   Default: ``1``

   Type: *string*

   Sampling frequency. Must be integer or a fraction of integers.


.. confval:: sources.miscSerial.flush_period

   Default: ``0``

   Type: *int*

   This parameter aims at enforcing the sending of seedlink data blocks \(512bytes, even if they are not yet full. 0 means no enforcing.


.. confval:: sources.miscSerial.serial_clock_period

   Default: ``0``

   Type: *int*

   If this parameter is not 0, a date frame \(\"YYYY,mm,dd hh:mm:ss\\n\"\) will be send on serial port every serial_clock_period seconds.


.. _seedlink-sources-mk6-label:

mk6
---

MK6

.. confval:: sources.mk6.proc

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-mppt-label:

mppt
----

SunSaver MPPT via Modbus TCP/IP

.. confval:: sources.mppt.address

   Default: ``localhost``

   Type: *string*

   Hostname or IP.


.. confval:: sources.mppt.port

   Default: ``502``

   Type: *int*

   TCP port.


.. confval:: sources.mppt.unit_id

   Default: ``1``

   Type: *int*

   Modbus unit identifier.


.. confval:: sources.mppt.channels

   Type: *list:string*

   List of channels.


.. confval:: sources.mppt.proc

   Default: ``mppt``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-mseedfifo-label:

mseedfifo
---------

mseedfifo_plugin

.. _seedlink-sources-mseedscan-label:

mseedscan
---------

MseedScan transfers new or changed miniSEED files from a directory
to a SeedLink server. It recursively a directory
structures and continuously checks for file modifications. The files
are presumed to be composed of Mini-SEED records of 512 Bytes. As the
files are appended or created the plugin will feed the new records to
the controlling SeedLink server.

.. confval:: sources.mseedscan.dir

   Type: *string*

   Directory to scan.


.. _seedlink-sources-mws-label:

mws
---

MWS (serial plugin)

.. confval:: sources.mws.comport

   Default: ``/dev/weatherstation``

   Type: *string*

   Serial port.


.. confval:: sources.mws.baudrate

   Default: ``19200``

   Type: *int*

   Baud rate.


.. confval:: sources.mws.proc

   Default: ``mws``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-naqs-label:

naqs
----

NAQS (TCP/IP)

.. confval:: sources.naqs.address

   Default: ``localhost``

   Type: *string*

   Address of server, required.


.. confval:: sources.naqs.port

   Default: ``28000``

   Type: *int*

   Specify the NAQS control\/data port.


.. confval:: sources.naqs.proc

   Default: ``naqs_bb40_sm100``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-nmxp-label:

nmxp
----

NAQS (TCP/IP) with nmxptool. nmxptool is not part of SeisComP and needs to be installed
under $INSTALLDIR/share/plugins/seedlink/.

.. confval:: sources.nmxp.address

   Default: ``idahub.ucsd.edu``

   Type: *string*

   Hostname or IP of the NAQS server.


.. confval:: sources.nmxp.port

   Default: ``28000``

   Type: *int*

   TCP port of the NAQS server.


.. confval:: sources.nmxp.max_latency

   Default: ``300``

   Type: *int*

   Max latency in seconds \(time to wait for missing packets\).


.. confval:: sources.nmxp.short_term_completion

   Default: ``-1``

   Type: *int*

   Short\-Term\-Completion \(default \-1\).
   
   \-1 is for Raw Stream, no Short\-Term\-Completion.
   Packets contain compressed data.
   
   0 decompressed packets are received in chronological order without
   waiting for missing packets.
   
   [1..300] decompressed packets are received in chronological order
   but waiting for missing packets at most SECs seconds. This requires
   NaqsServer version greater than 1.90.


.. confval:: sources.nmxp.additional_options

   Type: *string*

   Defines additional options passed to nmxptool.


.. confval:: sources.nmxp.proc

   Default: ``naqs_bb40_sm100``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-optodas-label:

optodas
-------

OptoDAS interrogator via ZeroMQ

.. confval:: sources.optodas.address

   Default: ``tcp://localhost:3333``

   Type: *string*

   ZeroMQ address.


.. confval:: sources.optodas.sampleRate

   Default: ``100``

   Type: *int*

   Sample rate.


.. confval:: sources.optodas.gain

   Default: ``1.0``

   Type: *double*

   Gain.


.. confval:: sources.optodas.networkCode

   Default: ``XX``

   Type: *string*

   Network code.


.. confval:: sources.optodas.stationCode

   Default: ``{channel:05d}``

   Type: *string*

   Station code template.


.. confval:: sources.optodas.locationCode

   Type: *string*

   Location code.


.. confval:: sources.optodas.channelCode

   Default: ``HSF``

   Type: *string*

   Channel code.


.. confval:: sources.optodas.proc

   Default: ``auto``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-ps2400_eth-label:

ps2400_eth
----------

The ps2400_eth plug-in fetches data from a Earth Data PS2400/PS6-24
digitizer (firmware >= 2.23) using TCP/IP. Other configurable parameters
are in $SEISCOMP_ROOT/share/templates/seedlink/ps2400_eth/plugins.ini.tpl.

.. confval:: sources.ps2400_eth.address

   Default: ``127.0.0.1``

   Type: *string*

   IP of the Earth Data PS2400\/PS6\-24 digitizer.


.. confval:: sources.ps2400_eth.port

   Default: ``1411``

   Type: *int*

   Port of the Earth Data PS2400\/PS6\-24 digitizer.


.. confval:: sources.ps2400_eth.proc

   Default: ``ps2400_eth_edata_100``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-q330-label:

q330
----

Quanterra Q330 (UDP/IP)

.. confval:: sources.q330.address

   Type: *string*

   Hostname or IP.


.. confval:: sources.q330.port

   Default: ``5330``

   Type: *int*

   Source port to receive data packets.


.. confval:: sources.q330.udpport

   Default: ``auto``

   Type: *string*

   UDP port.


.. confval:: sources.q330.proc

   Type: *string*

   Name of the proc object uniquely defined in a template file of
   the q330 plugin e.g.
   \$SEISCOMP_ROOT\/share\/templates\/seedlink\/q330\/streams_{name}.tpl.
   proc is used for processing, e.g. renaming or resampling of raw
   streams \(streams submitted by a plugin as raw samples\).
   The template file is used to generate
   \$SEISCOMP_ROOT\/var\/lib\/seedlink\/streams.xml .
   
   Example template: \$SEISCOMP_ROOT\/share\/templates\/seedlink\/q330\/streams_q330_100.tpl
   
   If proc is not given, the streams are taken as provided by the DAS.


.. confval:: sources.q330.slot

   Default: ``1``

   Type: *int*

   Q330 dataport number \(1\-4\).


.. confval:: sources.q330.serial

   Default: ``0x0100000123456789``

   Type: *string*

   Q330 serial number \(with 0x prefix\).


.. confval:: sources.q330.auth

   Default: ``0x00``

   Type: *string*

   Q330 auth code \(with 0x prefix\).


.. _seedlink-sources-reftek-label:

reftek
------

RefTek RTPD (TCP/IP)

.. confval:: sources.reftek.address

   Default: ``127.0.0.1``

   Type: *string*

   Hostname or IP of the RTPD server.


.. confval:: sources.reftek.port

   Default: ``2543``

   Type: *int*

   Port of the RTPD server.


.. confval:: sources.reftek.map

   Type: *string*

   Defines an alternative unit mapping file. The default file
   is in \$INSTALLDIR\/var\/lib\/seedlink\/reftek2sl.map. If
   this path is not an absolute path it will treated as relative
   path to \$INSTALLDIR\/var\/lib\/seedlink. The map file is used
   if the unit is not explictly given in the binding. Each line
   in the file is one mapping from a unit to a station name. The
   first column is the unit id e.g. 91F3 and the second column
   the Seedlink station name e.g. ABCD.


.. confval:: sources.reftek.unit

   Default: ``91F3``

   Type: *string*

   The unit id.


.. confval:: sources.reftek.proc

   Default: ``reftek``

   Type: *string*

   Name of the proc object uniquely defined in a template file of
   the reftek plugin e.g.
   \$SEISCOMP_ROOT\/share\/templates\/seedlink\/reftek\/streams_{name}.tpl.
   proc is used for processing, e.g. renaming or resampling of raw
   streams \(streams submitted by a plugin as raw samples\).
   The template file is used to generate
   \$SEISCOMP_ROOT\/var\/lib\/seedlink\/streams.xml .
   
   Example template: \$SEISCOMP_ROOT\/share\/templates\/seedlink\/reftek\/streams_reftek.tpl


.. confval:: sources.reftek.timeout

   Default: ``60``

   Type: *int*

   Unit: *s*

   Timeout length in seconds. If no data is received from a Reftek
   unit during this period, the plugin assumes that the unit is
   disconnected.


.. confval:: sources.reftek.default_tq

   Default: ``40``

   Type: *int*

   Default timing quality in percents. This value will be used when
   no timing quality information is available. Can be \-1 to omit
   the blockette 1001 altogether.


.. confval:: sources.reftek.unlock_tq

   Default: ``10``

   Type: *int*

   Timing quality to use when GPS is out of lock.


.. confval:: sources.reftek.log_soh

   Default: ``true``

   Type: *boolean*

   Send Reftek state\-of\-health data as Mini\-SEED LOG stream.


.. _seedlink-sources-sadc-label:

sadc
----

SADC10/18/20/30 (serial plugin)

.. confval:: sources.sadc.comport

   Default: ``/dev/data``

   Type: *string*

   Serial port.


.. confval:: sources.sadc.baudrate

   Default: ``38400``

   Type: *int*

   Baud rate.


.. confval:: sources.sadc.pctime

   Default: ``0``

   Type: *int*

   Use PC time for initial time setting.


.. confval:: sources.sadc.proc

   Default: ``sadc_100``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-scream-label:

scream
------

SCREAM! server (TCP/UDP/IP) plugin that receives data via
the SCREAM! protocol and sends raw data to Seedlink. The mapping
from SCREAM! channel id's to Seedlink net.sta.loc.cha is defined
in $INSTALLDIR/var/lib/seedlink/config/scream2sl.map if not
specified otherwise (parameter 'map').

.. confval:: sources.scream.address

   Default: ``127.0.0.1``

   Type: *string*

   IP of the SCREAM\! server.


.. confval:: sources.scream.port

   Default: ``1567``

   Type: *int*

   Port of the SCREAM\!


.. confval:: sources.scream.tcp

   Default: ``false``

   Type: *boolean*

   Enables TCP\/IP mode. By default the data is received via
   UDP but TCP is used instead. This needs a propert
   configuration of the SCREAM\! server to accept TCP
   connections.


.. confval:: sources.scream.proc

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. confval:: sources.scream.map

   Type: *string*

   Defines an alternative stream mapping file. The default file
   is in \$INSTALLDIR\/var\/lib\/seedlink\/scream2sl.map. If
   this path is not an absolute path it will treated as relative
   path to \$INSTALLDIR\/var\/lib\/seedlink.


.. confval:: sources.scream.channels

   Type: *list:string*

   Defines the channel mappings \(ID:channel, ...\) from SCREAM\!
   to the channel code used in streams.xml. If no channel mappings
   are given, the map file defined in map \(either default or custom\)
   is used.


.. _seedlink-sources-scream_ring-label:

scream_ring
-----------

SCREAM! server plugin that receives data via
the SCREAM! protocol and sends raw data to Seedlink. The mapping
from SCREAM! channel id's to Seedlink net.sta.loc.cha is defined
in $INSTALLDIR/var/lib/seedlink/config/scream2sl.map if not
specified otherwise (parameter 'map'). This is the second revision
of the scream plugin which supports buffering for short-term
completeness.

.. confval:: sources.scream_ring.address

   Default: ``127.0.0.1``

   Type: *string*

   IP of the SCREAM\! server.


.. confval:: sources.scream_ring.port

   Default: ``1567``

   Type: *int*

   Port of the SCREAM\!


.. confval:: sources.scream_ring.tcp

   Default: ``false``

   Type: *boolean*

   Enables TCP\/IP mode. By default the data is received via
   UDP but TCP is used instead. This needs a propert
   configuration of the SCREAM\! server to accept TCP
   connections.


.. confval:: sources.scream_ring.tcpport

   Default: ``1567``

   Type: *int*

   TCP request port of the SCREAM\! for backfill requests


.. confval:: sources.scream_ring.proc

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. confval:: sources.scream_ring.rsize

   Default: ``1000``

   Type: *int*

   Size of the stream ringbuffers \(small values are useful for RT systems;
   large values for decreasing gaps\).


.. confval:: sources.scream_ring.map

   Type: *string*

   Defines an alternative stream mapping file. The default file
   is in \$INSTALLDIR\/var\/lib\/seedlink\/scream2sl.map. If
   this path is not an absolute path it will treated as relative
   path to \$INSTALLDIR\/var\/lib\/seedlink.


.. confval:: sources.scream_ring.channels

   Type: *list:string*

   Defines the channel mappings \(ID:channel, ...\) from SCREAM\!
   to the channel code used in streams.xml. If no channel mappings
   are given, the map file defined in map \(either default or custom\)
   is used.


.. _seedlink-sources-vaisala-label:

vaisala
-------

Vaisala ASCII protocol (serial plugin)

.. confval:: sources.vaisala.comport

   Default: ``/dev/weatherstation``

   Type: *string*

   Serial port.


.. confval:: sources.vaisala.baudrate

   Default: ``19200``

   Type: *int*

   Baud rate.


.. confval:: sources.vaisala.proc

   Default: ``vaisala``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-wago-label:

wago
----

WAGO Controller (T-Elektronik)

.. confval:: sources.wago.address

   Type: *string*

   Hostname or IP.


.. confval:: sources.wago.port

   Default: ``502``

   Type: *int*

   TCP port.


.. confval:: sources.wago.channels

   Type: *list:string*

   List of channels.


.. confval:: sources.wago.proc

   Default: ``wago``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-wave24-label:

wave24
------

Wave24

.. confval:: sources.wave24.comport

   Default: ``/dev/data``

   Type: *string*

   Serial port.


.. confval:: sources.wave24.baudrate

   Default: ``57600``

   Type: *int*

   Baud rate.


.. confval:: sources.wave24.proc

   Default: ``wave24bb``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


.. _seedlink-sources-win-label:

win
---

WIN server

.. confval:: sources.win.udpport

   Default: ``18000``

   Type: *int*

   UDP port to receive data packets.


.. confval:: sources.win.map

   Type: *string*

   Defines an alternative stream mapping file. The default file
   is in \$INSTALLDIR\/var\/lib\/seedlink\/win2sl.map. If
   this path is not an absolute path it will treated as relative
   path to \$INSTALLDIR\/var\/lib\/seedlink.


.. confval:: sources.win.channels

   Type: *list:string*

   List of channels \(hexID:name, ...\). The name can either be a single
   channel name or a combination of station and channel separated by
   a whitespace, e.g. \"ABCD BHZ\". If no station name is given,
   e.g. only BHZ is specified, the name of the station the plugin bound to
   is used. The definition of a station name is important if the plugin
   configuration is used as a profile and assigned to multiple stations.
   In this case a mapping file would be the more appropriate solution.
   
   If no channel mappings are given, the map file defined in map
   \(either default or custom\) is used.


.. confval:: sources.win.proc

   Default: ``win``

   Type: *string*

   Name of the proc object \(defined in streams.xml\); used for processing
   raw streams \(streams submitted by a plugin as raw samples\).


