<devicePropertiesname="SkaLevel"description="Indication of importance of the device in the SKA hierarchy 
to support drill-down navigation: 1..6, with 1 highest.
Default is 4, making provision for 
EltMaster, EltAlarms, EltTelState = 1
SubEltMaster = 2
Subarray, Capability = 2/3
Others = 4 (or 5 or 6)">
<devicePropertiesname="GroupDefinitions"description="Each string in the list is a JSON serialised dict defining the ``group_name``,
``devices`` and ``subgroups`` in the group. A TANGO Group object is created
for each item in the list, according to the hierarchy defined. This provides
easy access to the managed devices in bulk, or individually.

The general format of the list is as follows, with optional ``devices`` and
``subgroups`` keys:
 [ {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ...]},
 {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ``<dev name>``, ...],
 ``subgroups`` : [{<nested group>},
 {<nested group>}, ...]},
 ...
 ]

For example, a hierarchy of racks, servers and switches:
 [ {``group_name``: ``servers``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/server/3``, ``elt/server/4``]},
 {``group_name``: ``switches``,
 ``devices``: [``elt/switch/A``, ``elt/switch/B``]},
 {``group_name``: ``pdus``,
 ``devices``: [``elt/pdu/rackA``, ``elt/pdu/rackB``]},
 {``group_name``: ``racks``,
 ``subgroups``: [
 {``group_name``: ``rackA``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/switch/A``, ``elt/pdu/rackA``]},
 {``group_name``: ``rackB``,
 ``devices``: [``elt/server/3``, ``elt/server/4``,
 ``elt/switch/B``, ``elt/pdu/rackB``],
 ``subgroups``: []}
 ]} ]">
<commandsname="State"description="This command gets the device state (stored in its device_state data member) and returns it to the caller."execMethod="dev_state"displayLevel="OPERATOR"polledPeriod="0">
<commandsname="Status"description="This command gets the device status (stored in its device_status data member) and returns it to the caller."execMethod="dev_status"displayLevel="OPERATOR"polledPeriod="0">
<commandsname="GetMetrics"description="Gets list of attributes marked as metrics, with their values, 
for device"execMethod="get_metrics"displayLevel="OPERATOR"polledPeriod="0">
<commandsname="ToJson"description="Returns a JSON translation of this device.
Defaults for empty string argin gives commands and metris:
with_value:false, 
with_commands:true, 
with_metrics:true, 
with_attributes:false"execMethod="to_json"displayLevel="OPERATOR"polledPeriod="0">
<argindescription="Requests the JSON string representing this device, can be filtered 
by with_commands, with_metrics, with_attributes and 
with_value. Defaults for empty string argin are:
{`with_value`:`false`, `with_commands`:`true`,
 `with_metrics`:`true, `with_attributes`:`false}">
<typexsi:type="pogoDsl:StringType"/>
</argin>
<argoutdescription="The JSON string representing this device, 
filtered as per the input argument flags">
<commandsname="GetVersionInfo"description="Array of version strings of all entities modelled by this device. 
(One level down only)
Each string in the array lists the version info for one entity
managed by this device. 
The first entry is version info for this TANGO Device itself.
The entities may be TANGO devices, or hardware LRUs or 
anything else this devices manages/models.
The intention with this command is that it can provide more 
detailed information than can be captured in the versionId 
and buildState attributes, if necessary.
In the minimal case the GetVersionInfo will contain only the 
versionId and buildState attributes of the next lower level
entities."execMethod="get_version_info"displayLevel="OPERATOR"polledPeriod="0">
<propertiesdescription="Build state of this device"label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="Build state of this device"label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="Current logging level to Central logging target for this device - 
initialises to CentralLoggingLevelDefault on startup"label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="Current logging level to Element logging target for this device - 
initialises to ElementLoggingLevelDefault on startup"label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="Current logging level to Syslog for this device - 
initialises from StorageLoggingLevelDefault on first execution of device.
Needs to be READ_WRITE To make it memorized - but writing this attribute should 
do the same as command SetStorageLoggingLevel to ensure the targets and adjustments
are made correctly"label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="The health state reported for this device. It interprets the current device condition 
and condition of all managed devices to set this. Most possibly an aggregate attribute."label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="The admin mode reported for this device. It may interpret the current device condition 
and condition of all managed devices to set this. Most possibly an aggregate attribute."label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="The control mode of the device. REMOTE, LOCAL
TANGO Device accepts only from a ‘local’ client and ignores commands and queries received from TM
or any other ‘remote’ clients. The Local clients has to release LOCAL control before REMOTE clients
can take control again."label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="Reports the simulation mode of the device. Some devices may implement both modes,
while others will have simulators that set simulationMode to True while the real
devices always set simulationMode to False."label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
<propertiesdescription="The test mode of the device. 
Either no test mode (empty string) or an indication of the test mode."label=""unit=""standardUnit=""displayUnit=""format=""maxValue=""minValue=""maxAlarm=""minAlarm=""maxWarning=""minWarning=""deltaTime=""deltaValue=""/>
</attributes>
<statesname="ON"description="This state could have been called OK or OPERATIONAL. It means that the device is in its operational state. (E.g. the power supply is giving its nominal current, th motor is ON and ready to move, the instrument is operating). This state is modified by the Attribute alarm checking of the DeviceImpl:dev_state method. i.e. if the State is ON and one attribute has its quality factor to ATTR_WARNING or ATTR_ALARM, then the State is modified to ALARM.">
<statesname="ALARM"description="ALARM - The device is operating but
at least one of the attributes is out of range. It can be linked to alarm conditions set by attribute properties or a specific case. (E.g. temperature alarm on a stepper motor, end switch pressed on a stepper motor, up water level in a tank, etc....). In alarm, usually the device does its job, but the operator has to perform an action to avoid a bigger problem that may switch the state to FAULT.">
<statesname="UNKNOWN"description="The device cannot retrieve its state. It is the case when there is a communication problem to the hardware (network cut, broken cable etc...) It could also represent an incoherent situation">
<statesname="OFF"description="The device is in normal condition but is not active. E.g. the power supply main circuit breaker is open; the RF transmitter has no power etc...">
<statesname="FAULT"description="The device has a major failure that prevents it to work. For instance, A power supply has stopped due to over temperature A motor cannot move because it has fault conditions. Usually we cannot get out from this state without an intervention on the hardware or a reset command.">
<statesname="INIT"description="This state is reserved to the starting phase of the device server. It means that the software is not fully operational and that the user must wait">
<statesname="STANDBY"description="Equates to LOW-POWER mode. This is the initial transition from INIT if the device supports a low-power mode. The device is not fully active but is ready to operate.">
<statesname="DISABLE"description="The device cannot be switched ON for an external reason. E.g. the power supply has its door open, the safety conditions are not satisfactory to allow the device to operate.">