Pipe#
Warning
The Pipe feature will get deprecated when the DevDict feature will be implemented.
PyTango has deprecated the Pipe feature in PyTango 10.0.2 and will remove it in PyTango 10.1.0.
Introduction#
A Tango Pipe is like an Attribute with a flexible data structure, name and description. Unlike Commands or Attributes, a Pipe does not have a pre-defined data type. Tango Pipe data types may be a mixture of the basic Tango data types (or array of) and may change every time a pipe is read or written.
Use Case#
In some cases, it is required to exchange data between client and device of varying data type. This is for instance the case of data gathered during a scan on one experiment. Because the number of actuators and sensors involved in the scan may change from one scan to another, it is not possible to use a well-defined data type. TANGO Pipes have been designed for such cases. A TANGO Pipe is basically a pipe dedicated to transfer data between client and device.
Pipe metadata#
Tango Pipes are self-describing entities. They are defined by three sets of metadata which are always part of the Pipes:
Static metadata that defines the Pipe like:
name: the name of the pipe
display-level: an enumeration describing the visibility level of the Pipe (EXPERT or OPERATOR)
writable: an enumeration describing whether the Pipe is Read only or Read Write
Dynamic metadata the Pipe’s:
description: a string describing the pipe
label: a label which can be used as an alternative name by the clients.
Runtime metadata describing the Pipe’s value and its timestamp.
Pipe data structure#
Pipe data structure is of type DevPipeBlob
, as specified in 9/Data types. See image below.
A DevicePipeBlob is composed of :
a blob name (a string)
a set of DataElement objects
DataElement objects are composed of:
a name: a string containing the name
The values in the DataElement objects can be of any basic Tango data types (or array of) or can be themselves a DevicePipeBlob.
The number of DataElement and their value types can change at every Pipe read or write operation.
More about Pipes#
Pipes metadata (static, dynamic and runtime) are listed in the full specification of Tango Pipes which is part of the Tango Controls RFCs.