Device Configuration

The devices receive their configuration from two sources:

  • The TangoDB database, for static properties,

  • Externally, from the user, or a control system, that set control attributes (see the section for each device for what to set, and Attributes for how to set them).

TangoDB

The TangoDB database is a persistent store for the properties of each device. The properties encode static settings, such as the hardware addresses, and default values for control attributes.

Each device queries the TangoDB for the value of its properties during the boot() (or initialise()) call. Default values for control attributes can then be applied by explicitly calling set_defaults(). The boot device also calls set_defaults() when initialising the station. The rationale being that the defaults can be applied at boot, but shouldn’t be applied automatically during operations, as not to disturb running hardware.

Device interaction

The properties of a device can be queried from the device directly:

# get a list of all the properties
property_names = device.get_property_list("*")

# fetch the values of the given properties. returns a {property: value} dict.
property_dict = device.get_property(property_names)

Properties can also be changed:

changeset = { "property": "new value" }

device.put_property(changeset)

Note that new values for properties will only be picked up by the device during boot() (or initialise()), so you will have to turn the device off and on.

Command-line interaction

The content of the TangoDB can be dumped from the command line using:

sbin/dsconfig.sh --dump > tangodb-dump.json

and changes can be applied using:

sbin/dsconfig.sh --update changeset.json

Note

The dsconfig docker container needs to be running for these commands to work.