Update device attribute properties in jive with C++ or PyTango
|
|
---|---|
We want to update three fields of device attribute properties i.e. - description, min,max value. Tried through cpp APIs but it is not working, some error with tango database object creation. Also tried with put_device_attribute_property(self,dev_name,value) API of PyTango in ipython which writes in tango database table but is not reflected in jive attribute property editor window. Could you tell any method for this in cpp or python so that modification in tango database for device attribute properties gets reflected in jive also. Similarly, we have observed synchronization missing between attribute property modification through jive and PyTango APIs. For example- put_property API of PyTango attributes adds property entry in tango database (table- property_attribute_device) in small case for device column but jive adds same entry with capital case.
Regards,
TCS_GMRT |
|
|
---|---|
Hi, Do you use the put_device_attribute_property command on a running tango device ? You can not edit the current configuration of a running tango device using a Database call. The database attribute configuration is loaded only when you start a device. If you want to live edit an attribute configuration you should use:
Cheers, /Antoine |
|
|
---|---|
Thank you Antonie, your solution worked. I tried it with PyTango and it works absolutely fine. Do you have any suggestions for the second issue that I raised - Similarly, we have observed synchronization missing between attribute property modification through jive and PyTango APIs. For example- put_property API of PyTango attributes adds property entry in tango database (table- property_attribute_device) in small case for device column but jive adds same entry with capital case.
Regards,
TCS_GMRT |
|
|
---|---|
Hello, Jive does not make any lowercase or uppercase conversion. It just executes put_device_attribute_property(devName,…) where devName can be the returned either from Database.get_device_name(serverName,classname) if you browse from 'Server' tab or from direct browsing functions if you browse from 'Device' tab. What I can see is when Jive initiates its device browsing by calling Database.get_device_domain("*") it gets domain name in lowercase (it seems that the java API make a conversion here). If you use a filter different from "*/*/*", it gets the device name as it is in the DB. When Jive uses filters (different from "*/*/*") it overpasses Java API calls by using DbMySqlSelect on the DB server for performance reason. Jean-Luc |