Welcome to Tango Controls Protocol Sepcification’s documentation!

:status:`draft, WIP`

Goal

This documentation aims to describe Tango Controls Protocol formally.

It SHALL provide a level of details which is enough to implement the Tango Controls Protocol on top of any suitable transport layer.

To rich the goal, it SHALL describe semantic and behaviour of Tango Controls System’s actors, objects and concepts. The specification MUST define specific data structures as well.

The central concept of Tango Controls is Device and the Tango Controls Protocol MUST provide marshalling of Device objects. However, it SHALL not specify data structures serialisation as this belongs to a transport layer.

Preamble

Todo

Add references to RFCs

Tango Controls System

:status:`draft`

Goal

This document describes top-level semantics and qualities of Tango Controls System.

Definition

Tango Controls System

Tango Controls System SHALL allow to remotely control and monitor devices and systems by means of computer workstations, servers and network. It SHALL allow to read and write so-called process variables as well as monitor and influence state of devices and systems. It SHALL also provide monitoring and management of itself.

Tango Controls system consists of sets of:

  • Device Servers (device_server)
  • Clients (client)

Tango Controls System:

  • MUST be object-oriented
  • MUST implement the client-server architecture
  • MUST be based on concept of Device
  • MAY be based on the micro-services architecture

Below is a formal definition of the Tango Controls System.

; Tango Control System consists of set of device_servers and clients applications
tango_controls_system = *device_server *client [tango_database] [access_control]

; Device Server instantiate admin_devcie and other devices
device_server = admin_device *device

tango_database = device ;where device provides functionality of Tango Database

access_control = device ;where device provides functionality to manage access to Tango Controls System

admin_device = device ;where device provides functionality to manage a device_server it belongs to and devices instantiated by this device_server

Device

Goal

This document describes the core concept of Tango Controls which is Device.

Definition

Device

A Device is an object within the Tango Controls System. The Device SHALL be accessible locally and remotely through its interface.

Before accessign the Device it SHALL be created by/within a Device Server

The Device has device_name. device_name is a character string which SHALL uniquely identify the device within the system Tango Controls System.

Todo

Extend the above (device cration, life, deletion), formal specification of device name as domain/subdomain/device, …

Device SHALL provide way to read its:

  • device_name
  • description
  • device_info

Device SHALL implement an interface to interact with its:

  • Attributes as device_attributes_interface
  • Pipes as device_pipes_interface
  • Commands as device_commands_interface
  • Properties as device_properties_interface
  • Polling system as device_polling_interface
  • Events system as device_events_interface
; device object description
device = device_name [device_description] device_class device_state device_status admin_device

         device_ping_interface device_blackbox_interface device_info_interface

         device_attributes_interface device_commands_interface device_pipes_interface device_properties_interface

         device_polling_interface device_events_interface

device_attributes_interface SHALL allow for the following operations:

  • query_device_attributes_list

    query_device_attributes_list = C:get_device_attributes_list (S:device_attributes_list | S: tango_exception)
    
Attribute

An attribute is a concept related to process variables. It provides real-time data value of specified datatype

attribute = attribute_config attribute_value attribute_dim

Device Server

Goal

Definition

Indices and tables