6/Database

This document describes the Tango Database specification.

See also: 1/Tango, 2/Device, 4/Attribute, 5/Property, 8/Server

Preamble

Copyright (c) 2019 Tango Controls Community.

This Specification is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see http://www.gnu.org/licenses.

This Specification is a free and open standard and is governed by the Digital Standards Organization’s Consensus-Oriented Specification System.

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC-2119.

Tango Database specification

This specification is intended to formally document the Tango Database. Runtime implementations of the Database in conforming Tango implementations MUST follow this specification.

Goals of the Database

  • Provide a means of defining and querying devices.

  • Provide a means for device servers to be configured from central control.

  • Serve as nameserver such that the Devices are accessible by name.

Features of the Database

  • Store configuration data (properties) used at startup of a device server.

  • Act as nameserver by storing the ITR.

  • Act as permanent store of dynamic settings which need to be memorized.

  • Ensure the uniqueness of device name and of aliases.

  • Keep list of controlled servers which are to be started and run on a particular host.

  • Limited set of functionalities provided by file as alternative to network database.

Use Cases of the Database

  • Register a new device server.

  • Store the last user setting point of the current provided by a power supply.

  • Define persistent configuration properties to be used by a camera every time it starts up.

  • Allow a subscriber or client to get connected to a stepper motor.

  • Define properties for all instances of a class of vaccuum pump.

  • Provide the ITR of a device such as an electrometer, so a user can check whether it is online or not.

  • A user would like to rollback the configuration of a Device when its initialization is failing.

  • Remove “empty” Devices from Database to clean it up.

  • Get all Devices of a given class of temperature gauges.

  • User wants to see the history (up to a configurable depth) of a Property.

  • A monitor tool wants the Info of a not running detector Device (exported, host, server).

  • A boot-up process wants to get Starter Level configuration for a list of Devices.

Specification

The database SHALL provide a means of defining and querying devices.

As the Tango database service is a central service of the Tango Control System, it SHALL be designed to be highly available and support a high level of client requests (e.g the database must be able to treat thousands of requests a second).

The database service SHALL be implemented as a Tango Device Server.

The database service SHALL be implemented with:

  • A frontend: As Tango Device Server.

  • A backend: A query and persistency engine (i.e. SQL or NoSQL engine), or a lighter ( i.e. reduced set of functionalities) engine with a single file per device server.

The Database Device SHALL have no Class Properties or Device Properties.

In the Tango Control System, the database service SHALL be available on a pre-known network address.

Clients and subscribers SHOULD access the database service via TANGO commands requested on the database device.

As a Tango Device Server, the database SHALL provide State and Status.

A limited set of the database functionality to support Tango Device Server configuration SHALL be available as a read-only file. This is an option for use in the absence of a network service.

The database SHALL enforce uniqueness of device names and aliases.

The Database SHALL enforce the naming convention defined in all Tango RFCs for device name, the command name, the attribute name, the property name, the device alias name and the device server name.

Device Export and Unexport protocols

The Device Export and Unexport protocols are used during the Device Export and Device Unexport sequences respectively (8/Server) when the Device transitions from the Not Exported phase to the Exported phase (2/Device) and vice versa.

These protocols describe the interactions between:

  • When the Device Server in charge of the management and communication of the Device is starting/stopping and

  • the Database.

Device Export protocol

The Export protocol consists of signing up a Device in a Database so any Client of the Tango Control System could find the information necessary to access it.

The Export protocol MUST be initiated by a Device Server.

During the execution of this protocol the following information MUST reach the Database:

  • Device name

  • Interoperable Tango Reference (ITR) e.g. IOR in CORBA

  • Device server process host name

  • Device server process PID or string null

  • Device server process version

Currently it is implemented by executing the DbExportDevice command on the Database device.

Device Unexport protocol

The Unexport protocol consists of marking a Device as inaccessible in the Database so any Client of the Tango Control System querying the Database knows that the Device is not accessible anymore.

The Unexport protocol SHALL be initiated by a Device Server.

In case a Device Server could not execute the protocol e.g. due to a crash of the Device Server process then another Client of the Tango Control System MAY execute it in order to maintain consistency.

During the execution of this protocol the following information MUST reach the Database:

  • Device name

Currently, it is implemented by executing the DbUnExportDevice command and DbUnExportServer (for unexporting all the Devices previously exported by the Device Server) on the Database Device.

