Next:
Contents
Contents
Index
The TANGO Control System Manual
Version 8.0
The TANGO Team
Contents
1
Introduction
1
Introduction to device server
2
Device server history
2
Getting Started
1
A Java TANGO client
2
A C++ TANGO client
3
A TANGO device server
1
The commands and attributes code in C++
1
The DevSimple command
2
The DevArray command
3
The DevString command
4
The DevStrArray command
5
The DevStruct command
6
The three attributes
2
The commands and attributes code in java
1
The DevSimple command
2
The DevArray command
3
The DevString command
4
The DevStrArray command
5
The DevStruct command
6
The three attributes
3
The TANGO device server model
1
Introduction to CORBA
2
The model
3
The device
1
The commands
2
The TANGO attributes
3
Command or attributes ?
4
The CORBA attributes
5
The remaining CORBA operations
6
The special case of the device state and status
7
The device polling
4
The server
5
The Tango Logging Service
6
The database
7
The controlled access
8
The Application Programmers Interfaces
1
Rules of the API
2
Communication between client and server using the API
3
Tango events
4
Writing a TANGO client using TANGO APIs
1
Introduction
2
Getting Started
3
Basic Philosophy
4
Data types
5
Request model
1
Synchronous model
2
Asynchronous model
6
Events
1
Introduction
2
Event definition
3
Event types
4
Event filtering (Removed in Tango release 8 and above)
5
Application Programmer's Interface
1
Configuring events
2
C++ Clients
3
Java Clients
7
Group
1
Getting started with Tango group
2
Forward or not forward?
3
Executing a command
1
Obtaining command results
2
Case 1: a command, no argument
3
A few words on error handling and data extraction
4
Case 2: a command, one argument
5
Case 3: a command, several arguments
4
Reading attribute(s)
1
Obtaining attribute values
2
A few words on error handling and data extraction
5
Writing an attribute
1
Obtaining acknowledgement
2
Case 1: one value for all devices
3
Case 2: a specific value per device
8
Device locking
9
Reconnection and exception
10
Thread safety
11
Compiling and linking a Tango client
5
TANGO Java API
1
Introduction
1
Description
Remarks:
2
Basic Philosophy
3
Classes
1
Data object classes
2
Asynchronous callback related classes
3
Devices and Database access classes
4
Reporting errors
5
Compiling a Java client
1
Supported java release
2
Setting CLASSPATH and other environment variables
2
Reference manual
6
The TANGO C++ Application Programmer Interface
1
Tango::DeviceProxy()
1
Constructors
1
DeviceProxy::DeviceProxy(string &name, CORBA::ORB *orb=NULL)
2
DeviceProxy::DeviceProxy(const char *name, CORBA::ORB *orb = NULL)
2
Miscellaneous methods
1
DeviceInfo DeviceProxy::info()
2
DevState DeviceProxy::state()
3
string DeviceProxy::status()
4
int DeviceProxy::ping()
5
void DeviceProxy::set_timeout_millis(int timeout)
6
int DeviceProxy::get_timeout_millis()
7
int DeviceProxy::get_idl_version()
8
void DeviceProxy::set_source(DevSource source)
9
DevSource DeviceProxy::get_source()
10
vector<string> *DeviceProxy::black_box(int n)
11
string DeviceProxy::name()
12
string DeviceProxy::adm_name()
13
string DeviceProxy::dev_name()
14
string DeviceProxy::description()
15
DbDevImportInfo DeviceProxy::import_info()
16
void DeviceProxy::set_transparency_reconnection(bool flag)
17
bool DeviceProxy::get_transparency_reconnection()
18
string DeviceProxy::alias()
19
AccessControlType DeviceProxy::get_access_right()
3
Synchronous command oriented methods
1
CommandInfo DeviceProxy::command_query(string command)
2
CommandInfoList *DeviceProxy::command_list_query()
3
DeviceData DeviceProxy::command_inout(string)
4
DeviceData DeviceProxy::command_inout(const char *)
5
DeviceData Deviceproxy::command_inout(string, DeviceData &)
6
DeviceData DeviceProxy::command_inout(const char *, DeviceData &)
7
vector<DeviceDataHistory> *command_history(string &, int)
8
DeviceDataHistoryList *command_history(const char *, int)
4
Synchronous attribute related methods
1
Compatibility between Tango release 4 and release 5 regarding attribute properties
2
AttributeInfoEx DeviceProxy::attribute_query(string attribute)
3
AttributeInfoList * DeviceProxy::attribute_list_query()
4
AttributeInfoListEx * DeviceProxy::attribute_list_query_ex()
5
vector<string> *DeviceProxy::get_attribute_list()
6
AttributeInfoList *DeviceProxy::get_attribute_config(vector<string>&)
7
AttributeInfoListEx *DeviceProxy::get_attribute_config_ex(vector<string>&)
8
AttributeInfoEx DeviceProxy::get_attribute_config(string&)
9
void DeviceProxy::set_attribute_config(AttributeInfoList &)
10
void DeviceProxy::set_attribute_config(AttributeInfoListEx &)
11
vector<DeviceAttribute> *DeviceProxy::read_attributes(vector<string>&)
12
DeviceAttribute DeviceProxy::read_attribute(string&)
13
DeviceAttribute DeviceProxy::read_attribute(const char *)
14
void DeviceProxy::write_attributes(vector<DeviceAttribute>&)
15
void DeviceProxy::write_attribute(DeviceAttribute&)
16
DeviceAttribute DeviceProxy::write_read_attribute(DeviceAttribute&)
17
vector<DeviceAttributeHistory> *DeviceProxy::attribute_history(string &, int)
18
vector<DeviceAttributeHistory> *DeviceProxy::attribute_history(const char *, int)
5
Asynchronous command oriented methods
1
long DeviceProxy::command_inout_asynch(string &name, bool forget)
2
long DeviceProxy::command_inout_asynch(const char *name, bool forget)
3
long DeviceProxy::command_inout_asynch(string &name, DeviceData &argin, bool forget)
4
long DeviceProxy::command_inout_asynch(const char *name, Devicedata &argin, bool forget)
5
DeviceData DeviceProxy::command_inout_reply(long id)
6
DeviceData DeviceProxy::command_inout_reply(long id, long timeout)
7
void DeviceProxy::command_inout_asynch(string &name, CallBack &cb)
8
void DeviceProxy::command_inout_asynch(const char *name, CallBack &cb)
9
void DeviceProxy::command_inout_asynch(string &name, DeviceData &argin, CallBack &cb)
10
void DeviceProxy::command_inout_asynch(const char *name, DeviceData &argin, Callback &cb)
6
Asynchronous attribute related methods
1
long DeviceProxy::read_attribute_asynch(string &name)
2
long DeviceProxy::read_attribute_asynch(const char *name)
3
long DeviceProxy::read_attributes_asynch(vector<string> &names)
4
DeviceAttribute *DeviceProxy::read_attribute_reply(long id)
5
DeviceAttribute *DeviceProxy::read_attribute_reply(long id, long timeout)
6
vector<DeviceAttribute> *DeviceProxy::read_attributes_reply(long id)
7
vector<DeviceAttribute> *DeviceProxy::read_attributes_reply(long id, long timeout)
8
long DeviceProxy::write_attribute_asynch(DeviceAttribute &argin)
9
long DeviceProxy::write_attributes_asynch(vector<DeviceAttribute> &argin)
10
void DeviceProxy::write_attribute_reply(long id)
11
void DeviceProxy::write_attribute_reply(long id, long timeout)
12
void DeviceProxy::write_attributes_reply(long id)
13
void DeviceProxy::write_attributes_reply(long id, long timeout)
14
void DeviceProxy::read_attribute_asynch(string &name, CallBack &cb)
15
void DeviceProxy::read_attribute_asynch(const char *name, CallBack &cb)
16
void DeviceProxy::read_attributes_asynch(vector<string> &names, CallBack &cb)
17
void DeviceProxy::write_attribute_asynch(DeviceAttribute &argin, CallBack &cb)
18
void DeviceProxy::write_attributes_asynch(vector<DeviceAttribute> &argin, CallBack &cb)
7
Miscellaneous asynchronous related methods
1
long DeviceProxy::pending_asynch_call(asyn_req_type req)
2
void DeviceProxy::get_asynch_replies()
3
void DeviceProxy::get_asynch_replies(long timeout)
4
void DeviceProxy::cancel_asynch_request(long id)
5
void DeviceProxy::cancel_all_polling_asynch_request()
8
Polling related methods
1
bool DeviceProxy::is_command_polled(string &cmd_name)
2
bool DeviceProxy::is_command_polled(const char *cmd_name)
3
bool DeviceProxy::is_attribute_polled(string &attr_name)
4
bool Deviceproxy::is_attribute_polled(const char *attr_name)
5
int DeviceProxy::get_command_poll_period(string &cmd_name)
6
int DeviceProxy::get_command_poll_period(const char *cmd_name)
7
int DeviceProxy::get_attribute_poll_period(string &attr_name)
8
int Deviceproxy::get_attribute_poll_period(const char *attr_name)
9
vector<string> *DeviceProxy::polling_status()
10
void DeviceProxy::poll_command(string &cmd_name,int period)
11
void DeviceProxy::poll_command(const char *cmd_name, int period)
12
void DeviceProxy::poll_attribute(string &attr_name, int period)
13
void DeviceProxy::poll_attribute(const char *attr_name, int period)
14
void DeviceProxy::stop_poll_command(string &cmd_name)
15
void DeviceProxy::stop_poll_command(const char *cmd_name)
16
void DeviceProxy::stop_poll_attribute(string &attr_name)
17
void DeviceProxy::stop_poll_attribute(const char *attr_name)
9
Event related methods
1
int DeviceProxy::subscribe_event(const string &attribute, EventType event, CallBack *cb)
2
int DeviceProxy::subscribe_event(const string &attribute, EventType event, CallBack *cb, bool stateless)
3
int DeviceProxy::subscribe_event(const string &attribute, EventType event, int event_queue_size, bool stateless)
4
void DeviceProxy::unsubscribe_event(int event_id)
5
void DeviceProxy::get_events(int event_id, CallBack *cb)
6
void DeviceProxy::get_events(int event_id, EventDataList &event_list)
7
void DeviceProxy::get_events(int event_id, AttrConfEventDataList &event_list)
8
void DeviceProxy::get_events(int event_id, DataReadyEventDataList &event_list)
9
int DeviceProxy::event_queue_size(int event_id)
10
TimeVal DeviceProxy::get_last_event_date(int event_id)
11
bool DeviceProxy::is_event_queue_empty(int event_id)
10
Property related methods
1
void DeviceProxy::get_property (string&, DbData&)
2
void DeviceProxy::get_property (vector<string>&, DbData&)
3
void DeviceProxy::get_property(DbData&)
4
void DeviceProxy::put_property(DbData&)
5
void DeviceProxy::delete_property (string&)
6
void DeviceProxy::delete_property (vector<string>&)
7
void DeviceProxy::delete_property(DbData&)
8
void DeviceProxy::get_property_list(const string &filter,vector<string> &prop_list)
11
Logging related methods
1
void DeviceProxy::add_logging_target(const string &target_type_target_name)
2
void DeviceProxy::add_logging_target (const char *target_type_target_name)
3
void DeviceProxy::remove_logging_target(const string &target_type_target_name)
4
void DeviceProxy::remove_logging_target (const char *target_type_target_name)
5
vector<string> DeviceProxy::get_logging_target ()
6
int DeviceProxy::get_logging_level ()
7
void DeviceProxy::set_logging_level (int level)
12
Locking related methods
1
void DeviceProxy::lock(int lock_validity = 10)
2
void DeviceProxy::unlock(bool force = false)
3
string DeviceProxy::locking_status()
4
bool DeviceProxy::is_locked()
5
bool DeviceProxy::is_locked_by_me()
6
bool DeviceProxy::get_locker(LockerInfo &li)
2
Tango::DeviceData
1
Constructors, assignement operators and C++11
2
Operators
3
bool DeviceData::is_empty()
4
int DeviceData::get_type()
5
void DeviceData::exceptions(bitset<DeviceData::numFlags> )
6
bitset<DeviceData::numFlags> exceptions()
7
void DeviceData::reset_exceptions(DeviceData::except_flags fl)
8
void DeviceData::set_exceptions(DeviceData::except_flags fl)
9
ostream &operator<<(ostream &, DeviceData &)
3
Tango::DeviceDataHistory
1
bool DeviceDataHistory::has_failed()
2
TimeVal &DeviceDataHistory::get_date()
3
const DevErrorList &DeviceDataHistory::get_err_stack()
4
ostream &operator<<(ostream &, DeviceDataHistory &)
4
Tango::DeviceAttribute
1
Constructors, assignement operators
2
Data Extraction and Insertion : Operators and Methods
3
bool DeviceAttribute::is_empty()
4
void DeviceAttribute::exceptions(bitset<DeviceAttribute::numFlags>)
5
bitset<DeviceAttribute::numFlags> exceptions()
6
void DeviceAttribute::reset_exceptions(DeviceAttribute::except_flags fl)
7
void DeviceAttribute::set_exceptions(DeviceAttribute::except_flags fl)
8
bool DeviceAttribute::has_failed()
9
const DevErrorList &DeviceAttribute::get_err_stack()
10
string &DeviceAttribute::get_name()
11
void DeviceAttribute::set_name(string &)
12
void DeviceAttribute::set_name(const char *)
13
AttrQuality &DeviceAttribute::get_quality()
14
int DeviceAttribute::get_dim_x()
15
int DeviceAttribute::get_dim_y()
16
int DeviceAttribute::get_written_dim_x()
17
int DeviceAttribute::get_written_dim_y()
18
AttributeDimension DeviceAttribute::get_r_dimension()
19
AttributeDimension DeviceAttribute::get_w_dimension()
20
long DeviceAttribute::get_nb_read()
21
long DeviceAttribute::get_nb_written()
22
TimeVal &DeviceAttribute::get_date()
23
int DeviceAttribute::get_type()
24
AttrDataFormat DeviceAttribute::get_data_format()
25
ostream &operator<<(ostream &, DeviceAttribute &)
5
Tango::DeviceAttributeHistory
1
ostream &operator<<(ostream &, DeviceAttributeHistory &)
6
Tango::AttributeProxy()
1
Constructors
1
AttributeProxy::AttributeProxy(string &name)
2
AttributeProxy::AttributeProxy(const char *name)
2
Miscellaneous methods
1
DevState AttributeProxy::state()
2
string AttributeProxy::status()
3
int AttributeProxy::ping()
4
string AttributeProxy::name()
5
DeviceProxy *get_device_proxy()
3
Synchronous related methods
1
AttributeInfo AttributeProxy::get_config()
2
void AttributeProxy::set_config(AttributeInfo &)
3
DeviceAttribute AttributeProxy::read()
4
void AttributeProxy::write(DeviceAttribute&)
5
DeviceAttribute AttributeProxy::write_read(DeviceAttribute&)
6
vector<DeviceAttributeHistory> *AttributeProxy::history(int)
4
Asynchronous methods
1
long AttributeProxy::read_asynch()
2
DeviceAttribute *AttributeProxy::read_reply(long id)
3
DeviceAttribute *AttributeProxy::read_reply(long id, long timeout)
4
long AttributeProxy::write_asynch(DeviceAttribute &argin)
5
void AttributeProxy::write_reply(long id)
6
void AttributeProxy::write_reply(long id, long timeout)
7
void AttributeProxy::read_asynch(CallBack &cb)
8
void AttributeProxy::write_asynch(DeviceAttribute &argin, CallBack &cb)
5
Polling related methods
1
bool AttributeProxy::is_polled()
2
int AttributeProxy::get_poll_period()
3
void AttributeProxy::poll(int period)
4
void AttributeProxy::stop_poll()
6
Event related methods
1
int AttributeProxy::subscribe_event(EventType event, CallBack *cb)
2
int AttributeProxy::subscribe_event(EventType event, CallBack *cb, bool stateless)
3
int AttributeProxy::subscribe_event(EventType event, int event_queue_size, bool stateless)
4
void AttributeProxy::unsubscribe_event(int event_id)
5
void AttributeProxy::get_events(int event_id, CallBack *cb)
6
void AttributeProxy::get_events(int event_id, EventDataList &event_list)
7
void AttributeProxy::get_events(int event_id, AttrConfEventDataList &event_list)
8
int AttributeProxy::event_queue_size(int event_id)
9
TimeVal AttributeProxy::get_last_event_date(int event_id)
10
bool AttributeProxy::is_event_queue_empty(int event_id)
7
Property related methods
1
void AttributeProxy::get_property (string&, DbData&)
2
void AttributeProxy::get_property (vector<string>&, DbData&)
3
void AttributeProxy::get_property(DbData&)
4
void AttributeProxy::put_property(DbData&)
5
void AttributeProxy::delete_property (string&, DbData&)
6
void AttributeProxy::delete_property (vector<string>&, DbData&)
7
void AttributeProxy::delete_property(DbData&)
7
Tango::ApiUtil
1
static ApiUtil *ApiUtil::instance()
2
static void ApiUtil::cleanup()
3
long ApiUtil::pending_asynch_call(asyn_req_type req)
4
void ApiUtil::get_asynch_replies()
5
void ApiUtil::get_asynch_replies(long timeout)
6
void ApiUtil::set_asynch_cb_sub_model(cb_sub_model model)
7
cb_sub_model ApiUtil::get_asynch_cb_sub_model()
8
static int ApiUtil::get_env_var(const char *name,string &value)
9
void set_event_buffer_hwm(DevLong val)
8
Asynchronous callback related classes
1
Tango::CallBack
1
void CallBack::cmd_ended(CmdDoneEvent *event)
2
void CallBack::attr_read(AttrReadEvent *event)
3
void CallBack::attr_written(AttrWrittenEvent *event)
4
void CallBack::push_event(EventData *event)
5
void CallBack::push_event(AttrConfEventData *event)
6
void CallBack::push_event(DataReadyEventData *event)
2
Tango::CmdDoneEvent
3
Tango::AttrReadEvent
4
Tango::AttrWrittenEvent
5
Tango::EventData
6
Tango::AttrConfEventData
7
Tango::DataReadyEventData
9
Tango::Group
1
Constructor and Destructor
1
Group::Group (const std::string& name)
2
Group::~Group ()
2
Group Management Related Methods
1
void Group::add (Group* group, int timeout_ms = -1)
2
void Group::add (const std::string& pattern, int timeout_ms = -1)
3
void Group::add (const std::vector<std::string>& patterns, int timeout_ms = -1)
4
void Group::remove (const std::string& pattern, bool fwd = true)
5
void Group::remove (const std::vector<std::string>& patterns, bool fwd = true)
6
void Group::remove_all (void)
7
bool Group::contains (const std::string& pattern, bool fwd = true)
8
DeviceProxy* Group::get_device (const std::string& device_name)
9
DeviceProxy* Group::get_device (long idx)
10
DeviceProxy* Group::operator[] (long i)
11
Group* Group::get_group (const std::string& group_name)
12
long Group::get_size (bool fwd = true)
13
std::vector<std::string> Group::get_device_list (bool fwd = true)
3
A la DeviceProxy Methods
1
bool Group::ping (bool fwd = true)
2
void Group::set_timeout_millis(int timeout_ms)
3
GroupCmdReplyList Group::command_inout (const std::string& c, bool fwd = true)
4
GroupCmdReplyList Group::command_inout (const std::string& c, const DeviceData& d, bool fwd = true)
5
template<typename T> GroupCmdReplyList Group::command_inout (const std::string& c, const std::vector<T>& d, bool fwd = true)
6
long Group::command_inout_asynch (const std::string& c, bool fgt = false, bool fwd = true, long rsv = -1)
7
long Group::command_inout_asynch (const std::string& c, const DeviceData& d, bool fgt = false, bool fwd = true, long rsv = -1)
8
long Group::command_inout_asynch (const std::string& c, const std::vector<T>& d, fgt = false, bool fwd = true)
9
GroupCmdReplyList Group::command_inout_reply (long req_id, long timeout_ms = 0)
10
GroupAttrReplyList Group::read_attribute (const std::string& a, bool fwd = true)
11
long Group::read_attribute_asynch (const std::string& a, bool fwd = true, long rsv = -1)
12
GroupAttrReplyList Group::read_attribute_reply (long req_id, long timeout_ms = 0)
13
GroupReplyList Group::write_attribute (const DeviceAttribute& d, bool fwd = true)
14
GroupReplyList Group::write_attribute (const std::string& a, const std::vector<T>& d, bool fwd = true)
15
long Group::write_attribute_asynch (const DeviceAttribute& d, bool fwd = true, long rsv = -1)
16
long Group::write_attribute_asynch (const std::string& a, const std::vector<T>& d, bool fwd = true)
17
GroupReplyList Group::write_attribute_reply (long req_id, long timeout_ms = 0)
18
GroupAttrReplyList Group::read_attributes (const std::vector<std::string>& al, bool fwd = true)
19
long Group::read_attributes_asynch (const std::vector<std::string>& al, bool fwd = true, long rsv = -1)
20
GroupAttrReplyList Group::read_attributes_reply (long req_id, long timeout_ms = 0)
10
Tango::Database
1
Database::Database()
2
string Database::get_info()
3
void Database::add_device(DbDevInfo&)
4
void Database::delete_device(string)
5
DbDevImportInfo Database::import_device(string &)
6
void Database::export_device(DbDevExportInfo&)
7
void Database::unexport_device(string)
8
void Database::add_server(string &, DbDevInfos&)
9
void Database::delete_server(string &)
10
void Database::export_server( DbDevExportInfos &)
11
void Database::unexport_server(string &)
12
DbDatum Database::get_services(string &servicename,string &instname)
13
void Database::register_service(string &servicename,string &instname,string &devname)
14
void Database::unregister_service(string &servicename,string &instname)
15
DbDatum Database::get_host_list()
16
DbDatum Database::get_host_list(string &wildcard)
17
DbDatum Database::get_server_class_list(string &server)
18
DbDatum Database::get_server_name_list()
19
DbDatum Database::get_instance_name_list(string &servername)
20
DbDatum Database::get_server_list()
21
DbDatum Database::get_server_list(string &wildcard)
22
DbDatum Database::get_host_server_list(string &hostname)
23
DbServerInfo Database::get_server_info(string &server)
24
void Database::put_server_info(DbServerInfo &info)
25
void Database::delete_server_info(string &server)
26
DbDatum Database::get_device_name(string &, string &)
27
DbDatum Database::get_device_exported(string &)
28
DbDatum Database::get_device_domain(string &)
29
DbDatum Database::get_device_family(string &)
30
DbDatum Database::get_device_member(string &)
31
DbDatum Database::get_device_class_list(string &server)
32
string Database::get_class_for_device(string &devname)
33
DbDatum Database::get_class_inheritance_for_device(string &devname)
34
DbDatum Database::get_device_exported_for_class(string &classname)
35
DbDatum Database::get_object_list(string &wildcard)
36
DbDatum Database::get_object_property_list(string &objectname,string &wildcard)
37
void Database::get_property(string, DbData&)
38
void Database::put_property(string, DbData&)
39
void Database::delete_property(string, DbData&)
40
vector<DbHistory> Database::get_property_history(string &objname, string &propname)
41
void Database::get_device_property(string, DbData&)
42
void Database::put_device_property(string, DbData&)
43
void Database::delete_device_property(string, DbData&)
44
vector<DbHistory> Database::get_device_property_history(string &devname, string &propname)
45
void Database::get_device_attribute_property(string, DbData&)
46
void Database::put_device_attribute_property(string, DbData&)
47
void Database::delete_device_attribute_property(string, DbData&)
48
vector<DbHistory> Database::get_device_attribute_property_history(string &devname, string &attname, string &propname)
49
DbDatum Database::get_class_list(string &wildcard)
50
DbDatum Database::get_class_property_list(string &classname)
51
void Database::get_class_property(string, DbData&)
52
void Database::put_class_property(string, DbData&)
53
void Database::delete_class_property(string, DbData&)
54
vector<DbHistory> Database::get_class_property_history(string &classname, string &propname)
55
DbDatum Database::get_class_attribute_list(string &classname,string &wildcard)
56
void Database::get_class_attribute_property(string, DbData&)
57
void Database::put_class_attribute_property(string, DbData&)
58
void Database::delete_class_attribute_property(string, DbData&)
59
vector<DbHistory> Database::get_class_attribute_property_history(string &devname, string &attname, string &propname)
60
void Database::get_alias(string dev_name, string &dev_alias)
61
void Database::get_device_alias(string dev_alias, string &dev_name)
62
void Database::get_attribute_alias(string attr_alias, string &attr_name)
63
void Database::put_attribute_alias(string &att_name, string &alias_name)
64
void Database::delete_attribute_alias(string &alias_name)
65
DbDatum Database::get_device_alias_list(string &filter)
66
DbDatum Database::get_attribute_alias_list(string &filter)
67
void Database::put_device_alias(string &dev_name,string &alias_name)
68
void Database::delete_device_alias(string &alias_name)
11
Tango::DbDevice
1
DbDevice::DbDevice(string &)
2
DbDevice::DbDevice(string &, Database *)
3
DbDevImportInfo DbDevice::import_device()
4
void DbDevice::export_device(DbDevExportInfo&)
5
void DbDevice::add_device(DbDevInfo&)
6
void DbDevice::delete_device()
7
void DbDevice::get_property(DbData&)
8
void DbDevice::put_property(DbData&)
9
void DbDevice::delete_property(DbData&)
10
void DbDevice::get_attribute_property(DbData&)
11
void DbDevice::put_attribute_property(DbData&)
12
void DbDevice::delete_attribute_property(DbData&)
12
Tango::DbClass
1
DbClass::DbClass(string)
2
DbClass::DbClass(string, Database *)
3
void DbClass::get_property(DbData&)
4
void DbClass::put_property(DbData&)
5
void DbClass::delete_property(DbData&)
6
void DbClass::get_attribute_property(DbData&)
7
void DbClass::put_attribute_property(DbData&)
8
void DbClass::delete_attribute_property(DbData&)
13
Tango::DbServer
1
DbServer::DbServer(string)
2
DbServer::DbServer(string, Database *)
3
void DbServer::add_server(DbDevInfos &)
4
void DbServer::delete_server()
5
void DbServer::export_server(DbDevExportInfos &)
6
void DbServer::unexport_server()
14
Tango::DbDatum
1
Operators
2
bool DbDatum::is_empty()
3
void DbDatum::exceptions(bitset<DbDatum::numFlags>)
4
bitset<DbDatum::numFlags> exceptions()
5
void DbDatum::reset_exceptions(DbDatum::except_flags fl)
6
void DbDatum::set_exceptions(DbDatum::except_flags fl)
15
Tango::DbData
16
Exception
1
The ConnectionFailed exception
2
The CommunicationFailed exception
3
The WrongNameSyntax exception
4
The NonDbDevice exception
5
The WrongData exception
6
The NonSupportedFeature exception
7
The AsynCall exception
8
The AsynReplyNotArrived exception
9
The EventSystemFailed exception
10
The NamedDevFailedList exception
1
long NamedDevFailedList::get_faulty_attr_nb()
2
vector<NamedDevFailed> NamedDevErrorList::err_list
3
string NamedDevFailed::name
4
long NamedDevFailed::idx_in_call
5
DevErrorList NamedDevFailed::err_stack
11
The DeviceUnlocked exception
17
Reconnection and exception
7
TangoATK Programmer's Guide
1
Introduction
1
Assumptions
2
The key concepts of TangoATK
1
Minimize development time
2
Minimize bugs in applications
3
Attributes and commands from different devices
4
Avoid code duplication
3
The real getting started
1
Single device applications
2
Multi device applications
3
More on displaying attributes
1
Connecting an attribute to a viewer
2
Synoptic viewer
4
A short note on the relationship between models and viewers
1
Listeners
4
The key objects of TangoATK
1
The Refreshers
1
What happens on a refresh
2
The DeviceFactory
3
The AttributeFactory and the CommandFactory
4
The AttributeList and the CommandList
5
The Attributes
1
The hierarchy
6
The Commands
1
Events and listeners
8
Writing a TANGO device server
1
The device server framework
1
Naming convention and programming language
2
The device pattern
1
The DeviceImpl class
2
The DbDevice class
3
The Command class
4
The DeviceClass class
5
The DbClass class
6
The MultiAttribute class
7
The Attribute class
8
The WAttribute class
9
The Attr class
10
The SpectrumAttr class
11
The ImageAttr class
12
The StepperMotor class
13
The StepperMotorClass class
14
The DevReadPosition class
15
The PositionAttr class
3
Startup of a device pattern
4
Command execution sequence
5
The automatically added commands
6
Reading/Writing attributes
1
Reading attributes
2
Writing attributes
7
The device server framework
1
Vocabulary
2
The DServer class
3
The Tango::Util class
4
A complete device server
5
Device server startup sequence
2
Exchanging data between client and server
1
Command / Attribute data types
1
Using command data types with C++
2
Using command data types with Java
2
Passing data between client and server
1
C++ mapping for IDL any type
2
The insert and extract methods of the Command class
3
Java mapping for IDL any type
4
The insert and extract methods of the Command class for Java
3
C++ memory management
1
For string
2
For array/sequence
3
For string array/sequence
4
For Tango composed types
4
Reporting errors
1
Example of throwing exception using C++
2
Example of throwing exception using Java
3
The Tango Logging Service
1
Logging Targets
2
Logging Levels
3
Sending TANGO Logging Messages
1
Logging macros in C++
2
C++ logging in the name of a device
3
Logging in Java
4
Logging in the name of a device with Java
4
Writing a device server
1
Understanding the device
2
Defining device commands
1
Standard commands
3
Choosing device state
4
Device server utilities to ease coding/debugging
1
The device server verbose option
2
Device server output redirection (Java specific)
3
Java usage example
4
C++ utilities to ease device server coding
5
Avoiding name conflicts
1
Using C++
2
Using Java
6
The device server main function
1
Using C++
2
Using Java
7
The DServer::class_factory method (C++ specific)
8
Writing the StepperMotorClass class
1
Using C++
2
Using Java
9
The DevReadPositionCmd class
1
Using C++
2
Using Java
10
The PositionAttr class
1
Using C++
11
The StepperMotor class
1
Using C++
2
Using Java
5
Device server under Windows
1
The Tango device server graphical interface
1
The device server main window
2
The console window
3
The help window
2
MFC device server
1
The InitInstance method
2
The ExitInstance method
3
Example of how to build a Windows device server MFC based
3
Win32 application
4
Device server as NT service
1
The service class
2
The main function
3
Service options and messages
4
Tango device server using MFC as Windows service
6
Compiling, linking and executing a TANGO device server process
1
Compiling and linking a C++ device server
1
On UNIX like operating system
2
On Windows using Visual Studio
2
Running a C++ device server
3
Compiling a Java device server
1
Supported java release
2
Setting the CLASSPATH
3
Makefile
4
Tango core software release number
4
Running a Java device server
7
Advanced programming techniques
1
Receiving signal (C++ specific)
1
Using signal
2
Exiting a device server gracefully
2
Inheriting
1
Using C++
2
Using Java
3
Using another device pattern implementation within the same server
9
Advanced features
1
Attribute alarms
1
The level alarms
2
The Read Different than Set (RDS) alarm
2
Device polling
1
Introduction
2
Configuring the polling system
1
Configuring what has to be polled and how
2
Configuring the polling threads pool
3
Reading data from the polling buffer
4
Retrieving command/attribute result history
5
Externally triggered polling (only for C++ device server)
6
Filling polling buffer (only for C++ device server)
7
Setting and tuning the polling in a Tango class
3
Threading
1
C++ device server process
1
Serialization model within a device server
2
Attribute Serialization model
2
C++ client process
4
Generating events in a device server
5
Memorized attribute
6
Transfering images
7
Device server with user defined event loop
8
Device server using file as database
9
Device server without database
1
Example of device server started without database usage
1
Java device server without the database
2
Start a java device server without database
2
Connecting client to device within a device server started without database
10
Multiple database servers within a Tango control system
11
The Tango controlled access system
1
User rights definition
2
Running a Tango control system with the controlled access
A. Reference part
1
Device parameter
1
The device black box
2
The device description field
3
The device state and status
4
The device polling
5
The device logging
2
Device attribute
1
Hard-coded device attribute parameters
1
The Attribute data type
2
The attribute data format
3
The max_dim_x and max_dim_y parameters
4
The attribute read/write type
5
The associated write attribute parameter
6
The attribute display level parameter
2
Modifiable attribute parameters
1
General purpose parameters
2
The alarm related configuration parameters
3
The event related configuration parameters
3
Setting modifiable attribute parameters
4
Resetting modifiable attribute parameters
3
Device class parameter
4
The device black box
5
Automatically added commands
1
The State command
2
The Status command
3
The Init command
6
DServer class device commands
1
The State command
2
The Status command
3
The DevRestart command
4
The RestartServer command
5
The QueryClass command
6
The QueryDevice command
7
The Kill command
8
The QueryWizardClassProperty command
9
The QueryWizardDevProperty command
10
The QuerySubDevice command
11
The StartPolling command
12
The StopPolling command
13
The AddObjPolling command
14
The RemObjPolling command
15
The UpdObjPollingPeriod command
16
The PolledDevice command
17
The DevPollStatus command
18
The LockDevice command
19
The UnLockDevice command
20
The ReLockDevices command
21
The DevLockStatus command
22
The EventSubscriptionChange command (C++ server only)
23
The ZmqEventSubscriptionChange command (C++ server only)
24
The AddLoggingTarget command
25
The RemoveLoggingTarget command
26
The GetLoggingTarget command
27
The GetLoggingLevel command
28
The SetLoggingLevel command
29
The StopLogging command
30
The StartLogging command
7
DServer class device properties
8
Tango log consumer
1
The available Log Consumer
2
The Log Consumer interface
9
Control system specific
1
The device class documentation default value
2
The services definition
3
Tuning the event system buffers (HWM)
4
Allowing NaN when writing attributes (floating point)
5
Summary of CtrlSystem free object properties
10
C++ specific
1
The Tango master include file (tango.h)
2
Tango specific pre-processor define
3
Tango specific types
Operating system free type
1
Template command model related type
4
Tango device state code
5
Tango data type
6
Tango command display level
11
Java specific
1
Packages
12
Device server process option and environment variables
1
Classical device server
2
Device server process as Windows service
3
Environment variables
1
TANGO_HOST
2
Tango Logging Service (TANGO_LOG_PATH)
3
The database and controlled access server (MYSQL_USER, MYSQL_PASSWORD and MYSQL_HOST)
4
The controlled access
5
The event buffer size
B. The TANGO IDL file : Module Tango
1
Aliases
2
Enums
3
Structs
4
Unions
5
Exceptions
6
Interface Tango::Device
1
Attributes
2
Operations
7
Interface Tango::Device_2
1
Operations
8
Interface Tango::Device_3
1
Operations
9
Interface Tango::Device_4
1
Operations
C. Tango object naming (device, attribute and property)
1
Device name
2
Full object name
1
Some examples
1
Full device name examples
2
Attribute name examples
3
Attribute property name
4
Device property name
5
Class property name
3
Device and attribute name alias
4
Reserved words and characters, limitations
D. Starting a Tango control system
1
Without database
2
With database
3
With database and event
1
For Tango releases lower than 8
2
For release 8 and above
4
With file used as database
5
With file used as database and event
1
For Tango releases lower than 8
2
For release 8 and above
6
With the controlled access
E. The notifd2db utility
1
The notifd2db utility usage (For Tango releases lower than 8)
F. The property file syntax
1
Property file usage
2
Property file syntax
List of pictures
Bibliography
Index
About this document ...
Emmanuel Taurel 2012-06-06