Util

class PyTango.Util(args)

This class is a used to store TANGO device server process data and to provide the user with a set of utilities method.

This class is implemented using the singleton design pattern. Therefore a device server process can have only one instance of this class and its constructor is not public. Example:

util = PyTango.Util.instance()
    print(util.get_host_name())
add_Cpp_TgClass(device_class_name, tango_device_class_name)

Register a new C++ tango class.

If there is a shared library file called MotorClass.so which contains a MotorClass class and a _create_MotorClass_class method. Example:

util.add_Cpp_TgClass('MotorClass', 'Motor')

Note

the parameter ‘device_class_name’ must match the shared library name.

Deprecated since version 7.1.2: Use PyTango.Util.add_class() instead.

add_TgClass(klass_device_class, klass_device, device_class_name=None)

Register a new python tango class. Example:

util.add_TgClass(MotorClass, Motor)
util.add_TgClass(MotorClass, Motor, 'Motor') # equivalent to previous line

Deprecated since version 7.1.2: Use PyTango.Util.add_class() instead.

add_class(self, class<DeviceClass>, class<DeviceImpl>, language="python") → None

Register a new tango class (‘python’ or ‘c++’).

If language is ‘python’ then args must be the same as PyTango.Util.add_TgClass(). Otherwise, args should be the ones in PyTango.Util.add_Cpp_TgClass(). Example:

util.add_class(MotorClass, Motor)
util.add_class('CounterClass', 'Counter', language='c++')

New in PyTango 7.1.2

connect_db(self) → None
Connect the process to the TANGO database. If the connection to the database failed, a message is displayed on the screen and the process is aborted
Parameters:None
Return:None
create_device(self, klass_name, device_name, alias=None, cb=None) → None

Creates a new device of the given class in the database, creates a new DeviceImpl for it and calls init_device (just like it is done for existing devices when the DS starts up)

An optional parameter callback is called AFTER the device is registered in the database and BEFORE the init_device for the newly created device is called

Throws PyTango.DevFailed:
  • the device name exists already or
  • the given class is not registered for this DS.
  • the cb is not a callable

New in PyTango 7.1.2

Parameters:
klass_name:(str) the device class name
device_name:(str) the device name
alias:(str) optional alias. Default value is None meaning do not create device alias
cb:(callable) a callback that is called AFTER the device is registered in the database and BEFORE the init_device for the newly created device is called. Typically you may want to put device and/or attribute properties in the database here. The callback must receive a parameter: device name (str). Default value is None meaning no callback
Return:

None

delete_device(self, klass_name, device_name) → None

Deletes an existing device from the database and from this running server

Throws PyTango.DevFailed:
  • the device name doesn’t exist in the database
  • the device name doesn’t exist in this DS.

New in PyTango 7.1.2

Parameters:
klass_name:(str) the device class name
device_name:(str) the device name
Return:

None

get_class_list(self) → seq<DeviceClass>
Returns a list of objects of inheriting from DeviceClass
Parameters:None
Return:(seq) a list of objects of inheriting from DeviceClass
get_database(self) → Database
Get a reference to the TANGO database object
Parameters:None
Return:(Database) the database

New in PyTango 7.0.0

get_device_by_name(self, dev_name) → DeviceImpl
Get a device reference from its name
Parameters:
dev_name:(str) The TANGO device name
Return:

(DeviceImpl) The device reference

New in PyTango 7.0.0

get_device_list(self) → sequence<DeviceImpl>
Get device list from name. It is possible to use a wild card (‘*’) in the name parameter (e.g. “*”, “/tango/tangotest/n*”, ...)
Parameters:None
Return:(sequence<DeviceImpl>) the list of device objects

New in PyTango 7.0.0

get_device_list_by_class(self, class_name) → sequence<DeviceImpl>
Get the list of device references for a given TANGO class. Return the list of references for all devices served by one implementation of the TANGO device pattern implemented in the process.
Parameters:
class_name:(str) The TANGO device class name
Return:

(sequence<DeviceImpl>) The device reference list

New in PyTango 7.0.0

get_ds_exec_name(self) → str
Get a COPY of the device server executable name.
Parameters:None
Return:(str) a COPY of the device server executable name.

New in PyTango 3.0.4

get_ds_inst_name(self) → str
Get a COPY of the device server instance name.
Parameters:None
Return:(str) a COPY of the device server instance name.

New in PyTango 3.0.4

get_ds_name(self) → str
Get the device server name. The device server name is the <device server executable name>/<the device server instance name>
Parameters:None
Return:(str) device server name

New in PyTango 3.0.4

get_dserver_device(self) → DServer
Get a reference to the dserver device attached to the device server process
Parameters:None
Return:(DServer) A reference to the dserver device

New in PyTango 7.0.0

get_dserver_device (self) -> DServer

Get a reference to the dserver device attached to the device server process.
Parameters:None
Return:(DServer) the dserver device attached to the device server process

New in PyTango 7.0.0