Getting information to access a Device

Any Client of the Tango Control System SHALL be able to ask a Database for information necessary to access a Device at any time, unless the Database service is not accessible.

The Database service MUST provide information on how to access a Device or that a Device is not accessible. This information includes:

  • Device name

  • Interoperable Tango Reference (ITR)

  • Device version

  • Device Server process name

  • host name where the Device Server runs

  • Device Class name

  • exported flag

  • Device Server process PID

Currently it is implemented by executing the DbImportDevice command on the Database Device.

List of Commands Grouped by Functionality

Devices

The database SHALL implement the following device-related commands:

  • DBAddDevice

  • DbDeleteDevice

  • DbGetClassForDevice

  • DbGetClassInheritanceForDevice

  • DbGetDeviceClassList

  • DbGetDeviceDomainList

  • DbGetDeviceFamilyList

  • DbGetDeviceInfo

  • DbGetDeviceList

  • DbGetDeviceWideList

  • DbGetDeviceMemberList

  • DbGetDeviceServerClassList

Classes

The database SHALL provide a means of querying device server classes.

The database SHALL implement the following class-related commands:

  • DbGetClassList

  • DbGetDeviceClassList

  • DbGetDeviceServerClassList

Properties

The database SHALL provide a means of setting and getting properties for classes, devices, attributes, pipes and free objects.

The database SHALL provide a means to retrieve the history of property value settings.

The database SHALL implement the following property-related commands:

ClassAttributeProperty

  • DbDeleteClassAttributeProperty

  • DbGetClassAttributeProperty

  • DbGetClassAttributeProperty2

  • DbGetClassAttributePropertyHist

  • DbPutClassAttributeProperty

  • DbPutClassAttributeProperty2

ClassProperty

  • DbDeleteClassProperty

  • DbGetClassProperty

  • DbGetClassPropertyHist

  • DbGetClassPropertyList

  • DbPutClassProperty

DeviceAttributeProperty

  • DbDeleteDeviceAttributeProperty

  • DbGetDeviceAttributeProperty

  • DbGetDeviceAttributeProperty2

  • DbGetDeviceAttributePropertyHist

  • DbPutDeviceAttributeProperty

  • DbPutDeviceAttributeProperty2

  • DbDeleteAllDeviceAttributeProperty

DeviceProperty

  • DbDeleteDeviceProperty

  • DbGetDeviceProperty

  • DbGetDevicePropertyHist

  • DbGetDevicePropertyList

  • DbPutDeviceProperty

Free Object Property

  • DbDeleteProperty

  • DbGetProperty

  • DbGetPropertyHist

  • DbGetPropertyList

  • DbPutProperty

ClassPipeProperty

  • DbGetClassPipeProperty

  • DbDeleteClassPipeProperty

  • DbPutClassPipeProperty

  • DbGetClassPipePropertyHist

DevicePipeProperty

  • DbGetDevicePipeProperty

  • DbDeleteDevicePipeProperty

  • DbDeleteAllDevicePipeProperty

  • DbPutDevicePipeProperty

  • DbGetDevicePipePropertyHist

Attributes

The database SHALL provide for the persistent storage of Attributes of classes and devices.

The database SHALL implement the following attribute-related commands:

ClassAttribute

  • DbDeleteClassAttribute

  • DbGetClassAttributeList

DeviceAttribute

  • DbDeleteDeviceAttribute

  • DbGetDeviceAttributeList

Aliases

The database SHALL provide a means of setting and getting a mapping from alias to device name.

The database SHALL provide a means of setting and getting a mapping from alias to device attribute name.

The database SHALL implement the following attribute-related commands:

AttributeAlias

  • DbDeleteAttributeAlias

  • DbGetAttributeAlias

  • DbGetAttributeAliasList

  • DbPutAttributeAlias

  • DbGetAttributeAlias2

  • DbGetAliasAttribute

DeviceAlias

  • DbDeleteDeviceAlias

  • DbGetAliasDevice

  • DbGetDeviceAlias

  • DbGetDeviceAliasList

  • DbPutDeviceAlias

Hosts/Servers

The database SHALL provide a means of defining hosts and servers.

The database SHALL implement the following commands:

Host

  • DbGetHostList

  • DbGetHostServerList

  • DbGetHostServersInfo

