Fix a typo in an error message.
[obnox/wireshark/wip.git] / plugins / giop / packet-tango.c
1 /* packet-tango.c
2  *
3  * $Id$
4  *
5  * Routines for IDL dissection
6  *
7  * Autogenerated from idl2wrs
8  * Copyright 2001 Frank Singleton <frank.singleton@ericsson.com>
9  */
10
11
12 /*
13  * Wireshark - Network traffic analyzer
14  * By Gerald Combs
15  * Copyright 1999 - 2006 Gerald Combs
16  */
17
18 static int hf_operationrequest = -1;/* Request_Operation field */
19
20
21 /*
22  * This program is free software; you can redistribute it and/or
23  * modify it under the terms of the GNU General Public License
24  * as published by the Free Software Foundation; either version 2
25  * of the License, or (at your option) any later version.
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
30  * GNU General Public License for more details.
31  *
32  * You should have received a copy of the GNU General Public License
33  * along with this program; if not, write to the Free Software
34  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
35  */
36
37
38 #ifdef HAVE_CONFIG_H
39 # include "config.h"
40 #endif
41
42 #include <gmodule.h>
43
44 #include <string.h>
45 #include <glib.h>
46 #include <epan/packet.h>
47 #include <epan/proto.h>
48 #include <epan/dissectors/packet-giop.h>
49
50 #ifndef ENABLE_STATIC
51 G_MODULE_EXPORT const gchar version[] = "0.0.1";
52 #endif
53
54 #ifdef _MSC_VER
55 /* disable warning: "unreference local variable" */
56 #pragma warning(disable:4101)
57 #endif
58
59
60 static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset);
61
62
63
64 /* Struct prototype declaration Start */
65
66
67 /* Struct = IDL:Tango/DevVarLongStringArray:1.0 */
68
69 static void decode_Tango_DevVarLongStringArray_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
70
71
72 /* Struct = IDL:Tango/DevVarDoubleStringArray:1.0 */
73
74 static void decode_Tango_DevVarDoubleStringArray_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
75
76
77 /* Struct = IDL:Tango/TimeVal:1.0 */
78
79 static void decode_Tango_TimeVal_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
80
81
82 /* Struct = IDL:Tango/DevCmdInfo:1.0 */
83
84 static void decode_Tango_DevCmdInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
85
86
87 /* Struct = IDL:Tango/DevCmdInfo_2:1.0 */
88
89 static void decode_Tango_DevCmdInfo_2_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
90
91
92 /* Struct = IDL:Tango/DevError:1.0 */
93
94 static void decode_Tango_DevError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
95
96
97 /* Struct = IDL:Tango/NamedDevError:1.0 */
98
99 static void decode_Tango_NamedDevError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
100
101
102 /* Struct = IDL:Tango/AttributeConfig:1.0 */
103
104 static void decode_Tango_AttributeConfig_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
105
106
107 /* Struct = IDL:Tango/AttributeConfig_2:1.0 */
108
109 static void decode_Tango_AttributeConfig_2_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
110
111
112 /* Struct = IDL:Tango/AttributeValue:1.0 */
113
114 static void decode_Tango_AttributeValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
115
116
117 /* Struct = IDL:Tango/AttributeDim:1.0 */
118
119 static void decode_Tango_AttributeDim_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
120
121
122 /* Struct = IDL:Tango/AttributeValue_3:1.0 */
123
124 static void decode_Tango_AttributeValue_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
125
126
127 /* Struct = IDL:Tango/ChangeEventProp:1.0 */
128
129 static void decode_Tango_ChangeEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
130
131
132 /* Struct = IDL:Tango/PeriodicEventProp:1.0 */
133
134 static void decode_Tango_PeriodicEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
135
136
137 /* Struct = IDL:Tango/ArchiveEventProp:1.0 */
138
139 static void decode_Tango_ArchiveEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
140
141
142 /* Struct = IDL:Tango/EventProperties:1.0 */
143
144 static void decode_Tango_EventProperties_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
145
146
147 /* Struct = IDL:Tango/AttributeAlarm:1.0 */
148
149 static void decode_Tango_AttributeAlarm_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
150
151
152 /* Struct = IDL:Tango/AttributeConfig_3:1.0 */
153
154 static void decode_Tango_AttributeConfig_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
155
156
157 /* Struct = IDL:Tango/DevInfo:1.0 */
158
159 static void decode_Tango_DevInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
160
161
162 /* Struct = IDL:Tango/DevInfo_3:1.0 */
163
164 static void decode_Tango_DevInfo_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
165
166
167 /* Struct = IDL:Tango/DevCmdHistory:1.0 */
168
169 static void decode_Tango_DevCmdHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
170
171
172 /* Struct = IDL:Tango/DevAttrHistory:1.0 */
173
174 static void decode_Tango_DevAttrHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
175
176
177 /* Struct = IDL:Tango/DevAttrHistory_3:1.0 */
178
179 static void decode_Tango_DevAttrHistory_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_);
180
181
182 /* Struct prototype declaration End */
183
184
185 /* Union prototype declaration Start */
186
187
188 /* Union prototype declaration End */
189
190
191
192 /* Initialise the protocol and subtree pointers */
193
194 static int proto_tango = -1;
195
196 static gint ett_tango = -1;
197
198
199 /* Initialise the initial Alignment */
200
201 static guint32  boundary = GIOP_HEADER_SIZE;  /* initial value */
202
203
204
205 /* Initialise the Registered fields */
206
207 /* TODO - Use registered fields */
208
209 /*
210  * IDL Operations Start
211  */
212  
213 static const char Tango_Device_command_inout_op[] = "command_inout" ;
214 static const char Tango_Device_get_attribute_config_op[] = "get_attribute_config" ;
215 static const char Tango_Device_set_attribute_config_op[] = "set_attribute_config" ;
216 static const char Tango_Device_read_attributes_op[] = "read_attributes" ;
217 static const char Tango_Device_write_attributes_op[] = "write_attributes" ;
218 static const char Tango_Device_ping_op[] = "ping" ;
219 static const char Tango_Device_black_box_op[] = "black_box" ;
220 static const char Tango_Device_info_op[] = "info" ;
221 static const char Tango_Device_command_list_query_op[] = "command_list_query" ;
222 static const char Tango_Device_command_query_op[] = "command_query" ;
223 static const char Tango_Device_2_command_inout_2_op[] = "command_inout_2" ;
224 static const char Tango_Device_2_read_attributes_2_op[] = "read_attributes_2" ;
225 static const char Tango_Device_2_get_attribute_config_2_op[] = "get_attribute_config_2" ;
226 static const char Tango_Device_2_command_list_query_2_op[] = "command_list_query_2" ;
227 static const char Tango_Device_2_command_query_2_op[] = "command_query_2" ;
228 static const char Tango_Device_2_command_inout_history_2_op[] = "command_inout_history_2" ;
229 static const char Tango_Device_2_read_attribute_history_2_op[] = "read_attribute_history_2" ;
230 static const char Tango_Device_3_read_attributes_3_op[] = "read_attributes_3" ;
231 static const char Tango_Device_3_write_attributes_3_op[] = "write_attributes_3" ;
232 static const char Tango_Device_3_read_attribute_history_3_op[] = "read_attribute_history_3" ;
233 static const char Tango_Device_3_info_3_op[] = "info_3" ;
234 static const char Tango_Device_3_get_attribute_config_3_op[] = "get_attribute_config_3" ;
235 static const char Tango_Device_3_set_attribute_config_3_op[] = "set_attribute_config_3" ;
236
237 /*
238  * IDL Operations End
239  */
240
241 /*  Begin Exception (containing members) String  Declare  */
242
243
244 static const char user_exception_Tango_DevFailed[] = "IDL:Tango/DevFailed:1.0" ; 
245 static const char user_exception_Tango_MultiDevFailed[] = "IDL:Tango/MultiDevFailed:1.0" ; 
246
247 /*  End Exception (containing members) String Declare  */
248
249 /*
250  * IDL Attributes Start
251  */
252  
253 static const char get_Tango_Device_name_at[] = "_get_name" ;
254 static const char get_Tango_Device_description_at[] = "_get_description" ;
255 static const char get_Tango_Device_state_at[] = "_get_state" ;
256 static const char get_Tango_Device_status_at[] = "_get_status" ;
257 static const char get_Tango_Device_adm_name_at[] = "_get_adm_name" ;
258
259 /*
260  * IDL Attributes End
261  */
262
263 /*
264  * IDL Enums Start
265  */
266  
267 /*
268  * Enum = IDL:Tango/AttrQuality:1.0
269  */
270  
271 static const value_string Tango_AttrQuality[] = {
272
273    { 0, "ATTR_VALID" }, 
274    { 1, "ATTR_INVALID" }, 
275    { 2, "ATTR_ALARM" }, 
276    { 3, "ATTR_CHANGING" }, 
277    { 4, "ATTR_WARNING" }, 
278    { 0,       NULL },
279 };
280
281 /*
282  * Enum = IDL:Tango/AttrWriteType:1.0
283  */
284  
285 static const value_string Tango_AttrWriteType[] = {
286
287    { 0, "READ" }, 
288    { 1, "READ_WITH_WRITE" }, 
289    { 2, "WRITE" }, 
290    { 3, "READ_WRITE" }, 
291    { 0,       NULL },
292 };
293
294 /*
295  * Enum = IDL:Tango/AttrDataFormat:1.0
296  */
297  
298 static const value_string Tango_AttrDataFormat[] = {
299
300    { 0, "SCALAR" }, 
301    { 1, "SPECTRUM" }, 
302    { 2, "IMAGE" }, 
303    { 0,       NULL },
304 };
305
306 /*
307  * Enum = IDL:Tango/DevSource:1.0
308  */
309  
310 static const value_string Tango_DevSource[] = {
311
312    { 0, "DEV" }, 
313    { 1, "CACHE" }, 
314    { 2, "CACHE_DEV" }, 
315    { 0,       NULL },
316 };
317
318 /*
319  * Enum = IDL:Tango/ErrSeverity:1.0
320  */
321  
322 static const value_string Tango_ErrSeverity[] = {
323
324    { 0, "WARN" }, 
325    { 1, "ERR" }, 
326    { 2, "PANIC" }, 
327    { 0,       NULL },
328 };
329
330 /*
331  * Enum = IDL:Tango/DevState:1.0
332  */
333  
334 static const value_string Tango_DevState[] = {
335
336    { 0, "ON" }, 
337    { 1, "OFF" }, 
338    { 2, "CLOSE" }, 
339    { 3, "OPEN" }, 
340    { 4, "INSERT" }, 
341    { 5, "EXTRACT" }, 
342    { 6, "MOVING" }, 
343    { 7, "STANDBY" }, 
344    { 8, "FAULT" }, 
345    { 9, "INIT" }, 
346    { 10, "RUNNING" }, 
347    { 11, "ALARM" }, 
348    { 12, "DISABLE" }, 
349    { 13, "UNKNOWN" }, 
350    { 0,       NULL },
351 };
352
353 /*
354  * Enum = IDL:Tango/DispLevel:1.0
355  */
356  
357 static const value_string Tango_DispLevel[] = {
358
359    { 0, "OPERATOR" }, 
360    { 1, "EXPERT" }, 
361    { 0,       NULL },
362 };
363
364 /*
365  * IDL Enums End
366  */
367  
368 /*  Begin Exception Helper Functions  */
369
370
371 /* Exception = IDL:Tango/DevFailed:1.0 */
372
373 static void decode_ex_Tango_DevFailed(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
374
375     
376     /* Operation specific Variable declarations Begin */
377
378     guint32   u_octet4_loop_DevFailed_errors;
379     guint32   i_DevFailed_errors;
380     
381     /* Operation specific Variable declarations End */
382
383     u_octet4_loop_DevFailed_errors = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
384     if (tree) {
385        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevFailed_errors = %u",u_octet4_loop_DevFailed_errors);
386     }
387
388     for (i_DevFailed_errors=0; i_DevFailed_errors < u_octet4_loop_DevFailed_errors; i_DevFailed_errors++) {
389
390         /*  Begin struct "Tango_DevError"  */
391
392         
393
394         decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
395
396         /*  End struct "Tango_DevError"  */
397
398     }
399
400 }
401
402 /* Exception = IDL:Tango/MultiDevFailed:1.0 */
403
404 static void decode_ex_Tango_MultiDevFailed(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
405
406     
407     /* Operation specific Variable declarations Begin */
408
409     guint32   u_octet4_loop_MultiDevFailed_errors;
410     guint32   i_MultiDevFailed_errors;
411     
412     /* Operation specific Variable declarations End */
413
414     u_octet4_loop_MultiDevFailed_errors = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
415     if (tree) {
416        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of MultiDevFailed_errors = %u",u_octet4_loop_MultiDevFailed_errors);
417     }
418
419     for (i_MultiDevFailed_errors=0; i_MultiDevFailed_errors < u_octet4_loop_MultiDevFailed_errors; i_MultiDevFailed_errors++) {
420
421         /*  Begin struct "Tango_NamedDevError"  */
422
423         
424
425         decode_Tango_NamedDevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
426
427         /*  End struct "Tango_NamedDevError"  */
428
429     }
430
431 }
432
433
434 /*  End Exception Helper Functions  */
435
436 /*
437  * Main delegator for exception handling
438  *
439  */
440
441 static gboolean decode_user_exception(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *ptree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
442
443     /*gboolean stream_is_big_endian _U_;*/                        /* big endianess */
444     proto_tree *tree _U_;
445
446     if (!header->exception_id)
447         return FALSE;
448
449     if (strcmp(header->exception_id, user_exception_Tango_DevFailed) == 0) {
450        tree = start_dissecting(tvb, pinfo, ptree, offset);
451        decode_ex_Tango_DevFailed(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);   /*  IDL:Tango/DevFailed:1.0  */
452        return TRUE;
453     }
454
455     if (strcmp(header->exception_id, user_exception_Tango_MultiDevFailed) == 0) {
456        tree = start_dissecting(tvb, pinfo, ptree, offset);
457        decode_ex_Tango_MultiDevFailed(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);   /*  IDL:Tango/MultiDevFailed:1.0  */
458        return TRUE;
459     }
460
461
462
463     return FALSE;    /* user exception not found */
464
465 }
466
467 /*  Begin Attribute Helper Functions  */
468
469
470 /* Attribute = IDL:Tango/Device/name:1.0 */
471
472 static void decode_get_Tango_Device_name_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
473
474     
475     /* Operation specific Variable declarations Begin */
476
477     guint32   u_octet4;
478     gchar   *seq = NULL;
479     
480     /* Operation specific Variable declarations End */
481
482     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
483     if (tree) {
484        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"name (%u) = %s",
485           u_octet4, (u_octet4 > 0) ? seq : "");
486     }
487
488     g_free(seq);          /*  free buffer  */
489     seq = NULL;
490
491 }
492
493
494 /* Attribute = IDL:Tango/Device/description:1.0 */
495
496 static void decode_get_Tango_Device_description_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
497
498     
499     /* Operation specific Variable declarations Begin */
500
501     guint32   u_octet4;
502     gchar   *seq = NULL;
503     
504     /* Operation specific Variable declarations End */
505
506     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
507     if (tree) {
508        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"description (%u) = %s",
509           u_octet4, (u_octet4 > 0) ? seq : "");
510     }
511
512     g_free(seq);          /*  free buffer  */
513     seq = NULL;
514
515 }
516
517
518 /* Attribute = IDL:Tango/Device/state:1.0 */
519
520 static void decode_get_Tango_Device_state_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
521
522     
523     /* Operation specific Variable declarations Begin */
524
525     guint32   u_octet4;
526     
527     /* Operation specific Variable declarations End */
528
529     
530     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
531     if (tree) {
532        proto_tree_add_text(tree,tvb,*offset-4,4,"state  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DevState,"Unknown Enum Value"));
533     }
534
535 }
536
537
538 /* Attribute = IDL:Tango/Device/status:1.0 */
539
540 static void decode_get_Tango_Device_status_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
541
542     
543     /* Operation specific Variable declarations Begin */
544
545     guint32   u_octet4;
546     gchar   *seq = NULL;
547     
548     /* Operation specific Variable declarations End */
549
550     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
551     if (tree) {
552        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"status (%u) = %s",
553           u_octet4, (u_octet4 > 0) ? seq : "");
554     }
555
556     g_free(seq);          /*  free buffer  */
557     seq = NULL;
558
559 }
560
561
562 /* Attribute = IDL:Tango/Device/adm_name:1.0 */
563
564 static void decode_get_Tango_Device_adm_name_at(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
565
566     
567     /* Operation specific Variable declarations Begin */
568
569     guint32   u_octet4;
570     gchar   *seq = NULL;
571     
572     /* Operation specific Variable declarations End */
573
574     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
575     if (tree) {
576        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"adm_name (%u) = %s",
577           u_octet4, (u_octet4 > 0) ? seq : "");
578     }
579
580     g_free(seq);          /*  free buffer  */
581     seq = NULL;
582
583 }
584
585
586 /*  End Attribute Helper Functions  */
587
588 /*
589  * IDL:Tango/Device/command_inout:1.0
590  */
591
592 static void decode_Tango_Device_command_inout(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
593
594     
595     /* Operation specific Variable declarations Begin */
596
597     guint32   u_octet4;
598     gchar   *seq = NULL;
599     
600     /* Operation specific Variable declarations End */
601
602     
603     switch(header->message_type) {
604
605     case Request:
606
607         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
608         if (tree) {
609            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
610               u_octet4, (u_octet4 > 0) ? seq : "");
611         }
612
613         g_free(seq);          /*  free buffer  */
614         seq = NULL;
615
616         get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
617
618         break;
619
620     case Reply:
621
622         switch(header->rep_status) {
623
624         case NO_EXCEPTION:
625
626             get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
627
628             break;
629
630         case USER_EXCEPTION:
631
632             break;
633
634         default:
635
636             /* Unknown Exception */
637
638             g_warning("Unknown Exception ");
639
640             break;
641
642         
643         }   /* switch(header->message_type) */
644
645         break;
646
647     default:
648
649         /* Unknown GIOP Message */
650
651         g_warning("Unknown GIOP Message");
652
653         break;
654
655     } /* switch(header->message_type) */
656
657 }
658
659 /*
660  * IDL:Tango/Device/get_attribute_config:1.0
661  */
662
663 static void decode_Tango_Device_get_attribute_config(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
664
665     
666     /* Operation specific Variable declarations Begin */
667
668     guint32   u_octet4_loop_names;
669     guint32   i_names;
670     guint32   u_octet4;
671     gchar   *seq = NULL;
672     guint32   u_octet4_loop_AttributeConfigList;
673     guint32   i_AttributeConfigList;
674     
675     /* Operation specific Variable declarations End */
676
677     
678     switch(header->message_type) {
679
680     case Request:
681
682         u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
683         if (tree) {
684            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
685         }
686
687         for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
688
689             u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
690             if (tree) {
691                proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
692                   u_octet4, (u_octet4 > 0) ? seq : "");
693             }
694
695             g_free(seq);          /*  free buffer  */
696             seq = NULL;
697
698         }
699
700         break;
701
702     case Reply:
703
704         switch(header->rep_status) {
705
706         case NO_EXCEPTION:
707
708             u_octet4_loop_AttributeConfigList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
709             if (tree) {
710                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfigList = %u",u_octet4_loop_AttributeConfigList);
711             }
712
713             for (i_AttributeConfigList=0; i_AttributeConfigList < u_octet4_loop_AttributeConfigList; i_AttributeConfigList++) {
714
715                 /*  Begin struct "Tango_AttributeConfig"  */
716
717                 
718
719                 decode_Tango_AttributeConfig_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
720
721                 /*  End struct "Tango_AttributeConfig"  */
722
723             }
724
725             break;
726
727         case USER_EXCEPTION:
728
729             break;
730
731         default:
732
733             /* Unknown Exception */
734
735             g_warning("Unknown Exception ");
736
737             break;
738
739         
740         }   /* switch(header->message_type) */
741
742         break;
743
744     default:
745
746         /* Unknown GIOP Message */
747
748         g_warning("Unknown GIOP Message");
749
750         break;
751
752     } /* switch(header->message_type) */
753
754 }
755
756 /*
757  * IDL:Tango/Device/set_attribute_config:1.0
758  */
759
760 static void decode_Tango_Device_set_attribute_config(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
761
762     
763     /* Operation specific Variable declarations Begin */
764
765     guint32   u_octet4_loop_new_conf;
766     guint32   i_new_conf;
767     
768     /* Operation specific Variable declarations End */
769
770     
771     switch(header->message_type) {
772
773     case Request:
774
775         u_octet4_loop_new_conf = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
776         if (tree) {
777            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of new_conf = %u",u_octet4_loop_new_conf);
778         }
779
780         for (i_new_conf=0; i_new_conf < u_octet4_loop_new_conf; i_new_conf++) {
781
782             /*  Begin struct "Tango_AttributeConfig"  */
783
784             
785
786             decode_Tango_AttributeConfig_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
787
788             /*  End struct "Tango_AttributeConfig"  */
789
790         }
791
792         break;
793
794     case Reply:
795
796         switch(header->rep_status) {
797
798         case NO_EXCEPTION:
799
800             /* Function returns void */
801
802             break;
803
804         case USER_EXCEPTION:
805
806             break;
807
808         default:
809
810             /* Unknown Exception */
811
812             g_warning("Unknown Exception ");
813
814             break;
815
816         
817         }   /* switch(header->message_type) */
818
819         break;
820
821     default:
822
823         /* Unknown GIOP Message */
824
825         g_warning("Unknown GIOP Message");
826
827         break;
828
829     } /* switch(header->message_type) */
830
831 }
832
833 /*
834  * IDL:Tango/Device/read_attributes:1.0
835  */
836
837 static void decode_Tango_Device_read_attributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
838
839     
840     /* Operation specific Variable declarations Begin */
841
842     guint32   u_octet4_loop_names;
843     guint32   i_names;
844     guint32   u_octet4;
845     gchar   *seq = NULL;
846     guint32   u_octet4_loop_AttributeValueList;
847     guint32   i_AttributeValueList;
848     
849     /* Operation specific Variable declarations End */
850
851     
852     switch(header->message_type) {
853
854     case Request:
855
856         u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
857         if (tree) {
858            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
859         }
860
861         for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
862
863             u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
864             if (tree) {
865                proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
866                   u_octet4, (u_octet4 > 0) ? seq : "");
867             }
868
869             g_free(seq);          /*  free buffer  */
870             seq = NULL;
871
872         }
873
874         break;
875
876     case Reply:
877
878         switch(header->rep_status) {
879
880         case NO_EXCEPTION:
881
882             u_octet4_loop_AttributeValueList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
883             if (tree) {
884                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeValueList = %u",u_octet4_loop_AttributeValueList);
885             }
886
887             for (i_AttributeValueList=0; i_AttributeValueList < u_octet4_loop_AttributeValueList; i_AttributeValueList++) {
888
889                 /*  Begin struct "Tango_AttributeValue"  */
890
891                 
892
893                 decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
894
895                 /*  End struct "Tango_AttributeValue"  */
896
897             }
898
899             break;
900
901         case USER_EXCEPTION:
902
903             break;
904
905         default:
906
907             /* Unknown Exception */
908
909             g_warning("Unknown Exception ");
910
911             break;
912
913         
914         }   /* switch(header->message_type) */
915
916         break;
917
918     default:
919
920         /* Unknown GIOP Message */
921
922         g_warning("Unknown GIOP Message");
923
924         break;
925
926     } /* switch(header->message_type) */
927
928 }
929
930 /*
931  * IDL:Tango/Device/write_attributes:1.0
932  */
933
934 static void decode_Tango_Device_write_attributes(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
935
936     
937     /* Operation specific Variable declarations Begin */
938
939     guint32   u_octet4_loop_values;
940     guint32   i_values;
941     
942     /* Operation specific Variable declarations End */
943
944     
945     switch(header->message_type) {
946
947     case Request:
948
949         u_octet4_loop_values = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
950         if (tree) {
951            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of values = %u",u_octet4_loop_values);
952         }
953
954         for (i_values=0; i_values < u_octet4_loop_values; i_values++) {
955
956             /*  Begin struct "Tango_AttributeValue"  */
957
958             
959
960             decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
961
962             /*  End struct "Tango_AttributeValue"  */
963
964         }
965
966         break;
967
968     case Reply:
969
970         switch(header->rep_status) {
971
972         case NO_EXCEPTION:
973
974             /* Function returns void */
975
976             break;
977
978         case USER_EXCEPTION:
979
980             break;
981
982         default:
983
984             /* Unknown Exception */
985
986             g_warning("Unknown Exception ");
987
988             break;
989
990         
991         }   /* switch(header->message_type) */
992
993         break;
994
995     default:
996
997         /* Unknown GIOP Message */
998
999         g_warning("Unknown GIOP Message");
1000
1001         break;
1002
1003     } /* switch(header->message_type) */
1004
1005 }
1006
1007 /*
1008  * IDL:Tango/Device/ping:1.0
1009  */
1010
1011 static void decode_Tango_Device_ping(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1012
1013     
1014     /* Operation specific Variable declarations Begin */
1015
1016     
1017     /* Operation specific Variable declarations End */
1018
1019     
1020     switch(header->message_type) {
1021
1022     case Request:
1023
1024         break;
1025
1026     case Reply:
1027
1028         switch(header->rep_status) {
1029
1030         case NO_EXCEPTION:
1031
1032             /* Function returns void */
1033
1034             break;
1035
1036         case USER_EXCEPTION:
1037
1038             break;
1039
1040         default:
1041
1042             /* Unknown Exception */
1043
1044             g_warning("Unknown Exception ");
1045
1046             break;
1047
1048         
1049         }   /* switch(header->message_type) */
1050
1051         break;
1052
1053     default:
1054
1055         /* Unknown GIOP Message */
1056
1057         g_warning("Unknown GIOP Message");
1058
1059         break;
1060
1061     } /* switch(header->message_type) */
1062
1063 }
1064
1065 /*
1066  * IDL:Tango/Device/black_box:1.0
1067  */
1068
1069 static void decode_Tango_Device_black_box(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1070
1071     
1072     /* Operation specific Variable declarations Begin */
1073
1074     gint32    s_octet4;
1075     guint32   u_octet4_loop_DevVarStringArray;
1076     guint32   i_DevVarStringArray;
1077     guint32   u_octet4;
1078     gchar   *seq = NULL;
1079     
1080     /* Operation specific Variable declarations End */
1081
1082     
1083     switch(header->message_type) {
1084
1085     case Request:
1086
1087         s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
1088         if (tree) {
1089            proto_tree_add_text(tree,tvb,*offset-4,4,"n = %i",s_octet4);
1090         }
1091
1092         break;
1093
1094     case Reply:
1095
1096         switch(header->rep_status) {
1097
1098         case NO_EXCEPTION:
1099
1100             u_octet4_loop_DevVarStringArray = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1101             if (tree) {
1102                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarStringArray = %u",u_octet4_loop_DevVarStringArray);
1103             }
1104
1105             for (i_DevVarStringArray=0; i_DevVarStringArray < u_octet4_loop_DevVarStringArray; i_DevVarStringArray++) {
1106
1107                 u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
1108                 if (tree) {
1109                    proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevVarStringArray (%u) = %s",
1110                       u_octet4, (u_octet4 > 0) ? seq : "");
1111                 }
1112
1113                 g_free(seq);          /*  free buffer  */
1114                 seq = NULL;
1115
1116             }
1117
1118             break;
1119
1120         case USER_EXCEPTION:
1121
1122             break;
1123
1124         default:
1125
1126             /* Unknown Exception */
1127
1128             g_warning("Unknown Exception ");
1129
1130             break;
1131
1132         
1133         }   /* switch(header->message_type) */
1134
1135         break;
1136
1137     default:
1138
1139         /* Unknown GIOP Message */
1140
1141         g_warning("Unknown GIOP Message");
1142
1143         break;
1144
1145     } /* switch(header->message_type) */
1146
1147 }
1148
1149 /*
1150  * IDL:Tango/Device/info:1.0
1151  */
1152
1153 static void decode_Tango_Device_info(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1154
1155     
1156     /* Operation specific Variable declarations Begin */
1157
1158     
1159     /* Operation specific Variable declarations End */
1160
1161     
1162     switch(header->message_type) {
1163
1164     case Request:
1165
1166         break;
1167
1168     case Reply:
1169
1170         switch(header->rep_status) {
1171
1172         case NO_EXCEPTION:
1173
1174             /*  Begin struct "Tango_DevInfo"  */
1175
1176             
1177
1178             decode_Tango_DevInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1179
1180             /*  End struct "Tango_DevInfo"  */
1181
1182             break;
1183
1184         case USER_EXCEPTION:
1185
1186             break;
1187
1188         default:
1189
1190             /* Unknown Exception */
1191
1192             g_warning("Unknown Exception ");
1193
1194             break;
1195
1196         
1197         }   /* switch(header->message_type) */
1198
1199         break;
1200
1201     default:
1202
1203         /* Unknown GIOP Message */
1204
1205         g_warning("Unknown GIOP Message");
1206
1207         break;
1208
1209     } /* switch(header->message_type) */
1210
1211 }
1212
1213 /*
1214  * IDL:Tango/Device/command_list_query:1.0
1215  */
1216
1217 static void decode_Tango_Device_command_list_query(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1218
1219     
1220     /* Operation specific Variable declarations Begin */
1221
1222     guint32   u_octet4_loop_DevCmdInfoList;
1223     guint32   i_DevCmdInfoList;
1224     
1225     /* Operation specific Variable declarations End */
1226
1227     
1228     switch(header->message_type) {
1229
1230     case Request:
1231
1232         break;
1233
1234     case Reply:
1235
1236         switch(header->rep_status) {
1237
1238         case NO_EXCEPTION:
1239
1240             u_octet4_loop_DevCmdInfoList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1241             if (tree) {
1242                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevCmdInfoList = %u",u_octet4_loop_DevCmdInfoList);
1243             }
1244
1245             for (i_DevCmdInfoList=0; i_DevCmdInfoList < u_octet4_loop_DevCmdInfoList; i_DevCmdInfoList++) {
1246
1247                 /*  Begin struct "Tango_DevCmdInfo"  */
1248
1249                 
1250
1251                 decode_Tango_DevCmdInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1252
1253                 /*  End struct "Tango_DevCmdInfo"  */
1254
1255             }
1256
1257             break;
1258
1259         case USER_EXCEPTION:
1260
1261             break;
1262
1263         default:
1264
1265             /* Unknown Exception */
1266
1267             g_warning("Unknown Exception ");
1268
1269             break;
1270
1271         
1272         }   /* switch(header->message_type) */
1273
1274         break;
1275
1276     default:
1277
1278         /* Unknown GIOP Message */
1279
1280         g_warning("Unknown GIOP Message");
1281
1282         break;
1283
1284     } /* switch(header->message_type) */
1285
1286 }
1287
1288 /*
1289  * IDL:Tango/Device/command_query:1.0
1290  */
1291
1292 static void decode_Tango_Device_command_query(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1293
1294     
1295     /* Operation specific Variable declarations Begin */
1296
1297     guint32   u_octet4;
1298     gchar   *seq = NULL;
1299     
1300     /* Operation specific Variable declarations End */
1301
1302     
1303     switch(header->message_type) {
1304
1305     case Request:
1306
1307         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
1308         if (tree) {
1309            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
1310               u_octet4, (u_octet4 > 0) ? seq : "");
1311         }
1312
1313         g_free(seq);          /*  free buffer  */
1314         seq = NULL;
1315
1316         break;
1317
1318     case Reply:
1319
1320         switch(header->rep_status) {
1321
1322         case NO_EXCEPTION:
1323
1324             /*  Begin struct "Tango_DevCmdInfo"  */
1325
1326             
1327
1328             decode_Tango_DevCmdInfo_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1329
1330             /*  End struct "Tango_DevCmdInfo"  */
1331
1332             break;
1333
1334         case USER_EXCEPTION:
1335
1336             break;
1337
1338         default:
1339
1340             /* Unknown Exception */
1341
1342             g_warning("Unknown Exception ");
1343
1344             break;
1345
1346         
1347         }   /* switch(header->message_type) */
1348
1349         break;
1350
1351     default:
1352
1353         /* Unknown GIOP Message */
1354
1355         g_warning("Unknown GIOP Message");
1356
1357         break;
1358
1359     } /* switch(header->message_type) */
1360
1361 }
1362
1363 /*
1364  * IDL:Tango/Device_2/command_inout_2:1.0
1365  */
1366
1367 static void decode_Tango_Device_2_command_inout_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1368
1369     
1370     /* Operation specific Variable declarations Begin */
1371
1372     guint32   u_octet4;
1373     gchar   *seq = NULL;
1374     
1375     /* Operation specific Variable declarations End */
1376
1377     
1378     switch(header->message_type) {
1379
1380     case Request:
1381
1382         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
1383         if (tree) {
1384            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
1385               u_octet4, (u_octet4 > 0) ? seq : "");
1386         }
1387
1388         g_free(seq);          /*  free buffer  */
1389         seq = NULL;
1390
1391         get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
1392
1393         
1394         u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
1395         if (tree) {
1396            proto_tree_add_text(tree,tvb,*offset-4,4,"source  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DevSource,"Unknown Enum Value"));
1397         }
1398
1399         break;
1400
1401     case Reply:
1402
1403         switch(header->rep_status) {
1404
1405         case NO_EXCEPTION:
1406
1407             get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
1408
1409             break;
1410
1411         case USER_EXCEPTION:
1412
1413             break;
1414
1415         default:
1416
1417             /* Unknown Exception */
1418
1419             g_warning("Unknown Exception ");
1420
1421             break;
1422
1423         
1424         }   /* switch(header->message_type) */
1425
1426         break;
1427
1428     default:
1429
1430         /* Unknown GIOP Message */
1431
1432         g_warning("Unknown GIOP Message");
1433
1434         break;
1435
1436     } /* switch(header->message_type) */
1437
1438 }
1439
1440 /*
1441  * IDL:Tango/Device_2/read_attributes_2:1.0
1442  */
1443
1444 static void decode_Tango_Device_2_read_attributes_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1445
1446     
1447     /* Operation specific Variable declarations Begin */
1448
1449     guint32   u_octet4_loop_names;
1450     guint32   i_names;
1451     guint32   u_octet4;
1452     gchar   *seq = NULL;
1453     guint32   u_octet4_loop_AttributeValueList;
1454     guint32   i_AttributeValueList;
1455     
1456     /* Operation specific Variable declarations End */
1457
1458     
1459     switch(header->message_type) {
1460
1461     case Request:
1462
1463         u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1464         if (tree) {
1465            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
1466         }
1467
1468         for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
1469
1470             u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
1471             if (tree) {
1472                proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
1473                   u_octet4, (u_octet4 > 0) ? seq : "");
1474             }
1475
1476             g_free(seq);          /*  free buffer  */
1477             seq = NULL;
1478
1479         }
1480
1481         
1482         u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
1483         if (tree) {
1484            proto_tree_add_text(tree,tvb,*offset-4,4,"source  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DevSource,"Unknown Enum Value"));
1485         }
1486
1487         break;
1488
1489     case Reply:
1490
1491         switch(header->rep_status) {
1492
1493         case NO_EXCEPTION:
1494
1495             u_octet4_loop_AttributeValueList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1496             if (tree) {
1497                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeValueList = %u",u_octet4_loop_AttributeValueList);
1498             }
1499
1500             for (i_AttributeValueList=0; i_AttributeValueList < u_octet4_loop_AttributeValueList; i_AttributeValueList++) {
1501
1502                 /*  Begin struct "Tango_AttributeValue"  */
1503
1504                 
1505
1506                 decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1507
1508                 /*  End struct "Tango_AttributeValue"  */
1509
1510             }
1511
1512             break;
1513
1514         case USER_EXCEPTION:
1515
1516             break;
1517
1518         default:
1519
1520             /* Unknown Exception */
1521
1522             g_warning("Unknown Exception ");
1523
1524             break;
1525
1526         
1527         }   /* switch(header->message_type) */
1528
1529         break;
1530
1531     default:
1532
1533         /* Unknown GIOP Message */
1534
1535         g_warning("Unknown GIOP Message");
1536
1537         break;
1538
1539     } /* switch(header->message_type) */
1540
1541 }
1542
1543 /*
1544  * IDL:Tango/Device_2/get_attribute_config_2:1.0
1545  */
1546
1547 static void decode_Tango_Device_2_get_attribute_config_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1548
1549     
1550     /* Operation specific Variable declarations Begin */
1551
1552     guint32   u_octet4_loop_names;
1553     guint32   i_names;
1554     guint32   u_octet4;
1555     gchar   *seq = NULL;
1556     guint32   u_octet4_loop_AttributeConfigList_2;
1557     guint32   i_AttributeConfigList_2;
1558     
1559     /* Operation specific Variable declarations End */
1560
1561     
1562     switch(header->message_type) {
1563
1564     case Request:
1565
1566         u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1567         if (tree) {
1568            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
1569         }
1570
1571         for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
1572
1573             u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
1574             if (tree) {
1575                proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
1576                   u_octet4, (u_octet4 > 0) ? seq : "");
1577             }
1578
1579             g_free(seq);          /*  free buffer  */
1580             seq = NULL;
1581
1582         }
1583
1584         break;
1585
1586     case Reply:
1587
1588         switch(header->rep_status) {
1589
1590         case NO_EXCEPTION:
1591
1592             u_octet4_loop_AttributeConfigList_2 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1593             if (tree) {
1594                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfigList_2 = %u",u_octet4_loop_AttributeConfigList_2);
1595             }
1596
1597             for (i_AttributeConfigList_2=0; i_AttributeConfigList_2 < u_octet4_loop_AttributeConfigList_2; i_AttributeConfigList_2++) {
1598
1599                 /*  Begin struct "Tango_AttributeConfig_2"  */
1600
1601                 
1602
1603                 decode_Tango_AttributeConfig_2_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1604
1605                 /*  End struct "Tango_AttributeConfig_2"  */
1606
1607             }
1608
1609             break;
1610
1611         case USER_EXCEPTION:
1612
1613             break;
1614
1615         default:
1616
1617             /* Unknown Exception */
1618
1619             g_warning("Unknown Exception ");
1620
1621             break;
1622
1623         
1624         }   /* switch(header->message_type) */
1625
1626         break;
1627
1628     default:
1629
1630         /* Unknown GIOP Message */
1631
1632         g_warning("Unknown GIOP Message");
1633
1634         break;
1635
1636     } /* switch(header->message_type) */
1637
1638 }
1639
1640 /*
1641  * IDL:Tango/Device_2/command_list_query_2:1.0
1642  */
1643
1644 static void decode_Tango_Device_2_command_list_query_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1645
1646     
1647     /* Operation specific Variable declarations Begin */
1648
1649     guint32   u_octet4_loop_DevCmdInfoList_2;
1650     guint32   i_DevCmdInfoList_2;
1651     
1652     /* Operation specific Variable declarations End */
1653
1654     
1655     switch(header->message_type) {
1656
1657     case Request:
1658
1659         break;
1660
1661     case Reply:
1662
1663         switch(header->rep_status) {
1664
1665         case NO_EXCEPTION:
1666
1667             u_octet4_loop_DevCmdInfoList_2 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1668             if (tree) {
1669                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevCmdInfoList_2 = %u",u_octet4_loop_DevCmdInfoList_2);
1670             }
1671
1672             for (i_DevCmdInfoList_2=0; i_DevCmdInfoList_2 < u_octet4_loop_DevCmdInfoList_2; i_DevCmdInfoList_2++) {
1673
1674                 /*  Begin struct "Tango_DevCmdInfo_2"  */
1675
1676                 
1677
1678                 decode_Tango_DevCmdInfo_2_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1679
1680                 /*  End struct "Tango_DevCmdInfo_2"  */
1681
1682             }
1683
1684             break;
1685
1686         case USER_EXCEPTION:
1687
1688             break;
1689
1690         default:
1691
1692             /* Unknown Exception */
1693
1694             g_warning("Unknown Exception ");
1695
1696             break;
1697
1698         
1699         }   /* switch(header->message_type) */
1700
1701         break;
1702
1703     default:
1704
1705         /* Unknown GIOP Message */
1706
1707         g_warning("Unknown GIOP Message");
1708
1709         break;
1710
1711     } /* switch(header->message_type) */
1712
1713 }
1714
1715 /*
1716  * IDL:Tango/Device_2/command_query_2:1.0
1717  */
1718
1719 static void decode_Tango_Device_2_command_query_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1720
1721     
1722     /* Operation specific Variable declarations Begin */
1723
1724     guint32   u_octet4;
1725     gchar   *seq = NULL;
1726     
1727     /* Operation specific Variable declarations End */
1728
1729     
1730     switch(header->message_type) {
1731
1732     case Request:
1733
1734         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
1735         if (tree) {
1736            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
1737               u_octet4, (u_octet4 > 0) ? seq : "");
1738         }
1739
1740         g_free(seq);          /*  free buffer  */
1741         seq = NULL;
1742
1743         break;
1744
1745     case Reply:
1746
1747         switch(header->rep_status) {
1748
1749         case NO_EXCEPTION:
1750
1751             /*  Begin struct "Tango_DevCmdInfo_2"  */
1752
1753             
1754
1755             decode_Tango_DevCmdInfo_2_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1756
1757             /*  End struct "Tango_DevCmdInfo_2"  */
1758
1759             break;
1760
1761         case USER_EXCEPTION:
1762
1763             break;
1764
1765         default:
1766
1767             /* Unknown Exception */
1768
1769             g_warning("Unknown Exception ");
1770
1771             break;
1772
1773         
1774         }   /* switch(header->message_type) */
1775
1776         break;
1777
1778     default:
1779
1780         /* Unknown GIOP Message */
1781
1782         g_warning("Unknown GIOP Message");
1783
1784         break;
1785
1786     } /* switch(header->message_type) */
1787
1788 }
1789
1790 /*
1791  * IDL:Tango/Device_2/command_inout_history_2:1.0
1792  */
1793
1794 static void decode_Tango_Device_2_command_inout_history_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1795
1796     
1797     /* Operation specific Variable declarations Begin */
1798
1799     guint32   u_octet4;
1800     gchar   *seq = NULL;
1801     gint32    s_octet4;
1802     guint32   u_octet4_loop_DevCmdHistoryList;
1803     guint32   i_DevCmdHistoryList;
1804     
1805     /* Operation specific Variable declarations End */
1806
1807     
1808     switch(header->message_type) {
1809
1810     case Request:
1811
1812         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
1813         if (tree) {
1814            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"command (%u) = %s",
1815               u_octet4, (u_octet4 > 0) ? seq : "");
1816         }
1817
1818         g_free(seq);          /*  free buffer  */
1819         seq = NULL;
1820
1821         s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
1822         if (tree) {
1823            proto_tree_add_text(tree,tvb,*offset-4,4,"n = %i",s_octet4);
1824         }
1825
1826         break;
1827
1828     case Reply:
1829
1830         switch(header->rep_status) {
1831
1832         case NO_EXCEPTION:
1833
1834             u_octet4_loop_DevCmdHistoryList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1835             if (tree) {
1836                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevCmdHistoryList = %u",u_octet4_loop_DevCmdHistoryList);
1837             }
1838
1839             for (i_DevCmdHistoryList=0; i_DevCmdHistoryList < u_octet4_loop_DevCmdHistoryList; i_DevCmdHistoryList++) {
1840
1841                 /*  Begin struct "Tango_DevCmdHistory"  */
1842
1843                 
1844
1845                 decode_Tango_DevCmdHistory_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1846
1847                 /*  End struct "Tango_DevCmdHistory"  */
1848
1849             }
1850
1851             break;
1852
1853         case USER_EXCEPTION:
1854
1855             break;
1856
1857         default:
1858
1859             /* Unknown Exception */
1860
1861             g_warning("Unknown Exception ");
1862
1863             break;
1864
1865         
1866         }   /* switch(header->message_type) */
1867
1868         break;
1869
1870     default:
1871
1872         /* Unknown GIOP Message */
1873
1874         g_warning("Unknown GIOP Message");
1875
1876         break;
1877
1878     } /* switch(header->message_type) */
1879
1880 }
1881
1882 /*
1883  * IDL:Tango/Device_2/read_attribute_history_2:1.0
1884  */
1885
1886 static void decode_Tango_Device_2_read_attribute_history_2(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1887
1888     
1889     /* Operation specific Variable declarations Begin */
1890
1891     guint32   u_octet4;
1892     gchar   *seq = NULL;
1893     gint32    s_octet4;
1894     guint32   u_octet4_loop_DevAttrHistoryList;
1895     guint32   i_DevAttrHistoryList;
1896     
1897     /* Operation specific Variable declarations End */
1898
1899     
1900     switch(header->message_type) {
1901
1902     case Request:
1903
1904         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
1905         if (tree) {
1906            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"name (%u) = %s",
1907               u_octet4, (u_octet4 > 0) ? seq : "");
1908         }
1909
1910         g_free(seq);          /*  free buffer  */
1911         seq = NULL;
1912
1913         s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
1914         if (tree) {
1915            proto_tree_add_text(tree,tvb,*offset-4,4,"n = %i",s_octet4);
1916         }
1917
1918         break;
1919
1920     case Reply:
1921
1922         switch(header->rep_status) {
1923
1924         case NO_EXCEPTION:
1925
1926             u_octet4_loop_DevAttrHistoryList = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1927             if (tree) {
1928                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevAttrHistoryList = %u",u_octet4_loop_DevAttrHistoryList);
1929             }
1930
1931             for (i_DevAttrHistoryList=0; i_DevAttrHistoryList < u_octet4_loop_DevAttrHistoryList; i_DevAttrHistoryList++) {
1932
1933                 /*  Begin struct "Tango_DevAttrHistory"  */
1934
1935                 
1936
1937                 decode_Tango_DevAttrHistory_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
1938
1939                 /*  End struct "Tango_DevAttrHistory"  */
1940
1941             }
1942
1943             break;
1944
1945         case USER_EXCEPTION:
1946
1947             break;
1948
1949         default:
1950
1951             /* Unknown Exception */
1952
1953             g_warning("Unknown Exception ");
1954
1955             break;
1956
1957         
1958         }   /* switch(header->message_type) */
1959
1960         break;
1961
1962     default:
1963
1964         /* Unknown GIOP Message */
1965
1966         g_warning("Unknown GIOP Message");
1967
1968         break;
1969
1970     } /* switch(header->message_type) */
1971
1972 }
1973
1974 /*
1975  * IDL:Tango/Device_3/read_attributes_3:1.0
1976  */
1977
1978 static void decode_Tango_Device_3_read_attributes_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
1979
1980     
1981     /* Operation specific Variable declarations Begin */
1982
1983     guint32   u_octet4_loop_names;
1984     guint32   i_names;
1985     guint32   u_octet4;
1986     gchar   *seq = NULL;
1987     guint32   u_octet4_loop_AttributeValueList_3;
1988     guint32   i_AttributeValueList_3;
1989     
1990     /* Operation specific Variable declarations End */
1991
1992     
1993     switch(header->message_type) {
1994
1995     case Request:
1996
1997         u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
1998         if (tree) {
1999            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
2000         }
2001
2002         for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
2003
2004             u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2005             if (tree) {
2006                proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
2007                   u_octet4, (u_octet4 > 0) ? seq : "");
2008             }
2009
2010             g_free(seq);          /*  free buffer  */
2011             seq = NULL;
2012
2013         }
2014
2015         
2016         u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
2017         if (tree) {
2018            proto_tree_add_text(tree,tvb,*offset-4,4,"source  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DevSource,"Unknown Enum Value"));
2019         }
2020
2021         break;
2022
2023     case Reply:
2024
2025         switch(header->rep_status) {
2026
2027         case NO_EXCEPTION:
2028
2029             u_octet4_loop_AttributeValueList_3 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2030             if (tree) {
2031                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeValueList_3 = %u",u_octet4_loop_AttributeValueList_3);
2032             }
2033
2034             for (i_AttributeValueList_3=0; i_AttributeValueList_3 < u_octet4_loop_AttributeValueList_3; i_AttributeValueList_3++) {
2035
2036                 /*  Begin struct "Tango_AttributeValue_3"  */
2037
2038                 
2039
2040                 decode_Tango_AttributeValue_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
2041
2042                 /*  End struct "Tango_AttributeValue_3"  */
2043
2044             }
2045
2046             break;
2047
2048         case USER_EXCEPTION:
2049
2050             break;
2051
2052         default:
2053
2054             /* Unknown Exception */
2055
2056             g_warning("Unknown Exception ");
2057
2058             break;
2059
2060         
2061         }   /* switch(header->message_type) */
2062
2063         break;
2064
2065     default:
2066
2067         /* Unknown GIOP Message */
2068
2069         g_warning("Unknown GIOP Message");
2070
2071         break;
2072
2073     } /* switch(header->message_type) */
2074
2075 }
2076
2077 /*
2078  * IDL:Tango/Device_3/write_attributes_3:1.0
2079  */
2080
2081 static void decode_Tango_Device_3_write_attributes_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2082
2083     
2084     /* Operation specific Variable declarations Begin */
2085
2086     guint32   u_octet4_loop_values;
2087     guint32   i_values;
2088     
2089     /* Operation specific Variable declarations End */
2090
2091     
2092     switch(header->message_type) {
2093
2094     case Request:
2095
2096         u_octet4_loop_values = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2097         if (tree) {
2098            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of values = %u",u_octet4_loop_values);
2099         }
2100
2101         for (i_values=0; i_values < u_octet4_loop_values; i_values++) {
2102
2103             /*  Begin struct "Tango_AttributeValue"  */
2104
2105             
2106
2107             decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
2108
2109             /*  End struct "Tango_AttributeValue"  */
2110
2111         }
2112
2113         break;
2114
2115     case Reply:
2116
2117         switch(header->rep_status) {
2118
2119         case NO_EXCEPTION:
2120
2121             /* Function returns void */
2122
2123             break;
2124
2125         case USER_EXCEPTION:
2126
2127             break;
2128
2129         default:
2130
2131             /* Unknown Exception */
2132
2133             g_warning("Unknown Exception ");
2134
2135             break;
2136
2137         
2138         }   /* switch(header->message_type) */
2139
2140         break;
2141
2142     default:
2143
2144         /* Unknown GIOP Message */
2145
2146         g_warning("Unknown GIOP Message");
2147
2148         break;
2149
2150     } /* switch(header->message_type) */
2151
2152 }
2153
2154 /*
2155  * IDL:Tango/Device_3/read_attribute_history_3:1.0
2156  */
2157
2158 static void decode_Tango_Device_3_read_attribute_history_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2159
2160     
2161     /* Operation specific Variable declarations Begin */
2162
2163     guint32   u_octet4;
2164     gchar   *seq = NULL;
2165     gint32    s_octet4;
2166     guint32   u_octet4_loop_DevAttrHistoryList_3;
2167     guint32   i_DevAttrHistoryList_3;
2168     
2169     /* Operation specific Variable declarations End */
2170
2171     
2172     switch(header->message_type) {
2173
2174     case Request:
2175
2176         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2177         if (tree) {
2178            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"name (%u) = %s",
2179               u_octet4, (u_octet4 > 0) ? seq : "");
2180         }
2181
2182         g_free(seq);          /*  free buffer  */
2183         seq = NULL;
2184
2185         s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2186         if (tree) {
2187            proto_tree_add_text(tree,tvb,*offset-4,4,"n = %i",s_octet4);
2188         }
2189
2190         break;
2191
2192     case Reply:
2193
2194         switch(header->rep_status) {
2195
2196         case NO_EXCEPTION:
2197
2198             u_octet4_loop_DevAttrHistoryList_3 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2199             if (tree) {
2200                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevAttrHistoryList_3 = %u",u_octet4_loop_DevAttrHistoryList_3);
2201             }
2202
2203             for (i_DevAttrHistoryList_3=0; i_DevAttrHistoryList_3 < u_octet4_loop_DevAttrHistoryList_3; i_DevAttrHistoryList_3++) {
2204
2205                 /*  Begin struct "Tango_DevAttrHistory_3"  */
2206
2207                 
2208
2209                 decode_Tango_DevAttrHistory_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
2210
2211                 /*  End struct "Tango_DevAttrHistory_3"  */
2212
2213             }
2214
2215             break;
2216
2217         case USER_EXCEPTION:
2218
2219             break;
2220
2221         default:
2222
2223             /* Unknown Exception */
2224
2225             g_warning("Unknown Exception ");
2226
2227             break;
2228
2229         
2230         }   /* switch(header->message_type) */
2231
2232         break;
2233
2234     default:
2235
2236         /* Unknown GIOP Message */
2237
2238         g_warning("Unknown GIOP Message");
2239
2240         break;
2241
2242     } /* switch(header->message_type) */
2243
2244 }
2245
2246 /*
2247  * IDL:Tango/Device_3/info_3:1.0
2248  */
2249
2250 static void decode_Tango_Device_3_info_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2251
2252     
2253     /* Operation specific Variable declarations Begin */
2254
2255     
2256     /* Operation specific Variable declarations End */
2257
2258     
2259     switch(header->message_type) {
2260
2261     case Request:
2262
2263         break;
2264
2265     case Reply:
2266
2267         switch(header->rep_status) {
2268
2269         case NO_EXCEPTION:
2270
2271             /*  Begin struct "Tango_DevInfo_3"  */
2272
2273             
2274
2275             decode_Tango_DevInfo_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
2276
2277             /*  End struct "Tango_DevInfo_3"  */
2278
2279             break;
2280
2281         case USER_EXCEPTION:
2282
2283             break;
2284
2285         default:
2286
2287             /* Unknown Exception */
2288
2289             g_warning("Unknown Exception ");
2290
2291             break;
2292
2293         
2294         }   /* switch(header->message_type) */
2295
2296         break;
2297
2298     default:
2299
2300         /* Unknown GIOP Message */
2301
2302         g_warning("Unknown GIOP Message");
2303
2304         break;
2305
2306     } /* switch(header->message_type) */
2307
2308 }
2309
2310 /*
2311  * IDL:Tango/Device_3/get_attribute_config_3:1.0
2312  */
2313
2314 static void decode_Tango_Device_3_get_attribute_config_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2315
2316     
2317     /* Operation specific Variable declarations Begin */
2318
2319     guint32   u_octet4_loop_names;
2320     guint32   i_names;
2321     guint32   u_octet4;
2322     gchar   *seq = NULL;
2323     guint32   u_octet4_loop_AttributeConfigList_3;
2324     guint32   i_AttributeConfigList_3;
2325     
2326     /* Operation specific Variable declarations End */
2327
2328     
2329     switch(header->message_type) {
2330
2331     case Request:
2332
2333         u_octet4_loop_names = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2334         if (tree) {
2335            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of names = %u",u_octet4_loop_names);
2336         }
2337
2338         for (i_names=0; i_names < u_octet4_loop_names; i_names++) {
2339
2340             u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2341             if (tree) {
2342                proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"names (%u) = %s",
2343                   u_octet4, (u_octet4 > 0) ? seq : "");
2344             }
2345
2346             g_free(seq);          /*  free buffer  */
2347             seq = NULL;
2348
2349         }
2350
2351         break;
2352
2353     case Reply:
2354
2355         switch(header->rep_status) {
2356
2357         case NO_EXCEPTION:
2358
2359             u_octet4_loop_AttributeConfigList_3 = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2360             if (tree) {
2361                proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfigList_3 = %u",u_octet4_loop_AttributeConfigList_3);
2362             }
2363
2364             for (i_AttributeConfigList_3=0; i_AttributeConfigList_3 < u_octet4_loop_AttributeConfigList_3; i_AttributeConfigList_3++) {
2365
2366                 /*  Begin struct "Tango_AttributeConfig_3"  */
2367
2368                 
2369
2370                 decode_Tango_AttributeConfig_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
2371
2372                 /*  End struct "Tango_AttributeConfig_3"  */
2373
2374             }
2375
2376             break;
2377
2378         case USER_EXCEPTION:
2379
2380             break;
2381
2382         default:
2383
2384             /* Unknown Exception */
2385
2386             g_warning("Unknown Exception ");
2387
2388             break;
2389
2390         
2391         }   /* switch(header->message_type) */
2392
2393         break;
2394
2395     default:
2396
2397         /* Unknown GIOP Message */
2398
2399         g_warning("Unknown GIOP Message");
2400
2401         break;
2402
2403     } /* switch(header->message_type) */
2404
2405 }
2406
2407 /*
2408  * IDL:Tango/Device_3/set_attribute_config_3:1.0
2409  */
2410
2411 static void decode_Tango_Device_3_set_attribute_config_3(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2412
2413     
2414     /* Operation specific Variable declarations Begin */
2415
2416     guint32   u_octet4_loop_new_conf;
2417     guint32   i_new_conf;
2418     
2419     /* Operation specific Variable declarations End */
2420
2421     
2422     switch(header->message_type) {
2423
2424     case Request:
2425
2426         u_octet4_loop_new_conf = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2427         if (tree) {
2428            proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of new_conf = %u",u_octet4_loop_new_conf);
2429         }
2430
2431         for (i_new_conf=0; i_new_conf < u_octet4_loop_new_conf; i_new_conf++) {
2432
2433             /*  Begin struct "Tango_AttributeConfig_3"  */
2434
2435             
2436
2437             decode_Tango_AttributeConfig_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
2438
2439             /*  End struct "Tango_AttributeConfig_3"  */
2440
2441         }
2442
2443         break;
2444
2445     case Reply:
2446
2447         switch(header->rep_status) {
2448
2449         case NO_EXCEPTION:
2450
2451             /* Function returns void */
2452
2453             break;
2454
2455         case USER_EXCEPTION:
2456
2457             break;
2458
2459         default:
2460
2461             /* Unknown Exception */
2462
2463             g_warning("Unknown Exception ");
2464
2465             break;
2466
2467         
2468         }   /* switch(header->message_type) */
2469
2470         break;
2471
2472     default:
2473
2474         /* Unknown GIOP Message */
2475
2476         g_warning("Unknown GIOP Message");
2477
2478         break;
2479
2480     } /* switch(header->message_type) */
2481
2482 }
2483
2484 /* Struct = IDL:Tango/DevVarLongStringArray:1.0 */
2485
2486 static void decode_Tango_DevVarLongStringArray_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2487
2488     
2489     /* Operation specific Variable declarations Begin */
2490
2491     guint32   u_octet4_loop_DevVarLongStringArray_lvalue;
2492     guint32   i_DevVarLongStringArray_lvalue;
2493     gint32    s_octet4;
2494     guint32   u_octet4_loop_DevVarLongStringArray_svalue;
2495     guint32   i_DevVarLongStringArray_svalue;
2496     guint32   u_octet4;
2497     gchar   *seq = NULL;
2498     
2499     /* Operation specific Variable declarations End */
2500
2501     u_octet4_loop_DevVarLongStringArray_lvalue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2502     if (tree) {
2503        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarLongStringArray_lvalue = %u",u_octet4_loop_DevVarLongStringArray_lvalue);
2504     }
2505
2506     for (i_DevVarLongStringArray_lvalue=0; i_DevVarLongStringArray_lvalue < u_octet4_loop_DevVarLongStringArray_lvalue; i_DevVarLongStringArray_lvalue++) {
2507
2508         s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2509         if (tree) {
2510            proto_tree_add_text(tree,tvb,*offset-4,4,"DevVarLongStringArray_lvalue = %i",s_octet4);
2511         }
2512
2513     }
2514
2515     u_octet4_loop_DevVarLongStringArray_svalue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2516     if (tree) {
2517        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarLongStringArray_svalue = %u",u_octet4_loop_DevVarLongStringArray_svalue);
2518     }
2519
2520     for (i_DevVarLongStringArray_svalue=0; i_DevVarLongStringArray_svalue < u_octet4_loop_DevVarLongStringArray_svalue; i_DevVarLongStringArray_svalue++) {
2521
2522         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2523         if (tree) {
2524            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevVarLongStringArray_svalue (%u) = %s",
2525               u_octet4, (u_octet4 > 0) ? seq : "");
2526         }
2527
2528         g_free(seq);          /*  free buffer  */
2529         seq = NULL;
2530
2531     }
2532
2533 }
2534
2535 /* Struct = IDL:Tango/DevVarDoubleStringArray:1.0 */
2536
2537 static void decode_Tango_DevVarDoubleStringArray_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2538
2539     
2540     /* Operation specific Variable declarations Begin */
2541
2542     guint32   u_octet4_loop_DevVarDoubleStringArray_dvalue;
2543     guint32   i_DevVarDoubleStringArray_dvalue;
2544     gdouble   my_double;
2545     guint32   u_octet4_loop_DevVarDoubleStringArray_svalue;
2546     guint32   i_DevVarDoubleStringArray_svalue;
2547     guint32   u_octet4;
2548     gchar   *seq = NULL;
2549     
2550     /* Operation specific Variable declarations End */
2551
2552     u_octet4_loop_DevVarDoubleStringArray_dvalue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2553     if (tree) {
2554        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarDoubleStringArray_dvalue = %u",u_octet4_loop_DevVarDoubleStringArray_dvalue);
2555     }
2556
2557     for (i_DevVarDoubleStringArray_dvalue=0; i_DevVarDoubleStringArray_dvalue < u_octet4_loop_DevVarDoubleStringArray_dvalue; i_DevVarDoubleStringArray_dvalue++) {
2558
2559         my_double = get_CDR_double(tvb,offset,stream_is_big_endian, boundary);
2560         if (tree) {
2561            proto_tree_add_text(tree,tvb,*offset-8,8,"DevVarDoubleStringArray_dvalue = %.15e",my_double);
2562         }
2563
2564     }
2565
2566     u_octet4_loop_DevVarDoubleStringArray_svalue = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2567     if (tree) {
2568        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevVarDoubleStringArray_svalue = %u",u_octet4_loop_DevVarDoubleStringArray_svalue);
2569     }
2570
2571     for (i_DevVarDoubleStringArray_svalue=0; i_DevVarDoubleStringArray_svalue < u_octet4_loop_DevVarDoubleStringArray_svalue; i_DevVarDoubleStringArray_svalue++) {
2572
2573         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2574         if (tree) {
2575            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevVarDoubleStringArray_svalue (%u) = %s",
2576               u_octet4, (u_octet4 > 0) ? seq : "");
2577         }
2578
2579         g_free(seq);          /*  free buffer  */
2580         seq = NULL;
2581
2582     }
2583
2584 }
2585
2586 /* Struct = IDL:Tango/TimeVal:1.0 */
2587
2588 static void decode_Tango_TimeVal_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2589
2590     
2591     /* Operation specific Variable declarations Begin */
2592
2593     gint32    s_octet4;
2594     
2595     /* Operation specific Variable declarations End */
2596
2597     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2598     if (tree) {
2599        proto_tree_add_text(tree,tvb,*offset-4,4,"TimeVal_tv_sec = %i",s_octet4);
2600     }
2601
2602     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2603     if (tree) {
2604        proto_tree_add_text(tree,tvb,*offset-4,4,"TimeVal_tv_usec = %i",s_octet4);
2605     }
2606
2607     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2608     if (tree) {
2609        proto_tree_add_text(tree,tvb,*offset-4,4,"TimeVal_tv_nsec = %i",s_octet4);
2610     }
2611
2612 }
2613
2614 /* Struct = IDL:Tango/DevCmdInfo:1.0 */
2615
2616 static void decode_Tango_DevCmdInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2617
2618     
2619     /* Operation specific Variable declarations Begin */
2620
2621     guint32   u_octet4;
2622     gchar   *seq = NULL;
2623     gint32    s_octet4;
2624     
2625     /* Operation specific Variable declarations End */
2626
2627     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2628     if (tree) {
2629        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_cmd_name (%u) = %s",
2630           u_octet4, (u_octet4 > 0) ? seq : "");
2631     }
2632
2633     g_free(seq);          /*  free buffer  */
2634     seq = NULL;
2635
2636     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2637     if (tree) {
2638        proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_cmd_tag = %i",s_octet4);
2639     }
2640
2641     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2642     if (tree) {
2643        proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_in_type = %i",s_octet4);
2644     }
2645
2646     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2647     if (tree) {
2648        proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_out_type = %i",s_octet4);
2649     }
2650
2651     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2652     if (tree) {
2653        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_in_type_desc (%u) = %s",
2654           u_octet4, (u_octet4 > 0) ? seq : "");
2655     }
2656
2657     g_free(seq);          /*  free buffer  */
2658     seq = NULL;
2659
2660     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2661     if (tree) {
2662        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_out_type_desc (%u) = %s",
2663           u_octet4, (u_octet4 > 0) ? seq : "");
2664     }
2665
2666     g_free(seq);          /*  free buffer  */
2667     seq = NULL;
2668
2669 }
2670
2671 /* Struct = IDL:Tango/DevCmdInfo_2:1.0 */
2672
2673 static void decode_Tango_DevCmdInfo_2_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2674
2675     
2676     /* Operation specific Variable declarations Begin */
2677
2678     guint32   u_octet4;
2679     gchar   *seq = NULL;
2680     gint32    s_octet4;
2681     
2682     /* Operation specific Variable declarations End */
2683
2684     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2685     if (tree) {
2686        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_2_cmd_name (%u) = %s",
2687           u_octet4, (u_octet4 > 0) ? seq : "");
2688     }
2689
2690     g_free(seq);          /*  free buffer  */
2691     seq = NULL;
2692
2693     
2694     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
2695     if (tree) {
2696        proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_2_level  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DispLevel,"Unknown Enum Value"));
2697     }
2698
2699     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2700     if (tree) {
2701        proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_2_cmd_tag = %i",s_octet4);
2702     }
2703
2704     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2705     if (tree) {
2706        proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_2_in_type = %i",s_octet4);
2707     }
2708
2709     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2710     if (tree) {
2711        proto_tree_add_text(tree,tvb,*offset-4,4,"DevCmdInfo_2_out_type = %i",s_octet4);
2712     }
2713
2714     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2715     if (tree) {
2716        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_2_in_type_desc (%u) = %s",
2717           u_octet4, (u_octet4 > 0) ? seq : "");
2718     }
2719
2720     g_free(seq);          /*  free buffer  */
2721     seq = NULL;
2722
2723     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2724     if (tree) {
2725        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevCmdInfo_2_out_type_desc (%u) = %s",
2726           u_octet4, (u_octet4 > 0) ? seq : "");
2727     }
2728
2729     g_free(seq);          /*  free buffer  */
2730     seq = NULL;
2731
2732 }
2733
2734 /* Struct = IDL:Tango/DevError:1.0 */
2735
2736 static void decode_Tango_DevError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2737
2738     
2739     /* Operation specific Variable declarations Begin */
2740
2741     guint32   u_octet4;
2742     gchar   *seq = NULL;
2743     
2744     /* Operation specific Variable declarations End */
2745
2746     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2747     if (tree) {
2748        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevError_reason (%u) = %s",
2749           u_octet4, (u_octet4 > 0) ? seq : "");
2750     }
2751
2752     g_free(seq);          /*  free buffer  */
2753     seq = NULL;
2754
2755     
2756     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
2757     if (tree) {
2758        proto_tree_add_text(tree,tvb,*offset-4,4,"DevError_severity  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_ErrSeverity,"Unknown Enum Value"));
2759     }
2760
2761     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2762     if (tree) {
2763        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevError_desc (%u) = %s",
2764           u_octet4, (u_octet4 > 0) ? seq : "");
2765     }
2766
2767     g_free(seq);          /*  free buffer  */
2768     seq = NULL;
2769
2770     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2771     if (tree) {
2772        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevError_origin (%u) = %s",
2773           u_octet4, (u_octet4 > 0) ? seq : "");
2774     }
2775
2776     g_free(seq);          /*  free buffer  */
2777     seq = NULL;
2778
2779 }
2780
2781 /* Struct = IDL:Tango/NamedDevError:1.0 */
2782
2783 static void decode_Tango_NamedDevError_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2784
2785     
2786     /* Operation specific Variable declarations Begin */
2787
2788     guint32   u_octet4;
2789     gchar   *seq = NULL;
2790     gint32    s_octet4;
2791     guint32   u_octet4_loop_NamedDevError_err_list;
2792     guint32   i_NamedDevError_err_list;
2793     
2794     /* Operation specific Variable declarations End */
2795
2796     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2797     if (tree) {
2798        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"NamedDevError_name (%u) = %s",
2799           u_octet4, (u_octet4 > 0) ? seq : "");
2800     }
2801
2802     g_free(seq);          /*  free buffer  */
2803     seq = NULL;
2804
2805     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2806     if (tree) {
2807        proto_tree_add_text(tree,tvb,*offset-4,4,"NamedDevError_index_in_call = %i",s_octet4);
2808     }
2809
2810     u_octet4_loop_NamedDevError_err_list = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2811     if (tree) {
2812        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of NamedDevError_err_list = %u",u_octet4_loop_NamedDevError_err_list);
2813     }
2814
2815     for (i_NamedDevError_err_list=0; i_NamedDevError_err_list < u_octet4_loop_NamedDevError_err_list; i_NamedDevError_err_list++) {
2816
2817         /*  Begin struct "Tango_DevError"  */
2818
2819         
2820
2821         decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
2822
2823         /*  End struct "Tango_DevError"  */
2824
2825     }
2826
2827 }
2828
2829 /* Struct = IDL:Tango/AttributeConfig:1.0 */
2830
2831 static void decode_Tango_AttributeConfig_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
2832
2833     
2834     /* Operation specific Variable declarations Begin */
2835
2836     guint32   u_octet4;
2837     gchar   *seq = NULL;
2838     gint32    s_octet4;
2839     guint32   u_octet4_loop_AttributeConfig_extensions;
2840     guint32   i_AttributeConfig_extensions;
2841     
2842     /* Operation specific Variable declarations End */
2843
2844     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2845     if (tree) {
2846        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_name (%u) = %s",
2847           u_octet4, (u_octet4 > 0) ? seq : "");
2848     }
2849
2850     g_free(seq);          /*  free buffer  */
2851     seq = NULL;
2852
2853     
2854     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
2855     if (tree) {
2856        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_writable  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrWriteType,"Unknown Enum Value"));
2857     }
2858
2859     
2860     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
2861     if (tree) {
2862        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_data_format  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrDataFormat,"Unknown Enum Value"));
2863     }
2864
2865     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2866     if (tree) {
2867        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_data_type = %i",s_octet4);
2868     }
2869
2870     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2871     if (tree) {
2872        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_max_dim_x = %i",s_octet4);
2873     }
2874
2875     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
2876     if (tree) {
2877        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_max_dim_y = %i",s_octet4);
2878     }
2879
2880     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2881     if (tree) {
2882        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_description (%u) = %s",
2883           u_octet4, (u_octet4 > 0) ? seq : "");
2884     }
2885
2886     g_free(seq);          /*  free buffer  */
2887     seq = NULL;
2888
2889     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2890     if (tree) {
2891        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_label (%u) = %s",
2892           u_octet4, (u_octet4 > 0) ? seq : "");
2893     }
2894
2895     g_free(seq);          /*  free buffer  */
2896     seq = NULL;
2897
2898     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2899     if (tree) {
2900        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_unit (%u) = %s",
2901           u_octet4, (u_octet4 > 0) ? seq : "");
2902     }
2903
2904     g_free(seq);          /*  free buffer  */
2905     seq = NULL;
2906
2907     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2908     if (tree) {
2909        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_standard_unit (%u) = %s",
2910           u_octet4, (u_octet4 > 0) ? seq : "");
2911     }
2912
2913     g_free(seq);          /*  free buffer  */
2914     seq = NULL;
2915
2916     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2917     if (tree) {
2918        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_display_unit (%u) = %s",
2919           u_octet4, (u_octet4 > 0) ? seq : "");
2920     }
2921
2922     g_free(seq);          /*  free buffer  */
2923     seq = NULL;
2924
2925     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2926     if (tree) {
2927        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_format (%u) = %s",
2928           u_octet4, (u_octet4 > 0) ? seq : "");
2929     }
2930
2931     g_free(seq);          /*  free buffer  */
2932     seq = NULL;
2933
2934     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2935     if (tree) {
2936        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_min_value (%u) = %s",
2937           u_octet4, (u_octet4 > 0) ? seq : "");
2938     }
2939
2940     g_free(seq);          /*  free buffer  */
2941     seq = NULL;
2942
2943     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2944     if (tree) {
2945        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_max_value (%u) = %s",
2946           u_octet4, (u_octet4 > 0) ? seq : "");
2947     }
2948
2949     g_free(seq);          /*  free buffer  */
2950     seq = NULL;
2951
2952     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2953     if (tree) {
2954        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_min_alarm (%u) = %s",
2955           u_octet4, (u_octet4 > 0) ? seq : "");
2956     }
2957
2958     g_free(seq);          /*  free buffer  */
2959     seq = NULL;
2960
2961     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2962     if (tree) {
2963        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_max_alarm (%u) = %s",
2964           u_octet4, (u_octet4 > 0) ? seq : "");
2965     }
2966
2967     g_free(seq);          /*  free buffer  */
2968     seq = NULL;
2969
2970     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2971     if (tree) {
2972        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_writable_attr_name (%u) = %s",
2973           u_octet4, (u_octet4 > 0) ? seq : "");
2974     }
2975
2976     g_free(seq);          /*  free buffer  */
2977     seq = NULL;
2978
2979     u_octet4_loop_AttributeConfig_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
2980     if (tree) {
2981        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfig_extensions = %u",u_octet4_loop_AttributeConfig_extensions);
2982     }
2983
2984     for (i_AttributeConfig_extensions=0; i_AttributeConfig_extensions < u_octet4_loop_AttributeConfig_extensions; i_AttributeConfig_extensions++) {
2985
2986         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
2987         if (tree) {
2988            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_extensions (%u) = %s",
2989               u_octet4, (u_octet4 > 0) ? seq : "");
2990         }
2991
2992         g_free(seq);          /*  free buffer  */
2993         seq = NULL;
2994
2995     }
2996
2997 }
2998
2999 /* Struct = IDL:Tango/AttributeConfig_2:1.0 */
3000
3001 static void decode_Tango_AttributeConfig_2_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3002
3003     
3004     /* Operation specific Variable declarations Begin */
3005
3006     guint32   u_octet4;
3007     gchar   *seq = NULL;
3008     gint32    s_octet4;
3009     guint32   u_octet4_loop_AttributeConfig_2_extensions;
3010     guint32   i_AttributeConfig_2_extensions;
3011     
3012     /* Operation specific Variable declarations End */
3013
3014     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3015     if (tree) {
3016        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_name (%u) = %s",
3017           u_octet4, (u_octet4 > 0) ? seq : "");
3018     }
3019
3020     g_free(seq);          /*  free buffer  */
3021     seq = NULL;
3022
3023     
3024     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
3025     if (tree) {
3026        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_writable  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrWriteType,"Unknown Enum Value"));
3027     }
3028
3029     
3030     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
3031     if (tree) {
3032        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_data_format  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrDataFormat,"Unknown Enum Value"));
3033     }
3034
3035     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3036     if (tree) {
3037        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_data_type = %i",s_octet4);
3038     }
3039
3040     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3041     if (tree) {
3042        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_max_dim_x = %i",s_octet4);
3043     }
3044
3045     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3046     if (tree) {
3047        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_max_dim_y = %i",s_octet4);
3048     }
3049
3050     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3051     if (tree) {
3052        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_description (%u) = %s",
3053           u_octet4, (u_octet4 > 0) ? seq : "");
3054     }
3055
3056     g_free(seq);          /*  free buffer  */
3057     seq = NULL;
3058
3059     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3060     if (tree) {
3061        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_label (%u) = %s",
3062           u_octet4, (u_octet4 > 0) ? seq : "");
3063     }
3064
3065     g_free(seq);          /*  free buffer  */
3066     seq = NULL;
3067
3068     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3069     if (tree) {
3070        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_unit (%u) = %s",
3071           u_octet4, (u_octet4 > 0) ? seq : "");
3072     }
3073
3074     g_free(seq);          /*  free buffer  */
3075     seq = NULL;
3076
3077     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3078     if (tree) {
3079        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_standard_unit (%u) = %s",
3080           u_octet4, (u_octet4 > 0) ? seq : "");
3081     }
3082
3083     g_free(seq);          /*  free buffer  */
3084     seq = NULL;
3085
3086     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3087     if (tree) {
3088        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_display_unit (%u) = %s",
3089           u_octet4, (u_octet4 > 0) ? seq : "");
3090     }
3091
3092     g_free(seq);          /*  free buffer  */
3093     seq = NULL;
3094
3095     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3096     if (tree) {
3097        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_format (%u) = %s",
3098           u_octet4, (u_octet4 > 0) ? seq : "");
3099     }
3100
3101     g_free(seq);          /*  free buffer  */
3102     seq = NULL;
3103
3104     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3105     if (tree) {
3106        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_min_value (%u) = %s",
3107           u_octet4, (u_octet4 > 0) ? seq : "");
3108     }
3109
3110     g_free(seq);          /*  free buffer  */
3111     seq = NULL;
3112
3113     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3114     if (tree) {
3115        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_max_value (%u) = %s",
3116           u_octet4, (u_octet4 > 0) ? seq : "");
3117     }
3118
3119     g_free(seq);          /*  free buffer  */
3120     seq = NULL;
3121
3122     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3123     if (tree) {
3124        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_min_alarm (%u) = %s",
3125           u_octet4, (u_octet4 > 0) ? seq : "");
3126     }
3127
3128     g_free(seq);          /*  free buffer  */
3129     seq = NULL;
3130
3131     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3132     if (tree) {
3133        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_max_alarm (%u) = %s",
3134           u_octet4, (u_octet4 > 0) ? seq : "");
3135     }
3136
3137     g_free(seq);          /*  free buffer  */
3138     seq = NULL;
3139
3140     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3141     if (tree) {
3142        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_writable_attr_name (%u) = %s",
3143           u_octet4, (u_octet4 > 0) ? seq : "");
3144     }
3145
3146     g_free(seq);          /*  free buffer  */
3147     seq = NULL;
3148
3149     
3150     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
3151     if (tree) {
3152        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_2_level  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DispLevel,"Unknown Enum Value"));
3153     }
3154
3155     u_octet4_loop_AttributeConfig_2_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3156     if (tree) {
3157        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfig_2_extensions = %u",u_octet4_loop_AttributeConfig_2_extensions);
3158     }
3159
3160     for (i_AttributeConfig_2_extensions=0; i_AttributeConfig_2_extensions < u_octet4_loop_AttributeConfig_2_extensions; i_AttributeConfig_2_extensions++) {
3161
3162         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3163         if (tree) {
3164            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_2_extensions (%u) = %s",
3165               u_octet4, (u_octet4 > 0) ? seq : "");
3166         }
3167
3168         g_free(seq);          /*  free buffer  */
3169         seq = NULL;
3170
3171     }
3172
3173 }
3174
3175 /* Struct = IDL:Tango/AttributeValue:1.0 */
3176
3177 static void decode_Tango_AttributeValue_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3178
3179     
3180     /* Operation specific Variable declarations Begin */
3181
3182     guint32   u_octet4;
3183     gchar   *seq = NULL;
3184     gint32    s_octet4;
3185     
3186     /* Operation specific Variable declarations End */
3187
3188     get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
3189
3190     
3191     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
3192     if (tree) {
3193        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeValue_quality  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrQuality,"Unknown Enum Value"));
3194     }
3195
3196     /*  Begin struct "Tango_TimeVal"  */
3197
3198     
3199
3200     decode_Tango_TimeVal_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3201
3202     /*  End struct "Tango_TimeVal"  */
3203
3204     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3205     if (tree) {
3206        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeValue_name (%u) = %s",
3207           u_octet4, (u_octet4 > 0) ? seq : "");
3208     }
3209
3210     g_free(seq);          /*  free buffer  */
3211     seq = NULL;
3212
3213     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3214     if (tree) {
3215        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeValue_dim_x = %i",s_octet4);
3216     }
3217
3218     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3219     if (tree) {
3220        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeValue_dim_y = %i",s_octet4);
3221     }
3222
3223 }
3224
3225 /* Struct = IDL:Tango/AttributeDim:1.0 */
3226
3227 static void decode_Tango_AttributeDim_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3228
3229     
3230     /* Operation specific Variable declarations Begin */
3231
3232     gint32    s_octet4;
3233     
3234     /* Operation specific Variable declarations End */
3235
3236     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3237     if (tree) {
3238        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeDim_dim_x = %i",s_octet4);
3239     }
3240
3241     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3242     if (tree) {
3243        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeDim_dim_y = %i",s_octet4);
3244     }
3245
3246 }
3247
3248 /* Struct = IDL:Tango/AttributeValue_3:1.0 */
3249
3250 static void decode_Tango_AttributeValue_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3251
3252     
3253     /* Operation specific Variable declarations Begin */
3254
3255     guint32   u_octet4;
3256     gchar   *seq = NULL;
3257     guint32   u_octet4_loop_AttributeValue_3_err_list;
3258     guint32   i_AttributeValue_3_err_list;
3259     
3260     /* Operation specific Variable declarations End */
3261
3262     get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
3263
3264     
3265     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
3266     if (tree) {
3267        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeValue_3_quality  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrQuality,"Unknown Enum Value"));
3268     }
3269
3270     /*  Begin struct "Tango_TimeVal"  */
3271
3272     
3273
3274     decode_Tango_TimeVal_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3275
3276     /*  End struct "Tango_TimeVal"  */
3277
3278     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3279     if (tree) {
3280        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeValue_3_name (%u) = %s",
3281           u_octet4, (u_octet4 > 0) ? seq : "");
3282     }
3283
3284     g_free(seq);          /*  free buffer  */
3285     seq = NULL;
3286
3287     /*  Begin struct "Tango_AttributeDim"  */
3288
3289     
3290
3291     decode_Tango_AttributeDim_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3292
3293     /*  End struct "Tango_AttributeDim"  */
3294
3295     /*  Begin struct "Tango_AttributeDim"  */
3296
3297     
3298
3299     decode_Tango_AttributeDim_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3300
3301     /*  End struct "Tango_AttributeDim"  */
3302
3303     u_octet4_loop_AttributeValue_3_err_list = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3304     if (tree) {
3305        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeValue_3_err_list = %u",u_octet4_loop_AttributeValue_3_err_list);
3306     }
3307
3308     for (i_AttributeValue_3_err_list=0; i_AttributeValue_3_err_list < u_octet4_loop_AttributeValue_3_err_list; i_AttributeValue_3_err_list++) {
3309
3310         /*  Begin struct "Tango_DevError"  */
3311
3312         
3313
3314         decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3315
3316         /*  End struct "Tango_DevError"  */
3317
3318     }
3319
3320 }
3321
3322 /* Struct = IDL:Tango/ChangeEventProp:1.0 */
3323
3324 static void decode_Tango_ChangeEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3325
3326     
3327     /* Operation specific Variable declarations Begin */
3328
3329     guint32   u_octet4;
3330     gchar   *seq = NULL;
3331     guint32   u_octet4_loop_ChangeEventProp_extensions;
3332     guint32   i_ChangeEventProp_extensions;
3333     
3334     /* Operation specific Variable declarations End */
3335
3336     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3337     if (tree) {
3338        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ChangeEventProp_rel_change (%u) = %s",
3339           u_octet4, (u_octet4 > 0) ? seq : "");
3340     }
3341
3342     g_free(seq);          /*  free buffer  */
3343     seq = NULL;
3344
3345     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3346     if (tree) {
3347        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ChangeEventProp_abs_change (%u) = %s",
3348           u_octet4, (u_octet4 > 0) ? seq : "");
3349     }
3350
3351     g_free(seq);          /*  free buffer  */
3352     seq = NULL;
3353
3354     u_octet4_loop_ChangeEventProp_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3355     if (tree) {
3356        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of ChangeEventProp_extensions = %u",u_octet4_loop_ChangeEventProp_extensions);
3357     }
3358
3359     for (i_ChangeEventProp_extensions=0; i_ChangeEventProp_extensions < u_octet4_loop_ChangeEventProp_extensions; i_ChangeEventProp_extensions++) {
3360
3361         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3362         if (tree) {
3363            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ChangeEventProp_extensions (%u) = %s",
3364               u_octet4, (u_octet4 > 0) ? seq : "");
3365         }
3366
3367         g_free(seq);          /*  free buffer  */
3368         seq = NULL;
3369
3370     }
3371
3372 }
3373
3374 /* Struct = IDL:Tango/PeriodicEventProp:1.0 */
3375
3376 static void decode_Tango_PeriodicEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3377
3378     
3379     /* Operation specific Variable declarations Begin */
3380
3381     guint32   u_octet4;
3382     gchar   *seq = NULL;
3383     guint32   u_octet4_loop_PeriodicEventProp_extensions;
3384     guint32   i_PeriodicEventProp_extensions;
3385     
3386     /* Operation specific Variable declarations End */
3387
3388     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3389     if (tree) {
3390        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"PeriodicEventProp_period (%u) = %s",
3391           u_octet4, (u_octet4 > 0) ? seq : "");
3392     }
3393
3394     g_free(seq);          /*  free buffer  */
3395     seq = NULL;
3396
3397     u_octet4_loop_PeriodicEventProp_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3398     if (tree) {
3399        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of PeriodicEventProp_extensions = %u",u_octet4_loop_PeriodicEventProp_extensions);
3400     }
3401
3402     for (i_PeriodicEventProp_extensions=0; i_PeriodicEventProp_extensions < u_octet4_loop_PeriodicEventProp_extensions; i_PeriodicEventProp_extensions++) {
3403
3404         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3405         if (tree) {
3406            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"PeriodicEventProp_extensions (%u) = %s",
3407               u_octet4, (u_octet4 > 0) ? seq : "");
3408         }
3409
3410         g_free(seq);          /*  free buffer  */
3411         seq = NULL;
3412
3413     }
3414
3415 }
3416
3417 /* Struct = IDL:Tango/ArchiveEventProp:1.0 */
3418
3419 static void decode_Tango_ArchiveEventProp_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3420
3421     
3422     /* Operation specific Variable declarations Begin */
3423
3424     guint32   u_octet4;
3425     gchar   *seq = NULL;
3426     guint32   u_octet4_loop_ArchiveEventProp_extensions;
3427     guint32   i_ArchiveEventProp_extensions;
3428     
3429     /* Operation specific Variable declarations End */
3430
3431     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3432     if (tree) {
3433        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ArchiveEventProp_rel_change (%u) = %s",
3434           u_octet4, (u_octet4 > 0) ? seq : "");
3435     }
3436
3437     g_free(seq);          /*  free buffer  */
3438     seq = NULL;
3439
3440     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3441     if (tree) {
3442        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ArchiveEventProp_abs_change (%u) = %s",
3443           u_octet4, (u_octet4 > 0) ? seq : "");
3444     }
3445
3446     g_free(seq);          /*  free buffer  */
3447     seq = NULL;
3448
3449     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3450     if (tree) {
3451        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ArchiveEventProp_period (%u) = %s",
3452           u_octet4, (u_octet4 > 0) ? seq : "");
3453     }
3454
3455     g_free(seq);          /*  free buffer  */
3456     seq = NULL;
3457
3458     u_octet4_loop_ArchiveEventProp_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3459     if (tree) {
3460        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of ArchiveEventProp_extensions = %u",u_octet4_loop_ArchiveEventProp_extensions);
3461     }
3462
3463     for (i_ArchiveEventProp_extensions=0; i_ArchiveEventProp_extensions < u_octet4_loop_ArchiveEventProp_extensions; i_ArchiveEventProp_extensions++) {
3464
3465         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3466         if (tree) {
3467            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"ArchiveEventProp_extensions (%u) = %s",
3468               u_octet4, (u_octet4 > 0) ? seq : "");
3469         }
3470
3471         g_free(seq);          /*  free buffer  */
3472         seq = NULL;
3473
3474     }
3475
3476 }
3477
3478 /* Struct = IDL:Tango/EventProperties:1.0 */
3479
3480 static void decode_Tango_EventProperties_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3481
3482     
3483     /* Operation specific Variable declarations Begin */
3484
3485     
3486     /* Operation specific Variable declarations End */
3487
3488     /*  Begin struct "Tango_ChangeEventProp"  */
3489
3490     
3491
3492     decode_Tango_ChangeEventProp_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3493
3494     /*  End struct "Tango_ChangeEventProp"  */
3495
3496     /*  Begin struct "Tango_PeriodicEventProp"  */
3497
3498     
3499
3500     decode_Tango_PeriodicEventProp_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3501
3502     /*  End struct "Tango_PeriodicEventProp"  */
3503
3504     /*  Begin struct "Tango_ArchiveEventProp"  */
3505
3506     
3507
3508     decode_Tango_ArchiveEventProp_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3509
3510     /*  End struct "Tango_ArchiveEventProp"  */
3511
3512 }
3513
3514 /* Struct = IDL:Tango/AttributeAlarm:1.0 */
3515
3516 static void decode_Tango_AttributeAlarm_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3517
3518     
3519     /* Operation specific Variable declarations Begin */
3520
3521     guint32   u_octet4;
3522     gchar   *seq = NULL;
3523     guint32   u_octet4_loop_AttributeAlarm_extensions;
3524     guint32   i_AttributeAlarm_extensions;
3525     
3526     /* Operation specific Variable declarations End */
3527
3528     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3529     if (tree) {
3530        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_min_alarm (%u) = %s",
3531           u_octet4, (u_octet4 > 0) ? seq : "");
3532     }
3533
3534     g_free(seq);          /*  free buffer  */
3535     seq = NULL;
3536
3537     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3538     if (tree) {
3539        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_max_alarm (%u) = %s",
3540           u_octet4, (u_octet4 > 0) ? seq : "");
3541     }
3542
3543     g_free(seq);          /*  free buffer  */
3544     seq = NULL;
3545
3546     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3547     if (tree) {
3548        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_min_warning (%u) = %s",
3549           u_octet4, (u_octet4 > 0) ? seq : "");
3550     }
3551
3552     g_free(seq);          /*  free buffer  */
3553     seq = NULL;
3554
3555     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3556     if (tree) {
3557        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_max_warning (%u) = %s",
3558           u_octet4, (u_octet4 > 0) ? seq : "");
3559     }
3560
3561     g_free(seq);          /*  free buffer  */
3562     seq = NULL;
3563
3564     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3565     if (tree) {
3566        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_delta_t (%u) = %s",
3567           u_octet4, (u_octet4 > 0) ? seq : "");
3568     }
3569
3570     g_free(seq);          /*  free buffer  */
3571     seq = NULL;
3572
3573     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3574     if (tree) {
3575        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_delta_val (%u) = %s",
3576           u_octet4, (u_octet4 > 0) ? seq : "");
3577     }
3578
3579     g_free(seq);          /*  free buffer  */
3580     seq = NULL;
3581
3582     u_octet4_loop_AttributeAlarm_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3583     if (tree) {
3584        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeAlarm_extensions = %u",u_octet4_loop_AttributeAlarm_extensions);
3585     }
3586
3587     for (i_AttributeAlarm_extensions=0; i_AttributeAlarm_extensions < u_octet4_loop_AttributeAlarm_extensions; i_AttributeAlarm_extensions++) {
3588
3589         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3590         if (tree) {
3591            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeAlarm_extensions (%u) = %s",
3592               u_octet4, (u_octet4 > 0) ? seq : "");
3593         }
3594
3595         g_free(seq);          /*  free buffer  */
3596         seq = NULL;
3597
3598     }
3599
3600 }
3601
3602 /* Struct = IDL:Tango/AttributeConfig_3:1.0 */
3603
3604 static void decode_Tango_AttributeConfig_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3605
3606     
3607     /* Operation specific Variable declarations Begin */
3608
3609     guint32   u_octet4;
3610     gchar   *seq = NULL;
3611     gint32    s_octet4;
3612     guint32   u_octet4_loop_AttributeConfig_3_extensions;
3613     guint32   i_AttributeConfig_3_extensions;
3614     guint32   u_octet4_loop_AttributeConfig_3_sys_extensions;
3615     guint32   i_AttributeConfig_3_sys_extensions;
3616     
3617     /* Operation specific Variable declarations End */
3618
3619     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3620     if (tree) {
3621        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_name (%u) = %s",
3622           u_octet4, (u_octet4 > 0) ? seq : "");
3623     }
3624
3625     g_free(seq);          /*  free buffer  */
3626     seq = NULL;
3627
3628     
3629     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
3630     if (tree) {
3631        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_writable  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrWriteType,"Unknown Enum Value"));
3632     }
3633
3634     
3635     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
3636     if (tree) {
3637        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_data_format  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_AttrDataFormat,"Unknown Enum Value"));
3638     }
3639
3640     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3641     if (tree) {
3642        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_data_type = %i",s_octet4);
3643     }
3644
3645     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3646     if (tree) {
3647        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_max_dim_x = %i",s_octet4);
3648     }
3649
3650     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3651     if (tree) {
3652        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_max_dim_y = %i",s_octet4);
3653     }
3654
3655     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3656     if (tree) {
3657        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_description (%u) = %s",
3658           u_octet4, (u_octet4 > 0) ? seq : "");
3659     }
3660
3661     g_free(seq);          /*  free buffer  */
3662     seq = NULL;
3663
3664     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3665     if (tree) {
3666        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_label (%u) = %s",
3667           u_octet4, (u_octet4 > 0) ? seq : "");
3668     }
3669
3670     g_free(seq);          /*  free buffer  */
3671     seq = NULL;
3672
3673     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3674     if (tree) {
3675        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_unit (%u) = %s",
3676           u_octet4, (u_octet4 > 0) ? seq : "");
3677     }
3678
3679     g_free(seq);          /*  free buffer  */
3680     seq = NULL;
3681
3682     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3683     if (tree) {
3684        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_standard_unit (%u) = %s",
3685           u_octet4, (u_octet4 > 0) ? seq : "");
3686     }
3687
3688     g_free(seq);          /*  free buffer  */
3689     seq = NULL;
3690
3691     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3692     if (tree) {
3693        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_display_unit (%u) = %s",
3694           u_octet4, (u_octet4 > 0) ? seq : "");
3695     }
3696
3697     g_free(seq);          /*  free buffer  */
3698     seq = NULL;
3699
3700     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3701     if (tree) {
3702        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_format (%u) = %s",
3703           u_octet4, (u_octet4 > 0) ? seq : "");
3704     }
3705
3706     g_free(seq);          /*  free buffer  */
3707     seq = NULL;
3708
3709     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3710     if (tree) {
3711        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_min_value (%u) = %s",
3712           u_octet4, (u_octet4 > 0) ? seq : "");
3713     }
3714
3715     g_free(seq);          /*  free buffer  */
3716     seq = NULL;
3717
3718     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3719     if (tree) {
3720        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_max_value (%u) = %s",
3721           u_octet4, (u_octet4 > 0) ? seq : "");
3722     }
3723
3724     g_free(seq);          /*  free buffer  */
3725     seq = NULL;
3726
3727     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3728     if (tree) {
3729        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_writable_attr_name (%u) = %s",
3730           u_octet4, (u_octet4 > 0) ? seq : "");
3731     }
3732
3733     g_free(seq);          /*  free buffer  */
3734     seq = NULL;
3735
3736     
3737     u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary);
3738     if (tree) {
3739        proto_tree_add_text(tree,tvb,*offset-4,4,"AttributeConfig_3_level  = %u (%s)",u_octet4,val_to_str(u_octet4,Tango_DispLevel,"Unknown Enum Value"));
3740     }
3741
3742     /*  Begin struct "Tango_AttributeAlarm"  */
3743
3744     
3745
3746     decode_Tango_AttributeAlarm_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3747
3748     /*  End struct "Tango_AttributeAlarm"  */
3749
3750     /*  Begin struct "Tango_EventProperties"  */
3751
3752     
3753
3754     decode_Tango_EventProperties_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3755
3756     /*  End struct "Tango_EventProperties"  */
3757
3758     u_octet4_loop_AttributeConfig_3_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3759     if (tree) {
3760        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfig_3_extensions = %u",u_octet4_loop_AttributeConfig_3_extensions);
3761     }
3762
3763     for (i_AttributeConfig_3_extensions=0; i_AttributeConfig_3_extensions < u_octet4_loop_AttributeConfig_3_extensions; i_AttributeConfig_3_extensions++) {
3764
3765         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3766         if (tree) {
3767            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_extensions (%u) = %s",
3768               u_octet4, (u_octet4 > 0) ? seq : "");
3769         }
3770
3771         g_free(seq);          /*  free buffer  */
3772         seq = NULL;
3773
3774     }
3775
3776     u_octet4_loop_AttributeConfig_3_sys_extensions = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3777     if (tree) {
3778        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of AttributeConfig_3_sys_extensions = %u",u_octet4_loop_AttributeConfig_3_sys_extensions);
3779     }
3780
3781     for (i_AttributeConfig_3_sys_extensions=0; i_AttributeConfig_3_sys_extensions < u_octet4_loop_AttributeConfig_3_sys_extensions; i_AttributeConfig_3_sys_extensions++) {
3782
3783         u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3784         if (tree) {
3785            proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"AttributeConfig_3_sys_extensions (%u) = %s",
3786               u_octet4, (u_octet4 > 0) ? seq : "");
3787         }
3788
3789         g_free(seq);          /*  free buffer  */
3790         seq = NULL;
3791
3792     }
3793
3794 }
3795
3796 /* Struct = IDL:Tango/DevInfo:1.0 */
3797
3798 static void decode_Tango_DevInfo_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3799
3800     
3801     /* Operation specific Variable declarations Begin */
3802
3803     guint32   u_octet4;
3804     gchar   *seq = NULL;
3805     gint32    s_octet4;
3806     
3807     /* Operation specific Variable declarations End */
3808
3809     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3810     if (tree) {
3811        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_dev_class (%u) = %s",
3812           u_octet4, (u_octet4 > 0) ? seq : "");
3813     }
3814
3815     g_free(seq);          /*  free buffer  */
3816     seq = NULL;
3817
3818     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3819     if (tree) {
3820        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_server_id (%u) = %s",
3821           u_octet4, (u_octet4 > 0) ? seq : "");
3822     }
3823
3824     g_free(seq);          /*  free buffer  */
3825     seq = NULL;
3826
3827     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3828     if (tree) {
3829        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_server_host (%u) = %s",
3830           u_octet4, (u_octet4 > 0) ? seq : "");
3831     }
3832
3833     g_free(seq);          /*  free buffer  */
3834     seq = NULL;
3835
3836     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3837     if (tree) {
3838        proto_tree_add_text(tree,tvb,*offset-4,4,"DevInfo_server_version = %i",s_octet4);
3839     }
3840
3841     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3842     if (tree) {
3843        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_doc_url (%u) = %s",
3844           u_octet4, (u_octet4 > 0) ? seq : "");
3845     }
3846
3847     g_free(seq);          /*  free buffer  */
3848     seq = NULL;
3849
3850 }
3851
3852 /* Struct = IDL:Tango/DevInfo_3:1.0 */
3853
3854 static void decode_Tango_DevInfo_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3855
3856     
3857     /* Operation specific Variable declarations Begin */
3858
3859     guint32   u_octet4;
3860     gchar   *seq = NULL;
3861     gint32    s_octet4;
3862     
3863     /* Operation specific Variable declarations End */
3864
3865     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3866     if (tree) {
3867        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_dev_class (%u) = %s",
3868           u_octet4, (u_octet4 > 0) ? seq : "");
3869     }
3870
3871     g_free(seq);          /*  free buffer  */
3872     seq = NULL;
3873
3874     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3875     if (tree) {
3876        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_server_id (%u) = %s",
3877           u_octet4, (u_octet4 > 0) ? seq : "");
3878     }
3879
3880     g_free(seq);          /*  free buffer  */
3881     seq = NULL;
3882
3883     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3884     if (tree) {
3885        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_server_host (%u) = %s",
3886           u_octet4, (u_octet4 > 0) ? seq : "");
3887     }
3888
3889     g_free(seq);          /*  free buffer  */
3890     seq = NULL;
3891
3892     s_octet4 = get_CDR_long(tvb,offset,stream_is_big_endian, boundary);
3893     if (tree) {
3894        proto_tree_add_text(tree,tvb,*offset-4,4,"DevInfo_3_server_version = %i",s_octet4);
3895     }
3896
3897     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3898     if (tree) {
3899        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_doc_url (%u) = %s",
3900           u_octet4, (u_octet4 > 0) ? seq : "");
3901     }
3902
3903     g_free(seq);          /*  free buffer  */
3904     seq = NULL;
3905
3906     u_octet4 = get_CDR_string(tvb, &seq, offset, stream_is_big_endian, boundary);
3907     if (tree) {
3908        proto_tree_add_text(tree,tvb,*offset-u_octet4,u_octet4,"DevInfo_3_dev_type (%u) = %s",
3909           u_octet4, (u_octet4 > 0) ? seq : "");
3910     }
3911
3912     g_free(seq);          /*  free buffer  */
3913     seq = NULL;
3914
3915 }
3916
3917 /* Struct = IDL:Tango/DevCmdHistory:1.0 */
3918
3919 static void decode_Tango_DevCmdHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3920
3921     
3922     /* Operation specific Variable declarations Begin */
3923
3924     guint8    u_octet1;
3925     guint32   u_octet4_loop_DevCmdHistory_errors;
3926     guint32   i_DevCmdHistory_errors;
3927     
3928     /* Operation specific Variable declarations End */
3929
3930     /*  Begin struct "Tango_TimeVal"  */
3931
3932     
3933
3934     decode_Tango_TimeVal_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3935
3936     /*  End struct "Tango_TimeVal"  */
3937
3938     u_octet1 = get_CDR_boolean(tvb,offset);
3939     if (tree) {
3940        proto_tree_add_text(tree,tvb,*offset-1,1,"DevCmdHistory_cmd_failed = %u",u_octet1);
3941     }
3942
3943     get_CDR_any(tvb,tree,offset,stream_is_big_endian, boundary, header);
3944
3945     u_octet4_loop_DevCmdHistory_errors = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3946     if (tree) {
3947        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevCmdHistory_errors = %u",u_octet4_loop_DevCmdHistory_errors);
3948     }
3949
3950     for (i_DevCmdHistory_errors=0; i_DevCmdHistory_errors < u_octet4_loop_DevCmdHistory_errors; i_DevCmdHistory_errors++) {
3951
3952         /*  Begin struct "Tango_DevError"  */
3953
3954         
3955
3956         decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3957
3958         /*  End struct "Tango_DevError"  */
3959
3960     }
3961
3962 }
3963
3964 /* Struct = IDL:Tango/DevAttrHistory:1.0 */
3965
3966 static void decode_Tango_DevAttrHistory_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
3967
3968     
3969     /* Operation specific Variable declarations Begin */
3970
3971     guint8    u_octet1;
3972     guint32   u_octet4_loop_DevAttrHistory_errors;
3973     guint32   i_DevAttrHistory_errors;
3974     
3975     /* Operation specific Variable declarations End */
3976
3977     u_octet1 = get_CDR_boolean(tvb,offset);
3978     if (tree) {
3979        proto_tree_add_text(tree,tvb,*offset-1,1,"DevAttrHistory_attr_failed = %u",u_octet1);
3980     }
3981
3982     /*  Begin struct "Tango_AttributeValue"  */
3983
3984     
3985
3986     decode_Tango_AttributeValue_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
3987
3988     /*  End struct "Tango_AttributeValue"  */
3989
3990     u_octet4_loop_DevAttrHistory_errors = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary);
3991     if (tree) {
3992        proto_tree_add_text(tree,tvb,*offset-4, 4 ,"Seq length of DevAttrHistory_errors = %u",u_octet4_loop_DevAttrHistory_errors);
3993     }
3994
3995     for (i_DevAttrHistory_errors=0; i_DevAttrHistory_errors < u_octet4_loop_DevAttrHistory_errors; i_DevAttrHistory_errors++) {
3996
3997         /*  Begin struct "Tango_DevError"  */
3998
3999         
4000
4001         decode_Tango_DevError_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4002
4003         /*  End struct "Tango_DevError"  */
4004
4005     }
4006
4007 }
4008
4009 /* Struct = IDL:Tango/DevAttrHistory_3:1.0 */
4010
4011 static void decode_Tango_DevAttrHistory_3_st(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, gchar *operation _U_, gboolean stream_is_big_endian _U_) {
4012
4013     
4014     /* Operation specific Variable declarations Begin */
4015
4016     guint8    u_octet1;
4017     
4018     /* Operation specific Variable declarations End */
4019
4020     u_octet1 = get_CDR_boolean(tvb,offset);
4021     if (tree) {
4022        proto_tree_add_text(tree,tvb,*offset-1,1,"DevAttrHistory_3_attr_failed = %u",u_octet1);
4023     }
4024
4025     /*  Begin struct "Tango_AttributeValue_3"  */
4026
4027     
4028
4029     decode_Tango_AttributeValue_3_st(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4030
4031     /*  End struct "Tango_AttributeValue_3"  */
4032
4033 }
4034
4035 /*
4036  * Called once we accept the packet as being for us; it sets the
4037  * Protocol and Info columns and creates the top-level protocol
4038  * tree item.
4039  */
4040 static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset) {
4041
4042     proto_item *ti = NULL;
4043     proto_tree *tree = NULL;            /* init later, inside if(tree) */
4044
4045     col_set_str(pinfo->cinfo, COL_PROTOCOL, "TANGO");
4046
4047     /*
4048      * Do not clear COL_INFO, as nothing is being written there by
4049      * this dissector yet. So leave it as is from the GIOP dissector.
4050      * TODO: add something useful to COL_INFO
4051      *     col_clear(pinfo->cinfo, COL_INFO);
4052      */
4053
4054     if (ptree) {
4055         ti = proto_tree_add_item(ptree, proto_tango, tvb, *offset, -1, ENC_NA);
4056         tree = proto_item_add_subtree(ti, ett_tango);
4057     }
4058     return tree;
4059 }
4060
4061 static gboolean dissect_tango(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset, MessageHeader *header, gchar *operation, gchar *idlname) {
4062
4063     gboolean stream_is_big_endian;                        /* big endianess */
4064     proto_tree *tree _U_;
4065 #define process_RequestOperation(){ \
4066                 proto_item *pi; \
4067         if(header->message_type == Reply){ col_append_fstr(pinfo->cinfo, COL_INFO, " op = %s",operation); }; /* fill-up info column */ \
4068             pi=proto_tree_add_string_format_value(ptree,hf_operationrequest,tvb,0,0,operation," %s",operation);PROTO_ITEM_SET_GENERATED(pi); /* fill-up the field */ \
4069    };
4070
4071     stream_is_big_endian = is_big_endian(header);         /* get endianess  */
4072
4073     /* If we have a USER Exception, then decode it and return */
4074
4075     if ((header->message_type == Reply) && (header->rep_status == USER_EXCEPTION)) {
4076
4077        return decode_user_exception(tvb, pinfo, ptree, offset, header, operation, stream_is_big_endian);
4078
4079     }
4080
4081     switch(header->message_type) {
4082
4083     case Request:
4084     case Reply:
4085
4086         if (strcmp(operation, Tango_Device_command_inout_op) == 0
4087             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4088            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4089            tree = start_dissecting(tvb, pinfo, ptree, offset);
4090            decode_Tango_Device_command_inout(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4091            return TRUE;
4092         }
4093
4094         if (strcmp(operation, Tango_Device_get_attribute_config_op) == 0
4095             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4096            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4097            tree = start_dissecting(tvb, pinfo, ptree, offset);
4098            decode_Tango_Device_get_attribute_config(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4099            return TRUE;
4100         }
4101
4102         if (strcmp(operation, Tango_Device_set_attribute_config_op) == 0
4103             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4104            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4105            tree = start_dissecting(tvb, pinfo, ptree, offset);
4106            decode_Tango_Device_set_attribute_config(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4107            return TRUE;
4108         }
4109
4110         if (strcmp(operation, Tango_Device_read_attributes_op) == 0
4111             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4112            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4113            tree = start_dissecting(tvb, pinfo, ptree, offset);
4114            decode_Tango_Device_read_attributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4115            return TRUE;
4116         }
4117
4118         if (strcmp(operation, Tango_Device_write_attributes_op) == 0
4119             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4120            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4121            tree = start_dissecting(tvb, pinfo, ptree, offset);
4122            decode_Tango_Device_write_attributes(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4123            return TRUE;
4124         }
4125
4126         if (strcmp(operation, Tango_Device_ping_op) == 0
4127             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4128            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4129            tree = start_dissecting(tvb, pinfo, ptree, offset);
4130            decode_Tango_Device_ping(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4131            return TRUE;
4132         }
4133
4134         if (strcmp(operation, Tango_Device_black_box_op) == 0
4135             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4136            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4137            tree = start_dissecting(tvb, pinfo, ptree, offset);
4138            decode_Tango_Device_black_box(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4139            return TRUE;
4140         }
4141
4142         if (strcmp(operation, Tango_Device_info_op) == 0
4143             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4144            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4145            tree = start_dissecting(tvb, pinfo, ptree, offset);
4146            decode_Tango_Device_info(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4147            return TRUE;
4148         }
4149
4150         if (strcmp(operation, Tango_Device_command_list_query_op) == 0
4151             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4152            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4153            tree = start_dissecting(tvb, pinfo, ptree, offset);
4154            decode_Tango_Device_command_list_query(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4155            return TRUE;
4156         }
4157
4158         if (strcmp(operation, Tango_Device_command_query_op) == 0
4159             && (!idlname || strcmp(idlname, "Tango/Device") == 0)) {
4160            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4161            tree = start_dissecting(tvb, pinfo, ptree, offset);
4162            decode_Tango_Device_command_query(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4163            return TRUE;
4164         }
4165
4166         if (strcmp(operation, Tango_Device_2_command_inout_2_op) == 0
4167             && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
4168            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4169            tree = start_dissecting(tvb, pinfo, ptree, offset);
4170            decode_Tango_Device_2_command_inout_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4171            return TRUE;
4172         }
4173
4174         if (strcmp(operation, Tango_Device_2_read_attributes_2_op) == 0
4175             && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
4176            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4177            tree = start_dissecting(tvb, pinfo, ptree, offset);
4178            decode_Tango_Device_2_read_attributes_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4179            return TRUE;
4180         }
4181
4182         if (strcmp(operation, Tango_Device_2_get_attribute_config_2_op) == 0
4183             && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
4184            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4185            tree = start_dissecting(tvb, pinfo, ptree, offset);
4186            decode_Tango_Device_2_get_attribute_config_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4187            return TRUE;
4188         }
4189
4190         if (strcmp(operation, Tango_Device_2_command_list_query_2_op) == 0
4191             && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
4192            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4193            tree = start_dissecting(tvb, pinfo, ptree, offset);
4194            decode_Tango_Device_2_command_list_query_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4195            return TRUE;
4196         }
4197
4198         if (strcmp(operation, Tango_Device_2_command_query_2_op) == 0
4199             && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
4200            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4201            tree = start_dissecting(tvb, pinfo, ptree, offset);
4202            decode_Tango_Device_2_command_query_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4203            return TRUE;
4204         }
4205
4206         if (strcmp(operation, Tango_Device_2_command_inout_history_2_op) == 0
4207             && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
4208            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4209            tree = start_dissecting(tvb, pinfo, ptree, offset);
4210            decode_Tango_Device_2_command_inout_history_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4211            return TRUE;
4212         }
4213
4214         if (strcmp(operation, Tango_Device_2_read_attribute_history_2_op) == 0
4215             && (!idlname || strcmp(idlname, "Tango/Device_2") == 0)) {
4216            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4217            tree = start_dissecting(tvb, pinfo, ptree, offset);
4218            decode_Tango_Device_2_read_attribute_history_2(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4219            return TRUE;
4220         }
4221
4222         if (strcmp(operation, Tango_Device_3_read_attributes_3_op) == 0
4223             && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
4224            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4225            tree = start_dissecting(tvb, pinfo, ptree, offset);
4226            decode_Tango_Device_3_read_attributes_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4227            return TRUE;
4228         }
4229
4230         if (strcmp(operation, Tango_Device_3_write_attributes_3_op) == 0
4231             && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
4232            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4233            tree = start_dissecting(tvb, pinfo, ptree, offset);
4234            decode_Tango_Device_3_write_attributes_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4235            return TRUE;
4236         }
4237
4238         if (strcmp(operation, Tango_Device_3_read_attribute_history_3_op) == 0
4239             && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
4240            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4241            tree = start_dissecting(tvb, pinfo, ptree, offset);
4242            decode_Tango_Device_3_read_attribute_history_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4243            return TRUE;
4244         }
4245
4246         if (strcmp(operation, Tango_Device_3_info_3_op) == 0
4247             && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
4248            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4249            tree = start_dissecting(tvb, pinfo, ptree, offset);
4250            decode_Tango_Device_3_info_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4251            return TRUE;
4252         }
4253
4254         if (strcmp(operation, Tango_Device_3_get_attribute_config_3_op) == 0
4255             && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
4256            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4257            tree = start_dissecting(tvb, pinfo, ptree, offset);
4258            decode_Tango_Device_3_get_attribute_config_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4259            return TRUE;
4260         }
4261
4262         if (strcmp(operation, Tango_Device_3_set_attribute_config_3_op) == 0
4263             && (!idlname || strcmp(idlname, "Tango/Device_3") == 0)) {
4264            process_RequestOperation();  /* fill-up Request_Operation field & info column */
4265            tree = start_dissecting(tvb, pinfo, ptree, offset);
4266            decode_Tango_Device_3_set_attribute_config_3(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4267            return TRUE;
4268         }
4269
4270         if (strcmp(operation, get_Tango_Device_name_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
4271            tree = start_dissecting(tvb, pinfo, ptree, offset);
4272            decode_get_Tango_Device_name_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4273            return TRUE;
4274         }
4275
4276         if (strcmp(operation, get_Tango_Device_description_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
4277            tree = start_dissecting(tvb, pinfo, ptree, offset);
4278            decode_get_Tango_Device_description_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4279            return TRUE;
4280         }
4281
4282         if (strcmp(operation, get_Tango_Device_state_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
4283            tree = start_dissecting(tvb, pinfo, ptree, offset);
4284            decode_get_Tango_Device_state_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4285            return TRUE;
4286         }
4287
4288         if (strcmp(operation, get_Tango_Device_status_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
4289            tree = start_dissecting(tvb, pinfo, ptree, offset);
4290            decode_get_Tango_Device_status_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4291            return TRUE;
4292         }
4293
4294         if (strcmp(operation, get_Tango_Device_adm_name_at) == 0 && (header->message_type == Reply) && (header->rep_status == NO_EXCEPTION) ) {
4295            tree = start_dissecting(tvb, pinfo, ptree, offset);
4296            decode_get_Tango_Device_adm_name_at(tvb, pinfo, tree, offset, header, operation, stream_is_big_endian);
4297            return TRUE;
4298         }
4299
4300         
4301         break;
4302
4303     case CancelRequest:
4304     case LocateRequest:
4305     case LocateReply:
4306     case CloseConnection:
4307     case MessageError:
4308     case Fragment:
4309        return FALSE;      /* not handled yet */
4310
4311     default:
4312        return FALSE;      /* not handled yet */
4313
4314     }   /* switch */
4315
4316
4317     return FALSE;
4318
4319 }  /* End of main dissector  */
4320
4321
4322
4323 /* Register the protocol with Wireshark */
4324
4325 void proto_register_giop_tango(void) {
4326
4327    /* setup list of header fields */
4328
4329    static hf_register_info hf[] = {
4330         /* field that indicates the currently ongoing request/reply exchange */
4331                 {&hf_operationrequest, {"Request_Operation","TANGO.Request_Operation",FT_STRING,BASE_NONE,NULL,0x0,NULL,HFILL}},
4332
4333       /* no fields yet */
4334
4335    };
4336
4337    /* setup protocol subtree array */
4338
4339    static gint *ett[] = {
4340       &ett_tango,
4341    };
4342
4343    /* Register the protocol name and description */
4344
4345    proto_tango = proto_register_protocol("Tango Dissector Using GIOP API" , "TANGO", "giop-tango" );
4346
4347    proto_register_field_array(proto_tango, hf, array_length(hf));
4348
4349    proto_register_subtree_array(ett,array_length(ett));
4350
4351 }
4352
4353
4354 /* register me as handler for these interfaces */
4355
4356 void proto_register_handoff_giop_tango(void) {
4357
4358
4359     
4360     /* Register for Explicit Dissection */
4361
4362     register_giop_user_module(dissect_tango, "TANGO", "Tango/Device", proto_tango );     /* explicit dissector */
4363
4364     
4365     /* Register for Explicit Dissection */
4366
4367     register_giop_user_module(dissect_tango, "TANGO", "Tango/Device_2", proto_tango );     /* explicit dissector */
4368
4369     
4370     /* Register for Explicit Dissection */
4371
4372     register_giop_user_module(dissect_tango, "TANGO", "Tango/Device_3", proto_tango );     /* explicit dissector */
4373
4374     
4375     /* Register for Heuristic Dissection */
4376
4377     register_giop_user(dissect_tango, "TANGO" ,proto_tango);     /* heuristic dissector */
4378
4379
4380 }
4381
4382
4383 #ifndef ENABLE_STATIC
4384
4385 G_MODULE_EXPORT void
4386 plugin_register(void)
4387 {
4388    if (proto_tango == -1) {
4389      proto_register_giop_tango();
4390    }
4391 }
4392
4393 G_MODULE_EXPORT void
4394 plugin_reg_handoff(void){
4395    proto_register_handoff_giop_tango();
4396 }
4397 #endif
4398