Welcome to Tango Controls Protocol Sepcification’s documentation!¶
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¶
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