Server

  • DBAddServer

  • DbDeleteServer

  • DbGetServerList

  • DbGetServerNameList

  • DbRenameServer

ServerInfo

  • DbDeleteServerInfo

  • DbGetServerInfo

  • DbPutServerInfo

Pipes

The database SHALL provide a means of managing information about pipes.

The database SHALL implement the following pipe-related commands:

ClassPipe

  • DbDeleteClassPipe

  • DbGetClassPipeList

DeleteDevicePipe

  • DbGetDevicePipeList

Free Objects

The database SHALL provide a means of querying Free Objects (See [5/Property](../5/Property.md## Specification)).

The database SHALL implement this free object-related command:

  • DbGetObjectList

Exported Devices

The database SHALL provide a means to register the network address of a running Device Server and events.

The database SHALL implement the following free registry-related commands:

  • DbExportDevice

  • DbUnExportDevice

  • DbGetDeviceExportedList

  • DbGetExportedDeviceListForClass

  • DbImportDevice

  • DbExportEvent

  • DbImportEvent

  • DbUnExportEvent

  • DbUnExportServer

Miscellaneous

The database SHALL provide the following miscellaneous commands.

  • DbGetInstanceNameList

  • DbGetForwardedAttributeListForDevice

  • DbInfo

  • ResetTimingValues

  • DbGetDataForServerCache

  • DbMySqlSelect

  • DbGetCSDbServerList

List of Database commands and description

Name
Input type
Output type
Level
Description
State DEV_VOID DEV_STATE OPERATOR This command gets the device state (stored in its device_state data member) and returns it to the caller.
Status DEV_VOID CONST_DEV_STRING OPERATOR This command gets the device status (stored in its device_status data member) and returns it to the caller.
DbAddDevice DEVVAR_STRINGARRAY DEV_VOID OPERATOR Add a Tango class device to a specific device server
DbAddServer DEVVAR_STRINGARRAY DEV_VOID OPERATOR Create a device server process entry in database
DbDeleteAttributeAlias DEV_STRING DEV_VOID OPERATOR Delete an attribute alias.
DbDeleteClassAttribute DEVVAR_STRINGARRAY DEV_VOID OPERATOR delete a class attribute and all its properties from database
DbDeleteClassAttributeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR delete class attribute properties from database
DbDeleteClassProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete class properties from database
DbDeleteDevice DEV_STRING DEV_VOID OPERATOR Delete a device from database
DbDeleteDeviceAlias DEV_STRING DEV_VOID OPERATOR Delete a device alias.
DbDeleteDeviceAttribute DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete device attribute properties from database
DbDeleteDeviceAttributeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR delete a device attribute property from the database
DbDeleteDeviceProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete device property(ies)
DbDeleteProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete free property from database
DbDeleteServer DEV_STRING DEV_VOID OPERATOR Delete server from the database but dont delete device properties
DbDeleteServerInfo DEV_STRING DEV_VOID OPERATOR Delete info related to a Tango device server process
DbExportDevice DEVVAR_STRINGARRAY DEV_VOID OPERATOR Export a device to the database
DbExportEvent DEVVAR_STRINGARRAY DEV_VOID OPERATOR Export Event channel to database
DbGetAliasDevice DEV_STRING DEV_STRING OPERATOR Get device name from its alias.
DbGetAttributeAlias DEV_STRING DEV_STRING OPERATOR Get the attribute name for the given alias.
If alias not found in database, returns an empty string.
DbGetAttributeAliasList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get attribute alias list for a specified filter
DbGetClassAttributeList DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Get attrilute list for a given Tango class with a specified filter
DbGetClassAttributeProperty DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Get Tango class property(ies) value
DbGetClassAttributeProperty2 DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR This command supports array property compared to the old command called
DbGetClassAttributeProperty. The old command has not been deleted from the
server for compatibility reasons.
DbGetClassAttributePropertyHist DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve Tango class attribute property history
DbGetClassForDevice DEV_STRING DEV_STRING OPERATOR Get Tango class for the specified device.
DbGetClassInheritanceForDevice DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get class inheritance for the specified device.
DbGetClassList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get Tango class list with a specified filter
DbGetClassProperty DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR None.
DbGetClassPropertyHist DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve Tango class property history
DbGetClassPropertyList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get property list for a given Tango class with a specified filter
DbGetDeviceAlias DEV_STRING DEV_STRING OPERATOR Return alias for device name if found.
DbGetDeviceAliasList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get device alias name with a specific filter
DbGetDeviceAttributeList DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Return list of attributes matching the wildcard
for the specified device
DbGetDeviceAttributeProperty DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Get device attribute property(ies) value
DbGetDeviceAttributeProperty2 DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve device attribute properties. This command has the possibility to retrieve
device attribute properties which are arrays. It is not possible with the old
DbGetDeviceAttributeProperty command. Nevertheless, the old command has not been
deleted for compatibility reason
DbGetDeviceAttributePropertyHist DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve device attribute property history
DbGetDeviceClassList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get Tango classes/device list embedded in a specific device server
DbGetDeviceDomainList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get list of device domain name matching the specified
DbGetDeviceExportedList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get a list of exported devices whose names satisfy the filter (wildcard is
DbGetDeviceFamilyList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get a list of device name families for device name matching the
specified wildcard
DbGetDeviceInfo DEV_STRING DEVVAR_LONGSTRINGARRAY OPERATOR Returns info from DbImportDevice and started/stopped dates.
DbGetDeviceList DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Get a list of devices for specified server and class.
DbGetDeviceWideList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get a list of devices whose names satisfy the filter.
DbGetDeviceMemberList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get a list of device name members for device name matching the
specified filter
DbGetDeviceProperty DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR None.
DbGetDevicePropertyHist DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve device property history
DbGetDevicePropertyList DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Get property list belonging to the specified device and with
name matching the specified filter
DbGetDeviceServerClassList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get list of Tango classes for a device server
DbGetExportdDeviceListForClass DEV_STRING DEVVAR_STRINGARRAY OPERATOR Query the database for device exported for the specified class.
DbGetHostList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get host list with name matching the specified filter
DbGetHostServerList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get list of device server process name running on host with name matching
the specified filter
DbGetHostServersInfo DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get info about all servers running on specified host, name, mode and level
DbGetInstanceNameList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Returns the instance names found for specified server.
DbGetObjectList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get list of free object defined in database with name
matching the specified filter
DbGetProperty DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Get free object property
DbGetPropertyHist DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve object property history
DbGetPropertyList DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Get list of property defined for a free object and matching the
specified filter
DbGetServerInfo DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get info about host, mode and level for specified server
DbGetServerList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get list of device server process defined in database
with name matching the specified filter
DbGetServerNameList DEV_STRING DEVVAR_STRINGARRAY OPERATOR Returns the list of server names found for the wildcard specified.
It returns only the server executable name without instance name as DbGetServerList.
DbImportDevice DEV_STRING DEVVAR_LONGSTRINGARRAY OPERATOR Import a device from the database
DbImportEvent DEV_STRING DEVVAR_LONGSTRINGARRAY OPERATOR Get event channel info from database
DbInfo DEV_VOID DEVVAR_STRINGARRAY OPERATOR Get miscellaneous numbers on information
stored in database
DbPutAttributeAlias DEVVAR_STRINGARRAY DEV_VOID OPERATOR Define an alias for an attribute
DbPutClassAttributeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Create/Update class attribute property(ies) in database
DbPutClassAttributeProperty2 DEVVAR_STRINGARRAY DEV_VOID OPERATOR This command adds support for array properties compared to the previous one
called DbPutClassAttributeProperty. The old comman is still there for compatibility reason
DbPutClassProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Create / Update class property(ies)
DbPutDeviceAlias DEVVAR_STRINGARRAY DEV_VOID OPERATOR Define alias for a given device name
DbPutDeviceAttributeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Create/Update device attribute property(ies) in database
DbPutDeviceAttributeProperty2 DEVVAR_STRINGARRAY DEV_VOID OPERATOR Put device attribute property. This command adds the possibility to have attribute property
which are arrays. Not possible with the old DbPutDeviceAttributeProperty command.
This old command is not deleted for compatibility reasons.
DbPutDeviceProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Create / Update device property(ies)
DbPutProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Create / Update free object property(ies)
DbPutServerInfo DEVVAR_STRINGARRAY DEV_VOID OPERATOR Update server info including host, mode and level
DbUnExportDevice DEV_STRING DEV_VOID OPERATOR Mark a device as non exported in database
DbUnExportEvent DEV_STRING DEV_VOID OPERATOR Mark one event channel as non exported in database
DbUnExportServer DEV_STRING DEV_VOID OPERATOR Mark all devices belonging to a specified device server
process as non exported
ResetTimingValues DEV_VOID DEV_VOID OPERATOR Reset the timing attribute values.
DbGetDataForServerCache DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR This command returns all the data needed by a device server process during its
startup sequence. The aim of this command is to minimize database access during
device server startup sequence.
DbDeleteAllDeviceAttributeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete all attribute properties for the specified device attribute(s)
DbMySqlSelect DEV_STRING DEVVAR_LONGSTRINGARRAY OPERATOR This is a very low level command.
It executes the specified SELECT command on TANGO database and returns its result without filter.
DbGetCSDbServerList DEV_VOID DEVVAR_STRINGARRAY OPERATOR Get a list of host:port for all database server defined in the control system
DbGetAttributeAlias2 DEV_STRING DEV_STRING OPERATOR Get the attribute alias from the attribute name.
Returns one empty string if nothing found in database
DbGetAliasAttribute DEV_STRING DEV_STRING OPERATOR Get the attribute name from the given alias.
If the given alias is not found in database, returns an empty string
DbRenameServer DEVVAR_STRINGARRAY DEV_VOID OPERATOR Rename a device server process
DbGetClassPipeProperty DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve class pipe properties
DbGetDevicePipeProperty DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve device pipe properties
DbDeleteClassPipe DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete a class pipe and all its properties from database
DbDeleteDevicePipe DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete device pipe properties from database
DbDeleteClassPipeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete class pipe properties from database
DbDeleteDevicePipeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete device pipe properties from database
DbGetClassPipeList DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Get pipe list for a given Tango class with a specified filter
DbGetDevicePipeList DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Return list of pipes matching the wildcard for the specified device
DbDeleteAllDevicePipeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Delete all pipe properties for the specified device pipe(s)
DbPutClassPipeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Create/Update class pipe property(ies) in database
DbPutDevicePipeProperty DEVVAR_STRINGARRAY DEV_VOID OPERATOR Create/Update device pipe property(ies) in database
DbGetClassPipePropertyHist DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve Tango class pipe property history
DbGetDevicePipePropertyHist DEVVAR_STRINGARRAY DEVVAR_STRINGARRAY OPERATOR Retrieve device pipe property history
DbGetForwardedAttributeListForDevice DEV_STRING DEVVAR_STRINGARRAY OPERATOR Get the list of devices using forwarded attribute(s) from specified device

Database as a file

For Device servers not able to access the Tango database (most of the time due to network routing or for cyber-security reason), it is possible to start them using a file instead of a real database. This is done via the Device server command line option:
-file=<file name>

The file based database is OPTIONAL.

In this case, the Database SHALL handle the following functionality using the specified file:

  • Getting, setting and deleting class properties.

  • Getting, setting and deleting device properties.

  • Getting, setting and deleting class attribute properties.

  • Getting, setting and deleting device attribute properties.

The following set of limitations MAY exist:

  • No check that the same Device server is running twice.

  • No Device or attribute alias name.

  • In case of several Device servers running on the same host, the user must manually manage a list of already used network ports.

File syntax

The file is RECOMMENDED to be an ASCII file. The syntax of the file is defined below.

Generally, comments start with the ’#’ character and a blank line is ignored.

File syntax: Devices definition.

DEVICE is the keyword to declare a device(s) definition sequence. The general syntax SHALL be

<DS name>/<inst name>/DEVICE/<Class name>: dev1,dev2,dev3

Device(s) name can follow on next line if the last line character is \

File syntax: Device property definition.

The general device property SHALL be

<device name>-><property name>: <property value>

In case of array, the array element delimiter is the character ,. Array definition can be split over several lines if the last line character is \. Allowed characters after the : delimiter are space, tabulation or nothing.

A device string property with special characters (spaces). A pair of " characters are used to delimit the string.

File syntax: Device attribute property definition.

The general device attribute property syntax SHALL be

<device name>/<attribute name>-><property name>: <property value>

Allowed characters after the : delimiter are space, tabulation or nothing.

File syntax: Class property definition.

The general class property syntax SHALL be

CLASS/<class name>-><property name>: <property value>

CLASS is the keyword to declare a class property definition. Allowed characters after the : delimiter are space, tabulation or nothing. The " characters around the property value are mandatory due to the / character contains in the property value.