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