SKA Telescope Dish LMC

Dish LMC diagram Documentation Status

Dish LMC Software Overview

Dish LMC is the monitoring and control (M&C) system for the SKA MID Dish of the Square Kilometer Array (SKA)


The software is curently being evaluated against the expected behaviour in the ICD against AA0.5. BDD tests covering basic SPFRx control have been added to perform this evaluation. A decision will be made about the current state of the project afterwards. The options available will be either to start over with a new implementation in Python or fix the current implementation to conform the SKA standards, expected behaviour as documented in the ICD and finally, add unit tests across the various modules.


The software was tested on the following OS:

  • Ubuntu 14.04, 16.04

  • Centos 7

Due to problems encountered in Centos with the Tango archiver it is recommended to use Ubuntu.


Install the project dependencies:

Make sure you have set the following environment variables to the external library installation dirs











Add also the following paths to the PKG_CONFIG_PATH environment var:

  • $TANGO_ROOT/lib/pkgconfig

  • $OMNIORB_ROOT/lib/pkgconfig

  • $ZMQ_ROOT/lib/pkgconfig

  • $LOG4CXX_ROOT/lib/pkgconfig

  • $PUGIXML_ROOT/lib/pkgconfig

To generate the documentation you must install:

Build and install

The project makes use of the cmake build system. To build and install the project follow these steps:

  • Clone this repository into your local $SOURCE_DIR
    git clone $SOURCE_DIR

  • Synchronize cmake modules in $SOURCE_DIR
    git submodule sync
    git submodule update --init

  • Create the build and install directories: $BUILD_DIR, $INSTALL_DIR

    NB: Don’t build the project in the same source directory! Keep build and install files separated!

  • In the build directory:
    make install

If external libraries are correctly installed and configured cmake should find all needed include dirs and libraries used to build the project.
NB: With recent BOOST versions FindBoost.cmake was observed to fail.
If the project build and install step are performed successfully the following directories are generated in your installation directory:

  • include: headers files

  • lib: shared libraries

  • bin: binary files (e.g. device servers)

Documentation generation

To generate the documentation enter the build directory and type:

  • make doc

  • make install (to install doc files in the install directory share/docs)

NB: make doc is using python3. This was observed to work for the Doxygen part but fails on generating the documentation for python devices if pytango is linked with libboost-python (created with python2). Solved by compiled doc with libboost-python (created with python3) and pytango (>=9.3.1)


LMC Tango devices can be registered and configured in the TangoDB manually (e.g. using Jive) or programmatically using a configuration script (provided in the script directory) and a configuration file (an example is provided in the config directory). Automated configuration is based on the Ansible roles provided in this repository. Please ensure that:

  • You have Ansible installed

  • You have pytango installed

  • You have set the following environment variables in your system: MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, TANGO_HOST

To run LMC configuration from a configuration file config.json do:

  • --config=config.json

This configuration script registers the LMC devices in the TangoDB (assuming running in locahost) and sets configuration options (device properties, forwarded device properties) according to the settings given in the configuration file. Default values are used for options which are not present in the configuration file.

Tango Device Servers documentation

These are all the Tango Device Servers currently included in the project:

These devices allow to test main dish control monitoring and control functionalities using master device. Other devices forming part of the Dish Control system (e.g. alarm system or archiver) will be uploaded in the repository in the future.


Device: DishLogger





Indices and tables