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