epan/dissectors/packet-xml.c try to decrypt data, but the data doesn't look correct yet
[metze/wireshark/wip.git] / idl / tango.idl
1
2
3 /**
4  * This is the TANGO interface defined in IDL.
5  * TANGO is an extension of old TACO.
6  * The fundamental idea of a device as a network object which
7  * has methods and data has been retained. However
8  * in TANGO objects will be real C++/Java objects which can be instantiated
9  * and accessed via their methods and data by the client as if they were local
10  * objects.
11  * Certain aspects of the old DSAPI application programmer's
12  * interface have been suppressed in order to simplify the client (e.g. import,
13  * free, data collector api).
14  * Features which have been considered missing in old TACO have been added
15  * e.g. signals, events and groups.
16  * Asynchronism and groups have been foreseen right from the beginning
17  * this time.
18  * This interface is defined in CORBA IDL.
19  * The fundamental interface is Device.
20  * All TANGO control objects will be of this type i.e. they will implement and
21  * offer the Device interface.
22  * New classes of control objects e.g. PowerSupply, will be created by
23  * wrapping the Device class appropriately.
24  * The wrapper class will hide the calls to the Device interface from
25  * the client so that the client will only see the wrapper class.
26  * All CORBA details will be hidden from the client as far as possible.
27 **/
28
29 module Tango
30 {
31
32 //-------------------------------------------------------------------------
33 //
34 //              Basic types to transport command data
35 //
36 //-------------------------------------------------------------------------
37
38 typedef boolean                                 DevBoolean;
39 typedef double                                  DevDouble;
40 typedef float                                   DevFloat;
41 typedef short                                   DevShort;
42 typedef long                                    DevLong;
43 typedef long long                               DevLong64;
44 typedef string                                  DevString;
45 typedef octet                                   DevUChar;
46 typedef unsigned short                  DevUShort;
47 typedef unsigned long                   DevULong;
48 typedef unsigned long long              DevULong64;
49
50 typedef sequence<boolean>               DevVarBooleanArray;
51 typedef sequence<double>                DevVarDoubleArray;
52 typedef sequence<float>                 DevVarFloatArray;
53 typedef sequence<short>                 DevVarShortArray;
54 typedef sequence<long>                  DevVarLongArray;
55 typedef sequence<long long>             DevVarLong64Array;
56 typedef sequence<octet>                 DevVarCharArray;
57 typedef sequence<string>                DevVarStringArray;
58 typedef sequence<unsigned short>        DevVarUShortArray;
59 typedef sequence<unsigned long>         DevVarULongArray;
60 typedef sequence<unsigned long long>    DevVarULong64Array;
61
62
63 struct DevVarLongStringArray
64 {
65         DevVarLongArray         lvalue;
66         DevVarStringArray       svalue;
67 };
68
69 struct DevVarDoubleStringArray
70 {
71         DevVarDoubleArray       dvalue;
72         DevVarStringArray       svalue;
73 };
74
75 struct DevEncoded
76 {
77         DevString                       encoded_format;
78         DevVarCharArray         encoded_data;
79 };
80
81 typedef sequence<DevEncoded>    DevVarEncodedArray;
82
83 //-------------------------------------------------------------------------
84 //
85 //              Data types for client identification
86 //
87 //-------------------------------------------------------------------------
88
89 typedef unsigned long long      JavaUUID[2];
90 typedef unsigned long                   CppClntIdent;
91
92 struct JavaClntIdent
93 {
94         string                  MainClass;
95         JavaUUID                uuid;
96 };
97
98 enum LockerLanguage { CPP, JAVA };
99
100 union ClntIdent switch (LockerLanguage)
101 {
102 case CPP:
103         CppClntIdent            cpp_clnt;
104 case JAVA:
105         JavaClntIdent           java_clnt;
106 };
107
108 //-------------------------------------------------------------------------
109 //
110 //              Some enumerations
111 //
112 //-------------------------------------------------------------------------
113
114
115 enum AttrQuality
116 {
117         ATTR_VALID,
118         ATTR_INVALID,
119         ATTR_ALARM,
120         ATTR_CHANGING,
121         ATTR_WARNING
122 };
123
124 enum AttrWriteType
125 {
126         READ,
127         READ_WITH_WRITE,
128         WRITE,
129         READ_WRITE,
130     WT_UNKNOWN
131 };
132
133 enum AttrDataFormat
134 {
135         SCALAR,
136         SPECTRUM,
137         IMAGE,
138         FMT_UNKNOWN
139 };
140
141 enum DevSource
142 {
143         DEV,
144         CACHE,
145         CACHE_DEV
146 };
147
148 enum ErrSeverity
149 {
150         WARN,
151         ERR,
152         PANIC
153 };
154
155 enum DevState
156 {
157         ON,
158         OFF,
159         CLOSE,
160         OPEN,
161         INSERT,
162         EXTRACT,
163         MOVING,
164         STANDBY,
165         FAULT,
166         INIT,
167         RUNNING,
168         ALARM,
169         DISABLE,
170         UNKNOWN
171 };
172
173 enum DispLevel
174 {
175         OPERATOR,
176         EXPERT,
177         DL_UNKNOWN
178 };
179
180 typedef sequence<DevState>      DevVarStateArray;
181
182 //-------------------------------------------------------------------------
183 //
184 //               Some  miscellaneous structures definitions
185 //
186 //-------------------------------------------------------------------------
187
188 struct TimeVal
189 {
190         long    tv_sec;
191         long    tv_usec;
192         long    tv_nsec;
193 };
194
195
196 //-------------------------------------------------------------------------
197 //
198 //              For the command query device operation
199 //
200 //-------------------------------------------------------------------------
201
202
203 struct DevCmdInfo
204 {
205         string  cmd_name;
206         long    cmd_tag;
207         long    in_type;
208         long    out_type;
209         string  in_type_desc;
210         string  out_type_desc;
211 };
212
213 struct DevCmdInfo_2
214 {
215         string          cmd_name;
216         DispLevel       level;
217         long            cmd_tag;
218         long            in_type;
219         long            out_type;
220         string          in_type_desc;
221         string          out_type_desc;
222 };
223
224 typedef sequence<DevCmdInfo> DevCmdInfoList;
225 typedef sequence<DevCmdInfo_2> DevCmdInfoList_2;
226
227
228 //-------------------------------------------------------------------------
229 //
230 //              For the DevFailed exceptions
231 //
232 //-------------------------------------------------------------------------
233
234 struct DevError
235 {
236         string                  reason;
237         ErrSeverity     severity;
238         string                  desc;
239         string                  origin;
240 };
241
242 typedef sequence<DevError> DevErrorList;
243
244 struct NamedDevError
245 {
246         string                  name;
247         long                    index_in_call;
248         DevErrorList    err_list;
249 };
250
251 typedef sequence<NamedDevError> NamedDevErrorList;
252
253
254 exception DevFailed
255 {
256         DevErrorList errors;
257 };
258
259 exception MultiDevFailed
260 {
261         NamedDevErrorList errors;
262 };
263
264
265 //-------------------------------------------------------------------------
266 //
267 //              For attribute management
268 //
269 //-------------------------------------------------------------------------
270
271
272 struct AttributeConfig
273 {
274         string                          name;
275         AttrWriteType           writable;
276         AttrDataFormat          data_format;
277         long                            data_type;
278         long                            max_dim_x;
279         long                            max_dim_y;
280         string                          description;
281         string                          label;
282         string                          unit;
283         string                          standard_unit;
284         string                          display_unit;
285         string                          format;
286         string                          min_value;
287         string                          max_value;
288         string                          min_alarm;
289         string                          max_alarm;
290         string                          writable_attr_name;
291         DevVarStringArray       extensions;
292 };
293
294 struct AttributeConfig_2
295 {
296         string                          name;
297         AttrWriteType           writable;
298         AttrDataFormat          data_format;
299         long                            data_type;
300         long                            max_dim_x;
301         long                            max_dim_y;
302         string                          description;
303         string                          label;
304         string                          unit;
305         string                          standard_unit;
306         string                          display_unit;
307         string                          format;
308         string                          min_value;
309         string                          max_value;
310         string                          min_alarm;
311         string                          max_alarm;
312         string                          writable_attr_name;
313         DispLevel                       level;
314         DevVarStringArray       extensions;
315 };
316
317 struct AttributeValue
318 {
319         any                     value;
320         AttrQuality     quality;
321         TimeVal                 time;
322         string                  name;
323         long                    dim_x;
324         long                    dim_y;
325 };
326
327 struct AttributeDim
328 {
329         long                    dim_x;
330         long                    dim_y;
331 };
332
333 struct AttributeValue_3
334 {
335         any                     value;
336         AttrQuality     quality;
337         TimeVal                 time;
338         string                  name;
339         AttributeDim    r_dim;
340         AttributeDim    w_dim;
341         DevErrorList    err_list;
342 };
343
344 enum AttributeDataType
345 {
346         ATT_BOOL,
347         ATT_SHORT,
348         ATT_LONG,
349         ATT_LONG64,
350         ATT_FLOAT,
351         ATT_DOUBLE,
352         ATT_UCHAR,
353         ATT_USHORT,
354         ATT_ULONG,
355         ATT_ULONG64,
356         ATT_STRING,
357         ATT_STATE,
358         DEVICE_STATE,
359         ATT_ENCODED,
360         ATT_NO_DATA
361 };
362
363 union AttrValUnion switch (AttributeDataType)
364 {
365 case ATT_BOOL:
366         DevVarBooleanArray              bool_att_value;
367 case ATT_SHORT:
368         DevVarShortArray                short_att_value;
369 case ATT_LONG:
370         DevVarLongArray                 long_att_value;
371 case ATT_LONG64:
372         DevVarLong64Array               long64_att_value;
373 case ATT_FLOAT:
374         DevVarFloatArray                float_att_value;
375 case ATT_DOUBLE:
376         DevVarDoubleArray               double_att_value;
377 case ATT_UCHAR:
378         DevVarCharArray                 uchar_att_value;
379 case ATT_USHORT:
380         DevVarUShortArray               ushort_att_value;
381 case ATT_ULONG:
382         DevVarULongArray                ulong_att_value;
383 case ATT_ULONG64:
384         DevVarULong64Array              ulong64_att_value;
385 case ATT_STRING:
386         DevVarStringArray               string_att_value;
387 case ATT_STATE:
388         DevVarStateArray                state_att_value;
389 case DEVICE_STATE:
390         DevState                                dev_state_att;
391 case ATT_ENCODED:
392         DevVarEncodedArray              encoded_att_value;
393 case ATT_NO_DATA:
394         DevBoolean                              union_no_data;
395 };
396
397 struct AttributeValue_4
398 {
399         AttrValUnion            value;
400         AttrQuality             quality;
401         AttrDataFormat          data_format;
402         TimeVal                         time;
403         string                          name;
404         AttributeDim            r_dim;
405         AttributeDim            w_dim;
406         DevErrorList            err_list;
407 };
408
409 struct AttributeValue_5
410 {
411         AttrValUnion            value;
412         AttrQuality             quality;
413         AttrDataFormat          data_format;
414         long                            data_type;
415         TimeVal                         time;
416         string                          name;
417         AttributeDim            r_dim;
418         AttributeDim            w_dim;
419         DevErrorList            err_list;
420 };
421
422 struct ChangeEventProp
423 {
424         string                          rel_change;
425         string                          abs_change;
426         DevVarStringArray       extensions;
427 };
428
429 struct PeriodicEventProp
430 {
431         string                          period;
432         DevVarStringArray       extensions;
433 };
434
435 struct ArchiveEventProp
436 {
437         string                          rel_change;
438         string                          abs_change;
439         string                          period;
440         DevVarStringArray       extensions;
441 };
442
443 struct EventProperties
444 {
445         ChangeEventProp         ch_event;
446         PeriodicEventProp       per_event;
447         ArchiveEventProp        arch_event;
448 };
449
450 struct AttributeAlarm
451 {
452         string                          min_alarm;
453         string                          max_alarm;
454         string                          min_warning;
455         string                          max_warning;
456         string                          delta_t;
457         string                          delta_val;
458         DevVarStringArray       extensions;
459 };
460
461 struct AttributeConfig_3
462 {
463         string                          name;
464         AttrWriteType           writable;
465         AttrDataFormat          data_format;
466         long                            data_type;
467         long                            max_dim_x;
468         long                            max_dim_y;
469         string                          description;
470         string                          label;
471         string                          unit;
472         string                          standard_unit;
473         string                          display_unit;
474         string                          format;
475         string                          min_value;
476         string                          max_value;
477         string                          writable_attr_name;
478         DispLevel                       level;
479         AttributeAlarm          att_alarm;
480         EventProperties         event_prop;
481         DevVarStringArray       extensions;
482         DevVarStringArray       sys_extensions;
483 };
484
485 struct AttributeConfig_5
486 {
487         string                          name;
488         AttrWriteType           writable;
489         AttrDataFormat          data_format;
490         long                            data_type;
491         boolean                         memorized;
492         boolean                         mem_init;
493         long                            max_dim_x;
494         long                            max_dim_y;
495         string                          description;
496         string                          label;
497         string                          unit;
498         string                          standard_unit;
499         string                          display_unit;
500         string                          format;
501         string                          min_value;
502         string                          max_value;
503         string                          writable_attr_name;
504         DispLevel                       level;
505         string                          root_attr_name;
506         DevVarStringArray       enum_labels;
507         AttributeAlarm          att_alarm;
508         EventProperties         event_prop;
509         DevVarStringArray       extensions;
510         DevVarStringArray       sys_extensions;
511 };
512
513 typedef sequence<AttributeConfig>       AttributeConfigList;
514 typedef sequence<AttributeConfig_2> AttributeConfigList_2;
515 typedef sequence<AttributeConfig_3> AttributeConfigList_3;
516 typedef sequence<AttributeConfig_5> AttributeConfigList_5;
517 typedef sequence<AttributeValue>        AttributeValueList;
518 typedef sequence<AttributeValue_3>      AttributeValueList_3;
519 typedef sequence<AttributeValue_4>      AttributeValueList_4;
520 typedef sequence<AttributeValue_5>      AttributeValueList_5;
521
522 //-------------------------------------------------------------------------
523 //
524 //              For pipe management
525 //
526 //-------------------------------------------------------------------------
527
528 enum PipeWriteType
529 {
530         PIPE_READ,
531         PIPE_READ_WRITE,
532     PIPE_WT_UNKNOWN
533 };
534
535 struct PipeConfig
536 {
537         string                          name;
538         string                          description;
539         string                          label;
540         DispLevel                       level;
541         PipeWriteType           writable;
542         DevVarStringArray       extensions;
543 };
544
545 typedef sequence<PipeConfig> PipeConfigList;
546
547 struct DevPipeDataElt;
548 typedef sequence<DevPipeDataElt>        DevVarPipeDataEltArray;
549
550 struct DevPipeDataElt
551 {
552         string                                  name;
553         AttrValUnion                    value;
554         DevVarPipeDataEltArray  inner_blob;
555         string                                  inner_blob_name;
556 };
557
558 struct DevPipeBlob
559 {
560         string                                  name;
561         DevVarPipeDataEltArray  blob_data;
562 };
563
564 struct DevPipeData
565 {
566         string                                  name;
567         TimeVal                                 time;
568         DevPipeBlob                             data_blob;
569 };
570
571 //-------------------------------------------------------------------------
572 //
573 //              For data ready event
574 //
575 //-------------------------------------------------------------------------
576
577 struct AttDataReady
578 {
579         string  name;
580         long    data_type;
581         long    ctr;
582 };
583
584
585 //-------------------------------------------------------------------------
586 //
587 //              For device interface change event
588 //
589 //-------------------------------------------------------------------------
590
591 struct DevIntrChange
592 {
593         boolean                                 dev_started;
594         DevCmdInfoList_2                cmds;
595         AttributeConfigList_5   atts;
596 };
597
598 //-------------------------------------------------------------------------
599 //
600 //              For device interface info operation
601 //
602 //-------------------------------------------------------------------------
603
604 struct DevInfo
605 {
606         string  dev_class;
607         string  server_id;
608         string  server_host;
609         long    server_version;
610         string  doc_url;
611 };
612
613 struct DevInfo_3
614 {
615         string  dev_class;
616         string  server_id;
617         string  server_host;
618         long    server_version;
619         string  doc_url;
620         string  dev_type;
621 };
622
623 //-------------------------------------------------------------------------
624 //
625 //              For command and attribute history
626 //
627 //-------------------------------------------------------------------------
628
629 struct DevCmdHistory
630 {
631         TimeVal                 time;
632         boolean                 cmd_failed;
633         any                             value;
634         DevErrorList    errors;
635 };
636
637 typedef sequence<DevCmdHistory> DevCmdHistoryList;
638
639 struct DevAttrHistory
640 {
641         boolean                 attr_failed;
642         AttributeValue  value;
643         DevErrorList    errors;
644 };
645
646 struct DevAttrHistory_3
647 {
648         boolean                         attr_failed;
649         AttributeValue_3        value;
650 };
651
652 struct EltInArray
653 {
654         long                    start;
655         long                    nb_elt;
656 };
657
658 typedef sequence<EltInArray> EltInArrayList;
659 typedef sequence<TimeVal> TimeValList;
660 typedef sequence<AttrQuality> AttrQualityList;
661 typedef sequence<AttributeDim> AttributeDimList;
662 typedef sequence<DevErrorList> DevErrorListList;
663
664 struct DevAttrHistory_4
665 {
666         string                                  name;
667         TimeValList                             dates;
668         any                                             value;
669         AttrQualityList                 quals;
670         EltInArrayList                  quals_array;
671         AttributeDimList                r_dims;
672         EltInArrayList                  r_dims_array;
673         AttributeDimList                w_dims;
674         EltInArrayList                  w_dims_array;
675         DevErrorListList                errors;
676         EltInArrayList                  errors_array;
677 };
678
679 struct DevAttrHistory_5
680 {
681         string                                  name;
682         AttrDataFormat                  data_format;
683         long                                    data_type;
684         TimeValList                             dates;
685         any                                             value;
686         AttrQualityList                 quals;
687         EltInArrayList                  quals_array;
688         AttributeDimList                r_dims;
689         EltInArrayList                  r_dims_array;
690         AttributeDimList                w_dims;
691         EltInArrayList                  w_dims_array;
692         DevErrorListList                errors;
693         EltInArrayList                  errors_array;
694 };
695
696 struct DevCmdHistory_4
697 {
698         TimeValList                             dates;
699         any                                             value;
700         AttributeDimList                dims;
701         EltInArrayList                  dims_array;
702         DevErrorListList                errors;
703         EltInArrayList                  errors_array;
704         long                                    cmd_type;
705 };
706
707 typedef sequence<DevAttrHistory>        DevAttrHistoryList;
708 typedef sequence<DevAttrHistory_3>      DevAttrHistoryList_3;
709
710 //-------------------------------------------------------------------------
711 //
712 //              For ZMQ event system
713 //
714 //-------------------------------------------------------------------------
715
716 struct ZmqCallInfo
717 {
718         long                                    version;
719         unsigned long                   ctr;
720         string                                  method_name;
721         DevVarCharArray                 oid;
722         boolean                                 call_is_except;
723 };
724
725 //-------------------------------------------------------------------------
726 //
727 //              Include the device interface
728 //
729 //-------------------------------------------------------------------------
730
731
732
733
734
735 /**
736  * The fundamental interface for all TANGO objects.
737  * Each Device is a network object which can be accessed locally or via
738  * network.
739  * The network protocol on the wire will be IIOP.
740  * The Device interface implements all the basic functions needed for doing
741  * generic synchronous and asynchronous I/O on a device.
742  * A Device object has data and actions.
743  * Data are represented in the form of Attributes.
744  * Actions are represented in the form of Commands.
745  * The CORBA Device interface offers attributes and methods to access
746  * the attributes and commands.
747  * A client will either use these methods directly from C++ or Java or access
748  * them via a wrapper class.
749  * The Device interface describes only the remote network interface.
750  * Implementation features like threads, command security, priority
751  * etc. are dealt with in server side of the device server model.
752  **/
753
754 interface Device
755 {
756
757 /**
758  * name (readonly) - unique ascii identifier
759  **/
760         readonly attribute string name;
761 /**
762  * description (readonly) - general description of device
763  **/
764         readonly attribute string description;
765 /**
766  * state (readonly) - device state
767  **/
768         readonly attribute DevState state;
769 /**
770  * status (readonly) - device state as ascii string
771  **/
772         readonly attribute string status;
773 /**
774  * adm_name (readonly) - administrator device unique ascii identifier
775  **/
776         readonly attribute string adm_name;
777
778 /**
779  * execute a command on a device synchronously with
780  * one input parameter and one output parameter
781 @param command ascii string e.g. "On"
782 @param argin command input parameter e.g. float
783 @return command result.
784  **/
785         any command_inout(in string command, in any argin) raises(DevFailed);
786
787
788 /**
789  * read the configuration for a variable list of attributes from a device
790 @param name list of attribute names to read
791 @return list of attribute configurations read
792  **/
793         AttributeConfigList get_attribute_config(in DevVarStringArray names) raises(DevFailed);
794
795
796 /**
797  * set the configuration for a variable list of attributes from the device
798 @param new_conf list of attribute configuration to be set
799 @return nothing
800  **/
801         void set_attribute_config(in AttributeConfigList new_conf) raises(DevFailed);
802
803
804 /**
805  * read a variable list of attributes from a device
806 @param name list of attribute names to read
807 @return list of attribute values read
808  **/
809         AttributeValueList read_attributes(in DevVarStringArray names) raises(DevFailed);
810
811
812
813 /**
814  * write a variable list of attributes to a device
815 @param values list of attribute values to write
816 @return nothing
817  **/
818         void write_attributes(in AttributeValueList values) raises(DevFailed);
819
820 /**
821  * ping a device to see if it alive
822  **/
823         void ping() raises(DevFailed);
824
825 /**
826  * read list of last N commands executed by clients
827 @param number of commands to return
828 @return list of command and clients
829  **/
830         DevVarStringArray black_box(in long n) raises(DevFailed);
831
832
833 /**
834  * return general information about object e.g. class, type, ...
835 @return device info
836  **/
837         DevInfo info() raises(DevFailed);
838
839
840 /**
841  * query device to see what commands it supports
842 @return list of commands and their types
843  **/
844         DevCmdInfoList command_list_query() raises(DevFailed);
845
846
847 /**
848  * query device to see command argument
849 @return command and its types
850 @param command name
851  **/
852         DevCmdInfo command_query(in string command) raises(DevFailed);
853
854 };
855
856 //-------------------------------------------------------------------------
857 //
858 //              The Device_2 interface
859 //
860 //-------------------------------------------------------------------------
861
862
863 /**
864  * A new release of the basic Device interface.
865  * This new release has been introduced mainly to support Tango device server
866  * internal polling. Inheritance is used between this new release and the
867  * old one. This release mainly defines a new release of the command_inout and
868  * read_attributes calls with a new parameter. It also add a new call to read
869  * command or attributes result history.
870  **/
871
872 interface Device_2: Device
873 {
874 /**
875  * Execute a command on a device synchronously with
876  * one input parameter and one output parameter
877 @param command ascii string e.g. "On"
878 @param argin command input parameter e.g. float
879 @param source The data source. Used to specify if the command result must be
880 read from the polling cache buffer or from the device itself
881 @return command result.
882  **/
883         any command_inout_2(in string command,
884                             in any argin,
885                             in DevSource source) raises(DevFailed);
886
887 /**
888  * Read a variable list of attributes from a device
889 @param name list of attribute names to read
890 @param source The data source. Used to specify if the command result must be
891 read from the polling cache buffer or from the device itself
892 @return list of attribute values read
893  **/
894         AttributeValueList read_attributes_2(in DevVarStringArray names,
895                                              in DevSource source) raises(DevFailed);
896
897 /**
898  * Read the configuration for a variable list of attributes from a device.
899  * Compared to the Device interface, the attribute configuration has one more
900  * field (The display level)
901 @param name list of attribute names to read
902 @return list of attribute configurations read
903  **/
904         AttributeConfigList_2 get_attribute_config_2(in DevVarStringArray names) raises(DevFailed);
905
906 /**
907  * Query device to see what commands it supports.
908  * Compared to the Device interface, the command configuration has one more
909  * field (The display level)
910 @return list of commands and their types
911  **/
912         DevCmdInfoList_2 command_list_query_2() raises(DevFailed);
913
914 /**
915  * Query device to see command argument.
916  * Compared to the Device interface, the command configuration has one more
917  * field (The display level)
918 @return command and its types
919 @param command name
920  **/
921         DevCmdInfo_2 command_query_2(in string command) raises(DevFailed);
922
923 /**
924  * Get command history buffer.
925  * Return command result history for polled command
926 @param command ascii string e.g. "On"
927 @param n The history depth
928 @return command history.
929  **/
930         DevCmdHistoryList command_inout_history_2(in string command,
931                                                   in long n) raises (DevFailed);
932
933 /**
934  * Get attribute value history buffer.
935  * Return attribute value history for polled attribute
936 @param name ascii string
937 @param n The history depth
938 @return attribute value history.
939  **/
940         DevAttrHistoryList read_attribute_history_2(in string name,
941                                                     in long n) raises (DevFailed);
942 };
943
944 //-------------------------------------------------------------------------
945 //
946 //              The Device_3 interface (corresponding to Tango V5)
947 //
948 //-------------------------------------------------------------------------
949
950 interface Device_3: Device_2
951 {
952
953 /**
954  * Read a variable list of attributes from a device
955 @param name list of attribute names to read
956 @param source The data source. Used to specify if the command result must be
957 read from the polling cache buffer or from the device itself
958 @return list of attribute values read
959  **/
960         AttributeValueList_3 read_attributes_3(in DevVarStringArray names,
961                                                in DevSource source) raises(DevFailed);
962
963 /**
964  * write a variable list of attributes to a device
965 @param values list of attribute values to write
966 @return nothing
967  **/
968         void write_attributes_3(in AttributeValueList values) raises(DevFailed,MultiDevFailed);
969 /**
970  * Get attribute value history buffer.
971  * Return attribute value history for polled attribute
972 @param name ascii string
973 @param n The history depth
974 @return attribute value history.
975  **/
976         DevAttrHistoryList_3 read_attribute_history_3(in string name,
977                                                       in long n) raises (DevFailed);
978
979 /**
980  * return general information about object e.g. class, type, ...
981 @return device info
982  **/
983         DevInfo_3 info_3() raises(DevFailed);
984
985 /**
986  * Read the configuration for a variable list of attributes from a device.
987  * Compared to the Device interface, the attribute configuration has one more
988  * field (The display level)
989 @param name list of attribute names to read
990 @return list of attribute configurations read
991  **/
992         AttributeConfigList_3 get_attribute_config_3(in DevVarStringArray names) raises(DevFailed);
993
994 /**
995  * set the configuration for a variable list of attributes from the device
996 @param new_conf list of attribute configuration to be set
997 @return nothing
998  **/
999         void set_attribute_config_3(in AttributeConfigList_3 new_conf) raises(DevFailed);
1000 };
1001
1002 //-------------------------------------------------------------------------
1003 //
1004 //              The Device_4 interface (corresponding to Tango V7)
1005 //
1006 //-------------------------------------------------------------------------
1007
1008 interface Device_4: Device_3
1009 {
1010 /**
1011  * Get attribute value history buffer.
1012  * Return attribute value history for polled attribute
1013 @param name ascii string
1014 @param n The history depth
1015 @return attribute value history.
1016  **/
1017         DevAttrHistory_4 read_attribute_history_4(in string name,
1018                                                       in long n) raises (DevFailed);
1019
1020 /**
1021  * Get command history buffer.
1022  * Return command result history for polled command
1023 @param command ascii string e.g. "On"
1024 @param n The history depth
1025 @return command history.
1026  **/
1027         DevCmdHistory_4 command_inout_history_4(in string command,
1028                                                   in long n) raises (DevFailed);
1029
1030 /**
1031  * Execute a command on a device synchronously with
1032  * one input parameter and one output parameter
1033 @param command ascii string e.g. "On"
1034 @param argin command input parameter e.g. float
1035 @param source The data source. Used to specify if the command result must be
1036 read from the polling cache buffer or from the device itself
1037 @param cl_ident The client identificator
1038 @return command result.
1039  **/
1040         any command_inout_4(in string command,
1041                             in any argin,
1042                             in DevSource source,
1043                                 in ClntIdent cl_ident) raises(DevFailed);
1044
1045 /**
1046  * Read a variable list of attributes from a device
1047 @param name list of attribute names to read
1048 @param source The data source. Used to specify if the command result must be
1049 read from the polling cache buffer or from the device itself
1050 @return list of attribute values read
1051  **/
1052         AttributeValueList_4 read_attributes_4(in DevVarStringArray names,
1053                                                in DevSource source,in ClntIdent cl_ident) raises(DevFailed);
1054
1055 /**
1056  * write a variable list of attributes to a device
1057 @param values list of attribute values to write
1058 @return nothing
1059  **/
1060         void write_attributes_4(in AttributeValueList_4 values,in ClntIdent cl_ident) raises(DevFailed,MultiDevFailed);
1061
1062 /**
1063  * set the configuration for a variable list of attributes from the device
1064 @param new_conf list of attribute configuration to be set
1065 @return nothing
1066  **/
1067         void set_attribute_config_4(in AttributeConfigList_3 new_conf,in ClntIdent cl_ident) raises(DevFailed);
1068
1069 /**
1070  * Write then Read device attribute(s)
1071 @param values List of attribute values to be written
1072 @param cl_ident The client identificator
1073 @return Attributes value read
1074  **/
1075         AttributeValueList_4 write_read_attributes_4(in AttributeValueList_4 values,in ClntIdent cl_ident)
1076         raises(DevFailed,MultiDevFailed);
1077 };
1078
1079 //-------------------------------------------------------------------------
1080 //
1081 //              The Device_5 interface (corresponding to Tango V9)
1082 //
1083 //-------------------------------------------------------------------------
1084
1085 interface Device_5: Device_4
1086 {
1087 /**
1088  * Read the configuration for a variable list of attributes from a device.
1089  * Compared to the Device interface, the attribute configuration has one more
1090  * field (The display level)
1091 @param name list of attribute names to read
1092 @return list of attribute configurations read
1093  **/
1094         AttributeConfigList_5 get_attribute_config_5(in DevVarStringArray names) raises(DevFailed);
1095
1096 /**
1097  * set the configuration for a variable list of attributes from the device
1098 @param new_conf list of attribute configuration to be set
1099 @return nothing
1100  **/
1101         void set_attribute_config_5(in AttributeConfigList_5 new_conf,in ClntIdent cl_ident) raises(DevFailed);
1102
1103 /**
1104  * Read a variable list of attributes from a device
1105 @param name list of attribute names to read
1106 @param source The data source. Used to specify if the command result must be
1107 read from the polling cache buffer or from the device itself
1108 @return list of attribute values read
1109  **/
1110         AttributeValueList_5 read_attributes_5(in DevVarStringArray names,
1111                                                in DevSource source,in ClntIdent cl_ident) raises(DevFailed);
1112
1113 /**
1114  * Write then Read device attribute(s)
1115 @param values List of attribute values to be written
1116 @param cl_ident The client identificator
1117 @return Attributes value read
1118  **/
1119         AttributeValueList_5 write_read_attributes_5(in AttributeValueList_4 values,in DevVarStringArray r_names,in ClntIdent cl_ident)
1120         raises(DevFailed,MultiDevFailed);
1121
1122 /**
1123  * Get attribute value history buffer.
1124  * Return attribute value history for polled attribute
1125 @param name ascii string
1126 @param n The history depth
1127 @return attribute value history.
1128  **/
1129         DevAttrHistory_5 read_attribute_history_5(in string name,
1130                                                       in long n) raises (DevFailed);
1131
1132 /**
1133  * Read the configuration for a variable list of pipes from a device.
1134 @param names list of pipe names to read
1135 @return list of pipe configurations read
1136  **/
1137         PipeConfigList get_pipe_config_5(in DevVarStringArray names) raises(DevFailed);
1138
1139 /**
1140  * set the configuration for a variable list of pipes from the device
1141 @param new_conf list of pipe configuration to be set
1142 @return nothing
1143  **/
1144         void set_pipe_config_5(in PipeConfigList new_conf,in ClntIdent cl_ident) raises(DevFailed);
1145
1146 /**
1147  * Read a pipe from a device
1148 @param name pipe name
1149 @param cl_ident client identifier
1150 @return pipe value
1151  **/
1152         DevPipeData read_pipe_5(in string name,in ClntIdent cl_ident) raises(DevFailed);
1153
1154 /**
1155  * write a pipe to a device
1156 @param value new pipe value
1157 @param cl_ident client identifier
1158 @return nothing
1159  **/
1160         void write_pipe_5(in DevPipeData value,in ClntIdent cl_ident) raises(DevFailed);
1161
1162 /**
1163  * write then read a pipe to a device
1164 @param value new pipe value
1165 @param cl_ident client identifier
1166 @return pipe value
1167  **/
1168         DevPipeData write_read_pipe_5(in DevPipeData value,in ClntIdent cl_ident) raises(DevFailed);
1169
1170 };
1171
1172 };  /* module tango */