Skip to content

Generic data-driven device simulator generation for PyTango

License

Notifications You must be signed in to change notification settings

ska-sa/tango-simlib

Repository files navigation

tango-simlib: Easily generate TANGO device simulators

Main website: http://tango-simlib.readthedocs.io

Introduction

tango-simlib is a library that aids the data-driven development of TANGO device simulators. It aims to make it easy to develop basic simulators while making it possible to implement more complex simulators. In addition to the simulated device interface, a separate TANGO simulation-control interface is generated, allowing the simulator to be manipulated via a back-channel to simulate e.g. failure conditions on the simulated device interface.

Using only the basic TANGO interface description captured via a POGO generated XMI file, a basic simulator with randomly varying attributes and no-op command handlers can be generated with no further coding. Attribute simulation parameters and simple command behaviour can be specified using a Simulator Description Datafile (SimDD). The format of this file is currently a working proposal and subject to change. A more formal format specification is being worked on.

Note that tango-simlib does not generate simulator code. Rather, the simulator's behaviour is driven by the description data at run-time using Python's dynamic programming features. If the description files (XMI or SimDD) are modified, the simulator device server only needs to be restarted for the changes to take effect.

Basic Usage

Installation

Please Note

  • tango-simlib is compatible with Python2.7 and Python>=3.5.
  • Installation requires the TANGOBINARY prerequisites to be installed.
$ sudo apt-get install -y --no-install-recommends $(grep -vE "^\s*#" apt-build-requirements.txt | tr "\n" " ")

If you cannot install the PyTango package you will not be able to install tango-simlib. For more, documentation.

Installation from source, working directory where source is checked out

$ pythonX -m pip install . # Where 'x' is the version of Python

This package is available on PYPI, allowing

$ pip install tango-simlib

Tango-YAML

After installing tango_simlib, the tango-yaml script will be available to use

$ tango-yaml -h

usage: tango_yaml [-h] {xmi,fandango,tango_device,validate} ...

This program translates various file formats that describe Tango devices to
YAML. Or validates the conformance of a device against a specification.

positional arguments:
{xmi,fandango,tango_device,validate}
                        sub command help
    xmi                 Build YAML from a XMI file
    fandango            Build YAML from a fandango file
    tango_device        Build YAML from a running Tango device
    validate            Check conformance of a Tango device against a
                        specification in YAML format

optional arguments:
-h, --help            show this help message and exit

Documentation

Check out the documentation for more information. Download Manual: https://media.readthedocs.org/pdf/tango-simlib/latest/tango-simlib.pdf

License

This project is licensed under the BSD 3-Clause License - see license for details.

Contribute

Contributions are always welcome! Please ensure that you adhere to our coding standards CAM_Style_guide.