From b954db9be81e5b0b6cf8df215c35f7f08679e074 Mon Sep 17 00:00:00 2001 From: Anders Broman Date: Tue, 28 Jun 2005 19:13:11 +0000 Subject: Add the Tango IDL file from Paolo Frigo. svn path=/trunk/; revision=14805 --- idl/tango.idl | 736 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 736 insertions(+) create mode 100644 idl/tango.idl (limited to 'idl') diff --git a/idl/tango.idl b/idl/tango.idl new file mode 100644 index 0000000000..c7286a70a2 --- /dev/null +++ b/idl/tango.idl @@ -0,0 +1,736 @@ + + +/** + * 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 a new attribute in the Device interface called adm_name
+ * 26/10/01 : 3.0 : Add a new Device interface version using inheritance
+ * Add a new parameter to command_inout operation
+ * Add the command and attribute display level in command and attribute config structure
+ * Add a new call to get command or attribute cache history
+ * 06/04/02 : 2.0 : Update release number to be coherent with the real Tango software release number
+ +@author JM.Chaize,
A.Gotz,
W-D.Klotz,
J.Meyer,
E.Taurel +@version 2.0 +**/ + +module Tango +{ + +//------------------------------------------------------------------------- +// +// Include all types, struct.... definition file +// +//------------------------------------------------------------------------- + + + +//------------------------------------------------------------------------- +// +// Basic types to transport command data +// +//------------------------------------------------------------------------- + +typedef boolean DevBoolean; +typedef double DevDouble; +typedef float DevFloat; +typedef long DevLong; +typedef short DevShort; +typedef string DevString; +typedef octet DevUChar; +typedef unsigned long DevULong; +typedef unsigned short DevUShort; +typedef sequence DevVarFloatArray; +typedef sequence DevVarDoubleArray; +typedef sequence DevVarShortArray; +typedef sequence DevVarLongArray; +typedef sequence DevVarCharArray; +typedef sequence DevVarStringArray; +typedef sequence DevVarUShortArray; +typedef sequence DevVarULongArray; +typedef sequence DevVarBooleanArray; + +struct DevVarLongStringArray +{ + DevVarLongArray lvalue; + DevVarStringArray svalue; +}; + +struct DevVarDoubleStringArray +{ + DevVarDoubleArray dvalue; + DevVarStringArray svalue; +}; + + +//------------------------------------------------------------------------- +// +// Some enumerations +// +//------------------------------------------------------------------------- + + +enum AttrQuality +{ + ATTR_VALID, + ATTR_INVALID, + ATTR_ALARM, + ATTR_CHANGING, + ATTR_WARNING +}; + +enum AttrWriteType +{ + READ, + READ_WITH_WRITE, + WRITE, + READ_WRITE +}; + +enum AttrDataFormat +{ + SCALAR, + SPECTRUM, + IMAGE +}; + +enum DevSource +{ + DEV, + CACHE, + CACHE_DEV +}; + +enum ErrSeverity +{ + WARN, + ERR, + PANIC +}; + +enum DevState +{ + ON, + OFF, + CLOSE, + OPEN, + INSERT, + EXTRACT, + MOVING, + STANDBY, + FAULT, + INIT, + RUNNING, + ALARM, + DISABLE, + UNKNOWN +}; + +enum DispLevel +{ + OPERATOR, + EXPERT +}; + + +//------------------------------------------------------------------------- +// +// Some miscellaneous structures definitions +// +//------------------------------------------------------------------------- + +struct TimeVal +{ + long tv_sec; + long tv_usec; + long tv_nsec; +}; + + +//------------------------------------------------------------------------- +// +// For the command query device operation +// +//------------------------------------------------------------------------- + + +struct DevCmdInfo +{ + string cmd_name; + long cmd_tag; + long in_type; + long out_type; + string in_type_desc; + string out_type_desc; +}; + +struct DevCmdInfo_2 +{ + string cmd_name; + DispLevel level; + long cmd_tag; + long in_type; + long out_type; + string in_type_desc; + string out_type_desc; +}; + +typedef sequence DevCmdInfoList; +typedef sequence DevCmdInfoList_2; + + +//------------------------------------------------------------------------- +// +// For the DevFailed exceptions +// +//------------------------------------------------------------------------- + +struct DevError +{ + string reason; + ErrSeverity severity; + string desc; + string origin; +}; + +typedef sequence DevErrorList; + +struct NamedDevError +{ + string name; + long index_in_call; + DevErrorList err_list; +}; + +typedef sequence NamedDevErrorList; + + +exception DevFailed +{ + DevErrorList errors; +}; + +exception MultiDevFailed +{ + NamedDevErrorList errors; +}; + + +//------------------------------------------------------------------------- +// +// For attribute management +// +//------------------------------------------------------------------------- + + +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 AttributeConfig_2 +{ + 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; + DispLevel level; + DevVarStringArray extensions; +}; + +struct AttributeValue +{ + any value; + AttrQuality quality; + TimeVal time; + string name; + long dim_x; + long dim_y; +}; + +struct AttributeDim +{ + long dim_x; + long dim_y; +}; + +struct AttributeValue_3 +{ + any value; + AttrQuality quality; + TimeVal time; + string name; + AttributeDim r_dim; + AttributeDim w_dim; + DevErrorList err_list; +}; + +struct ChangeEventProp +{ + string rel_change; + string abs_change; + DevVarStringArray extensions; +}; + +struct PeriodicEventProp +{ + string period; + DevVarStringArray extensions; +}; + +struct ArchiveEventProp +{ + string rel_change; + string abs_change; + string period; + DevVarStringArray extensions; +}; + +struct EventProperties +{ + ChangeEventProp ch_event; + PeriodicEventProp per_event; + ArchiveEventProp arch_event; +}; + +struct AttributeAlarm +{ + string min_alarm; + string max_alarm; + string min_warning; + string max_warning; + string delta_t; + string delta_val; + DevVarStringArray extensions; +}; + +struct AttributeConfig_3 +{ + 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 writable_attr_name; + DispLevel level; + AttributeAlarm att_alarm; + EventProperties event_prop; + DevVarStringArray extensions; + DevVarStringArray sys_extensions; +}; + +typedef sequence AttributeConfigList; +typedef sequence AttributeConfigList_2; +typedef sequence AttributeConfigList_3; +typedef sequence AttributeValueList; +typedef sequence AttributeValueList_3; + + +//------------------------------------------------------------------------- +// +// For device interface info operation +// +//------------------------------------------------------------------------- + +struct DevInfo +{ + string dev_class; + string server_id; + string server_host; + long server_version; + string doc_url; +}; + +struct DevInfo_3 +{ + string dev_class; + string server_id; + string server_host; + long server_version; + string doc_url; + string dev_type; +}; + +//------------------------------------------------------------------------- +// +// For command and attribute history +// +//------------------------------------------------------------------------- + +struct DevCmdHistory +{ + TimeVal time; + boolean cmd_failed; + any value; + DevErrorList errors; +}; + +typedef sequence DevCmdHistoryList; + +struct DevAttrHistory +{ + boolean attr_failed; + AttributeValue value; + DevErrorList errors; +}; + +struct DevAttrHistory_3 +{ + boolean attr_failed; + AttributeValue_3 value; +}; + +typedef sequence DevAttrHistoryList; +typedef sequence DevAttrHistoryList_3; + +//------------------------------------------------------------------------- +// +// Include the device interface +// +//------------------------------------------------------------------------- + + + + + +/** + * The fundamental interface for all TANGO objects. + * Each Device is a network object which can be accessed locally or via + * network. + * The network protocol on the wire will be IIOP. + * The Device interface implements all the basic functions needed for doing + * generic synchronous and asynchronous I/O on a device. + * A Device object has data and actions. + * Data are represented in the form of Attributes. + * Actions are represented in the form of Commands. + * The CORBA Device interface offers attributes and methods to access + * the attributes and commands. + * A client will either use these methods directly from C++ or Java or access + * them via a wrapper class. + * The Device interface describes only the remote network interface. + * Implementation features like threads, command security, priority + * etc. are dealt with in server side of the device server model. + **/ + +interface Device +{ + +/** + * name (readonly) - unique ascii identifier + **/ + readonly attribute string name; +/** + * description (readonly) - general description of device + **/ + readonly attribute string description; +/** + * state (readonly) - device state + **/ + readonly attribute DevState state; +/** + * status (readonly) - device state as ascii string + **/ + readonly attribute string status; +/** + * adm_name (readonly) - administrator device unique ascii identifier + **/ + readonly attribute string adm_name; + +/** + * execute a command on a device synchronously with + * one input parameter and one output parameter +@param command ascii string e.g. "On" +@param argin command input parameter e.g. float +@return command result. + **/ + any command_inout(in string command, in any argin) raises(DevFailed); + + +/** + * read the configuration for a variable list of attributes from a device +@param name list of attribute names to read +@return list of attribute configurations read + **/ + AttributeConfigList get_attribute_config(in DevVarStringArray names) raises(DevFailed); + + +/** + * set the configuration for a variable list of attributes from the device +@param new_conf list of attribute configuration to be set +@return nothing + **/ + void set_attribute_config(in AttributeConfigList new_conf) raises(DevFailed); + + +/** + * read a variable list of attributes from a device +@param name list of attribute names to read +@return list of attribute values read + **/ + AttributeValueList read_attributes(in DevVarStringArray names) raises(DevFailed); + + + +/** + * write a variable list of attributes to a device +@param values list of attribute values to write +@return nothing + **/ + void write_attributes(in AttributeValueList values) raises(DevFailed); + +/** + * ping a device to see if it alive + **/ + void ping() raises(DevFailed); + +/** + * read list of last N commands executed by clients +@param number of commands to return +@return list of command and clients + **/ + DevVarStringArray black_box(in long n) raises(DevFailed); + + +/** + * return general information about object e.g. class, type, ... +@return device info + **/ + DevInfo info() raises(DevFailed); + + +/** + * query device to see what commands it supports +@return list of commands and their types + **/ + DevCmdInfoList command_list_query() raises(DevFailed); + + +/** + * query device to see command argument +@return command and its types +@param command name + **/ + DevCmdInfo command_query(in string command) raises(DevFailed); + +}; + +/** + * A new release of the basic Device interface. + * This new release has been introduced mainly to support Tango device server + * internal polling. Inheritance is used between this new release and the + * old one. This release mainly defines a new release of the command_inout and + * read_attributes calls with a new parameter. It also add a new call to read + * command or attributes result history. + **/ + +interface Device_2: Device +{ +/** + * Execute a command on a device synchronously with + * one input parameter and one output parameter +@param command ascii string e.g. "On" +@param argin command input parameter e.g. float +@param source The data source. Used to specify if the command result must be +read from the polling cache buffer or from the device itself +@return command result. + **/ + any command_inout_2(in string command, + in any argin, + in DevSource source) raises(DevFailed); + +/** + * Read a variable list of attributes from a device +@param name list of attribute names to read +@param source The data source. Used to specify if the command result must be +read from the polling cache buffer or from the device itself +@return list of attribute values read + **/ + AttributeValueList read_attributes_2(in DevVarStringArray names, + in DevSource source) raises(DevFailed); + +/** + * Read the configuration for a variable list of attributes from a device. + * Compared to the Device interface, the attribute configuration has one more + * field (The display level) +@param name list of attribute names to read +@return list of attribute configurations read + **/ + AttributeConfigList_2 get_attribute_config_2(in DevVarStringArray names) raises(DevFailed); + +/** + * Query device to see what commands it supports. + * Compared to the Device interface, the command configuration has one more + * field (The display level) +@return list of commands and their types + **/ + DevCmdInfoList_2 command_list_query_2() raises(DevFailed); + +/** + * Query device to see command argument. + * Compared to the Device interface, the command configuration has one more + * field (The display level) +@return command and its types +@param command name + **/ + DevCmdInfo_2 command_query_2(in string command) raises(DevFailed); + +/** + * Get command history buffer. + * Return command result history for polled command +@param command ascii string e.g. "On" +@param n The history depth +@return command history. + **/ + DevCmdHistoryList command_inout_history_2(in string command, + in long n) raises (DevFailed); + +/** + * Get attribute value history buffer. + * Return attribute value history for polled attribute +@param name ascii string +@param n The history depth +@return attribute value history. + **/ + DevAttrHistoryList read_attribute_history_2(in string name, + in long n) raises (DevFailed); +}; + + +interface Device_3: Device_2 +{ + +/** + * Read a variable list of attributes from a device +@param name list of attribute names to read +@param source The data source. Used to specify if the command result must be +read from the polling cache buffer or from the device itself +@return list of attribute values read + **/ + AttributeValueList_3 read_attributes_3(in DevVarStringArray names, + in DevSource source) raises(DevFailed); + +/** + * write a variable list of attributes to a device +@param values list of attribute values to write +@return nothing + **/ + void write_attributes_3(in AttributeValueList values) raises(DevFailed,MultiDevFailed); +/** + * Get attribute value history buffer. + * Return attribute value history for polled attribute +@param name ascii string +@param n The history depth +@return attribute value history. + **/ + DevAttrHistoryList_3 read_attribute_history_3(in string name, + in long n) raises (DevFailed); + +/** + * return general information about object e.g. class, type, ... +@return device info + **/ + DevInfo_3 info_3() raises(DevFailed); + +/** + * Read the configuration for a variable list of attributes from a device. + * Compared to the Device interface, the attribute configuration has one more + * field (The display level) +@param name list of attribute names to read +@return list of attribute configurations read + **/ + AttributeConfigList_3 get_attribute_config_3(in DevVarStringArray names) raises(DevFailed); + +/** + * set the configuration for a variable list of attributes from the device +@param new_conf list of attribute configuration to be set +@return nothing + **/ + void set_attribute_config_3(in AttributeConfigList_3 new_conf) raises(DevFailed); +}; + +}; /* module tango */ -- cgit v1.2.1