get_host_name(self) → str
Get the host name where the device server process is running.
Parameters:None
Return:(str) the host name where the device server process is running

New in PyTango 3.0.4

get_pid(self) → TangoSys_Pid
Get the device server process identifier.
Parameters:None
Return:(int) the device server process identifier
get_pid_str(self) → str
Get the device server process identifier as a string.
Parameters:None
Return:(str) the device server process identifier as a string

New in PyTango 3.0.4

get_polling_threads_pool_size(self) → int
Get the polling threads pool size.
Parameters:None
Return:(int) the maximun number of threads in the polling threads pool
get_serial_model(self) → SerialModel
Get the serialization model.
Parameters:None
Return:(SerialModel) the serialization model
get_server_version(self) → str
Get the device server version.
Parameters:None
Return:(str) the device server version.
get_sub_dev_diag(self) → SubDevDiag
Get the internal sub device manager
Parameters:None
Return:(SubDevDiag) the sub device manager

New in PyTango 7.0.0

get_tango_lib_release(self) → int
Get the TANGO library version number.
Parameters:None
Return:(int) The Tango library release number coded in 3 digits (for instance 550,551,552,600,....)
get_trace_level(self) → int
Get the process trace level.
Parameters:None
Return:(int) the process trace level.
get_version_str(self) → str
Get the IDL TANGO version.
Parameters:None
Return:(str) the IDL TANGO version.

New in PyTango 3.0.4

is_device_restarting(self, (str)dev_name) → bool
Check if the device is actually restarted by the device server process admin device with its DevRestart command
Parameters:dev_name : (str) device name
Return:(bool) True if the device is restarting.

New in PyTango 8.0.0

is_svr_shutting_down(self) → bool
Check if the device server process is in its shutting down sequence
Parameters:None
Return:(bool) True if the server is in its shutting down phase.

New in PyTango 8.0.0

is_svr_starting(self) → bool
Check if the device server process is in its starting phase
Parameters:None
Return:(bool) True if the server is in its starting phase

New in PyTango 8.0.0

reset_filedatabase(self) → None
Reread the file database
Parameters:None
Return:None

New in PyTango 7.0.0

reset_filedatabase (self) -> None

Reread the file database.
Parameters:None
Return:None
server_init(self, with_window = False) → None
Initialize all the device server pattern(s) embedded in a device server process.
Parameters:
with_window:(bool) default value is False
Return:

None

Throws:

DevFailed If the device pattern initialistaion failed

server_run(self) → None
Run the CORBA event loop. This method runs the CORBA event loop. For UNIX or Linux operating system, this method does not return. For Windows in a non-console mode, this method start a thread which enter the CORBA event loop.
Parameters:None
Return:None
server_set_event_loop(self, event_loop) → None

This method registers an event loop function in a Tango server. This function will be called by the process main thread in an infinite loop The process will not use the classical ORB blocking event loop. It is the user responsability to code this function in a way that it implements some kind of blocking in order not to load the computer CPU. The following piece of code is an example of how you can use this feature:

_LOOP_NB = 1
def looping():
    global _LOOP_NB
    print "looping", _LOOP_NB
    time.sleep(0.1)
    _LOOP_NB += 1
    return _LOOP_NB > 100

def main():
    py = PyTango.Util(sys.argv)

    # ...

    U = PyTango.Util.instance()
    U.server_set_event_loop(looping)
    U.server_init()
    U.server_run()
Parameters:None
Return:None

New in PyTango 8.1.0

set_polling_threads_pool_size(self, thread_nb) → None
Set the polling threads pool size.
Parameters:
thread_nb:(int) the maximun number of threads in the polling threads pool
Return:

None

New in PyTango 7.0.0

set_serial_model(self, ser) → None
Set the serialization model.
Parameters:
ser:(SerialModel) the new serialization model. The serialization model must be one of BY_DEVICE, BY_CLASS, BY_PROCESS or NO_SYNC
Return:

None

set_server_version(self, vers) → None
Set the device server version.
Parameters:
vers:(str) the device server version
Return:

None

set_trace_level(self, level) → None
Set the process trace level.
Parameters:
level:(int) the new process level
Return:

None

trigger_attr_polling(self, dev, name) → None
Trigger polling for polled attribute. This method send the order to the polling thread to poll one object registered with an update period defined as “externally triggerred”
Parameters:
dev:(DeviceImpl) the TANGO device
name:(str) the attribute name which must be polled
Return:

None

trigger_cmd_polling(self, dev, name) → None
Trigger polling for polled command. This method send the order to the polling thread to poll one object registered with an update period defined as “externally triggerred”
Parameters:
dev:(DeviceImpl) the TANGO device
name:(str) the command name which must be polled
Return:

None

Throws:

DevFailed If the call failed

unregister_server(self) → None
Unregister a device server process from the TANGO database. If the database call fails, a message is displayed on the screen and the process is aborted
Parameters:None
Return:None

New in PyTango 7.0.0

unregister_server (self) -> None

Unregister a device server process from the TANGO database.
Parameters:None
Return:None