This is the new TACO interface defined in IDL. New TACO (or TANGO)
is a total rethink of (old) TACO which was based on remote procedure
calls.
TANGO is an extension of old TACO.
The fundamental idea of a device as a network object which
has methods and data has been retained. However
in TANGO objects will be real C++/Java objects which can be instantiated
and accessed via their methods and data by the client as if they were local
objects.
Certain aspects of the old DSAPI application programmer's
interface have been suppressed in order to simplify the client (e.g. import,
free, data collector api).
Features which have been considered missing in old TACO have been added
e.g. signals, events and groups.
Asynchronism and groups have been foreseen right from the beginning
this time.
This interface is defined in CORBA IDL.
The fundamental interface is Device.
All TANGO control objects will be of this type i.e. they will implement and
offer the Device interface.
New classes of control objects e.g. PowerSupply, will be created by
wrapping the Device class appropriately.
The wrapper class will hide the calls to the Device interface from
the client so that the client will only see the wrapper class.
All CORBA details will be hidden from the client as far as possible.
Generic clients will use the Device interface directly.
In addition to Device TANGO offers the interfaces Monitor,
GroupDevice and GroupSignal.
These interfaces implement TANGO services for monitoring and
executing grouped accesses to device/signals.
Version history:
20/08/98 : 1.1 : First official release
18/08/99 : 2.0 : Separe idl and pseudo-idl
08/09/99 : 2.1 : Remove the applet attribute and the initiliase and serialise operation from the device interface
15/09/99 : 2.2 : Adapted to the ICALEPS show
06/12/99 : 2.3 : Less possible state and add strings in the DevCmdInfo struct
31/01/00 : 2.4 : Update DevVarCharArray to array of octet
10/02/00 : 2.5 : Updated all attribute related stuff
21/03/00 : 2.6 : Change arguments for the write_attributes device operation
15/09/00 : 2.7 : Change arguments for the read_attributes operation. Remove the
CORBA field of the ErrFacility enumeration.
Replace the WARMUP state by INIT.
Change name of the dim_x and dim_y fields of the
AttributeConfig structure to max_dim_x and max_dim_y
27/09/00 : 2.8 : Change the writable field type of the AttributeConfig structure
26/10/00 : 2.9 : Change the DevError structure fields
12/02/01 : 2.10 : Change in the ErrSeverity enum. Windows does not like enum member like ERROR
14/02/01 : 2.11 : Another change in the ErrSeverity enum. WARNING is now WARN
23/03/01 : 2.12 : Add anew attribute in the Device interface called adm_name
typedef sequence<AttributeConfig> AttributeConfigList;
typedef sequence<AttributeValue> AttributeValueList;
typedef sequence<octet> DevApplet;
typedef boolean DevBoolean;
typedef sequence<DevCallBackData> DevCallBackDataList;
typedef sequence<DevCmdInfo> DevCmdInfoList;
typedef double DevDouble;
typedef sequence<DevError> DevErrorList;
typedef float DevFloat;
typedef long DevLong;
typedef sequence<octet, 4> DevSecurity;
typedef short DevShort;
typedef string DevString;
typedef unsigned long DevULong;
typedef unsigned short DevUShort;
typedef sequence<octet> DevVarCharArray;
typedef sequence<double> DevVarDoubleArray;
typedef sequence<float> DevVarFloatArray;
typedef sequence<long> DevVarLongArray;
typedef sequence<short> DevVarShortArray;
typedef sequence<string> DevVarStringArray;
typedef sequence<unsigned long> DevVarULongArray;
typedef sequence<unsigned short> DevVarUShortArray;
typedef sequence<Device> DeviceList;
enum AttrDataFormat
{
SCALAR,
SPECTRUM,
IMAGE
};
enum AttrQuality
{
ATTR_VALID,
ATTR_INVALID,
ATTR_ALARM
};
enum AttrWriteType
{
READ,
READ_WITH_WRITE,
WRITE,
READ_WRITE
};
enum DevPriority
{
NORMAL,
OUT_OF_BAND
};
enum DevProtocol
{
IIOP,
ONCRPCUDP,
ONCRPCTCP
};
enum DevSource
{
DS,
DC
};
enum DevState
{
ON,
OFF,
CLOSE,
OPEN,
INSERT,
EXTRACT,
MOVING,
STANDBY,
FAULT,
INIT,
RUNNING,
ALARM,
DISABLE,
UNKNOWN
};
enum ErrSeverity
{
WARN,
ERR,
PANIC
};
enum MonitorId
{
REPORTING_SIGNAL,
REPORTING_CLOCK,
REPORTING_ALARM,
REPORTING_STATE_CHANGE,
REPORTING_EVENT
};
struct AttributeConfig
{
string name;
AttrWriteType writable;
AttrDataFormat data_format;
long data_type;
long max_dim_x;
long max_dim_y;
string description;
string label;
string unit;
string standard_unit;
string display_unit;
string format;
string min_value;
string max_value;
string min_alarm;
string max_alarm;
string writable_attr_name;
DevVarStringArray extensions;
};
struct AttributeValue
{
any value;
AttrQuality quality;
TimeVal time;
string name;
long dim_x;
long dim_y;
};
struct DevCallBackData
{
long cb_id;
any argout;
long status;
TimeVal time;
};
struct DevCallBackInfo
{
DevCallBackData cb_data;
any user_data;
};
struct DevCallBackInfoList
{
DevCallBackDataList cb_data;
any user_data;
};
struct DevCmdInfo
{
string cmd_name;
long cmd_tag;
long in_type;
long out_type;
string in_type_desc;
string out_type_desc;
};
struct DevError
{
string reason;
ErrSeverity severity;
string desc;
string origin;
};
struct DevInfo
{
string dev_class;
string server_id;
string server_host;
long server_version;
string doc_url;
};
struct DevVarDoubleStringArray
{
DevVarDoubleArray dvalue;
DevVarStringArray svalue;
};
struct DevVarLongStringArray
{
DevVarLongArray lvalue;
DevVarStringArray svalue;
};
struct MonitorInfo
{
MonitorId monitor_id;
MonitorData mon_data;
};
struct ReportingClockInfo
{
TimeVal elapsed;
TimeVal tick_size;
unsigned long tick_number;
};
struct ReportingEventInfo
{
TimeVal stamp;
long event_id;
sequence<octet, 8> param;
};
struct TimeVal
{
long tv_sec;
long tv_usec;
long tv_nsec;
};
union MonitorData switch(MonitorId)
{
case REPORTING_CLOCK: ReportingClockInfo rep_clock_info;
case REPORTING_EVENT: ReportingEventInfo rep_event_info;
default: string cb_reason;
};
exception DevFailed
{
DevErrorList errors;
};
Generated by the ORBacus IDL-to-HTML translator