odin-detector/odin-data

View on GitHub
docs/user/explanations/frame-receiver.md

Summary

Maintainability
Test Coverage
# FrameReceiver

## Commandline Interface

The frameReceiver is a C++ compiled application and is configured by a combination of
command-line options and equivalent parameters stored in an INI-formatted configuration
file. The command-line options take precedence over the configuration file if specified.
The options and their default values can be viewed by invoking the `--help` option:

    $ bin/frameReceiver --help
    usage: frameReceiver [options]

    Generic options:
      -h [ --help ]         Print this help message
      -v [ --version ]      Print program version string
      -c [ --config ] arg   Specify program configuration file
    Configuration options:
      -d [ --debug-level ] arg (=0)         Set the debug level
      -n [ --node ] arg (=1)                Set the frame receiver node ID
      -l [ --logconfig ] arg                Set the log4cxx logging configuration
                                            file
      -m [ --maxmem ] arg (=1048576)        Set the maximum amount of shared memory
                                            to allocate for frame buffers
      -t [ --decodertype ] arg (=unknown)   Set the decoder type to to handle data
                                            reception
      --path arg (=/home/gnx91527/work/tristan/odin-data/build_name/lib/)
                                            Path to load the decoder library from
      --rxtype arg (=udp)                   Set the interface to use for receiving
                                            frame data (udp or zmq)
      -p [ --port ] arg (=8989,8990)        Set the port to receive frame data on
      -i [ --ipaddress ] arg (=0.0.0.0)     Set the IP address of the interface to
                                            receive frame data on
      --sharedbuf arg (=FrameReceiverBuffer)
                                            Set the name of the shared memory frame
                                            buffer
      --frametimeout arg (=1000)            Set the incomplete frame timeout in ms
      -f [ --frames ] arg (=0)              Set the number of frames to receive
                                            before terminating
      --packetlog arg (=0)                  Enable logging of packet diagnostics to
                                            file
      --rxbuffer arg (=30000000)            Set UDP receive buffer size
      --iothreads arg (=1)                  Set number of IPC channel IO threads
      --ctrl arg (=tcp://*:5000)            Set the control channel endpoint
      --ready arg (=tcp://*:5001)           Set the frame ready channel endpoint
      --release arg (=tcp://*:5002)         Set the frame release channel endpoint
      -j [ --json_file ] arg                Path to a JSON configuration file to
                                            submit to the application


The meaning of the configuration options are as follows:

* `-h` or `--help`

  Print the help message shown above.

* `-v` or `--version`

  Print the program version string (to be implemented).

* `-c` or `--config`

  Specify the program configuration file to be loaded.

* `-d` or `--debug`

  Specify the debug level. Increasing the value increases the verbosity of the debug
  output.

* `-n` or `--node`

  Set the frame receiver node ID. Identifies the node in a multi-receiver system.

* `-l` or `--logconfig`

  Set the log4cxx logging configuration file to use, which configures the format and
  destination    of logging output from the application. See the README.md file in the
  `config` directory for more information.

* `-m` or `--maxmem`

  Set the maximum amount of shared memory to allocate for frame buffers. This memory is
  where received frames are stored and handed off for processing by e.g. the
  FrameProcessor.

* `-s` or `--sensortype`

  Set the sensor type to receive frame data from. This a string parameter describing
  which type of data the receiver should expect. Currently only a type of
  `percivalemulator` is supported.

* `-p` or `--port`

  Set the port(s) to receive frame data on, specified as a comma-separated list, e.g.
  `8989,8990`.

* `-i`  or `--ipaddress`

  Set the the IP address to listen for data on. The default value of `0.0.0.0` listens
  on all available network interfaces.

* `--sharedbuf`

  Set the name of the shared memory frame buffer to use. Needs to match the name used
  by the downstream processing task, e.g. the frameProcessor.

* `--frametimeout`

  Set the timeout in milliseconds for releasing incomplete frames (i.e. those missing
  packets) to the downtream processing task.

* `-f` or `--frames`

  Set the number of frames to receive before terminating. The frameReceiver will wait
  for those frames to be released by the processing task before terminating. The
  default value of 0 means run indefinitely.

* `--packetlog`

  Set to a non-zero value to enable logging of packet diagnostics to a separate log
  file, whose format and destination are configured in the logging configuration file.

  > WARNING: Turning this option on will produce large quantities of output and
  > significantly impact on the performance of the frameReceiver.

* `--rxbuffer`

  Set UDP receive buffer size in bytes.

An example configuration file `fr_test.config` i.s available in the `config` directory.
Typical invocation of the frameReceiver in a test would be as follows:

    bin/frameReceiver --config test_config/fr_test.config --logconfig test_config/fr_log4cxx.xml --debug 2 --frames 3