Coverage Report

Created: 2026-07-12 07:10

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-s7comm_szl_ids.c
Line
Count
Source
1
/* packet-s7comm_szl_ids.c
2
 *
3
 * Author:      Thomas Wiens, 2014 (th.wiens@gmx.de)
4
 * Description: Wireshark dissector for S7-Communication
5
 *
6
 * Wireshark - Network traffic analyzer
7
 * By Gerald Combs <gerald@wireshark.org>
8
 * Copyright 1998 Gerald Combs
9
 *
10
 * SPDX-License-Identifier: GPL-2.0-or-later
11
 */
12
13
#include "config.h"
14
15
#include <epan/packet.h>
16
#include <epan/tfs.h>
17
#include <wsutil/array.h>
18
#include "packet-s7comm.h"
19
#include "packet-s7comm_szl_ids.h"
20
21
static int ett_s7comm_szl;
22
static int hf_s7comm_userdata_szl_partial_list;           /* Partial list in szl response */
23
static int hf_s7comm_userdata_szl_id;                     /* SZL id */
24
25
static const value_string szl_module_type_names[] = {
26
    { 0x0,                                  "CPU" },            /* Binary: 0000 */
27
    { 0x4,                                  "IM" },             /* Binary: 0100 */
28
    { 0xc,                                  "CP" },             /* Binary: 1100 */
29
    { 0x8,                                  "FM" },             /* Binary: 1000 */
30
    { 0,                                    NULL }
31
};
32
static int hf_s7comm_userdata_szl_id_type;
33
static int hf_s7comm_userdata_szl_id_partlist_ex;
34
static int hf_s7comm_userdata_szl_id_partlist_num;
35
static int hf_s7comm_userdata_szl_id_partlist_len;
36
static int hf_s7comm_userdata_szl_id_partlist_cnt;
37
static int ett_s7comm_userdata_szl_id;
38
static int * const s7comm_userdata_szl_id_fields[] = {
39
    &hf_s7comm_userdata_szl_id_type,
40
    &hf_s7comm_userdata_szl_id_partlist_ex,
41
    &hf_s7comm_userdata_szl_id_partlist_num,
42
    NULL
43
};
44
/* Partial list extract names */
45
static const value_string szl_id_partlist_ex_names[] = {
46
    { 0x0000,                               "All SZL partial lists of the module" },
47
    { 0x0011,                               "All identification data records of a module" },
48
    { 0x0012,                               "All characteristics" },
49
    { 0x0013,                               "Data records of all memory areas" },
50
    { 0x0014,                               "All system areas of a module" },
51
    { 0x0015,                               "Data records of all block types of a module" },
52
    { 0x0016,                               "Data records of all priority classes" },
53
    { 0x0017,                               "All SDBs of a module" },
54
    { 0x0018,                               "All data records" },
55
    { 0x0019,                               "Status of all LEDs" },
56
    { 0x001c,                               "Identification of all components" },
57
    { 0x0021,                               "Data records of all possible interrupts on a module" },
58
    { 0x0022,                               "Data records of all possible interrupts on a module" },
59
    { 0x0023,                               "Data records of all priority classes of a module" },
60
    { 0x0024,                               "All modules that can occur on the module" },
61
    { 0x0031,                               "Not defined" },
62
    { 0x0033,                               "All stations logged on for messages and diagnostic events" },
63
    { 0x0037,                               "Details of all Ethernet interfaces" },
64
    { 0x0071,                               "Information about the current status of the H system" },
65
    { 0x0074,                               "Status of all LEDs" },
66
    { 0x0081,                               "Startup information of all OBs" },
67
    { 0x0082,                               "All startup events" },
68
    { 0x0090,                               "Information of all DP master systems known to the CPU" },
69
    { 0x0091,                               "Module status information of all plugged in modules and submodules" },
70
    { 0x0092,                               "Expected status of the central racks/stations of a DP master system connected via an integrated DP interface" },
71
    { 0x0094,                               "Expected status of the rack in the central configuration/the stations of a DP master system/IO controller system that is connected via an integrated DP/PN interface module" },
72
    { 0x0095,                               "Extended information on a DP master system/PROFINET IO system" },
73
    { 0x00a0,                               "All entries possible in the current mode" },
74
    { 0x00b1,                               "Obtain the first 4 diagnostic bytes of a module with diagnostic capability" },
75
    { 0x00b2,                               "Obtain diagnostic data record 1 of a module in a central rack, rack/slot specified by index" },
76
    { 0x00b3,                               "Obtain diagnostic data of a module, logical base address specified by index" },
77
    { 0x00b4,                               "Obtain diagnostic data of a DP slave, diagnostic address of the module specified by index" },
78
    { 0x0100,                               "A partial list with all partial list extracts" },
79
    { 0x0111,                               "A single identification data record" },
80
    { 0x0112,                               "Characteristics of a group, specified by index" },
81
    { 0x0113,                               "Data record for one memory area, specified by index" },
82
    { 0x0114,                               "One system area, specified by index" },
83
    { 0x0115,                               "Data record of a block type, specified by index" },
84
    { 0x0116,                               "Data record of the specified priority class, specified by index" },
85
    { 0x0117,                               "One single SDB, specified by index" },
86
    { 0x0118,                               "One data record, specified by index" },
87
    { 0x0119,                               "Status of one LED, specified by index" },
88
    { 0x011c,                               "Identification of one component" },
89
    { 0x0121,                               "Data records of all possible interrupts of one class, class specified by index" },
90
    { 0x0122,                               "Data records of all possible interrupts of one class, class specified by index" },
91
    { 0x0123,                               "Data record of one priority class, specified by index" },
92
    { 0x0124,                               "Information about the last mode transition" },
93
    { 0x0131,                               "Information about a communication unit, specified by index" },
94
    { 0x0132,                               "Status data for one communication section of the CPU, section specified by index" },
95
    { 0x0137,                               "Details of one Ethernet interface" },
96
    { 0x0174,                               "Status of an LED, specified by index" },
97
    { 0x0181,                               "Startup information of all synchronous error OBs" },
98
    { 0x0182,                               "Startup events of all synchronous error OBs" },
99
    { 0x0190,                               "Information of one DP master system" },
100
    { 0x0191,                               "Status information of all modules/racks with wrong type identifier" },
101
    { 0x01a0,                               "The most recent entries, the number of most recent entries specified by index" },
102
    { 0x0200,                               "A partial list extract" },
103
    { 0x021c,                               "Identification of all components of a CPU in an H system" },
104
    { 0x0221,                               "Data records for the specified interrupt, interrupt (OB no.) specified by index" },
105
    { 0x0222,                               "Data records for the specified interrupt, interrupt (OB no.) specified by index" },
106
    { 0x0223,                               "Data records of the priority classes being processed" },
107
    { 0x0224,                               "Processed mode transition" },
108
    { 0x0281,                               "Startup information of all synchronous error OBs of one priority class" },
109
    { 0x0282,                               "Startup events of all synchronous error OBs of one priority class" },
110
    { 0x0291,                               "Status information of all faulty modules" },
111
    { 0x0292,                               "Actual status of the central racks/stations of a DP master system connected via an integrated DP interface" },
112
    { 0x0294,                               "Actual status of the rack in the central configuration/the stations of a DP master system/IO controller system that is connected via an integrated DP/PN interface module" },
113
    { 0x0300,                               "Possible indexes of a partial list extract" },
114
    { 0x031c,                               "Identification of one component of all redundant CPUs in an H system" },
115
    { 0x0381,                               "Startup information of all OBs of one priority class" },
116
    { 0x0382,                               "Startup events of all OBs of a priority class" },
117
    { 0x0391,                               "Status information of all modules that are not available" },
118
    { 0x0392,                               "State of the battery backup of the racks in a central configuration" },
119
    { 0x0424,                               "Current mode transition" },
120
    { 0x0492,                               "State of the total backup of the racks in a central configuration" },
121
    { 0x04a0,                               "Start information of all standard OBs" },
122
    { 0x0524,                               "Specified mode transition, specified by index" },
123
    { 0x0581,                               "Startup information of all synchronous error OBs before processing" },
124
    { 0x0582,                               "Startup events of all synchronous error OBs before processing" },
125
    { 0x0591,                               "Status information of all submodules of the host module" },
126
    { 0x0592,                               "State of the 24 V power supply of the modules in a central configuration" },
127
    { 0x05a0,                               "All entries from communications units" },
128
    { 0x0681,                               "Startup information of all synchronous error OBs of a priority class before processing" },
129
    { 0x0682,                               "Startup events of all synchronous error OBs of a priority class before processing" },
130
    { 0x0692,                               "OK state of the expansion racks in the central configuration / of the stations of a DP master system connected via an integrated DP interface" },
131
    { 0x0694,                               "Status of the expansion racks in the central configuration/the stations of a DP master system/IO controller system that is connected via an integrated DP/PN interface module" },
132
    { 0x0696,                               "Module status information on all interface modules in a specified module (with PROFIBUS DP and central modules, the interface module level is not present)" },
133
    { 0x06a0,                               "All entries of the object management system" },
134
    { 0x0781,                               "Startup information of all OBs of one priority class before processing" },
135
    { 0x0782,                               "Startup events of all OBs of one priority class before processing" },
136
    { 0x07a0,                               "All entries of the test and installation function" },
137
    { 0x0822,                               "Data records of all interrupts of one class and for which the corresponding interrupt OB is loaded, class specified by index" },
138
    { 0x0881,                               "Startup information of all OBs before processing" },
139
    { 0x0882,                               "Startup events of all OBs before processing" },
140
    { 0x08a0,                               "All entries due to operating statuses" },
141
    { 0x0921,                               "Data records of all interrupts of one class and for which the corresponding interrupt OB is loaded, class specified by index" },
142
    { 0x0922,                               "Data records of all interrupts for which the corresponding interrupt OB is loaded" },
143
    { 0x0981,                               "Startup information of all synchronous error OBs being processed" },
144
    { 0x0982,                               "Startup events of all synchronous error OBs being processed" },
145
    { 0x0991,                               "Module status information of a DP master system" },
146
    { 0x09a0,                               "All entries caused by asynchronous errors" },
147
    { 0x0a21,                               "Data records of all interrupts for which the corresponding interrupt OB is loaded" },
148
    { 0x0a81,                               "Startup information of all synchronous error OBs of a priority class being processed" },
149
    { 0x0a82,                               "Startup events of all synchronous error OBs of a priority class being processed" },
150
    { 0x0a91,                               "Module status information of all DP master systems" },
151
    { 0x0aa0,                               "All entries caused by synchronous errors" },
152
    { 0x0b81,                               "Startup information of all OBs of one priority class being processed" },
153
    { 0x0b82,                               "Startup events of all OBs of one priority class being processed" },
154
    { 0x0ba0,                               "All entries caused by STOP, abort, mode transition" },
155
    { 0x0c75,                               "Communication status between the H system and a switched DP slave, slave specified by index" },
156
    { 0x0c81,                               "Startup information of all OBs being processed" },
157
    { 0x0c82,                               "Startup events of all OBs being processed" },
158
    { 0x0c91,                               "Status information of a module in the central rack or connected to an integrated DP communications processor via the logical base address" },
159
    { 0x0c96,                               "Module status information on a module/interface module centrally or at a PROFIBUS DP/PROFINET interface module via the start address" },
160
    { 0x0ca0,                               "All entries caused by fault-tolerant/fail-safe events" },
161
    { 0x0d91,                               "Module status information of all modules in the specified rack/in the specified station (DP or PROFINET)" },
162
    { 0x0da0,                               "All diagnostic entries" },
163
    { 0x0e91,                               "Module status information of all configured modules" },
164
    { 0x0ea0,                               "All user entries" },
165
    { 0x0f00,                               "List of all the SZL-IDs of a module, only partial list header information" },
166
    { 0x0f11,                               "Module identification, only partial list header information" },
167
    { 0x0f12,                               "CPU characteristics, only partial list header information" },
168
    { 0x0f13,                               "User memory areas, only partial list header information" },
169
    { 0x0f14,                               "System areas, only partial list header information" },
170
    { 0x0f15,                               "Block types, only partial list header information" },
171
    { 0x0f16,                               "Priority classes, only partial list header information" },
172
    { 0x0f17,                               "List of the permitted SDBs, only partial list header information" },
173
    { 0x0f18,                               "Maximum S7-300 I/O configuration, only partial list header information" },
174
    { 0x0f19,                               "Status of the module LEDs, only partial list header information" },
175
    { 0x0f1c,                               "Component Identification, only partial list header information" },
176
    { 0x0f21,                               "Interrupt / error assignment, only partial list header information" },
177
    { 0x0f22,                               "Interrupt status, only partial list header information" },
178
    { 0x0f23,                               "Priority classes, only partial list header information" },
179
    { 0x0f24,                               "Modes, only partial list header information" },
180
    { 0x0f31,                               "Communication capability parameters, only partial list header information" },
181
    { 0x0f32,                               "Communication status data, only partial list header information" },
182
    { 0x0f33,                               "Diagnostics: device logon list, only partial list header information" },
183
    { 0x0f37,                               "Ethernet - Details of a Module, only partial list header information" },
184
    { 0x0f71,                               "H CPU group information, only partial list header information" },
185
    { 0x0f81,                               "Start information list, only partial list header information" },
186
    { 0x0f82,                               "Start event list, only partial list header information" },
187
    { 0x0f90,                               "DP Master System Information, only partial list header information" },
188
    { 0x0f91,                               "Module status information, only partial list header information" },
189
    { 0x0f92,                               "Rack / station status information, only partial list header information" },
190
    { 0x0f94,                               "Rack / station status information, only partial list header information" },
191
    { 0x0f95,                               "Extended DP master system information, only partial list header information" },
192
    { 0x0fa0,                               "Diagnostic buffer of the CPU, only partial list header information" },
193
    { 0x4092,                               "Expected status of the stations of a DP master system connected via an external DP interface" },
194
    { 0x4292,                               "Actual status of the stations of a DP master system connected via an external DP interface" },
195
    { 0x4692,                               "OK state of the stations of a DP master system connected via an external DP interface" },
196
    { 0x4c91,                               "Status information of a module connected to an external DP communications processor via the logical base address" },
197
    { 0x4f92,                               "Only partial list header information of the '4x92' list" },
198
    { 0,                                    NULL }
199
};
200
static value_string_ext szl_id_partlist_ex_names_ext = VALUE_STRING_EXT_INIT(szl_id_partlist_ex_names);
201
202
static const value_string szl_partial_list_names[] = {
203
    { 0x0000,                               "List of all the SZL-IDs of a module" },
204
    { 0x0011,                               "Module identification" },
205
    { 0x0012,                               "CPU characteristics" },
206
    { 0x0013,                               "User memory areas" },
207
    { 0x0014,                               "System areas" },
208
    { 0x0015,                               "Block types" },
209
    { 0x0016,                               "Priority classes" },
210
    { 0x0017,                               "List of the permitted SDBs with a number < 1000" },
211
    { 0x0018,                               "Maximum S7-300 I/O configuration" },
212
    { 0x0019,                               "Status of the module LEDs" },
213
    { 0x001c,                               "Component Identification" },
214
    { 0x0021,                               "Interrupt / error assignment" },
215
    { 0x0022,                               "Interrupt status" },
216
    { 0x0023,                               "Priority classes" },
217
    { 0x0024,                               "Modes" },
218
    { 0x0025,                               "Assignment between process image partitions and OBs" },
219
    { 0x0031,                               "Communication capability parameters" },
220
    { 0x0032,                               "Communication status data" },
221
    { 0x0033,                               "Diagnostics: device logon list" },
222
    { 0x0037,                               "Ethernet - Details of a Module" },
223
    { 0x0071,                               "H CPU group information" },
224
    { 0x0074,                               "Status of the module LEDs" },
225
    { 0x0075,                               "Switched DP slaves in the H-system" },
226
    { 0x0076,                               "DNN tree’s root node" },
227
    { 0x0077,                               "DNN node - all linked objects" },
228
    { 0x0078,                               "DNN node data" },
229
    { 0x0081,                               "Start information list" },
230
    { 0x0082,                               "Start event list" },
231
    { 0x0090,                               "DP Master System Information" },
232
    { 0x0091,                               "Module status information" },
233
    { 0x0092,                               "Rack / station status information" },
234
    { 0x0094,                               "Rack / station status information" },
235
    { 0x0095,                               "Extended DP master system information" },
236
    { 0x0096,                               "Module status information, PROFINET IO and PROFIBUS DP" },
237
    { 0x00a0,                               "Diagnostic buffer of the CPU" },
238
    { 0x00b1,                               "Module diagnostic information (data record 0)" },
239
    { 0x00b2,                               "Module diagnostic information (data record 1), geographical address" },
240
    { 0x00b3,                               "Module diagnostic information (data record 1), logical address" },
241
    { 0x00b4,                               "Diagnostic data of a DP slave" },
242
    { 0,    NULL }
243
};
244
static value_string_ext szl_partial_list_names_ext = VALUE_STRING_EXT_INIT(szl_partial_list_names);
245
246
static int hf_s7comm_userdata_szl_index;                  /* SZL index */
247
static int hf_s7comm_userdata_szl_tree;                   /* SZL item tree */
248
249
/* Index description for SZL Requests */
250
static const value_string szl_0111_index_names[] = {
251
    { 0x0001,                               "Identification of the module" },
252
    { 0x0006,                               "Identification of the basic hardware" },
253
    { 0x0007,                               "Identification of the basic firmware" },
254
    { 0x0081,                               "Identification of the firmware-extension" },
255
    { 0,                                    NULL }
256
};
257
258
static const value_string szl_0112_index_names[] = {
259
    { 0x0000,                               "MC7 processing unit" },
260
    { 0x0100,                               "Time system" },
261
    { 0x0200,                               "System response" },
262
    { 0x0300,                               "Language description of the CPU" },
263
    { 0x0400,                               "Availability of SFC 87 and SFC 88" },
264
    { 0,                                    NULL }
265
};
266
267
static const value_string szl_0113_index_names[] = {
268
    { 0x0001,                               "Work memory" },
269
    { 0x0002,                               "Load memory integrated" },
270
    { 0x0003,                               "Load memory plugged in" },
271
    { 0x0004,                               "Maximum plug-in load memory" },
272
    { 0x0005,                               "Size of the backup memory" },
273
    { 0x0006,                               "Size of the memory reserved by the system for CFBs" },
274
    { 0,                                    NULL }
275
};
276
277
static const value_string szl_0114_index_names[] = {
278
    { 0x0001,                               "PII (number in bytes)" },
279
    { 0x0002,                               "PIQ (number in bytes)" },
280
    { 0x0003,                               "Memory (number)" },
281
    { 0x0004,                               "Timers (number)" },
282
    { 0x0005,                               "Counters (number)" },
283
    { 0x0006,                               "Number of bytes in the logical address area" },
284
    { 0x0007,                               "Size of the entire local data area of the CPU in bytes" },
285
    { 0x0008,                               "Memory (number in bytes)" },
286
    { 0x0009,                               "Local data (entire local data area of the CPU in Kbytes)" },
287
    { 0,                                    NULL }
288
};
289
290
static const value_string szl_0115_index_names[] = {
291
    { 0x0800,                               "OB" },
292
    { 0x0a00,                               "DB" },
293
    { 0x0b00,                               "SDB" },
294
    { 0x0c00,                               "FC" },
295
    { 0x0e00,                               "FB" },
296
    { 0,                                    NULL }
297
};
298
299
static const value_string szl_0116_index_names[] = {
300
    { 0x0000,                               "Free cycle" },
301
    { 0x000a,                               "Time-of-day interrupt" },
302
    { 0x0014,                               "Time-delay interrupt" },
303
    { 0x001e,                               "Cyclic interrupt" },
304
    { 0x0028,                               "Hardware interrupt" },
305
    { 0x0050,                               "Asynchronous error interrupt" },
306
    { 0x005a,                               "Background" },
307
    { 0x0064,                               "Startup" },
308
    { 0x0078,                               "Synchronous error interrupt" },
309
    { 0,                                    NULL }
310
};
311
312
static const value_string szl_0118_index_names[] = {
313
    { 0x0001,                               "Number of the rack: 1" },
314
    { 0x0002,                               "Number of the rack: 2" },
315
    { 0x0003,                               "Number of the rack: 3" },
316
    { 0x00ff,                               "Maximum number of racks (racknr) and total number of possible slots (anzst)" },
317
    { 0,                                    NULL }
318
};
319
320
static const value_string szl_0121_index_names[] = {
321
    { 0x0000,                               "Free cycle" },
322
    { 0x0a0a,                               "Time-of-day interrupt" },
323
    { 0x1414,                               "Time-delay interrupt" },
324
    { 0x1e23,                               "Cyclic interrupt" },
325
    { 0x2828,                               "Hardware interrupt" },
326
    { 0x5050,                               "Asynchronous error interrupt" },
327
    { 0x005a,                               "Background" },
328
    { 0x0064,                               "Startup" },
329
    { 0x7878,                               "Synchronous error interrupt" },
330
    { 0,                                    NULL }
331
};
332
333
static const value_string szl_0222_index_names[] = {
334
    { 0x0000,                               "Free cycle" },
335
    { 0x000a,                               "Time-of-day interrupt" },
336
    { 0x0014,                               "Time-delay interrupt" },
337
    { 0x001e,                               "Cyclic interrupt" },
338
    { 0x0028,                               "Hardware interrupt" },
339
    { 0x0032,                               "DP interrupt" },
340
    { 0x003c,                               "Multicomputing or synchronous cycle (isochrone) interrupt" },
341
    { 0x0048,                               "Redundancy interrupt (on with S7-400H systems)" },
342
    { 0x0050,                               "Asynchronous error interrupt" },
343
    { 0x005a,                               "Background" },
344
    { 0x0064,                               "Startup" },
345
    { 0x0078,                               "Synchronous error interrupt" },
346
    { 0,                                    NULL }
347
};
348
349
static const value_string szl_0524_index_names[] = {
350
    { 0x5000,                               "Mode STOP" },
351
    { 0x5010,                               "Mode STARTUP" },
352
    { 0x5020,                               "Mode RUN" },
353
    { 0x5030,                               "Mode HOLD" },
354
    { 0x4520,                               "Mode DEFECT" },
355
    { 0,                                    NULL }
356
};
357
358
static const value_string szl_0131_index_names[] = {
359
    { 0x0001,                               "General data for communication" },
360
    { 0x0002,                               "Test and installation function constants" },
361
    { 0x0003,                               "Operator interface (O/I)" },
362
    { 0x0004,                               "Object management system (OMS)" },
363
    { 0x0005,                               "Diagnostics" },
364
    { 0x0006,                               "Communication function block (CFB)" },
365
    { 0x0007,                               "Global data" },
366
    { 0x0008,                               "Test and installation function time information" },
367
    { 0x0009,                               "Time-of-day capability parameters" },
368
    { 0x0010,                               "Message parameters" },
369
    { 0x0011,                               "SCAN capability parameters" },
370
    { 0,                                    NULL }
371
};
372
373
static const value_string szl_0132_index_names[] = {
374
    { 0x0001,                               "General data for communication" },
375
    { 0x0002,                               "Test and installation status" },
376
    { 0x0003,                               "Operator interface status" },
377
    { 0x0004,                               "Object management system status" },
378
    { 0x0005,                               "Diagnostics" },
379
    { 0x0006,                               "Data exchange with CFBs" },
380
    { 0x0007,                               "Global data" },
381
    { 0x0008,                               "Time system" },
382
    { 0x0009,                               "MPI status" },
383
    { 0x000a,                               "Communication bus status" },
384
    { 0x000b,                               "32-bit runtime meters 0-7" },
385
    { 0x000c,                               "32-bit runtime meters 8-15" },
386
    { 0x0010,                               "S7-SCAN part 1" },
387
    { 0x0011,                               "S7-SCAN part 2" },
388
    { 0,                                    NULL }
389
};
390
391
static const value_string szl_0119_0174_ledid_index_names[] = {
392
    { 0x0001,                               "SF (group error)" },
393
    { 0x0002,                               "INTF (internal error)" },
394
    { 0x0003,                               "EXTF (external error)" },
395
    { 0x0004,                               "RUN" },
396
    { 0x0005,                               "STOP" },
397
    { 0x0006,                               "FRCE (force)" },
398
    { 0x0007,                               "CRST (cold restart)" },
399
    { 0x0008,                               "BAF (battery fault/overload, short circuit of battery voltage on bus)" },
400
    { 0x0009,                               "USR (user-defined)" },
401
    { 0x000a,                               "USR1 (user-defined)" },
402
    { 0x000b,                               "BUS1F (bus error interface 1)" },
403
    { 0x000c,                               "BUS2F (bus error interface 2)" },
404
    { 0x000d,                               "REDF (redundancy error)" },
405
    { 0x000e,                               "MSTR (master)" },
406
    { 0x000f,                               "RACK0 (rack number 0)" },
407
    { 0x0010,                               "RACK1 (rack number 1)" },
408
    { 0x0011,                               "RACK2 (rack number 2)" },
409
    { 0x0012,                               "IFM1F (interface error interface module 1)" },
410
    { 0x0013,                               "IFM2F (interface error interface module 2)" },
411
    { 0x0014,                               "BUS3F (bus fault interface 3)" },
412
    { 0x0015,                               "MAINT (maintenance demand)" },
413
    { 0x0016,                               "DC24V" },
414
    { 0x0080,                               "IF (init failure)" },
415
    { 0x0081,                               "UF (user failure)" },
416
    { 0x0082,                               "MF (monitoring failure)" },
417
    { 0x0083,                               "CF (communication failure)" },
418
    { 0x0084,                               "TF (task failure)" },
419
    { 0x00ec,                               "APPL_STATE_RED" },
420
    { 0x00ed,                               "APPL_STATE_GREEN" },
421
    { 0,                                    NULL }
422
};
423
424
static const value_string szl_xy1c_index_names[] = {
425
    { 0x0001,                               "Name of the automation system" },
426
    { 0x0002,                               "Name of the module" },
427
    { 0x0003,                               "Plant designation of the module" },
428
    { 0x0004,                               "Copyright entry" },
429
    { 0x0005,                               "Serial number of the module" },
430
    { 0x0007,                               "Module type name" },
431
    { 0x0008,                               "Serial number of the memory card" },
432
    { 0x0009,                               "Manufacturer and profile of a CPU module" },
433
    { 0x000a,                               "OEM ID of a module" },
434
    { 0x000b,                               "Location ID of a module" },
435
    { 0,                                    NULL }
436
};
437
438
/* Header fields of the SZL */
439
static int hf_s7comm_szl_0000_0000_szl_id;
440
static int hf_s7comm_szl_0000_0000_module_type_class;
441
static int hf_s7comm_szl_0000_0000_partlist_extr_nr;
442
static int hf_s7comm_szl_0000_0000_partlist_nr;
443
444
static int hf_s7comm_szl_xy12_0x00_charac;
445
static const value_string szl_xy12_cpu_characteristic_names[] = {
446
    { 0x0000,                               "MC7 processing unit group" },
447
    { 0x0001,                               "MC7 processing generating code" },
448
    { 0x0002,                               "MC7 interpreter" },
449
    { 0x0100,                               "Time system group" },
450
    { 0x0101,                               "1 ms resolution" },
451
    { 0x0102,                               "10 ms resolution" },
452
    { 0x0103,                               "No real time clock" },
453
    { 0x0104,                               "BCD time-of-day format" },
454
    { 0x0105,                               "All time-of-day functions (set time-of-day, set and read time-of-day, time-of-day synchronization: time-of-day slave and time-of-day master)" },
455
    { 0x0106,                               "SFC 78 OB_RT is available" },
456
    { 0x0200,                               "System response group" },
457
    { 0x0201,                               "Capable of multiprocessor mode" },
458
    { 0x0202,                               "Cold restart, warm restart and hot restart possible" },
459
    { 0x0203,                               "Cold restart and hot restart possible" },
460
    { 0x0204,                               "Warm restart and hot restart possible" },
461
    { 0x0205,                               "Only warm restart possible" },
462
    { 0x0206,                               "New distributed I/O configuration is possible during RUN by using predefined resources" },
463
    { 0x0207,                               "H-CPU in stand-alone mode: New distributed I/O configuration is possible during RUN by using predefined resources" },
464
    { 0x0208,                               "For taking motion control functionality into account" },
465
    { 0x0300,                               "Language description of the CPU group" },
466
    { 0x0301,                               "Reserved" },
467
    { 0x0302,                               "All 32 bit fixed-point instructions" },
468
    { 0x0303,                               "All floating-point instructions" },
469
    { 0x0304,                               "sin, asin, cos, acos, tan, atan, sqr, sqrt, ln, exp" },
470
    { 0x0305,                               "Accumulator 3/accumulator 4 with corresponding instructions (ENT,PUSH,POP,LEAVE)" },
471
    { 0x0306,                               "Master Control Relay instructions" },
472
    { 0x0307,                               "Address register 1 exists with corresponding instructions" },
473
    { 0x0308,                               "Address register 2 exists with corresponding instructions" },
474
    { 0x0309,                               "Operations for area-crossing addressing" },
475
    { 0x030A,                               "Operations for area-internal addressing" },
476
    { 0x030B,                               "All memory-indirect addressing instructions for bit memory (M)" },
477
    { 0x030C,                               "All memory-indirect addressing instructions for data blocks (DB)" },
478
    { 0x030D,                               "All memory-indirect addressing instructions for data blocks (DI)" },
479
    { 0x030E,                               "All memory-indirect addressing instructions for local data (L)" },
480
    { 0x030F,                               "All instructions for parameter transfer in FCs" },
481
    { 0x0310,                               "Memory bit edge instructions for process image input (I)" },
482
    { 0x0311,                               "Memory bit edge instructions for process image output (Q)" },
483
    { 0x0312,                               "Memory bit edge instructions for bit memory (M)" },
484
    { 0x0313,                               "Memory bit edge instructions for data blocks (DB)" },
485
    { 0x0314,                               "Memory bit edge instructions for data blocks (DI)" },
486
    { 0x0315,                               "Memory bit edge instructions for local data (L)" },
487
    { 0x0316,                               "Dynamic evaluation of the FC bit" },
488
    { 0x0317,                               "Dynamic local data area with the corresponding instructions" },
489
    { 0x0318,                               "Reserved" },
490
    { 0x0319,                               "Reserved" },
491
    { 0x0401,                               "SFC 87 C_DIAG is available" },
492
    { 0x0402,                               "SFC 88 C_CNTRL is available" },
493
    { 0,                                    NULL }
494
};
495
496
static int hf_s7comm_szl_0013_0000_index;
497
498
static int hf_s7comm_szl_0013_0000_code;
499
static const value_string szl_memory_type_names[] = {
500
    { 0x0001,                               "volatile memory (RAM)" },
501
    { 0x0002,                               "non-volatile memory (FEPROM)" },
502
    { 0x0003,                               "mixed memory (RAM + FEPROM)" },
503
    { 0,                                    NULL }
504
};
505
static int hf_s7comm_szl_0013_0000_size;
506
static int hf_s7comm_szl_0013_0000_mode;
507
static int hf_s7comm_szl_0013_0000_mode_0;
508
static int hf_s7comm_szl_0013_0000_mode_1;
509
static int hf_s7comm_szl_0013_0000_mode_2;
510
static int hf_s7comm_szl_0013_0000_mode_3;
511
static int hf_s7comm_szl_0013_0000_mode_4;
512
static int hf_s7comm_szl_0013_0000_granu;
513
static int hf_s7comm_szl_0013_0000_ber1;
514
static int hf_s7comm_szl_0013_0000_belegt1;
515
static int hf_s7comm_szl_0013_0000_block1;
516
static int hf_s7comm_szl_0013_0000_ber2;
517
static int hf_s7comm_szl_0013_0000_belegt2;
518
static int hf_s7comm_szl_0013_0000_block2;
519
520
static int hf_s7comm_szl_xy11_0001_index;
521
static int hf_s7comm_szl_xy11_0001_mlfb;
522
static int hf_s7comm_szl_xy11_0001_bgtyp;
523
static int hf_s7comm_szl_xy11_0001_ausbg;
524
static int hf_s7comm_szl_xy11_0001_ausbe;
525
526
static int hf_s7comm_szl_xy14_000x_index;
527
static int hf_s7comm_szl_xy14_000x_code;
528
static int hf_s7comm_szl_xy14_000x_quantity;
529
static int hf_s7comm_szl_xy14_000x_reman;
530
531
static int hf_s7comm_szl_xy15_000x_index;
532
static int hf_s7comm_szl_xy15_000x_maxanz;
533
static int hf_s7comm_szl_xy15_000x_maxlng;
534
static int hf_s7comm_szl_xy15_000x_maxabl;
535
536
static int hf_s7comm_szl_xy22_00xx_info;
537
static int hf_s7comm_szl_xy22_00xx_al1;
538
static int hf_s7comm_szl_xy22_00xx_al1_0;
539
static int hf_s7comm_szl_xy22_00xx_al1_1;
540
static int hf_s7comm_szl_xy22_00xx_al1_2;
541
static int hf_s7comm_szl_xy22_00xx_al1_4;
542
static int hf_s7comm_szl_xy22_00xx_al1_5;
543
static int hf_s7comm_szl_xy22_00xx_al1_6;
544
static int hf_s7comm_szl_xy22_00xx_al2;
545
static int hf_s7comm_szl_xy22_00xx_al2_0;
546
static int hf_s7comm_szl_xy22_00xx_al2_1;
547
static int hf_s7comm_szl_xy22_00xx_al2_2;
548
static int hf_s7comm_szl_xy22_00xx_al2_3;
549
static int hf_s7comm_szl_xy22_00xx_al3;
550
551
static int ett_s7comm_szl_xy22_00xx_al1;
552
static int * const s7comm_szl_xy22_00xx_al1_fields[] = {
553
    &hf_s7comm_szl_xy22_00xx_al1_0,
554
    &hf_s7comm_szl_xy22_00xx_al1_1,
555
    &hf_s7comm_szl_xy22_00xx_al1_2,
556
    &hf_s7comm_szl_xy22_00xx_al1_4,
557
    &hf_s7comm_szl_xy22_00xx_al1_5,
558
    &hf_s7comm_szl_xy22_00xx_al1_6,
559
    NULL
560
};
561
static int ett_s7comm_szl_xy22_00xx_al2;
562
static int * const s7comm_szl_xy22_00xx_al2_fields[] = {
563
    &hf_s7comm_szl_xy22_00xx_al2_0,
564
    &hf_s7comm_szl_xy22_00xx_al2_1,
565
    &hf_s7comm_szl_xy22_00xx_al2_2,
566
    &hf_s7comm_szl_xy22_00xx_al2_3,
567
    NULL
568
};
569
570
static int hf_s7comm_szl_0131_0001_index;
571
static int hf_s7comm_szl_0131_0001_pdu;
572
static int hf_s7comm_szl_0131_0001_anz;
573
static int hf_s7comm_szl_0131_0001_mpi_bps;
574
static int hf_s7comm_szl_0131_0001_kbus_bps;
575
static int hf_s7comm_szl_0131_0001_res;
576
577
static int hf_s7comm_szl_0131_0002_index;
578
static int hf_s7comm_szl_0131_0002_funkt_0;
579
static int hf_s7comm_szl_0131_0002_funkt_0_0;
580
static int hf_s7comm_szl_0131_0002_funkt_0_1;
581
static int hf_s7comm_szl_0131_0002_funkt_0_2;
582
static int hf_s7comm_szl_0131_0002_funkt_0_3;
583
static int hf_s7comm_szl_0131_0002_funkt_0_4;
584
static int hf_s7comm_szl_0131_0002_funkt_0_5;
585
static int hf_s7comm_szl_0131_0002_funkt_0_6;
586
static int hf_s7comm_szl_0131_0002_funkt_0_7;
587
static int hf_s7comm_szl_0131_0002_funkt_1;
588
static int hf_s7comm_szl_0131_0002_funkt_1_0;
589
static int hf_s7comm_szl_0131_0002_funkt_1_1;
590
static int hf_s7comm_szl_0131_0002_funkt_1_2;
591
static int hf_s7comm_szl_0131_0002_funkt_1_3;
592
static int hf_s7comm_szl_0131_0002_funkt_1_4;
593
static int hf_s7comm_szl_0131_0002_funkt_1_5;
594
static int hf_s7comm_szl_0131_0002_funkt_1_6;
595
static int hf_s7comm_szl_0131_0002_funkt_1_7;
596
static int hf_s7comm_szl_0131_0002_funkt_2;
597
static int hf_s7comm_szl_0131_0002_funkt_2_0;
598
static int hf_s7comm_szl_0131_0002_funkt_2_1;
599
static int hf_s7comm_szl_0131_0002_funkt_2_2;
600
static int hf_s7comm_szl_0131_0002_funkt_2_3;
601
static int hf_s7comm_szl_0131_0002_funkt_2_4;
602
static int hf_s7comm_szl_0131_0002_funkt_2_5;
603
static int hf_s7comm_szl_0131_0002_funkt_2_6;
604
static int hf_s7comm_szl_0131_0002_funkt_2_7;
605
static int hf_s7comm_szl_0131_0002_funkt_3;
606
static int hf_s7comm_szl_0131_0002_funkt_4;
607
static int hf_s7comm_szl_0131_0002_funkt_5;
608
static int hf_s7comm_szl_0131_0002_aseg;
609
static int hf_s7comm_szl_0131_0002_eseg;
610
static int hf_s7comm_szl_0131_0002_trgereig_0;
611
static int hf_s7comm_szl_0131_0002_trgereig_0_0;
612
static int hf_s7comm_szl_0131_0002_trgereig_0_1;
613
static int hf_s7comm_szl_0131_0002_trgereig_0_2;
614
static int hf_s7comm_szl_0131_0002_trgereig_0_3;
615
static int hf_s7comm_szl_0131_0002_trgereig_0_4;
616
static int hf_s7comm_szl_0131_0002_trgereig_0_5;
617
static int hf_s7comm_szl_0131_0002_trgereig_0_6;
618
static int hf_s7comm_szl_0131_0002_trgereig_0_7;
619
static int hf_s7comm_szl_0131_0002_trgereig_1;
620
static int hf_s7comm_szl_0131_0002_trgereig_1_0;
621
static int hf_s7comm_szl_0131_0002_trgereig_1_1;
622
static int hf_s7comm_szl_0131_0002_trgereig_1_2;
623
static int hf_s7comm_szl_0131_0002_trgereig_1_3;
624
static int hf_s7comm_szl_0131_0002_trgereig_1_4;
625
static int hf_s7comm_szl_0131_0002_trgereig_1_5;
626
static int hf_s7comm_szl_0131_0002_trgereig_1_6;
627
static int hf_s7comm_szl_0131_0002_trgereig_1_7;
628
static int hf_s7comm_szl_0131_0002_trgereig_2;
629
static int hf_s7comm_szl_0131_0002_trgbed;
630
static int hf_s7comm_szl_0131_0002_pfad;
631
static int hf_s7comm_szl_0131_0002_tiefe;
632
static int hf_s7comm_szl_0131_0002_systrig;
633
static int hf_s7comm_szl_0131_0002_erg_par;
634
static int hf_s7comm_szl_0131_0002_erg_pat_1;
635
static int hf_s7comm_szl_0131_0002_erg_pat_2;
636
static int hf_s7comm_szl_0131_0002_force;
637
static int hf_s7comm_szl_0131_0002_time;
638
static int hf_s7comm_szl_0131_0002_res;
639
640
static int ett_s7comm_szl_0131_0002_funkt_0;
641
static int * const s7comm_szl_0131_0002_funkt_0_fields[] = {
642
    &hf_s7comm_szl_0131_0002_funkt_0_0,
643
    &hf_s7comm_szl_0131_0002_funkt_0_1,
644
    &hf_s7comm_szl_0131_0002_funkt_0_2,
645
    &hf_s7comm_szl_0131_0002_funkt_0_3,
646
    &hf_s7comm_szl_0131_0002_funkt_0_4,
647
    &hf_s7comm_szl_0131_0002_funkt_0_5,
648
    &hf_s7comm_szl_0131_0002_funkt_0_6,
649
    &hf_s7comm_szl_0131_0002_funkt_0_7,
650
    NULL
651
};
652
static int ett_s7comm_szl_0131_0002_funkt_1;
653
static int * const s7comm_szl_0131_0002_funkt_1_fields[] = {
654
    &hf_s7comm_szl_0131_0002_funkt_1_0,
655
    &hf_s7comm_szl_0131_0002_funkt_1_1,
656
    &hf_s7comm_szl_0131_0002_funkt_1_2,
657
    &hf_s7comm_szl_0131_0002_funkt_1_3,
658
    &hf_s7comm_szl_0131_0002_funkt_1_4,
659
    &hf_s7comm_szl_0131_0002_funkt_1_5,
660
    &hf_s7comm_szl_0131_0002_funkt_1_6,
661
    &hf_s7comm_szl_0131_0002_funkt_1_7,
662
    NULL
663
};
664
static int ett_s7comm_szl_0131_0002_funkt_2;
665
static int * const s7comm_szl_0131_0002_funkt_2_fields[] = {
666
    &hf_s7comm_szl_0131_0002_funkt_2_0,
667
    &hf_s7comm_szl_0131_0002_funkt_2_1,
668
    &hf_s7comm_szl_0131_0002_funkt_2_2,
669
    &hf_s7comm_szl_0131_0002_funkt_2_3,
670
    &hf_s7comm_szl_0131_0002_funkt_2_4,
671
    &hf_s7comm_szl_0131_0002_funkt_2_5,
672
    &hf_s7comm_szl_0131_0002_funkt_2_6,
673
    &hf_s7comm_szl_0131_0002_funkt_2_7,
674
    NULL
675
};
676
static int ett_s7comm_szl_0131_0002_trgereig_0;
677
static int * const s7comm_szl_0131_0002_trgereig_0_fields[] = {
678
    &hf_s7comm_szl_0131_0002_trgereig_0_0,
679
    &hf_s7comm_szl_0131_0002_trgereig_0_1,
680
    &hf_s7comm_szl_0131_0002_trgereig_0_2,
681
    &hf_s7comm_szl_0131_0002_trgereig_0_3,
682
    &hf_s7comm_szl_0131_0002_trgereig_0_4,
683
    &hf_s7comm_szl_0131_0002_trgereig_0_5,
684
    &hf_s7comm_szl_0131_0002_trgereig_0_6,
685
    &hf_s7comm_szl_0131_0002_trgereig_0_7,
686
    NULL
687
};
688
static int ett_s7comm_szl_0131_0002_trgereig_1;
689
static int * const s7comm_szl_0131_0002_trgereig_1_fields[] = {
690
    &hf_s7comm_szl_0131_0002_trgereig_1_0,
691
    &hf_s7comm_szl_0131_0002_trgereig_1_1,
692
    &hf_s7comm_szl_0131_0002_trgereig_1_2,
693
    &hf_s7comm_szl_0131_0002_trgereig_1_3,
694
    &hf_s7comm_szl_0131_0002_trgereig_1_4,
695
    &hf_s7comm_szl_0131_0002_trgereig_1_5,
696
    &hf_s7comm_szl_0131_0002_trgereig_1_6,
697
    &hf_s7comm_szl_0131_0002_trgereig_1_7,
698
    NULL
699
};
700
701
static int hf_s7comm_szl_0131_0003_index;
702
static int hf_s7comm_szl_0131_0003_funkt_0;
703
static int hf_s7comm_szl_0131_0003_funkt_0_0;
704
static int hf_s7comm_szl_0131_0003_funkt_0_1;
705
static int hf_s7comm_szl_0131_0003_funkt_0_2;
706
static int hf_s7comm_szl_0131_0003_funkt_0_3;
707
static int hf_s7comm_szl_0131_0003_funkt_0_4;
708
static int hf_s7comm_szl_0131_0003_funkt_0_5;
709
static int hf_s7comm_szl_0131_0003_funkt_0_6;
710
static int hf_s7comm_szl_0131_0003_funkt_0_7;
711
static int hf_s7comm_szl_0131_0003_funkt_1;
712
static int hf_s7comm_szl_0131_0003_funkt_1_0;
713
static int hf_s7comm_szl_0131_0003_funkt_1_1;
714
static int hf_s7comm_szl_0131_0003_funkt_1_2;
715
static int hf_s7comm_szl_0131_0003_funkt_1_3;
716
static int hf_s7comm_szl_0131_0003_funkt_1_4;
717
static int hf_s7comm_szl_0131_0003_funkt_1_5;
718
static int hf_s7comm_szl_0131_0003_funkt_1_6;
719
static int hf_s7comm_szl_0131_0003_funkt_1_7;
720
static int hf_s7comm_szl_0131_0003_funkt_2;
721
static int hf_s7comm_szl_0131_0003_funkt_2_0;
722
static int hf_s7comm_szl_0131_0003_funkt_2_1;
723
static int hf_s7comm_szl_0131_0003_funkt_2_2;
724
static int hf_s7comm_szl_0131_0003_funkt_2_3;
725
static int hf_s7comm_szl_0131_0003_funkt_2_4;
726
static int hf_s7comm_szl_0131_0003_funkt_2_5;
727
static int hf_s7comm_szl_0131_0003_funkt_2_6;
728
static int hf_s7comm_szl_0131_0003_funkt_2_7;
729
static int hf_s7comm_szl_0131_0003_funkt_3;
730
static int hf_s7comm_szl_0131_0003_funkt_3_0;
731
static int hf_s7comm_szl_0131_0003_funkt_3_1;
732
static int hf_s7comm_szl_0131_0003_funkt_3_2;
733
static int hf_s7comm_szl_0131_0003_funkt_3_3;
734
static int hf_s7comm_szl_0131_0003_funkt_3_4;
735
static int hf_s7comm_szl_0131_0003_funkt_3_5;
736
static int hf_s7comm_szl_0131_0003_funkt_3_6;
737
static int hf_s7comm_szl_0131_0003_funkt_3_7;
738
static int hf_s7comm_szl_0131_0003_data;
739
static int hf_s7comm_szl_0131_0003_anz;
740
static int hf_s7comm_szl_0131_0003_per_min;
741
static int hf_s7comm_szl_0131_0003_per_max;
742
static int hf_s7comm_szl_0131_0003_res;
743
744
static int ett_s7comm_szl_0131_0003_funkt_0;
745
static int * const s7comm_szl_0131_0003_funkt_0_fields[] = {
746
    &hf_s7comm_szl_0131_0003_funkt_0_0,
747
    &hf_s7comm_szl_0131_0003_funkt_0_1,
748
    &hf_s7comm_szl_0131_0003_funkt_0_2,
749
    &hf_s7comm_szl_0131_0003_funkt_0_3,
750
    &hf_s7comm_szl_0131_0003_funkt_0_4,
751
    &hf_s7comm_szl_0131_0003_funkt_0_5,
752
    &hf_s7comm_szl_0131_0003_funkt_0_6,
753
    &hf_s7comm_szl_0131_0003_funkt_0_7,
754
    NULL
755
};
756
static int ett_s7comm_szl_0131_0003_funkt_1;
757
static int * const s7comm_szl_0131_0003_funkt_1_fields[] = {
758
    &hf_s7comm_szl_0131_0003_funkt_1_0,
759
    &hf_s7comm_szl_0131_0003_funkt_1_1,
760
    &hf_s7comm_szl_0131_0003_funkt_1_2,
761
    &hf_s7comm_szl_0131_0003_funkt_1_3,
762
    &hf_s7comm_szl_0131_0003_funkt_1_4,
763
    &hf_s7comm_szl_0131_0003_funkt_1_5,
764
    &hf_s7comm_szl_0131_0003_funkt_1_6,
765
    &hf_s7comm_szl_0131_0003_funkt_1_7,
766
    NULL
767
};
768
static int ett_s7comm_szl_0131_0003_funkt_2;
769
static int * const s7comm_szl_0131_0003_funkt_2_fields[] = {
770
    &hf_s7comm_szl_0131_0003_funkt_2_0,
771
    &hf_s7comm_szl_0131_0003_funkt_2_1,
772
    &hf_s7comm_szl_0131_0003_funkt_2_2,
773
    &hf_s7comm_szl_0131_0003_funkt_2_3,
774
    &hf_s7comm_szl_0131_0003_funkt_2_4,
775
    &hf_s7comm_szl_0131_0003_funkt_2_5,
776
    &hf_s7comm_szl_0131_0003_funkt_2_6,
777
    &hf_s7comm_szl_0131_0003_funkt_2_7,
778
    NULL
779
};
780
static int ett_s7comm_szl_0131_0003_funkt_3;
781
static int * const s7comm_szl_0131_0003_funkt_3_fields[] = {
782
    &hf_s7comm_szl_0131_0003_funkt_3_0,
783
    &hf_s7comm_szl_0131_0003_funkt_3_1,
784
    &hf_s7comm_szl_0131_0003_funkt_3_2,
785
    &hf_s7comm_szl_0131_0003_funkt_3_3,
786
    &hf_s7comm_szl_0131_0003_funkt_3_4,
787
    &hf_s7comm_szl_0131_0003_funkt_3_5,
788
    &hf_s7comm_szl_0131_0003_funkt_3_6,
789
    &hf_s7comm_szl_0131_0003_funkt_3_7,
790
    NULL
791
};
792
793
static int hf_s7comm_szl_0131_0004_index;
794
static int hf_s7comm_szl_0131_0004_funkt_0;
795
static int hf_s7comm_szl_0131_0004_funkt_0_0;
796
static int hf_s7comm_szl_0131_0004_funkt_0_1;
797
static int hf_s7comm_szl_0131_0004_funkt_0_2;
798
static int hf_s7comm_szl_0131_0004_funkt_0_3;
799
static int hf_s7comm_szl_0131_0004_funkt_0_4;
800
static int hf_s7comm_szl_0131_0004_funkt_0_5;
801
static int hf_s7comm_szl_0131_0004_funkt_0_6;
802
static int hf_s7comm_szl_0131_0004_funkt_0_7;
803
static int hf_s7comm_szl_0131_0004_funkt_1;
804
static int hf_s7comm_szl_0131_0004_funkt_1_0;
805
static int hf_s7comm_szl_0131_0004_funkt_1_1;
806
static int hf_s7comm_szl_0131_0004_funkt_1_2;
807
static int hf_s7comm_szl_0131_0004_funkt_1_3;
808
static int hf_s7comm_szl_0131_0004_funkt_1_4;
809
static int hf_s7comm_szl_0131_0004_funkt_1_5;
810
static int hf_s7comm_szl_0131_0004_funkt_1_6;
811
static int hf_s7comm_szl_0131_0004_funkt_1_7;
812
static int hf_s7comm_szl_0131_0004_funkt_2;
813
static int hf_s7comm_szl_0131_0004_funkt_2_0;
814
static int hf_s7comm_szl_0131_0004_funkt_2_1;
815
static int hf_s7comm_szl_0131_0004_funkt_2_2;
816
static int hf_s7comm_szl_0131_0004_funkt_2_3;
817
static int hf_s7comm_szl_0131_0004_funkt_2_4;
818
static int hf_s7comm_szl_0131_0004_funkt_2_5;
819
static int hf_s7comm_szl_0131_0004_funkt_2_6;
820
static int hf_s7comm_szl_0131_0004_funkt_2_7;
821
static int hf_s7comm_szl_0131_0004_funkt_3;
822
static int hf_s7comm_szl_0131_0004_funkt_3_0;
823
static int hf_s7comm_szl_0131_0004_funkt_3_1;
824
static int hf_s7comm_szl_0131_0004_funkt_3_2;
825
static int hf_s7comm_szl_0131_0004_funkt_3_3;
826
static int hf_s7comm_szl_0131_0004_funkt_3_4;
827
static int hf_s7comm_szl_0131_0004_funkt_3_5;
828
static int hf_s7comm_szl_0131_0004_funkt_3_6;
829
static int hf_s7comm_szl_0131_0004_funkt_3_7;
830
static int hf_s7comm_szl_0131_0004_funkt_4;
831
static int hf_s7comm_szl_0131_0004_funkt_4_0;
832
static int hf_s7comm_szl_0131_0004_funkt_4_1;
833
static int hf_s7comm_szl_0131_0004_funkt_4_2;
834
static int hf_s7comm_szl_0131_0004_funkt_4_3;
835
static int hf_s7comm_szl_0131_0004_funkt_4_4;
836
static int hf_s7comm_szl_0131_0004_funkt_4_5;
837
static int hf_s7comm_szl_0131_0004_funkt_4_6;
838
static int hf_s7comm_szl_0131_0004_funkt_4_7;
839
static int hf_s7comm_szl_0131_0004_funkt_5;
840
static int hf_s7comm_szl_0131_0004_funkt_6;
841
static int hf_s7comm_szl_0131_0004_funkt_7;
842
static int hf_s7comm_szl_0131_0004_kop;
843
static int hf_s7comm_szl_0131_0004_del;
844
static int hf_s7comm_szl_0131_0004_kett;
845
static int hf_s7comm_szl_0131_0004_hoch;
846
static int hf_s7comm_szl_0131_0004_ver;
847
static int hf_s7comm_szl_0131_0004_res;
848
849
static int ett_s7comm_szl_0131_0004_funkt_0;
850
static int * const s7comm_szl_0131_0004_funkt_0_fields[] = {
851
    &hf_s7comm_szl_0131_0004_funkt_0_0,
852
    &hf_s7comm_szl_0131_0004_funkt_0_1,
853
    &hf_s7comm_szl_0131_0004_funkt_0_2,
854
    &hf_s7comm_szl_0131_0004_funkt_0_3,
855
    &hf_s7comm_szl_0131_0004_funkt_0_4,
856
    &hf_s7comm_szl_0131_0004_funkt_0_5,
857
    &hf_s7comm_szl_0131_0004_funkt_0_6,
858
    &hf_s7comm_szl_0131_0004_funkt_0_7,
859
    NULL
860
};
861
static int ett_s7comm_szl_0131_0004_funkt_1;
862
static int * const s7comm_szl_0131_0004_funkt_1_fields[] = {
863
    &hf_s7comm_szl_0131_0004_funkt_1_0,
864
    &hf_s7comm_szl_0131_0004_funkt_1_1,
865
    &hf_s7comm_szl_0131_0004_funkt_1_2,
866
    &hf_s7comm_szl_0131_0004_funkt_1_3,
867
    &hf_s7comm_szl_0131_0004_funkt_1_4,
868
    &hf_s7comm_szl_0131_0004_funkt_1_5,
869
    &hf_s7comm_szl_0131_0004_funkt_1_6,
870
    &hf_s7comm_szl_0131_0004_funkt_1_7,
871
    NULL
872
};
873
static int ett_s7comm_szl_0131_0004_funkt_2;
874
static int * const s7comm_szl_0131_0004_funkt_2_fields[] = {
875
    &hf_s7comm_szl_0131_0004_funkt_2_0,
876
    &hf_s7comm_szl_0131_0004_funkt_2_1,
877
    &hf_s7comm_szl_0131_0004_funkt_2_2,
878
    &hf_s7comm_szl_0131_0004_funkt_2_3,
879
    &hf_s7comm_szl_0131_0004_funkt_2_4,
880
    &hf_s7comm_szl_0131_0004_funkt_2_5,
881
    &hf_s7comm_szl_0131_0004_funkt_2_6,
882
    &hf_s7comm_szl_0131_0004_funkt_2_7,
883
    NULL
884
};
885
static int ett_s7comm_szl_0131_0004_funkt_3;
886
static int * const s7comm_szl_0131_0004_funkt_3_fields[] = {
887
    &hf_s7comm_szl_0131_0004_funkt_3_0,
888
    &hf_s7comm_szl_0131_0004_funkt_3_1,
889
    &hf_s7comm_szl_0131_0004_funkt_3_2,
890
    &hf_s7comm_szl_0131_0004_funkt_3_3,
891
    &hf_s7comm_szl_0131_0004_funkt_3_4,
892
    &hf_s7comm_szl_0131_0004_funkt_3_5,
893
    &hf_s7comm_szl_0131_0004_funkt_3_6,
894
    &hf_s7comm_szl_0131_0004_funkt_3_7,
895
    NULL
896
};
897
static int ett_s7comm_szl_0131_0004_funkt_4;
898
static int * const s7comm_szl_0131_0004_funkt_4_fields[] = {
899
    &hf_s7comm_szl_0131_0004_funkt_4_0,
900
    &hf_s7comm_szl_0131_0004_funkt_4_1,
901
    &hf_s7comm_szl_0131_0004_funkt_4_2,
902
    &hf_s7comm_szl_0131_0004_funkt_4_3,
903
    &hf_s7comm_szl_0131_0004_funkt_4_4,
904
    &hf_s7comm_szl_0131_0004_funkt_4_5,
905
    &hf_s7comm_szl_0131_0004_funkt_4_6,
906
    &hf_s7comm_szl_0131_0004_funkt_4_7,
907
    NULL
908
};
909
910
static int hf_s7comm_szl_0131_0005_index;
911
static int hf_s7comm_szl_0131_0005_funkt_0;
912
static int hf_s7comm_szl_0131_0005_funkt_0_0;
913
static int hf_s7comm_szl_0131_0005_funkt_0_1;
914
static int hf_s7comm_szl_0131_0005_funkt_0_2;
915
static int hf_s7comm_szl_0131_0005_funkt_0_3;
916
static int hf_s7comm_szl_0131_0005_funkt_0_4;
917
static int hf_s7comm_szl_0131_0005_funkt_0_5;
918
static int hf_s7comm_szl_0131_0005_funkt_0_6;
919
static int hf_s7comm_szl_0131_0005_funkt_0_7;
920
static int hf_s7comm_szl_0131_0005_funkt_1;
921
static int hf_s7comm_szl_0131_0005_funkt_2;
922
static int hf_s7comm_szl_0131_0005_funkt_3;
923
static int hf_s7comm_szl_0131_0005_funkt_4;
924
static int hf_s7comm_szl_0131_0005_funkt_5;
925
static int hf_s7comm_szl_0131_0005_funkt_6;
926
static int hf_s7comm_szl_0131_0005_funkt_7;
927
static int hf_s7comm_szl_0131_0005_anz_sen;
928
static int hf_s7comm_szl_0131_0005_anz_ein;
929
static int hf_s7comm_szl_0131_0005_anz_mel;
930
static int hf_s7comm_szl_0131_0005_res;
931
932
static int ett_s7comm_szl_0131_0005_funkt_0;
933
static int * const s7comm_szl_0131_0005_funkt_0_fields[] = {
934
    &hf_s7comm_szl_0131_0005_funkt_0_0,
935
    &hf_s7comm_szl_0131_0005_funkt_0_1,
936
    &hf_s7comm_szl_0131_0005_funkt_0_2,
937
    &hf_s7comm_szl_0131_0005_funkt_0_3,
938
    &hf_s7comm_szl_0131_0005_funkt_0_4,
939
    &hf_s7comm_szl_0131_0005_funkt_0_5,
940
    &hf_s7comm_szl_0131_0005_funkt_0_6,
941
    &hf_s7comm_szl_0131_0005_funkt_0_7,
942
    NULL
943
};
944
945
static int hf_s7comm_szl_0131_0006_index;
946
static int hf_s7comm_szl_0131_0006_funkt_0;
947
static int hf_s7comm_szl_0131_0006_funkt_0_0;
948
static int hf_s7comm_szl_0131_0006_funkt_0_1;
949
static int hf_s7comm_szl_0131_0006_funkt_0_2;
950
static int hf_s7comm_szl_0131_0006_funkt_0_3;
951
static int hf_s7comm_szl_0131_0006_funkt_0_4;
952
static int hf_s7comm_szl_0131_0006_funkt_0_5;
953
static int hf_s7comm_szl_0131_0006_funkt_0_6;
954
static int hf_s7comm_szl_0131_0006_funkt_0_7;
955
static int hf_s7comm_szl_0131_0006_funkt_1;
956
static int hf_s7comm_szl_0131_0006_funkt_1_0;
957
static int hf_s7comm_szl_0131_0006_funkt_1_1;
958
static int hf_s7comm_szl_0131_0006_funkt_1_2;
959
static int hf_s7comm_szl_0131_0006_funkt_1_3;
960
static int hf_s7comm_szl_0131_0006_funkt_1_4;
961
static int hf_s7comm_szl_0131_0006_funkt_1_5;
962
static int hf_s7comm_szl_0131_0006_funkt_1_6;
963
static int hf_s7comm_szl_0131_0006_funkt_1_7;
964
static int hf_s7comm_szl_0131_0006_funkt_2;
965
static int hf_s7comm_szl_0131_0006_funkt_2_0;
966
static int hf_s7comm_szl_0131_0006_funkt_2_1;
967
static int hf_s7comm_szl_0131_0006_funkt_2_2;
968
static int hf_s7comm_szl_0131_0006_funkt_2_3;
969
static int hf_s7comm_szl_0131_0006_funkt_2_4;
970
static int hf_s7comm_szl_0131_0006_funkt_2_5;
971
static int hf_s7comm_szl_0131_0006_funkt_2_6;
972
static int hf_s7comm_szl_0131_0006_funkt_2_7;
973
static int hf_s7comm_szl_0131_0006_funkt_3;
974
static int hf_s7comm_szl_0131_0006_funkt_3_0;
975
static int hf_s7comm_szl_0131_0006_funkt_3_1;
976
static int hf_s7comm_szl_0131_0006_funkt_3_2;
977
static int hf_s7comm_szl_0131_0006_funkt_3_3;
978
static int hf_s7comm_szl_0131_0006_funkt_3_4;
979
static int hf_s7comm_szl_0131_0006_funkt_3_5;
980
static int hf_s7comm_szl_0131_0006_funkt_3_6;
981
static int hf_s7comm_szl_0131_0006_funkt_3_7;
982
static int hf_s7comm_szl_0131_0006_funkt_4;
983
static int hf_s7comm_szl_0131_0006_funkt_5;
984
static int hf_s7comm_szl_0131_0006_funkt_6;
985
static int hf_s7comm_szl_0131_0006_funkt_6_0;
986
static int hf_s7comm_szl_0131_0006_funkt_6_1;
987
static int hf_s7comm_szl_0131_0006_funkt_6_2;
988
static int hf_s7comm_szl_0131_0006_funkt_6_3;
989
static int hf_s7comm_szl_0131_0006_funkt_6_4;
990
static int hf_s7comm_szl_0131_0006_funkt_6_5;
991
static int hf_s7comm_szl_0131_0006_funkt_6_6;
992
static int hf_s7comm_szl_0131_0006_funkt_6_7;
993
static int hf_s7comm_szl_0131_0006_funkt_7;
994
static int hf_s7comm_szl_0131_0006_funkt_7_0;
995
static int hf_s7comm_szl_0131_0006_funkt_7_1;
996
static int hf_s7comm_szl_0131_0006_funkt_7_2;
997
static int hf_s7comm_szl_0131_0006_funkt_7_3;
998
static int hf_s7comm_szl_0131_0006_funkt_7_4;
999
static int hf_s7comm_szl_0131_0006_funkt_7_5;
1000
static int hf_s7comm_szl_0131_0006_funkt_7_6;
1001
static int hf_s7comm_szl_0131_0006_funkt_7_7;
1002
static int hf_s7comm_szl_0131_0006_schnell;
1003
static int hf_s7comm_szl_0131_0006_zugtyp_0;
1004
static int hf_s7comm_szl_0131_0006_zugtyp_0_0;
1005
static int hf_s7comm_szl_0131_0006_zugtyp_0_1;
1006
static int hf_s7comm_szl_0131_0006_zugtyp_0_2;
1007
static int hf_s7comm_szl_0131_0006_zugtyp_0_3;
1008
static int hf_s7comm_szl_0131_0006_zugtyp_0_4;
1009
static int hf_s7comm_szl_0131_0006_zugtyp_0_5;
1010
static int hf_s7comm_szl_0131_0006_zugtyp_0_6;
1011
static int hf_s7comm_szl_0131_0006_zugtyp_0_7;
1012
static int hf_s7comm_szl_0131_0006_zugtyp_1;
1013
static int hf_s7comm_szl_0131_0006_zugtyp_1_0;
1014
static int hf_s7comm_szl_0131_0006_zugtyp_1_1;
1015
static int hf_s7comm_szl_0131_0006_zugtyp_1_2;
1016
static int hf_s7comm_szl_0131_0006_zugtyp_1_3;
1017
static int hf_s7comm_szl_0131_0006_zugtyp_1_4;
1018
static int hf_s7comm_szl_0131_0006_zugtyp_1_5;
1019
static int hf_s7comm_szl_0131_0006_zugtyp_1_6;
1020
static int hf_s7comm_szl_0131_0006_zugtyp_1_7;
1021
static int hf_s7comm_szl_0131_0006_zugtyp_2;
1022
static int hf_s7comm_szl_0131_0006_zugtyp_2_0;
1023
static int hf_s7comm_szl_0131_0006_zugtyp_2_1;
1024
static int hf_s7comm_szl_0131_0006_zugtyp_2_2;
1025
static int hf_s7comm_szl_0131_0006_zugtyp_2_3;
1026
static int hf_s7comm_szl_0131_0006_zugtyp_2_4;
1027
static int hf_s7comm_szl_0131_0006_zugtyp_2_5;
1028
static int hf_s7comm_szl_0131_0006_zugtyp_2_6;
1029
static int hf_s7comm_szl_0131_0006_zugtyp_2_7;
1030
static int hf_s7comm_szl_0131_0006_zugtyp_3;
1031
static int hf_s7comm_szl_0131_0006_zugtyp_3_0;
1032
static int hf_s7comm_szl_0131_0006_zugtyp_3_1;
1033
static int hf_s7comm_szl_0131_0006_zugtyp_3_2;
1034
static int hf_s7comm_szl_0131_0006_zugtyp_3_3;
1035
static int hf_s7comm_szl_0131_0006_zugtyp_3_4;
1036
static int hf_s7comm_szl_0131_0006_zugtyp_3_5;
1037
static int hf_s7comm_szl_0131_0006_zugtyp_3_6;
1038
static int hf_s7comm_szl_0131_0006_zugtyp_3_7;
1039
static int hf_s7comm_szl_0131_0006_zugtyp_4;
1040
static int hf_s7comm_szl_0131_0006_zugtyp_5;
1041
static int hf_s7comm_szl_0131_0006_zugtyp_6;
1042
static int hf_s7comm_szl_0131_0006_zugtyp_6_0;
1043
static int hf_s7comm_szl_0131_0006_zugtyp_6_1;
1044
static int hf_s7comm_szl_0131_0006_zugtyp_6_2;
1045
static int hf_s7comm_szl_0131_0006_zugtyp_6_3;
1046
static int hf_s7comm_szl_0131_0006_zugtyp_6_4;
1047
static int hf_s7comm_szl_0131_0006_zugtyp_6_5;
1048
static int hf_s7comm_szl_0131_0006_zugtyp_6_6;
1049
static int hf_s7comm_szl_0131_0006_zugtyp_6_7;
1050
static int hf_s7comm_szl_0131_0006_zugtyp_7;
1051
static int hf_s7comm_szl_0131_0006_zugtyp_7_0;
1052
static int hf_s7comm_szl_0131_0006_zugtyp_7_1;
1053
static int hf_s7comm_szl_0131_0006_zugtyp_7_2;
1054
static int hf_s7comm_szl_0131_0006_zugtyp_7_3;
1055
static int hf_s7comm_szl_0131_0006_zugtyp_7_4;
1056
static int hf_s7comm_szl_0131_0006_zugtyp_7_5;
1057
static int hf_s7comm_szl_0131_0006_zugtyp_7_6;
1058
static int hf_s7comm_szl_0131_0006_zugtyp_7_7;
1059
static int hf_s7comm_szl_0131_0006_res1;
1060
static int hf_s7comm_szl_0131_0006_max_sd_empf;
1061
static int hf_s7comm_szl_0131_0006_max_sd_al8p;
1062
static int hf_s7comm_szl_0131_0006_max_inst;
1063
static int hf_s7comm_szl_0131_0006_res2;
1064
static int hf_s7comm_szl_0131_0006_verb_proj;
1065
static int hf_s7comm_szl_0131_0006_verb_prog;
1066
static int hf_s7comm_szl_0131_0006_res3;
1067
1068
static int ett_s7comm_szl_0131_0006_funkt_0;
1069
static int * const s7comm_szl_0131_0006_funkt_0_fields[] = {
1070
    &hf_s7comm_szl_0131_0006_funkt_0_0,
1071
    &hf_s7comm_szl_0131_0006_funkt_0_1,
1072
    &hf_s7comm_szl_0131_0006_funkt_0_2,
1073
    &hf_s7comm_szl_0131_0006_funkt_0_3,
1074
    &hf_s7comm_szl_0131_0006_funkt_0_4,
1075
    &hf_s7comm_szl_0131_0006_funkt_0_5,
1076
    &hf_s7comm_szl_0131_0006_funkt_0_6,
1077
    &hf_s7comm_szl_0131_0006_funkt_0_7,
1078
    NULL
1079
};
1080
static int ett_s7comm_szl_0131_0006_funkt_1;
1081
static int * const s7comm_szl_0131_0006_funkt_1_fields[] = {
1082
    &hf_s7comm_szl_0131_0006_funkt_1_0,
1083
    &hf_s7comm_szl_0131_0006_funkt_1_1,
1084
    &hf_s7comm_szl_0131_0006_funkt_1_2,
1085
    &hf_s7comm_szl_0131_0006_funkt_1_3,
1086
    &hf_s7comm_szl_0131_0006_funkt_1_4,
1087
    &hf_s7comm_szl_0131_0006_funkt_1_5,
1088
    &hf_s7comm_szl_0131_0006_funkt_1_6,
1089
    &hf_s7comm_szl_0131_0006_funkt_1_7,
1090
    NULL
1091
};
1092
static int ett_s7comm_szl_0131_0006_funkt_2;
1093
static int * const s7comm_szl_0131_0006_funkt_2_fields[] = {
1094
    &hf_s7comm_szl_0131_0006_funkt_2_0,
1095
    &hf_s7comm_szl_0131_0006_funkt_2_1,
1096
    &hf_s7comm_szl_0131_0006_funkt_2_2,
1097
    &hf_s7comm_szl_0131_0006_funkt_2_3,
1098
    &hf_s7comm_szl_0131_0006_funkt_2_4,
1099
    &hf_s7comm_szl_0131_0006_funkt_2_5,
1100
    &hf_s7comm_szl_0131_0006_funkt_2_6,
1101
    &hf_s7comm_szl_0131_0006_funkt_2_7,
1102
    NULL
1103
};
1104
static int ett_s7comm_szl_0131_0006_funkt_3;
1105
static int * const s7comm_szl_0131_0006_funkt_3_fields[] = {
1106
    &hf_s7comm_szl_0131_0006_funkt_3_0,
1107
    &hf_s7comm_szl_0131_0006_funkt_3_1,
1108
    &hf_s7comm_szl_0131_0006_funkt_3_2,
1109
    &hf_s7comm_szl_0131_0006_funkt_3_3,
1110
    &hf_s7comm_szl_0131_0006_funkt_3_4,
1111
    &hf_s7comm_szl_0131_0006_funkt_3_5,
1112
    &hf_s7comm_szl_0131_0006_funkt_3_6,
1113
    &hf_s7comm_szl_0131_0006_funkt_3_7,
1114
    NULL
1115
};
1116
static int ett_s7comm_szl_0131_0006_funkt_6;
1117
static int * const s7comm_szl_0131_0006_funkt_6_fields[] = {
1118
    &hf_s7comm_szl_0131_0006_funkt_6_0,
1119
    &hf_s7comm_szl_0131_0006_funkt_6_1,
1120
    &hf_s7comm_szl_0131_0006_funkt_6_2,
1121
    &hf_s7comm_szl_0131_0006_funkt_6_3,
1122
    &hf_s7comm_szl_0131_0006_funkt_6_4,
1123
    &hf_s7comm_szl_0131_0006_funkt_6_5,
1124
    &hf_s7comm_szl_0131_0006_funkt_6_6,
1125
    &hf_s7comm_szl_0131_0006_funkt_6_7,
1126
    NULL
1127
};
1128
static int ett_s7comm_szl_0131_0006_funkt_7;
1129
static int * const s7comm_szl_0131_0006_funkt_7_fields[] = {
1130
    &hf_s7comm_szl_0131_0006_funkt_7_0,
1131
    &hf_s7comm_szl_0131_0006_funkt_7_1,
1132
    &hf_s7comm_szl_0131_0006_funkt_7_2,
1133
    &hf_s7comm_szl_0131_0006_funkt_7_3,
1134
    &hf_s7comm_szl_0131_0006_funkt_7_4,
1135
    &hf_s7comm_szl_0131_0006_funkt_7_5,
1136
    &hf_s7comm_szl_0131_0006_funkt_7_6,
1137
    &hf_s7comm_szl_0131_0006_funkt_7_7,
1138
    NULL
1139
};
1140
static int ett_s7comm_szl_0131_0006_zugtyp_0;
1141
static int * const s7comm_szl_0131_0006_zugtyp_0_fields[] = {
1142
    &hf_s7comm_szl_0131_0006_zugtyp_0_0,
1143
    &hf_s7comm_szl_0131_0006_zugtyp_0_1,
1144
    &hf_s7comm_szl_0131_0006_zugtyp_0_2,
1145
    &hf_s7comm_szl_0131_0006_zugtyp_0_3,
1146
    &hf_s7comm_szl_0131_0006_zugtyp_0_4,
1147
    &hf_s7comm_szl_0131_0006_zugtyp_0_5,
1148
    &hf_s7comm_szl_0131_0006_zugtyp_0_6,
1149
    &hf_s7comm_szl_0131_0006_zugtyp_0_7,
1150
    NULL
1151
};
1152
static int ett_s7comm_szl_0131_0006_zugtyp_1;
1153
static int * const s7comm_szl_0131_0006_zugtyp_1_fields[] = {
1154
    &hf_s7comm_szl_0131_0006_zugtyp_1_0,
1155
    &hf_s7comm_szl_0131_0006_zugtyp_1_1,
1156
    &hf_s7comm_szl_0131_0006_zugtyp_1_2,
1157
    &hf_s7comm_szl_0131_0006_zugtyp_1_3,
1158
    &hf_s7comm_szl_0131_0006_zugtyp_1_4,
1159
    &hf_s7comm_szl_0131_0006_zugtyp_1_5,
1160
    &hf_s7comm_szl_0131_0006_zugtyp_1_6,
1161
    &hf_s7comm_szl_0131_0006_zugtyp_1_7,
1162
    NULL
1163
};
1164
static int ett_s7comm_szl_0131_0006_zugtyp_2;
1165
static int * const s7comm_szl_0131_0006_zugtyp_2_fields[] = {
1166
    &hf_s7comm_szl_0131_0006_zugtyp_2_0,
1167
    &hf_s7comm_szl_0131_0006_zugtyp_2_1,
1168
    &hf_s7comm_szl_0131_0006_zugtyp_2_2,
1169
    &hf_s7comm_szl_0131_0006_zugtyp_2_3,
1170
    &hf_s7comm_szl_0131_0006_zugtyp_2_4,
1171
    &hf_s7comm_szl_0131_0006_zugtyp_2_5,
1172
    &hf_s7comm_szl_0131_0006_zugtyp_2_6,
1173
    &hf_s7comm_szl_0131_0006_zugtyp_2_7,
1174
    NULL
1175
};
1176
static int ett_s7comm_szl_0131_0006_zugtyp_3;
1177
static int * const s7comm_szl_0131_0006_zugtyp_3_fields[] = {
1178
    &hf_s7comm_szl_0131_0006_zugtyp_3_0,
1179
    &hf_s7comm_szl_0131_0006_zugtyp_3_1,
1180
    &hf_s7comm_szl_0131_0006_zugtyp_3_2,
1181
    &hf_s7comm_szl_0131_0006_zugtyp_3_3,
1182
    &hf_s7comm_szl_0131_0006_zugtyp_3_4,
1183
    &hf_s7comm_szl_0131_0006_zugtyp_3_5,
1184
    &hf_s7comm_szl_0131_0006_zugtyp_3_6,
1185
    &hf_s7comm_szl_0131_0006_zugtyp_3_7,
1186
    NULL
1187
};
1188
static int ett_s7comm_szl_0131_0006_zugtyp_6;
1189
static int * const s7comm_szl_0131_0006_zugtyp_6_fields[] = {
1190
    &hf_s7comm_szl_0131_0006_zugtyp_6_0,
1191
    &hf_s7comm_szl_0131_0006_zugtyp_6_1,
1192
    &hf_s7comm_szl_0131_0006_zugtyp_6_2,
1193
    &hf_s7comm_szl_0131_0006_zugtyp_6_3,
1194
    &hf_s7comm_szl_0131_0006_zugtyp_6_4,
1195
    &hf_s7comm_szl_0131_0006_zugtyp_6_5,
1196
    &hf_s7comm_szl_0131_0006_zugtyp_6_6,
1197
    &hf_s7comm_szl_0131_0006_zugtyp_6_7,
1198
    NULL
1199
};
1200
static int ett_s7comm_szl_0131_0006_zugtyp_7;
1201
static int * const s7comm_szl_0131_0006_zugtyp_7_fields[] = {
1202
    &hf_s7comm_szl_0131_0006_zugtyp_7_0,
1203
    &hf_s7comm_szl_0131_0006_zugtyp_7_1,
1204
    &hf_s7comm_szl_0131_0006_zugtyp_7_2,
1205
    &hf_s7comm_szl_0131_0006_zugtyp_7_3,
1206
    &hf_s7comm_szl_0131_0006_zugtyp_7_4,
1207
    &hf_s7comm_szl_0131_0006_zugtyp_7_5,
1208
    &hf_s7comm_szl_0131_0006_zugtyp_7_6,
1209
    &hf_s7comm_szl_0131_0006_zugtyp_7_7,
1210
    NULL
1211
};
1212
1213
static int hf_s7comm_szl_0131_0007_index;
1214
static int hf_s7comm_szl_0131_0007_funkt_0;
1215
static int hf_s7comm_szl_0131_0007_funkt_0_0;
1216
static int hf_s7comm_szl_0131_0007_funkt_0_1;
1217
static int hf_s7comm_szl_0131_0007_funkt_0_2;
1218
static int hf_s7comm_szl_0131_0007_funkt_0_3;
1219
static int hf_s7comm_szl_0131_0007_funkt_0_4;
1220
static int hf_s7comm_szl_0131_0007_funkt_0_5;
1221
static int hf_s7comm_szl_0131_0007_funkt_0_6;
1222
static int hf_s7comm_szl_0131_0007_funkt_0_7;
1223
static int hf_s7comm_szl_0131_0007_funkt_1;
1224
static int hf_s7comm_szl_0131_0007_obj_0;
1225
static int hf_s7comm_szl_0131_0007_obj_0_0;
1226
static int hf_s7comm_szl_0131_0007_obj_0_1;
1227
static int hf_s7comm_szl_0131_0007_obj_0_2;
1228
static int hf_s7comm_szl_0131_0007_obj_0_3;
1229
static int hf_s7comm_szl_0131_0007_obj_0_4;
1230
static int hf_s7comm_szl_0131_0007_obj_0_5;
1231
static int hf_s7comm_szl_0131_0007_obj_0_6;
1232
static int hf_s7comm_szl_0131_0007_obj_0_7;
1233
static int hf_s7comm_szl_0131_0007_obj_1;
1234
static int hf_s7comm_szl_0131_0007_kons;
1235
static int hf_s7comm_szl_0131_0007_sen;
1236
static int hf_s7comm_szl_0131_0007_rec;
1237
static int hf_s7comm_szl_0131_0007_time;
1238
static int hf_s7comm_szl_0131_0007_proj;
1239
static int hf_s7comm_szl_0131_0007_alarm;
1240
static int hf_s7comm_szl_0131_0007_mode;
1241
static int hf_s7comm_szl_0131_0007_mode_0;
1242
static int hf_s7comm_szl_0131_0007_mode_1;
1243
static int hf_s7comm_szl_0131_0007_kreis;
1244
static int hf_s7comm_szl_0131_0007_sk_1;
1245
static int hf_s7comm_szl_0131_0007_sk_2;
1246
static int hf_s7comm_szl_0131_0007_ek_1;
1247
static int hf_s7comm_szl_0131_0007_ek_2;
1248
static int hf_s7comm_szl_0131_0007_len_1;
1249
static int hf_s7comm_szl_0131_0007_len_2;
1250
static int hf_s7comm_szl_0131_0007_len_3;
1251
static int hf_s7comm_szl_0131_0007_res;
1252
1253
static int ett_s7comm_szl_0131_0007_funkt_0;
1254
static int * const s7comm_szl_0131_0007_funkt_0_fields[] = {
1255
    &hf_s7comm_szl_0131_0007_funkt_0_0,
1256
    &hf_s7comm_szl_0131_0007_funkt_0_1,
1257
    &hf_s7comm_szl_0131_0007_funkt_0_2,
1258
    &hf_s7comm_szl_0131_0007_funkt_0_3,
1259
    &hf_s7comm_szl_0131_0007_funkt_0_4,
1260
    &hf_s7comm_szl_0131_0007_funkt_0_5,
1261
    &hf_s7comm_szl_0131_0007_funkt_0_6,
1262
    &hf_s7comm_szl_0131_0007_funkt_0_7,
1263
    NULL
1264
};
1265
1266
static int ett_s7comm_szl_0131_0007_obj_0;
1267
static int * const s7comm_szl_0131_0007_obj_0_fields[] = {
1268
    &hf_s7comm_szl_0131_0007_obj_0_0,
1269
    &hf_s7comm_szl_0131_0007_obj_0_1,
1270
    &hf_s7comm_szl_0131_0007_obj_0_2,
1271
    &hf_s7comm_szl_0131_0007_obj_0_3,
1272
    &hf_s7comm_szl_0131_0007_obj_0_4,
1273
    &hf_s7comm_szl_0131_0007_obj_0_5,
1274
    &hf_s7comm_szl_0131_0007_obj_0_6,
1275
    &hf_s7comm_szl_0131_0007_obj_0_7,
1276
    NULL
1277
};
1278
1279
static int ett_s7comm_szl_0131_0007_mode;
1280
static int * const s7comm_szl_0131_0007_mode_fields[] = {
1281
    &hf_s7comm_szl_0131_0007_mode_0,
1282
    &hf_s7comm_szl_0131_0007_mode_1,
1283
    NULL
1284
};
1285
1286
static int hf_s7comm_szl_0131_0008_index;
1287
static int hf_s7comm_szl_0131_0008_last_1;
1288
static int hf_s7comm_szl_0131_0008_last_1_tb;
1289
static int hf_s7comm_szl_0131_0008_last_2;
1290
static int hf_s7comm_szl_0131_0008_last_2_tb;
1291
static int hf_s7comm_szl_0131_0008_last_3;
1292
static int hf_s7comm_szl_0131_0008_last_3_tb;
1293
static int hf_s7comm_szl_0131_0008_merker;
1294
static int hf_s7comm_szl_0131_0008_merker_tb;
1295
static int hf_s7comm_szl_0131_0008_ea;
1296
static int hf_s7comm_szl_0131_0008_ea_tb;
1297
static int hf_s7comm_szl_0131_0008_tz;
1298
static int hf_s7comm_szl_0131_0008_tz_tb;
1299
static int hf_s7comm_szl_0131_0008_db;
1300
static int hf_s7comm_szl_0131_0008_db_tb;
1301
static int hf_s7comm_szl_0131_0008_ld;
1302
static int hf_s7comm_szl_0131_0008_ld_tb;
1303
static int hf_s7comm_szl_0131_0008_reg;
1304
static int hf_s7comm_szl_0131_0008_reg_tb;
1305
static int hf_s7comm_szl_0131_0008_ba_stali1;
1306
static int hf_s7comm_szl_0131_0008_ba_stali1_tb;
1307
static int hf_s7comm_szl_0131_0008_ba_stali2;
1308
static int hf_s7comm_szl_0131_0008_ba_stali2_tb;
1309
static int hf_s7comm_szl_0131_0008_ba_stali3;
1310
static int hf_s7comm_szl_0131_0008_ba_stali3_tb;
1311
static int hf_s7comm_szl_0131_0008_akku;
1312
static int hf_s7comm_szl_0131_0008_akku_tb;
1313
static int hf_s7comm_szl_0131_0008_address;
1314
static int hf_s7comm_szl_0131_0008_address_tb;
1315
static int hf_s7comm_szl_0131_0008_dbreg;
1316
static int hf_s7comm_szl_0131_0008_dbreg_tb;
1317
static int hf_s7comm_szl_0131_0008_res;
1318
static const value_string s7comm_szl_0131_0008_timebase_names[] = {
1319
    { 0,                                    "100 ps" },
1320
    { 1,                                    "1 ns" },
1321
    { 2,                                    "10 ns" },
1322
    { 3,                                    "100 ns" },
1323
    { 4,                                    "1 us" },
1324
    { 5,                                    "10 us" },
1325
    { 6,                                    "100 us" },
1326
    { 7,                                    "1 ms" },
1327
    { 8,                                    "10 ms" },
1328
    { 9,                                    "100 ms" },
1329
    { 10,                                   "1 s" },
1330
    { 11,                                   "10 s" },
1331
    { 12,                                   "100 s" },
1332
    { 13,                                   "1000 s" },
1333
    { 14,                                   "10000 s" },
1334
    { 15,                                   "1000000 s" },
1335
    { 0,                                    NULL }
1336
};
1337
1338
static int hf_s7comm_szl_0131_0009_index;
1339
static int hf_s7comm_szl_0131_0009_sync_k;
1340
static int hf_s7comm_szl_0131_0009_sync_k_0;
1341
static int hf_s7comm_szl_0131_0009_sync_k_1;
1342
static int hf_s7comm_szl_0131_0009_sync_k_2;
1343
static int hf_s7comm_szl_0131_0009_sync_mpi;
1344
static int hf_s7comm_szl_0131_0009_sync_mpi_0;
1345
static int hf_s7comm_szl_0131_0009_sync_mpi_1;
1346
static int hf_s7comm_szl_0131_0009_sync_mpi_2;
1347
static int hf_s7comm_szl_0131_0009_sync_mfi;
1348
static int hf_s7comm_szl_0131_0009_sync_mfi_0;
1349
static int hf_s7comm_szl_0131_0009_sync_mfi_1;
1350
static int hf_s7comm_szl_0131_0009_sync_mfi_2;
1351
static int hf_s7comm_szl_0131_0009_res1;
1352
static int hf_s7comm_szl_0131_0009_abw_puf;
1353
static int hf_s7comm_szl_0131_0009_abw_5v;
1354
static int hf_s7comm_szl_0131_0009_anz_bsz;
1355
static int hf_s7comm_szl_0131_0009_res2;
1356
1357
static int ett_s7comm_szl_0131_0009_sync_k;
1358
static int * const s7comm_szl_0131_0009_sync_k_fields[] = {
1359
    &hf_s7comm_szl_0131_0009_sync_k_0,
1360
    &hf_s7comm_szl_0131_0009_sync_k_1,
1361
    &hf_s7comm_szl_0131_0009_sync_k_2,
1362
    NULL
1363
};
1364
1365
static int ett_s7comm_szl_0131_0009_sync_mpi;
1366
static int * const s7comm_szl_0131_0009_sync_mpi_fields[] = {
1367
    &hf_s7comm_szl_0131_0009_sync_mpi_0,
1368
    &hf_s7comm_szl_0131_0009_sync_mpi_1,
1369
    &hf_s7comm_szl_0131_0009_sync_mpi_2,
1370
    NULL
1371
};
1372
1373
static int ett_s7comm_szl_0131_0009_sync_mfi;
1374
static int * const s7comm_szl_0131_0009_sync_mfi_fields[] = {
1375
    &hf_s7comm_szl_0131_0009_sync_mfi_0,
1376
    &hf_s7comm_szl_0131_0009_sync_mfi_1,
1377
    &hf_s7comm_szl_0131_0009_sync_mfi_2,
1378
    NULL
1379
};
1380
1381
static int hf_s7comm_szl_0131_0010_index;
1382
static int hf_s7comm_szl_0131_0010_funk_1;
1383
static int hf_s7comm_szl_0131_0010_funk_1_0;
1384
static int hf_s7comm_szl_0131_0010_funk_1_1;
1385
static int hf_s7comm_szl_0131_0010_funk_1_2;
1386
static int hf_s7comm_szl_0131_0010_funk_1_3;
1387
static int hf_s7comm_szl_0131_0010_funk_1_4;
1388
static int hf_s7comm_szl_0131_0010_funk_1_5;
1389
static int hf_s7comm_szl_0131_0010_funk_1_6;
1390
static int hf_s7comm_szl_0131_0010_funk_1_7;
1391
static int hf_s7comm_szl_0131_0010_funk_2;
1392
static int hf_s7comm_szl_0131_0010_ber_meld_1;
1393
static int hf_s7comm_szl_0131_0010_ber_meld_1_0;
1394
static int hf_s7comm_szl_0131_0010_ber_meld_1_1;
1395
static int hf_s7comm_szl_0131_0010_ber_meld_1_2;
1396
static int hf_s7comm_szl_0131_0010_ber_meld_1_3;
1397
static int hf_s7comm_szl_0131_0010_ber_meld_1_4;
1398
static int hf_s7comm_szl_0131_0010_ber_meld_1_5;
1399
static int hf_s7comm_szl_0131_0010_ber_meld_1_6;
1400
static int hf_s7comm_szl_0131_0010_ber_meld_1_7;
1401
static int hf_s7comm_szl_0131_0010_ber_meld_2;
1402
static int hf_s7comm_szl_0131_0010_ber_zus_1;
1403
static int hf_s7comm_szl_0131_0010_ber_zus_1_0;
1404
static int hf_s7comm_szl_0131_0010_ber_zus_1_1;
1405
static int hf_s7comm_szl_0131_0010_ber_zus_1_2;
1406
static int hf_s7comm_szl_0131_0010_ber_zus_1_3;
1407
static int hf_s7comm_szl_0131_0010_ber_zus_1_4;
1408
static int hf_s7comm_szl_0131_0010_ber_zus_1_5;
1409
static int hf_s7comm_szl_0131_0010_ber_zus_1_6;
1410
static int hf_s7comm_szl_0131_0010_ber_zus_1_7;
1411
static int hf_s7comm_szl_0131_0010_ber_zus_2;
1412
static int hf_s7comm_szl_0131_0010_typ_zus_1;
1413
static int hf_s7comm_szl_0131_0010_typ_zus_1_0;
1414
static int hf_s7comm_szl_0131_0010_typ_zus_1_1;
1415
static int hf_s7comm_szl_0131_0010_typ_zus_1_2;
1416
static int hf_s7comm_szl_0131_0010_typ_zus_1_3;
1417
static int hf_s7comm_szl_0131_0010_typ_zus_1_4;
1418
static int hf_s7comm_szl_0131_0010_typ_zus_1_5;
1419
static int hf_s7comm_szl_0131_0010_typ_zus_1_6;
1420
static int hf_s7comm_szl_0131_0010_typ_zus_1_7;
1421
static int hf_s7comm_szl_0131_0010_typ_zus_2;
1422
static int hf_s7comm_szl_0131_0010_maxanz_arch;
1423
static int hf_s7comm_szl_0131_0010_res;
1424
1425
static int ett_s7comm_szl_0131_0010_funk_1;
1426
static int * const s7comm_szl_0131_0010_funk_1_fields[] = {
1427
    &hf_s7comm_szl_0131_0010_funk_1_0,
1428
    &hf_s7comm_szl_0131_0010_funk_1_1,
1429
    &hf_s7comm_szl_0131_0010_funk_1_2,
1430
    &hf_s7comm_szl_0131_0010_funk_1_3,
1431
    &hf_s7comm_szl_0131_0010_funk_1_4,
1432
    &hf_s7comm_szl_0131_0010_funk_1_5,
1433
    &hf_s7comm_szl_0131_0010_funk_1_6,
1434
    &hf_s7comm_szl_0131_0010_funk_1_7,
1435
    NULL
1436
};
1437
static int ett_s7comm_szl_0131_0010_ber_meld_1;
1438
static int * const s7comm_szl_0131_0010_ber_meld_1_fields[] = {
1439
    &hf_s7comm_szl_0131_0010_ber_meld_1_0,
1440
    &hf_s7comm_szl_0131_0010_ber_meld_1_1,
1441
    &hf_s7comm_szl_0131_0010_ber_meld_1_2,
1442
    &hf_s7comm_szl_0131_0010_ber_meld_1_3,
1443
    &hf_s7comm_szl_0131_0010_ber_meld_1_4,
1444
    &hf_s7comm_szl_0131_0010_ber_meld_1_5,
1445
    &hf_s7comm_szl_0131_0010_ber_meld_1_6,
1446
    &hf_s7comm_szl_0131_0010_ber_meld_1_7,
1447
    NULL
1448
};
1449
static int ett_s7comm_szl_0131_0010_ber_zus_1;
1450
static int * const s7comm_szl_0131_0010_ber_zus_1_fields[] = {
1451
    &hf_s7comm_szl_0131_0010_ber_zus_1_0,
1452
    &hf_s7comm_szl_0131_0010_ber_zus_1_1,
1453
    &hf_s7comm_szl_0131_0010_ber_zus_1_2,
1454
    &hf_s7comm_szl_0131_0010_ber_zus_1_3,
1455
    &hf_s7comm_szl_0131_0010_ber_zus_1_4,
1456
    &hf_s7comm_szl_0131_0010_ber_zus_1_5,
1457
    &hf_s7comm_szl_0131_0010_ber_zus_1_6,
1458
    &hf_s7comm_szl_0131_0010_ber_zus_1_7,
1459
    NULL
1460
};
1461
static int ett_s7comm_szl_0131_0010_typ_zus_1;
1462
static int * const s7comm_szl_0131_0010_typ_zus_1_fields[] = {
1463
    &hf_s7comm_szl_0131_0010_typ_zus_1_0,
1464
    &hf_s7comm_szl_0131_0010_typ_zus_1_1,
1465
    &hf_s7comm_szl_0131_0010_typ_zus_1_2,
1466
    &hf_s7comm_szl_0131_0010_typ_zus_1_3,
1467
    &hf_s7comm_szl_0131_0010_typ_zus_1_4,
1468
    &hf_s7comm_szl_0131_0010_typ_zus_1_5,
1469
    &hf_s7comm_szl_0131_0010_typ_zus_1_6,
1470
    &hf_s7comm_szl_0131_0010_typ_zus_1_7,
1471
    NULL
1472
};
1473
1474
static int hf_s7comm_szl_0132_0001_index;
1475
static int hf_s7comm_szl_0132_0001_res_pg;
1476
static int hf_s7comm_szl_0132_0001_res_os;
1477
static int hf_s7comm_szl_0132_0001_u_pg;
1478
static int hf_s7comm_szl_0132_0001_u_os;
1479
static int hf_s7comm_szl_0132_0001_proj;
1480
static int hf_s7comm_szl_0132_0001_auf;
1481
static int hf_s7comm_szl_0132_0001_free;
1482
static int hf_s7comm_szl_0132_0001_used;
1483
static int hf_s7comm_szl_0132_0001_last;
1484
static int hf_s7comm_szl_0132_0001_res;
1485
1486
static int hf_s7comm_szl_0132_0002_index;
1487
static int hf_s7comm_szl_0132_0002_anz;
1488
static int hf_s7comm_szl_0132_0002_res;
1489
1490
static int hf_s7comm_szl_0132_0004_index;
1491
static int hf_s7comm_szl_0132_0004_key;
1492
static int hf_s7comm_szl_0132_0004_param;
1493
static int hf_s7comm_szl_0132_0004_real;
1494
static int hf_s7comm_szl_0132_0004_bart_sch;
1495
1496
static const value_string szl_bart_sch_names[] = {
1497
    { 0,                                    "undefined or cannot be ascertained" },
1498
    { 1,                                    "RUN" },
1499
    { 2,                                    "RUN_P" },
1500
    { 3,                                    "STOP" },
1501
    { 4,                                    "MRES" },
1502
    { 0,                                    NULL }
1503
};
1504
static int hf_s7comm_szl_0132_0004_crst_wrst;
1505
static const value_string szl_crst_wrst_names[] = {
1506
    { 0,                                    "undefined, does not exist or cannot be ascertained" },
1507
    { 1,                                    "CRST" },
1508
    { 2,                                    "WRST" },
1509
    { 0,                                    NULL }
1510
};
1511
static int hf_s7comm_szl_0132_0004_ken_f;
1512
static int hf_s7comm_szl_0132_0004_ken_rel;
1513
static int hf_s7comm_szl_0132_0004_ken_ver1_hw;
1514
static int hf_s7comm_szl_0132_0004_ken_ver2_hw;
1515
static int hf_s7comm_szl_0132_0004_ken_ver1_awp;
1516
static int hf_s7comm_szl_0132_0004_ken_ver2_awp;
1517
static int hf_s7comm_szl_0132_0004_res;
1518
1519
static int hf_s7comm_szl_0132_0005_index;
1520
static int hf_s7comm_szl_0132_0005_erw;
1521
static int hf_s7comm_szl_0132_0005_send;
1522
static int hf_s7comm_szl_0132_0005_moeg;
1523
static int hf_s7comm_szl_0132_0005_ltmerz;
1524
static int hf_s7comm_szl_0132_0005_res;
1525
1526
static const value_string szl_0132_0005_func_exist_names[] = {
1527
    { 0x0,                                  "No" },
1528
    { 0x1,                                  "Yes" },
1529
    { 0,                                    NULL }
1530
};
1531
1532
static int hf_s7comm_szl_0132_0006_index;
1533
static int hf_s7comm_szl_0132_0006_used_0;
1534
static int hf_s7comm_szl_0132_0006_used_1;
1535
static int hf_s7comm_szl_0132_0006_used_2;
1536
static int hf_s7comm_szl_0132_0006_used_3;
1537
static int hf_s7comm_szl_0132_0006_used_4;
1538
static int hf_s7comm_szl_0132_0006_used_5;
1539
static int hf_s7comm_szl_0132_0006_used_6;
1540
static int hf_s7comm_szl_0132_0006_used_7;
1541
static int hf_s7comm_szl_0132_0006_anz_schnell;
1542
static int hf_s7comm_szl_0132_0006_anz_inst;
1543
static int hf_s7comm_szl_0132_0006_anz_multicast;
1544
static int hf_s7comm_szl_0132_0006_res;
1545
1546
static int hf_s7comm_szl_0132_0008_index;
1547
static int hf_s7comm_szl_0132_0008_zykl;
1548
static int hf_s7comm_szl_0132_0008_korr;
1549
static int hf_s7comm_szl_0132_0008_clock0;
1550
static int hf_s7comm_szl_0132_0008_clock1;
1551
static int hf_s7comm_szl_0132_0008_clock2;
1552
static int hf_s7comm_szl_0132_0008_clock3;
1553
static int hf_s7comm_szl_0132_0008_clock4;
1554
static int hf_s7comm_szl_0132_0008_clock5;
1555
static int hf_s7comm_szl_0132_0008_clock6;
1556
static int hf_s7comm_szl_0132_0008_clock7;
1557
static int hf_s7comm_szl_0132_0008_time;
1558
static int hf_s7comm_szl_0132_0008_res;
1559
1560
static int hf_s7comm_szl_0132_000b_index;
1561
static int hf_s7comm_szl_0132_000b_bszl_0;
1562
static int hf_s7comm_szl_0132_000b_bszl_1;
1563
static int hf_s7comm_szl_0132_000b_bszu_0;
1564
static int hf_s7comm_szl_0132_000b_bszu_1;
1565
static int hf_s7comm_szl_0132_000b_clock0;
1566
static int hf_s7comm_szl_0132_000b_clock1;
1567
static int hf_s7comm_szl_0132_000b_clock2;
1568
static int hf_s7comm_szl_0132_000b_clock3;
1569
static int hf_s7comm_szl_0132_000b_clock4;
1570
static int hf_s7comm_szl_0132_000b_clock5;
1571
static int hf_s7comm_szl_0132_000b_clock6;
1572
static int hf_s7comm_szl_0132_000b_clock7;
1573
static int hf_s7comm_szl_0132_000b_res;
1574
1575
static int hf_s7comm_szl_0132_000c_index;
1576
static int hf_s7comm_szl_0132_000c_bszl_0;
1577
static int hf_s7comm_szl_0132_000c_bszl_1;
1578
static int hf_s7comm_szl_0132_000c_bszu_0;
1579
static int hf_s7comm_szl_0132_000c_bszu_1;
1580
static int hf_s7comm_szl_0132_000c_clock8;
1581
static int hf_s7comm_szl_0132_000c_clock9;
1582
static int hf_s7comm_szl_0132_000c_clock10;
1583
static int hf_s7comm_szl_0132_000c_clock11;
1584
static int hf_s7comm_szl_0132_000c_clock12;
1585
static int hf_s7comm_szl_0132_000c_clock13;
1586
static int hf_s7comm_szl_0132_000c_clock14;
1587
static int hf_s7comm_szl_0132_000c_clock15;
1588
static int hf_s7comm_szl_0132_000c_res;
1589
1590
static int hf_s7comm_szl_001c_000x_index;
1591
static int hf_s7comm_szl_001c_0001_name;
1592
static int hf_s7comm_szl_001c_0002_name;
1593
static int hf_s7comm_szl_001c_0003_tag;
1594
static int hf_s7comm_szl_001c_0004_copyright;
1595
static int hf_s7comm_szl_001c_0005_serialn;
1596
static int hf_s7comm_szl_001c_0007_cputypname;
1597
static int hf_s7comm_szl_001c_0008_snmcmmc;
1598
static int hf_s7comm_szl_001c_0009_manufacturer_id;
1599
static int hf_s7comm_szl_001c_0009_profile_id;
1600
static int hf_s7comm_szl_001c_0009_profile_spec_typ;
1601
static int hf_s7comm_szl_001c_000a_oem_copyright_string;
1602
static int hf_s7comm_szl_001c_000a_oem_id;
1603
static int hf_s7comm_szl_001c_000a_oem_add_id;
1604
static int hf_s7comm_szl_001c_000b_loc_id;
1605
static int hf_s7comm_szl_001c_000x_res;
1606
1607
static int hf_s7comm_szl_0091_0000_adr1;
1608
static int hf_s7comm_szl_0091_0000_adr2;
1609
static int hf_s7comm_szl_0091_0000_logadr;
1610
static int hf_s7comm_szl_0091_0000_solltyp;
1611
static int hf_s7comm_szl_0091_0000_isttyp;
1612
static int hf_s7comm_szl_0091_0000_res1;
1613
static int hf_s7comm_szl_0091_0000_res1_0c_4c_4d;
1614
static int hf_s7comm_szl_0091_0000_res1_0d;
1615
static int hf_s7comm_szl_0091_0000_eastat;
1616
static int hf_s7comm_szl_0091_0000_eastat_0;
1617
static int hf_s7comm_szl_0091_0000_eastat_1;
1618
static int hf_s7comm_szl_0091_0000_eastat_2;
1619
static int hf_s7comm_szl_0091_0000_eastat_3;
1620
static int hf_s7comm_szl_0091_0000_eastat_4;
1621
static int hf_s7comm_szl_0091_0000_eastat_5;
1622
static int hf_s7comm_szl_0091_0000_eastat_6;
1623
static int hf_s7comm_szl_0091_0000_eastat_7;
1624
static int hf_s7comm_szl_0091_0000_eastat_dataid;
1625
static int hf_s7comm_szl_0091_0000_berbgbr;
1626
static int hf_s7comm_szl_0091_0000_berbgbr_0_2;
1627
static int hf_s7comm_szl_0091_0000_berbgbr_3;
1628
static int hf_s7comm_szl_0091_0000_berbgbr_areaid;
1629
static int hf_s7comm_szl_0091_0000_berbgbr_7;
1630
1631
static const value_string szl_0091_0000_eastat_dataid_names[] = {
1632
    { 0xb4,                                 "Input" },
1633
    { 0xb5,                                 "Output" },
1634
    { 0xff,                                 "External DP interface" },
1635
    { 0,                                    NULL }
1636
};
1637
static const value_string szl_0091_0000_berbgbr_areaid_names[] = {
1638
    { 0,                                    "S7-400" },
1639
    { 1,                                    "S7-300" },
1640
    { 2,                                    "ET area" },
1641
    { 3,                                    "P area" },
1642
    { 4,                                    "Q area" },
1643
    { 5,                                    "IM3 area" },
1644
    { 6,                                    "IM4 area" },
1645
    { 0,                                    NULL }
1646
};
1647
static int ett_s7comm_szl_0091_0000_eastat;
1648
static int * const s7comm_szl_0091_0000_eastat_fields[] = {
1649
    &hf_s7comm_szl_0091_0000_eastat_0,
1650
    &hf_s7comm_szl_0091_0000_eastat_1,
1651
    &hf_s7comm_szl_0091_0000_eastat_2,
1652
    &hf_s7comm_szl_0091_0000_eastat_3,
1653
    &hf_s7comm_szl_0091_0000_eastat_4,
1654
    &hf_s7comm_szl_0091_0000_eastat_5,
1655
    &hf_s7comm_szl_0091_0000_eastat_6,
1656
    &hf_s7comm_szl_0091_0000_eastat_7,
1657
    &hf_s7comm_szl_0091_0000_eastat_dataid,
1658
    NULL
1659
};
1660
static int ett_s7comm_szl_0091_0000_berbgbr;
1661
static int * const s7comm_szl_0091_0000_berbgbr_fields[] = {
1662
    &hf_s7comm_szl_0091_0000_berbgbr_0_2,
1663
    &hf_s7comm_szl_0091_0000_berbgbr_3,
1664
    &hf_s7comm_szl_0091_0000_berbgbr_areaid,
1665
    &hf_s7comm_szl_0091_0000_berbgbr_7,
1666
    NULL
1667
};
1668
1669
static int ett_s7comm_szl_xx9x_station_info;
1670
static int hf_s7comm_szl_xx9x_station_info;
1671
1672
static int hf_s7comm_szl_0092_0xxx_status_0;
1673
static int hf_s7comm_szl_0092_0xxx_status_1;
1674
static int hf_s7comm_szl_0092_0xxx_status_2;
1675
static int hf_s7comm_szl_0092_0xxx_status_3;
1676
static int hf_s7comm_szl_0092_0xxx_status_4;
1677
static int hf_s7comm_szl_0092_0xxx_status_5;
1678
static int hf_s7comm_szl_0092_0xxx_status_6;
1679
static int hf_s7comm_szl_0092_0xxx_status_7;
1680
static int hf_s7comm_szl_0092_0xxx_status_8;
1681
static int hf_s7comm_szl_0092_0xxx_status_9;
1682
static int hf_s7comm_szl_0092_0xxx_status_10;
1683
static int hf_s7comm_szl_0092_0xxx_status_11;
1684
static int hf_s7comm_szl_0092_0xxx_status_12;
1685
static int hf_s7comm_szl_0092_0xxx_status_13;
1686
static int hf_s7comm_szl_0092_0xxx_status_14;
1687
static int hf_s7comm_szl_0092_0xxx_status_15;
1688
1689
static int hf_s7comm_szl_0094_xxxx_index;
1690
static int hf_s7comm_szl_0094_xxxx_status_0;
1691
static int hf_s7comm_szl_0094_xxxx_status_1_2047;
1692
1693
static int hf_s7comm_szl_0096_xxxx_logadr_adr;
1694
static int hf_s7comm_szl_0096_xxxx_logadr_area;
1695
static const true_false_string tfs_szl_0096_xxx_logadr_area = {
1696
    "Input",
1697
    "Output"
1698
};
1699
1700
static int hf_s7comm_szl_0096_xxxx_system;
1701
static int hf_s7comm_szl_0096_xxxx_api;
1702
static int hf_s7comm_szl_0096_xxxx_station;
1703
static int hf_s7comm_szl_0096_xxxx_slot;
1704
static int hf_s7comm_szl_0096_xxxx_subslot;
1705
static int hf_s7comm_szl_0096_xxxx_offset;
1706
static int hf_s7comm_szl_0096_xxxx_solltyp1;
1707
static int hf_s7comm_szl_0096_xxxx_solltyp2;
1708
static int hf_s7comm_szl_0096_xxxx_solltyp3;
1709
static int hf_s7comm_szl_0096_xxxx_solltyp4_5;
1710
static int hf_s7comm_szl_0096_xxxx_solltyp6_7;
1711
static int hf_s7comm_szl_0096_xxxx_expactid;
1712
static int hf_s7comm_szl_0096_xxxx_reserve1;
1713
static int hf_s7comm_szl_0096_xxxx_eastat;
1714
static int hf_s7comm_szl_0096_xxxx_eastat_0;
1715
static int hf_s7comm_szl_0096_xxxx_eastat_1;
1716
static int hf_s7comm_szl_0096_xxxx_eastat_2;
1717
static int hf_s7comm_szl_0096_xxxx_eastat_3;
1718
static int hf_s7comm_szl_0096_xxxx_eastat_4;
1719
static int hf_s7comm_szl_0096_xxxx_eastat_5;
1720
static int hf_s7comm_szl_0096_xxxx_eastat_6;
1721
static int hf_s7comm_szl_0096_xxxx_eastat_7;
1722
static int hf_s7comm_szl_0096_xxxx_eastat_8;
1723
static int hf_s7comm_szl_0096_xxxx_eastat_9;
1724
static int ett_s7comm_szl_0096_xxxx_eastat;
1725
static int * const s7comm_szl_0096_xxxx_eastat_fields[] = {
1726
    &hf_s7comm_szl_0096_xxxx_eastat_0,
1727
    &hf_s7comm_szl_0096_xxxx_eastat_1,
1728
    &hf_s7comm_szl_0096_xxxx_eastat_2,
1729
    &hf_s7comm_szl_0096_xxxx_eastat_3,
1730
    &hf_s7comm_szl_0096_xxxx_eastat_4,
1731
    &hf_s7comm_szl_0096_xxxx_eastat_5,
1732
    &hf_s7comm_szl_0096_xxxx_eastat_6,
1733
    &hf_s7comm_szl_0096_xxxx_eastat_7,
1734
    &hf_s7comm_szl_0096_xxxx_eastat_8,
1735
    &hf_s7comm_szl_0096_xxxx_eastat_9,
1736
    NULL
1737
};
1738
static int hf_s7comm_szl_0096_xxxx_berbgbr;
1739
static int hf_s7comm_szl_0096_xxxx_berbgbr_0_2;
1740
static int hf_s7comm_szl_0096_xxxx_berbgbr_3;
1741
static int hf_s7comm_szl_0096_xxxx_berbgbr_areaid;
1742
static int hf_s7comm_szl_0096_xxxx_berbgbr_7;
1743
static int ett_s7comm_szl_0096_xxxx_berbgbr;
1744
static int * const s7comm_szl_0096_xxxx_berbgbr_fields[] = {
1745
    &hf_s7comm_szl_0096_xxxx_berbgbr_0_2,
1746
    &hf_s7comm_szl_0096_xxxx_berbgbr_3,
1747
    &hf_s7comm_szl_0096_xxxx_berbgbr_areaid,
1748
    &hf_s7comm_szl_0096_xxxx_berbgbr_7,
1749
    NULL
1750
};
1751
static int hf_s7comm_szl_0096_xxxx_reserve2;
1752
1753
static int hf_s7comm_szl_0424_0000_ereig;
1754
static int hf_s7comm_szl_0424_0000_ae;
1755
static int hf_s7comm_szl_0424_0000_bzu_id;
1756
static int hf_s7comm_szl_0424_0000_bzu_id_req;
1757
static int hf_s7comm_szl_0424_0000_bzu_id_pre;
1758
static const value_string szl_0424_0000_bzu_id_names[] = {
1759
    { 0x1,                                  "STOP (update)" },
1760
    { 0x2,                                  "STOP (memory reset)" },
1761
    { 0x3,                                  "STOP (self initialization)" },
1762
    { 0x4,                                  "STOP (internal)" },
1763
    { 0x5,                                  "Startup (complete restart)" },
1764
    { 0x7,                                  "Restart" },
1765
    { 0x8,                                  "RUN" },
1766
    { 0xa,                                  "HOLD" },
1767
    { 0xd,                                  "DEFECT" },
1768
    { 0,                                    NULL }
1769
};
1770
static int ett_s7comm_szl_0424_0000_bzu_id;
1771
static int * const s7comm_szl_0424_0000_bzu_id_fields[] = {
1772
    &hf_s7comm_szl_0424_0000_bzu_id_req,
1773
    &hf_s7comm_szl_0424_0000_bzu_id_pre,
1774
    NULL
1775
};
1776
static int hf_s7comm_szl_0424_0000_res;
1777
static int hf_s7comm_szl_0424_0000_anlinfo1;
1778
static int hf_s7comm_szl_0424_0000_anlinfo2;
1779
static const value_string szl_0424_0000_anlinfo2_names[] = {
1780
    { 0x01,                                 "Complete restart in multicomputing" },
1781
    { 0x03,                                 "Complete restart set at mode selector" },
1782
    { 0x04,                                 "Complete restart command via MPI" },
1783
    { 0x0a,                                 "Restart in multicomputing" },
1784
    { 0x0b,                                 "Restart set at mode selector" },
1785
    { 0x0c,                                 "Restart command via MPI" },
1786
    { 0x10,                                 "Automatic complete restart after battery-backed power on" },
1787
    { 0x13,                                 "Complete restart set at mode selector; last power on battery backed" },
1788
    { 0x14,                                 "Complete restart command via MPI; last power on battery backed" },
1789
    { 0x20,                                 "Automatic complete restart after non battery backed power on (with memory reset by system)" },
1790
    { 0x23,                                 "Complete restart set at mode selector; last power on unbattery backed" },
1791
    { 0x24,                                 "Complete restart command via MPI; last power on unbattery backed" },
1792
    { 0xa0,                                 "Automatic restart after battery backed power on according to parameter assignment" },
1793
    { 0,                                    NULL }
1794
};
1795
static int hf_s7comm_szl_0424_0000_anlinfo3;
1796
static int hf_s7comm_szl_0424_0000_anlinfo4;
1797
static const value_string szl_0424_0000_anlinfo4_names[] = {
1798
    { 0x00,                                 "No startup type" },
1799
    { 0x01,                                 "Complete restart in multicomputing" },
1800
    { 0x03,                                 "Complete restart due to switch setting" },
1801
    { 0x04,                                 "Complete restart command via MPI" },
1802
    { 0x0a,                                 "Restart in multicomputing" },
1803
    { 0x0b,                                 "Restart set at mode selector" },
1804
    { 0x0c,                                 "Restart command via MPI" },
1805
    { 0x10,                                 "Automatic complete restart after battery-backed power on" },
1806
    { 0x13,                                 "Complete restart set at mode selector; last power on battery backed" },
1807
    { 0x14,                                 "Complete restart command via MPI; last power on battery backed" },
1808
    { 0x20,                                 "Automatic complete restart after non battery backed power on (with memory reset by system)" },
1809
    { 0x23,                                 "Complete restart set at mode selector; last power on unbattery backed" },
1810
    { 0x24,                                 "Complete restart command via MPI; last power on unbattery backed" },
1811
    { 0xa0,                                 "Automatic restart after battery backed power on according to parameter assignment" },
1812
    { 0,                                    NULL }
1813
};
1814
static int hf_s7comm_szl_0424_0000_time;
1815
1816
static int hf_s7comm_szl_xy74_0000_cpu_led_id;
1817
static int hf_s7comm_szl_xy74_0000_cpu_led_id_rackno;
1818
static int hf_s7comm_szl_xy74_0000_cpu_led_id_cputype;
1819
static int hf_s7comm_szl_xy74_0000_cpu_led_id_id;
1820
static int hf_s7comm_szl_xy74_0000_led_on;
1821
static const value_string szl_xy74_0000_led_on_names[] = {
1822
    { 0x0,                                  "Off" },
1823
    { 0x1,                                  "On" },
1824
    { 0,                                    NULL }
1825
};
1826
1827
static int hf_s7comm_szl_xy74_0000_led_blink;
1828
static const value_string szl_xy74_0000_led_blink_names[] = {
1829
    { 0x0,                                  "Not flashing" },
1830
    { 0x1,                                  "Flashing normally (2 Hz)" },
1831
    { 0x2,                                  "Flashing slowly (0.5 Hz)" },
1832
    { 0,                                    NULL }
1833
};
1834
1835
static int hf_s7comm_szl_xy76_0000_version;
1836
static int hf_s7comm_szl_xy76_0000_top_dnn_id;
1837
1838
static int hf_s7comm_szl_xy77_xxxx_version;
1839
static int hf_s7comm_szl_xy77_xxxx_num_parent;
1840
static int hf_s7comm_szl_xy77_xxxx_obj_parent;
1841
static int hf_s7comm_szl_xy77_xxxx_num_child;
1842
static int hf_s7comm_szl_xy77_xxxx_obj_child;
1843
static int hf_s7comm_szl_xy77_xxxx_num_redundancy_links;
1844
static int hf_s7comm_szl_xy77_xxxx_obj_redundancy;
1845
static int hf_s7comm_szl_xy77_xxxx_num_iodevice_agent_links;
1846
static int hf_s7comm_szl_xy77_xxxx_obj_iodevice_agent;
1847
1848
static int hf_s7comm_szl_xy78_xxxx_version;
1849
static int hf_s7comm_szl_xy78_xxxx_unknown_version_data;
1850
static int hf_s7comm_szl_xy78_xxxx_geo_addr;
1851
static int hf_s7comm_szl_xy78_xxxx_geo_addr_subsys;
1852
static int hf_s7comm_szl_xy78_xxxx_geo_addr_station;
1853
static int hf_s7comm_szl_xy78_xxxx_geo_addr_rack;
1854
static int hf_s7comm_szl_xy78_xxxx_geo_addr_slot;
1855
static int hf_s7comm_szl_xy78_xxxx_geo_addr_subslot;
1856
static int hf_s7comm_szl_xy78_xxxx_name;
1857
static int hf_s7comm_szl_xy78_xxxx_short_name;
1858
static int hf_s7comm_szl_xy78_xxxx_dnn_mode;
1859
static int hf_s7comm_szl_xy78_xxxx_dis;
1860
static int hf_s7comm_szl_xy78_xxxx_dis_num_cdiag;
1861
static int hf_s7comm_szl_xy78_xxxx_dis_cdiags;
1862
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry;
1863
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_ch_nr;
1864
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_ch_prop;
1865
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_alcat;
1866
static const value_string s7comm_szl_xy78_xxxx_dis_cdiag_entry_alcat_names[] = {
1867
    {0x0001, "ALCAT_CH_MSG"},
1868
    {0x0002, "ALCAT_SUBMODUL_MSG"},
1869
    {0x0003, "ALCAT_MODUL_MSG"},
1870
    {0x0004, "ALCAT_RACK_MSG"},
1871
    {0x0005, "ALCAT_DEVICE_MSG"},
1872
    {0x0006, "ALCAT_IOSYSTEM_MSG"},
1873
    {0x0007, "ALCAT_DREPEAT_A_MSG"},
1874
    {0x0008, "ALCAT_DREPEAT_B_MSG"},
1875
    {0x0009, "ALCAT_DREPEAT_C_MSG"},
1876
    {0x000A, "ALCAT_DREPEAT_D_MSG"},
1877
    {0x000B, "ALCAT_DREPEAT_E_MSG"},
1878
    {0x000C, "ALCAT_CPU_MSG"},
1879
    {0x000D, "ALCAT_CPU_OST_MSG"},
1880
    {0x000F, "ALCAT_CPU_INFO_MSG"},
1881
    {0x0010, "ALCAT_CPU_ERR_MSG"},
1882
    {0x0011, "ALCAT_CPU_MD_MSG"},
1883
    {0x0012, "ALCAT_CPU_MR_MSG"},
1884
    {0x0013, "ALCAT_CPU_TMPERR_MSG"},
1885
    {0x0014, "ALCAT_CPU_INTERN_MSG"},
1886
    {0x0015, "ALCAT_CH_ERR_MSG"},
1887
    {0x0016, "ALCAT_ECH_ERR_MSG"},
1888
    {0x0017, "ALCAT_QCH_ERR_MSG"},
1889
    {0x0018, "ALCAT_CH_MD_MSG"},
1890
    {0x0019, "ALCAT_ECH_MD_MSG"},
1891
    {0x001A, "ALCAT_QCH_MDMSG"},
1892
    {0x001B, "ALCAT_CH_MR_MSG"},
1893
    {0x001C, "ALCAT_ECH_MR_MSG"},
1894
    {0x001D, "ALCAT_QCH_MR_MSG"},
1895
    {0x001E, "ALCAT_SUB_ERR_MSG"},
1896
    {0x001F, "ALCAT_ESUB_ERR_MSG"},
1897
    {0x0020, "ALCAT_QSUB_ERR_MSG"},
1898
    {0x0021, "ALCAT_SUB_MD_MSG"},
1899
    {0x0022, "ALCAT_ESUB_MD_MSG"},
1900
    {0x0023, "ALCAT_QSUB_MDMSG"},
1901
    {0x0024, "ALCAT_SUB_MR_MSG"},
1902
    {0x0025, "ALCAT_ESUB_MR_MSG"},
1903
    {0x0026, "ALCAT_QSUB_MR_MSG"},
1904
    {0x0028, "ALCAT_CONFIG_INFO"},
1905
    {0, NULL}
1906
};
1907
1908
static value_string_ext s7comm_szl_xy78_xxxx_dis_cdiag_entry_alcat_names_ext =
1909
    VALUE_STRING_EXT_INIT(s7comm_szl_xy78_xxxx_dis_cdiag_entry_alcat_names);
1910
1911
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_res;
1912
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_qualifier;
1913
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_chet;
1914
static const value_string s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_names[] = {
1915
    {0x0001, "ErrTextLib"},
1916
    {0x0002, "CPUTextlib"},
1917
    {0x0003, "ErrTextLibEx"},
1918
    {0x0004, "DS1TextLib"},
1919
    {0x0005, "OSTTextLib (S7classic)"},
1920
    {0x0006, "IOTextLib"},
1921
    {0x0007, "DR"},
1922
    {0x0008, "IOTextLibFlat"},
1923
    {0x000D, "FS_TextLib"},
1924
    {0x000F, "CPTextlib"},
1925
    {0x0020, "AddHCPUTextLib"},
1926
    {0x0040, "PCStationTextlib"},
1927
    {0x0042, "PCCPTextlib"},
1928
    {0x0043, "PCDiagBase"},
1929
    {0x0064, "Domain0TextLib"},
1930
    {0x00F0, "MotionControlTextLib"},
1931
    {0x00F1, "SINAUT"},
1932
    {0x00F2, "SINUMERIK"},
1933
    {0x00FC, "AlarmCatEvid"},
1934
    {0x00FD, "AlarmCatShort"},
1935
    {0x00FE, "AlarmCatLong"},
1936
    {0x00FF, "AlarmCat"},
1937
    {0x0100, "CmpPlcName"},
1938
    {0x0101, "CmpRackName"},
1939
    {0x0102, "CmpModuleName"},
1940
    {0x0103, "CmpSubModuleName"},
1941
    {0x0104, "CmpTypeName"},
1942
    {0x0105, "CmpComment"},
1943
    {0x0106, "CmpTagFunction"},
1944
    {0x0107, "CmpTagLocation"},
1945
    {0x0108, "CmpLogAddress"},
1946
    {0x0109, "CmpOrderNo"},
1947
    {0x010A, "CmpSubsystemNo"},
1948
    {0x010B, "CmpRackNo"},
1949
    {0x010C, "CmpSlotNo"},
1950
    {0x010D, "CmpSubslotNo"},
1951
    {0x010E, "CmpHtmlPath"},
1952
    {0x010F, "CmpVendorName"},
1953
    {0x0110, "CmpFirmwareVersion"},
1954
    {0x0111, "CmpAdditionalInfo"},
1955
    {0x0112, "CmpInstallDate"},
1956
    {0x0113, "CmpName"},
1957
    {0x0114, "CmpIOSystemName"},
1958
    {0x0118, "CmpSymbolRedirection"},
1959
    {0x0119, "CmpSymbolInput"},
1960
    {0x011A, "CmpSymbolOutput"},
1961
    {0x011B, "CmpSymbolChannel_IN00"},
1962
    {0x015A, "CmpSymbolChannel_IN63"},
1963
    {0x015B, "CmpSymbolChannel_OUT00"},
1964
    {0x019A, "CmpSymbolChannel_OUT63"},
1965
    {0x01F0, "CmpMotionControl"},
1966
    {0x01FE, "PnoVendorName"},
1967
    {0x8001, "ErrTextLibHelp"},
1968
    {0x8002, "CPUTextlibHelp"},
1969
    {0x8003, "ErrTextLibExHelp"},
1970
    {0x8004, "DS1TextListHelp"},
1971
    {0x8005, "OSTTextLibHelp  (S7classic)"},
1972
    {0x8006, "IOTextlibHelp"},
1973
    {0x8007, "DRHelp"},
1974
    {0x8008, "IOTextLibFlatHelp"},
1975
    {0x800D, "FS_TextLibHelp"},
1976
    {0x800F, "CPTextlibHelp"},
1977
    {0x8040, "PCStationHelp"},
1978
    {0x8042, "PCCPHelp"},
1979
    {0x8043, "PCDiagBaseHelp"},
1980
    {0x80F0, "MotionControlHelp"},
1981
    {0x80F2,  "SinumerikHelp"},
1982
    {0, NULL}
1983
};
1984
1985
static value_string_ext s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_names_ext =
1986
    VALUE_STRING_EXT_INIT(s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_names);
1987
1988
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet;
1989
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8;
1990
static const value_string s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8_names[] = {
1991
    {1, "Short-circuit"},
1992
    {2, "Undervoltage"},
1993
    {3, "Overvoltage"},
1994
    {4, "Overload"},
1995
    {5, "Overtemperature"},
1996
    {6, "Wire break"},
1997
    {7, "High limit exceeded"},
1998
    {8, "Low limit violated"},
1999
    {9, "Error"},
2000
    {10, "Simulation active"},
2001
    {11, "Error (000B)"},
2002
    {12, "Error (000C)"},
2003
    {13, "Error (000D)"},
2004
    {14, "Error (000E)"},
2005
    {15, "Parameter not adequate"},
2006
    {16, "Parameter error"},
2007
    {17, "Supply voltage missing"},
2008
    {18, "Fuse fault"},
2009
    {19, "Communication fault"},
2010
    {20, "Ground fault"},
2011
    {21, "Reference channel fault"},
2012
    {22, "Hardware interrupt lost"},
2013
    {23, "Limit value warning"},
2014
    {24, "Actuator shutoff"},
2015
    {25, "Safety-related shutoff"},
2016
    {26, "External error"},
2017
    {27, "General error"},
2018
    {28, "PROFIsafe communications error"},
2019
    {29, "Error1 in actuator/sensor"},
2020
    {30, "Error2 in actuator/sensor"},
2021
    {31, "Channel/component temporarily not available "},
2022
    {33, "Further diagnostics information available not stored individually"},
2023
    {34, "Diagnostics available and is being processed"},
2024
    {35, "Module monitoring time exceeded"},
2025
    {64, "Mismatch of safety destination address (F_Dest_Add)"},
2026
    {65, "Safety destination address not valid (F_Dest_Add)"},
2027
    {66, "Safety source address not valid (F_Source_Add)"},
2028
    {67, "Safety watchdog time value is 0 ms (F_WD_Time) "},
2029
    {68, "Parameter F_SIL exceeds SIL from specific device application "},
2030
    {69, "Parameter F_CRC_Length does not match the generated values "},
2031
    {70, "Version of F parameter set incorrect "},
2032
    {71, "CRC1 fault "},
2033
    {72, "Device-specific diagnostics information, see manual "},
2034
    {73, "Save iParameter watchdog time exceeded "},
2035
    {74, "Restore iParameter watchdog time exceeded "},
2036
    {75, "Inconsistent iParameters (iParCRC error) "},
2037
    {76, "F_Block_ID not supported "},
2038
    {77, "Transmission error: Inconsistent data (CRC error) "},
2039
    {78, "Transmission error: Timeout (watchdog time 1 or 2 expired) "},
2040
    {79, "Acknowledge required to enable channel(s) - as channel error(s) are remedied."},
2041
    {256, "Module is defective"},
2042
    {257, "Front connector not plugged"},
2043
    {258, "Error (0102)"},
2044
    {259, "Watchdog tripped"},
2045
    {260, "Internal supply voltage fault"},
2046
    {261, "Short-circuit to L+"},
2047
    {262, "Short-circuit to ground"},
2048
    {263, "Overcurrent"},
2049
    {264, "Illegal input voltage"},
2050
    {265, "Line break"},
2051
    {266, "Supply voltage missing"},
2052
    {267, "Overvoltage backplane bus"},
2053
    {268, "Switch off"},
2054
    {269, "Error (010D)"},
2055
    {270, "Short circuit / overload of the sensor supply voltage"},
2056
    {271, "Error at digital outputs"},
2057
    {272, "Supply voltage fault"},
2058
    {273, "Error (0111)"},
2059
    {274, "Error (0112)"},
2060
    {275, "Error (0113)"},
2061
    {276, "Error (0114)"},
2062
    {277, "Error (0115)"},
2063
    {278, "Error (0116)"},
2064
    {279, "Error (0117)"},
2065
    {280, "Common mode error"},
2066
    {281, "Undervoltage/Overload in power segment "},
2067
    {282, "Error in the power segment"},
2068
    {283, "Invalid/inconsistent firmware present"},
2069
    {284, "At least one battery empty"},
2070
    {285, "Safety shutdown"},
2071
    {286, "Read Back Error"},
2072
    {287, "Error (011F)"},
2073
    {288, "Redundancy partner has different hardware/firmware version"},
2074
    {289, "IO redundancy warning"},
2075
    {290, "Shut-off via push-button handling"},
2076
    {291, "Inconsistent parameter assignment"},
2077
    {292, "Short circuit/wire break of sensor cable"},
2078
    {293, "Changeover switch error"},
2079
    {294, "Error partner channel"},
2080
    {295, "Output deviation"},
2081
    {296, "Wire break sensor supply"},
2082
    {297, "Internal AI power supply issue"},
2083
    {298, "Application Software Execution Fault TM-RTC"},
2084
    {299, "Module firmware download:"},
2085
    {300, "Firmware successfully downloaded and activated for use after reset (New firmware version @5Y%s@@6Y%u@.@7Y%u@.@8Y%u@)"},
2086
    {318, "Diagnostic queue overflow"},
2087
    {319, "Slot @3W%u@"},
2088
    {320, "HART parameter error"},
2089
    {321, "HART communication error"},
2090
    {322, "HART primary variable out of range"},
2091
    {323, "HART analog output current saturated"},
2092
    {324, "HART output current of the field device fixed"},
2093
    {325, "HART - more status available"},
2094
    {326, "HART configuration changed"},
2095
    {327, "HART field device malfunction"},
2096
    {328, "HART safety related HART shutoff defective "},
2097
    {329, "HART - non primary variable out of limits"},
2098
    {330, "HART error (014A)"},
2099
    {331, "HART error (014B)"},
2100
    {332, "HART error (014C)"},
2101
    {333, "HART error (014D)"},
2102
    {334, "HART error (014E)"},
2103
    {335, "HART error (014F)"},
2104
    {337, "Invalid BaseUnit"},
2105
    {338, "Invalid terminal block"},
2106
    {339, "Remanent memory in base unit is defective "},
2107
    {340, "Carrier module or memory in carrier module is defective"},
2108
    {341, "Terminal block (TB) or memory in terminal block is defective "},
2109
    {342, "Bus adapter is defective"},
2110
    {343, "Output channels inactive"},
2111
    {344, "Failure"},
2112
    {345, "Function check"},
2113
    {346, "Out of specification"},
2114
    {347, "Maintenance required"},
2115
    {384, "Short-circuit to ground on AS-interface line"},
2116
    {740, "Positioning error"},
2117
    {741, "Driver error"},
2118
    {742, "Internal error"},
2119
    {743, "DIS input active"},
2120
    {752, "Pilot valve: switching cycle counter limit reached"},
2121
    {753, "Actuator: switching cycle counter limit reached"},
2122
    {754, "No valve voltage"},
2123
    {755, "Pilot valve: wire break"},
2124
    {756, "Pilot valve: short circuit"},
2125
    {757, "Internal module fault"},
2126
    {758, "Pressure limit value exceeded"},
2127
    {759, "Pressure limit value not reached"},
2128
    {760, "Error (02F8)"},
2129
    {761, "Error (02F9)"},
2130
    {762, "Error (02FA)"},
2131
    {763, "Error (02FB)"},
2132
    {764, "Error (02FC)"},
2133
    {765, "Error (02FD)"},
2134
    {766, "Error (02FE)"},
2135
    {767, "Error (02FF)"},
2136
    {768, "Discrepancy failure, channel state 0/0"},
2137
    {769, "Discrepancy failure, channel state 0/1"},
2138
    {770, "Discrepancy failure, channel state 1/0"},
2139
    {771, "Discrepancy failure, channel state 1/1"},
2140
    {772, "Analog input signal not recorded unique"},
2141
    {773, "Input signal not recorded unique"},
2142
    {774, "Internal sensor supply short-circuit to P"},
2143
    {775, "Overload or internal sensor supply short-circuit to ground"},
2144
    {776, "Short-circuit of sensor supply defective"},
2145
    {777, "Short-circuit of the sensor with the sensor supply"},
2146
    {778, "No pulses detected"},
2147
    {779, "Channel failure acknowledgement"},
2148
    {780, "Device deactivation"},
2149
    {781, "F-address memory not accessible"},
2150
    {782, "No valid F-address available"},
2151
    {783, "Error during failsafe address assignment"},
2152
    {784, "Sensor signal flutters"},
2153
    {785, "Frequency too high"},
2154
    {786, "Undertemperature"},
2155
    {787, "Failure in the input circuit"},
2156
    {788, "Discrepancy failure"},
2157
    {789, "Internal discrepancy failure"},
2158
    {790, "Relay can not be turned on"},
2159
    {791, "Relay can not be turned off (contacts welded) "},
2160
    {792, "PROFIsafe communication failure (timeout)"},
2161
    {793, "PROFIsafe communication error (CRC)"},
2162
    {794, "PROFIsafe address assignment failure"},
2163
    {795, "Input short-circuit to ground"},
2164
    {796, "Input shorted to P"},
2165
    {797, "Output defective"},
2166
    {798, "Read back failure"},
2167
    {799, "Overcurrent"},
2168
    {800, "Overload"},
2169
    {801, "Supply voltage too high"},
2170
    {802, "Supply voltage too low"},
2171
    {803, "Supply voltage too high"},
2172
    {804, "Supply voltage too low"},
2173
    {805, "Bus enumeration fault"},
2174
    {806, "Bus enumeration fault / old FW version"},
2175
    {807, "Module slot wrong or configuration faulty"},
2176
    {808, "Module slot wrong or configuration faulty(not safety relevant)"},
2177
    {809, "Inconsistent configuration data"},
2178
    {810, "Safety related HART shutoff defective "},
2179
    {811, "Channel passivated"},
2180
    {812, "Safety related shut-off (relay continuous on time limit exceeded)"},
2181
    {813, "Panic operation of enabling button incomplete"},
2182
    {814, "F module error (0x032E)"},
2183
    {815, "F module error (0x032F)"},
2184
    {816, "Safety related shut-off"},
2185
    {817, "ADC failure"},
2186
    {818, "Failure in the test circuit"},
2187
    {1024, "AS-i slave failed"},
2188
    {1025, "AS-i slave on B-address failed"},
2189
    {1026, "Peripheral fault in AS-i slave "},
2190
    {1027, "Peripheral fault in AS-i slave on B-address"},
2191
    {1028, "AS-i address used multiple times"},
2192
    {1029, "AS-i B-address used multiple times"},
2193
    {1030, "No voltage or too low voltage on AS-interface cable"},
2194
    {1031, "AS-i configuration fault"},
2195
    {1032, "Short-circuit to ground on AS-interface line"},
2196
    {1033, "AS-i fault (0x0409)"},
2197
    {1034, "Supernumerary AS-i slave "},
2198
    {1035, "Supernumerary AS-i slave on B-address "},
2199
    {1036, "Incorrect AS-i slave"},
2200
    {1037, "Incorrect AS-i slave on B-address "},
2201
    {1038, "AS-i voltage too high"},
2202
    {1039, "AS-i voltage too low"},
2203
    {1040, "Discrepancy failure, channel state 0/0"},
2204
    {1041, "Discrepancy failure, channel state 0/1"},
2205
    {1042, "Discrepancy failure, channel state 1/0"},
2206
    {1043, "Discrepancy failure, channel state 1/1"},
2207
    {1044, "Sequence error, channel state 0/0"},
2208
    {1045, "Sequence error, channel state 0/1"},
2209
    {1046, "Sequence error, channel state 1/0"},
2210
    {1047, "Sequence error, channel state 1/1"},
2211
    {1048, "Overtemperature"},
2212
    {1049, "New AS-i safety slave code sequence detected"},
2213
    {1050, "Safe AS-i input slave missing"},
2214
    {1051, "Safe AS-i output slave failed"},
2215
    {1052, "Peripheral fault in one or more AS-i slaves "},
2216
    {1053, "One or more AS-i addresses used multiple times"},
2217
    {1054, "AS-i safety signal error"},
2218
    {1055, "AS-i safety slave code sequence ready to save"},
2219
    {1056, "AS-i safety slave code sequence missing"},
2220
    {1057, "AS-i safety slave code sequence multiple used"},
2221
    {1058, "AS-i safety communication error"},
2222
    {1059, "Device error"},
2223
    {1060, "AS-i error (0x0424)"},
2224
    {1061, "AS-i error (0x0425)"},
2225
    {1062, "AS-i error (0x0426)"},
2226
    {1232, "CAN in bus off mode"},
2227
    {1233, "CAN in error passive mode"},
2228
    {1234, "CAN receive buffer overflow"},
2229
    {1235, "CAN transmit buffer overflow"},
2230
    {1236, "Received PDO too short"},
2231
    {1237, "Heartbeat error"},
2232
    {1238, "Node guarding error"},
2233
    {1239, "Heartbeat / node guarding error"},
2234
    {1240, "Wrong NMT state"},
2235
    {1241, "Bootup failed"},
2236
    {1242, "Bootup - node not responding"},
2237
    {1243, "Bootup"},
2238
    {1244, "EMCY received"},
2239
    {1245, "Received message wrong length"},
2240
    {1246, "Extended parameterization error"},
2241
    {1248, "Interface error"},
2242
    {1249, "IP address (@5Y%u@.@6Y%u@.@7Y%u@.@8Y%u@) of an IE interface already exists "},
2243
    {1250, "Name of an IE interface already exists "},
2244
    {1251, "PROFIBUS interface error "},
2245
    {1252, "DHCP Server offer not acceptable or not present"},
2246
    {1253, "Retrieved DHCP parameter changed to invalid"},
2247
    {1256, "Module firmware update aborted: "},
2248
    {1257, "Firmware for hardware component unchanged"},
2249
    {1280, "Illegal A/B signal ratio"},
2250
    {1281, "Frequency outside specification"},
2251
    {1282, "RS422/TTL error"},
2252
    {1283, "Error on SSI sensor"},
2253
    {1284, "Error on BiSS sensor"},
2254
    {1285, "Wire break digital input (A, B or N) "},
2255
    {1286, "Overtemperature"},
2256
    {1536, "Error (0x0600)"},
2257
    {1537, "Status error"},
2258
    {1538, "Configuration error"},
2259
    {1539, "Net configuration error"},
2260
    {1552, "Load voltage error"},
2261
    {1568, "ET-Connection error"},
2262
    {1584, "Redundancy error"},
2263
    {1600, "Hardware error"},
2264
    {1664, "IO bus fault starting at slot @4W%u@"},
2265
    {1665, "Transmitted IO data invalid (partially bad-flagged)  "},
2266
    {1666, "Communication with slot @4W%u@ failed"},
2267
    {1667, "Drag chain fault"},
2268
    {1668, "Firmware activation pending"},
2269
    {1678, "Incompatible MultiFieldbus project found on device remanence (ModuleID=@8W%X@)"},
2270
    {1679, "No active backplane bus detected at an IM port"},
2271
    {1680, "Wrong module on slot"},
2272
    {1681, "Station stop - Module parameter 'potential group' incorrect or wrong BaseUnit/TerminalBlock on real configuration slot @4W%u@"},
2273
    {1682, "Permitted number of I/O modules exceeded at slot @4W%u@"},
2274
    {1683, "Station stop - missing or wrong server module"},
2275
    {1684, "Station stop - too many missing modules (@4W%u@)"},
2276
    {1685, "IO data packing fault for slot @4W%u@"},
2277
    {1686, "No U connector detected at IM port"},
2278
    {1687, "More than one bus master module (IM/CPU) detected"},
2279
    {1688, "Permitted size of backplane exceeded"},
2280
    {1689, "Invalid backplane configuration for slot @4W%u@"},
2281
    {1690, "Interface module at wrong slot"},
2282
    {1691, "Permitted number of power supply modules exceeded at slot @4W%u@"},
2283
    {1692, "Invalid bus adapter at interface module"},
2284
    {1693, "Missing record for configuration control"},
2285
    {1694, "Missing or wrong server module"},
2286
    {1695, "Module parameter 'potential group' incorrect or wrong BaseUnit / TerminalBlock on real configuration slot (slot number)"},
2287
    {1696, "Error on other net"},
2288
    {1697, "Difference between nets at slot @4W%u@"},
2289
    {1698, "No input data for activated data validity display configured"},
2290
    {1699, "Coupling of sync domains not possible/nsync master on X1, sync slave on X2 missing"},
2291
    {1700, "Coupling of sync domains not possible/nsync master on X2, sync slave on X1 missing"},
2292
    {1701, "Shared device conflict, invalid sub module combination in slot @4W%u@"},
2293
    {1702, "Shared device conflict, valid IO range exceeded by @4W%u@ bytes."},
2294
    {1703, "IO memory for interface X@4W%u@ is too fragmented. The device needs to be restarted."},
2295
    {1712, "Missing voltage in load group at slot according channel number"},
2296
    {1713, "Overloaded power segment at slot @4W%u@"},
2297
    {1714, "IM power supply error"},
2298
    {1715, "Power supply failure (PS number  @4W%u@)"},
2299
    {1716, "Power supply undervoltage"},
2300
    {1728, "Invalid number of modules in the extension rack @4W%u@"},
2301
    {1729, "Invalid number of extension racks (number @4W%u@)"},
2302
    {1730, "BA-Send module on incorrect slot  @4W%u@"},
2303
    {1731, "Invalid component in the extension rack @4W%u@"},
2304
    {1732, "Link error in the extension rack @4W%u@"},
2305
    {1744, "Request for maintenance @4W%X@"},
2306
    {1745, "Power supply malfunctioning"},
2307
    {1746, "Failure in bus adapter of partner module"},
2308
    {1747, "Redundancy partner with different hardware or software version"},
2309
    {1760, "Failure on access of flash memory in base unit"},
2310
    {1761, "Failure on access of flash memory in bus adapter"},
2311
    {1762, "Module is operated in the limit range"},
2312
    {1763, "Name of station existing in flash memory (e.g. bus adapter) but not used"},
2313
    {1764, "Increased disturbances detected"},
2314
    {4096, "Zero current after ON command"},
2315
    {4097, "Current flow after OFF command"},
2316
    {4098, "Current flow after ON command"},
2317
    {4099, "Zero current after OFF command"},
2318
    {4100, "Positioner blockage"},
2319
    {4101, "Torque switch concurrence"},
2320
    {4102, "End position switch concurrence"},
2321
    {4103, "End position switch state change "},
2322
    {4104, "End position / torque switch antivalence error"},
2323
    {4105, "Test mode running"},
2324
    {4106, "Test mode current flow"},
2325
    {4107, "Main circuit power failure"},
2326
    {4108, "Protection off mode"},
2327
    {4109, "Wiring fault"},
2328
    {4110, "Module dropped out"},
2329
    {4111, "External memory module not accessible "},
2330
    {4112, "Operating hours counter"},
2331
    {4113, "Generator operation"},
2332
    {4114, "Phase control failure"},
2333
    {4115, "2-phase control active"},
2334
    {4116, "Error after self-diagnosis"},
2335
    {4128, "Prewarning overload (I>115%Ie)"},
2336
    {4129, "Phase unbalance"},
2337
    {4130, "Thermal motor model overload"},
2338
    {4131, "Phase failure + thermal motor model overload"},
2339
    {4132, "Temperature sensor overload"},
2340
    {4133, "Temperature sensor short-circuit"},
2341
    {4134, "Temperature sensor wire break"},
2342
    {4135, "Ground fault"},
2343
    {4136, "Ground fault module ground fault"},
2344
    {4137, "Ground fault module wire break"},
2345
    {4138, "Ground fault module short-circuit"},
2346
    {4139, "Temperature module 1 above threshold T"},
2347
    {4140, "Temperature module 1 sensor error"},
2348
    {4141, "Temperature module 1 outside measuring range"},
2349
    {4142, "Temperature module 2 above threshold T"},
2350
    {4143, "Temperature module 2 sensor error"},
2351
    {4144, "Temperature module 2 outside measuring range"},
2352
    {4145, "Emergency thermal motor model deleted"},
2353
    {4146, "Cooling down period active"},
2354
    {4147, "Missing startup parameters"},
2355
    {4148, "Ramp up time exceeded"},
2356
    {4149, "Ramp up time underrun"},
2357
    {4150, "Ex motor protection parameters received"},
2358
    {4160, "Above threshold I"},
2359
    {4161, "Below threshold I"},
2360
    {4162, "Above threshold P"},
2361
    {4163, "Below threshold P"},
2362
    {4164, "Error (0x1044)"},
2363
    {4165, "Below threshold Cos-Phi"},
2364
    {4166, "Actuator shutoff"},
2365
    {4167, "Below threshold U"},
2366
    {4168, "Analog module 1 above threshold 0/4-20mA"},
2367
    {4169, "Analog module 1 below threshold 0/4-20mA"},
2368
    {4170, "Analog module 2 above threshold 0/4-20mA"},
2369
    {4171, "Analog module 2 below threshold 0/4-20mA"},
2370
    {4172, "Motor blockage"},
2371
    {4173, "Dry-run pump"},
2372
    {4174, "Dry-run-protection error"},
2373
    {4181, "Test trip"},
2374
    {4182, "Number of starting operations reached."},
2375
    {4183, "Number of starting operations exceeded"},
2376
    {4184, "One more starting operation allowed."},
2377
    {4185, "Motor operating hours exceeded"},
2378
    {4186, "Standstill time exceeded"},
2379
    {4187, "Analog module 1 wire break"},
2380
    {4188, "Analog module 2 wire break"},
2381
    {4189, "Analog output wire break"},
2382
    {4190, "F-component test requirement"},
2383
    {4191, "F-component feedback circuit"},
2384
    {4192, "F-component discrepancy error"},
2385
    {4193, "F-component wiring error"},
2386
    {4194, "F-component cross-circuit"},
2387
    {4195, "Error (0x1063)"},
2388
    {4196, "Error (0x1064)"},
2389
    {4208, "External error 1"},
2390
    {4209, "External error 2"},
2391
    {4210, "External error 3"},
2392
    {4211, "External error 4"},
2393
    {4212, "External error 5"},
2394
    {4213, "External error 6"},
2395
    {4214, "Error (0x1076)"},
2396
    {4215, "Error (0x1077)"},
2397
    {4224, "Device error"},
2398
    {4225, "Bypass defective"},
2399
    {4226, "Power semiconductor device defective"},
2400
    {4227, "Switching element overload"},
2401
    {4228, "Supply voltage too low"},
2402
    {4229, "Bypass overload"},
2403
    {4230, "Supply voltage contact blocks too low"},
2404
    {4231, "External bypass defect"},
2405
    {4232, "Power supply to switching element missing"},
2406
    {4233, "Time reserve before tripping underrun"},
2407
    {4234, "Error (0x108A)"},
2408
    {4241, "Zero current"},
2409
    {4242, "Motor connection variant unknown or incorrect  "},
2410
    {4243, "Sensor supply overload"},
2411
    {4244, "Module slot wrong or configuration faulty"},
2412
    {4245, "Parameter fault"},
2413
    {4246, "Process image error"},
2414
    {4247, "Phase failure"},
2415
    {4248, "Connection break in manual mode"},
2416
    {4249, "Error (0x1099)"},
2417
    {4253, "Input action"},
2418
    {4254, "Emergency end position clockwise"},
2419
    {4255, "Emergency end position counter-clockwise"},
2420
    {4261, "Zero current"},
2421
    {4856, "Limit: @3W%d@ °C (@4W%d@ °F)"},
2422
    {4857, "Limit: @2X%d@ %"},
2423
    {4858, "Cooling period in progress ≤ @2X%u@ sec"},
2424
    {4859, "Prohibited Ie / CLASS setting"},
2425
    {4860, "Limit: @2X%d@ % relative to Ie"},
2426
    {4861, "Slot number: @2X%u@"},
2427
    {4862, "Parameter ID @2X%u@"},
2428
    {4939, "Trip reset not possible"},
2429
    {5393, "Tag does not answer"},
2430
    {5394, "Tag access refused due to wrong password. "},
2431
    {5395, "Tag data verification failed."},
2432
    {5396, "Tag reports an unspecific error"},
2433
    {5397, "Tag has insufficient power "},
2434
    {5405, "Error (0x151D)"},
2435
    {5406, "Error (0x151E)"},
2436
    {5407, "Error (0x151F)"},
2437
    {5409, "RF field without tag"},
2438
    {5410, "RF field returns no data"},
2439
    {5411, "RF field returns CRC error"},
2440
    {5413, "RF field without active frequency"},
2441
    {5414, "RF field without active base"},
2442
    {5415, "RF field with more than one tag"},
2443
    {5416, "RF field with unspecific error on air protocol"},
2444
    {5478, "Command Inventory failed"},
2445
    {5479, "Command Read Tag failed"},
2446
    {5480, "Command Write Tag failed"},
2447
    {5481, "Command Write Tag Id failed"},
2448
    {5482, "Command Lock Tag failed"},
2449
    {5483, "Command Kill Tag failed"},
2450
    {5521, "Antenna 1 not connected"},
2451
    {5522, "Antenna 2 not connected"},
2452
    {5523, "Antenna 3 not connected"},
2453
    {5524, "Antenna 4 not connected"},
2454
    {5525, "Antenna 5 not connected"},
2455
    {5526, "Antenna 6 not connected"},
2456
    {5527, "Antenna 7 not connected"},
2457
    {5528, "Antenna 8 not connected"},
2458
    {5537, "Alarm overflow"},
2459
    {20480, "Invalid sensor"},
2460
    {20481, "Reader not found"},
2461
    {20482, "Error (0x5002)"},
2462
    {20483, "Error during DISA signal change"},
2463
    {20484, "Sequence error"},
2464
    {20485, "Internal file error - Program cannot be started"},
2465
    {20486, "Transmit error"},
2466
    {20487, "Transfer error"},
2467
    {20488, "Error (0x5008)"},
2468
    {20489, "Error (0x5009)"},
2469
    {20490, "Program saving error"},
2470
    {20491, "Match error"},
2471
    {20492, "Error (0x500C)"},
2472
    {20493, "TCP communication / archiving / MMI communication error"},
2473
    {20494, "TCP communication / archiving / MMI communication error"},
2474
    {20495, "Lamp overload error"},
2475
    {20496, "Invalid program number error"},
2476
    {20497, "Error (0x5011)"},
2477
    {20498, "PROFINET IO connection error"},
2478
    {20501, "PROFINET IO controller status STOP"},
2479
    {20502, "PROFINET IO configuration error"},
2480
    {20503, "PROFINET IO compatibility error"},
2481
    {20737, "Communication error HCS bus"},
2482
    {20738, "Line voltage error "},
2483
    {20739, "Frequency error"},
2484
    {20740, "Triac short-circuited"},
2485
    {20741, "Incoming fuse tripped or triac is highly resistive"},
2486
    {20742, "Outgoing fuse tripped"},
2487
    {20743, "External error"},
2488
    {20744, "Internal temperature warning "},
2489
    {20745, "Internal temperature error"},
2490
    {20746, "fan error"},
2491
    {20747, "At least one phase is not connected"},
2492
    {20748, "Internal error"},
2493
    {20749, "CIM communication error"},
2494
    {20750, "Error rotating field"},
2495
    {20751, "Phase LX1 is not connected"},
2496
    {20752, "Phase LX3 is not connected"},
2497
    {20753, "Phase LX3 is not connected"},
2498
    {20754, "Polarity error on measuring input "},
2499
    {20755, "partial load missing"},
2500
    {20756, "permitted channel current exceeded"},
2501
    {20757, "permitted current phase LX1 exceeded"},
2502
    {20758, "permitted current phase LX3 exceeded"},
2503
    {20759, "power-setpoint cannot be reached"},
2504
    {20760, "fault current exceeded"},
2505
    {20761, "adaptive softstart cannot be finished"},
2506
    {20762, "permitted current phase LX2 exceeded"},
2507
    {21761, "No supply voltage"},
2508
    {21762, "No server module"},
2509
    {21763, "Too many modules removed "},
2510
    {21764, "Incorrect Base Unit"},
2511
    {21765, "Incorrect bus structure"},
2512
    {24577, "Redundancy link 1 error"},
2513
    {24578, "Redundancy link 2 error"},
2514
    {24832, "Contactor cannot be turned on"},
2515
    {24833, "Contactor cannot be turned off (contacts welded)"},
2516
    {32464, "Error (Quality Code derived)"},
2517
    {32465, "Maintenance demanded (Quality Code derived)"},
2518
    {32466, "Maintenance required (Quality Code derived)"},
2519
    {32467, "Out of service (Quality Code derived)"},
2520
    {32468, "Passivated (Quality Code derived)"},
2521
    {32469, "Simulated (Quality Code derived)"},
2522
    {32470, "Local control override (Quality Code derived)"},
2523
    {32768, "valid for group of @3W%5d@ channels starting with @8W%t#7W@ channel @4W%5d@ "},
2524
    {36864, "Hardware/software error"},
2525
    {36865, "Net error"},
2526
    {36866, "Supply voltage fault"},
2527
    {36867, "DC link fault"},
2528
    {36868, "Power electronics fault"},
2529
    {36869, "Overtemperature of electronic components"},
2530
    {36870, "Ground fault/phase short-circuit detected"},
2531
    {36871, "Motor overload"},
2532
    {36872, "Communication error to the higher-level control system"},
2533
    {36873, "Safety monitoring channel has identified an error"},
2534
    {36874, "Position/velocity process value incorrect or not available"},
2535
    {36875, "Internal connection error (e.g. DRIVE-CLiQ)"},
2536
    {36876, "Infeed defective"},
2537
    {36877, "Braking module faulty"},
2538
    {36878, "Line filter faulty"},
2539
    {36879, "External measured value/signal state outside permitted range"},
2540
    {36880, "Application/technological function faulty"},
2541
    {36881, "Error in parameter assignment/configuration/commissioning"},
2542
    {36882, "General drive fault"},
2543
    {36883, "Auxiliary unit faulty"},
2544
    {36884, "Drive fault (class 20)"},
2545
    {36885, "Drive fault (class 21)"},
2546
    {36886, "Drive fault (class 22)"},
2547
    {36887, "Drive fault (class 23)"},
2548
    {39826, "Error packet size adoption (PIB)"},
2549
    {39827, "Command repetition not supported (PIB)"},
2550
    {39828, "Timeout during INIT (PIB)"},
2551
    {39829, "Ident Unit does not respond to INIT (PIB)"},
2552
    {39830, "Wrong index (PIB)"},
2553
    {39831, "Only INIT as next command allowed (PIB)"},
2554
    {39832, "RXBUF overflow (PIB)"},
2555
    {39833, "Parameter 'Length' too long (PIB)"},
2556
    {39834, "Command code not allowed (PIB)"},
2557
    {39835, "Only INIT command allowed (PIB)"},
2558
    {39931, "Command in which only Write-Config is permissible in this state"},
2559
    {39932, "Command with wrong synchronization between application and tag"},
2560
    {39933, "Command parameter invalid"},
2561
    {39934, "Command index invalid."},
2562
    {39935, "Command invalid"},
2563
    {40024, "Communication error: synchronization error (PIB)"},
2564
    {40025, "Communication error: wrong sequence of acknowledge telegrams (PIB)"},
2565
    {40026, "Communication error: command code and acknowledgement do not correspond (PIB)"},
2566
    {40027, "Communication error: Ident Unit executes a hardware reset (PIB)"},
2567
    {40028, "Communication error: command from another user being processed"},
2568
    {40029, "Communication error: invalid data block length (PIB)"},
2569
    {40030, "Communication error: invalid data block length"},
2570
    {40031, "Communication error: invalid data block number (PIB)"},
2571
    {40032, "Communication error: invalid data block number"},
2572
    {40034, "Communication error: wrong sequence number (PIB)"},
2573
    {40035, "Communication error: wrong sequence number"},
2574
    {40129, "Device error due to cyclic Status Word"},
2575
    {40130, "Device command in this mode not supported"},
2576
    {40131, "Device data buffer overflow"},
2577
    {40132, "Device command buffer overflow"},
2578
    {40133, "Device antenna error or not activated"},
2579
    {40134, "Device hardware failure"},
2580
    {40135, "Device power supply failure"},
2581
    {40228, "File not accessible"},
2582
    {40229, "File length overflow"},
2583
    {40230, "File access right violation"},
2584
    {40231, "File already exists"},
2585
    {40232, "File entries exhausted."},
2586
    {40233, "File system not available on tag type."},
2587
    {40234, "File does not exist"},
2588
    {40235, "File name incorrect."},
2589
    {40334, "RF field with more tags than allowed"},
2590
    {40335, "RF field communication disturbed"},
2591
    {40426, "Tag access violation "},
2592
    {40427, "Tag command not supported "},
2593
    {40428, "Tag does not have the expected ID"},
2594
    {40429, "Tag data structure inconsistent. "},
2595
    {40430, "Tag unformatted"},
2596
    {40431, "Tag memory overflow"},
2597
    {40432, "Tag is defective"},
2598
    {40433, "Tag address or command does not fit the tag characteristics"},
2599
    {40434, "Tag presence error"},
2600
    {40435, "Tag memory error "},
2601
    {65521, "Input channel"},
2602
    {65522, "Output channel"},
2603
    {65523, "Input/Output channel"},
2604
    {0, NULL}
2605
};
2606
2607
static value_string_ext s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8_names_ext =
2608
    VALUE_STRING_EXT_INIT(s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8_names);
2609
2610
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_echet;
2611
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_echet;
2612
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val;
2613
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_0;
2614
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_1;
2615
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_2;
2616
static int hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_3;
2617
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail;
2618
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_0_2; /* mask: 0x00000007 */
2619
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_3;
2620
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_4;
2621
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_5;
2622
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_6;
2623
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_7_10; /* mask: 0x00000780 */
2624
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_11_14; /* mask: 0x00007800 */
2625
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_15; /* mask: 0x00008000 */
2626
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_16; /* mask: 0x00010000 */
2627
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_17; /* mask: 0x00020000 */
2628
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_18; /* mask: 0x00040000 */
2629
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_19; /* mask: 0x00080000 */
2630
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_20; /* mask: 0x00100000 */
2631
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_21; /* mask: 0x00200000 */
2632
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_22; /* mask: 0x00400000 */
2633
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_23; /* mask: 0x00800000 */
2634
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_24; /* mask: 0x01000000 */
2635
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_25; /* mask: 0x02000000 */
2636
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_26; /* mask: 0x04000000 */
2637
static int hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_27_31; /* mask: 0xF8000000 */
2638
2639
2640
static int hf_s7comm_szl_xy78_xxxx_dis_io_state;
2641
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_0;
2642
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_1;
2643
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_2;
2644
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_3;
2645
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_4;
2646
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_5;
2647
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_6;
2648
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_7;
2649
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_8_14;
2650
static int hf_s7comm_szl_xy78_xxxx_dis_io_state_15;
2651
static int hf_s7comm_szl_xy78_xxxx_dis_res;
2652
static int hf_s7comm_szl_xy78_xxxx_dis_maint_state;
2653
static const value_string s7comm_szl_xy78_xxxx_dis_maint_state_names[] = {
2654
    { 0x0,                                  "Good" },
2655
    { 0x1,                                  "DevicePassivated" },
2656
    { 0x2,                                  "OutOfService" },
2657
    { 0x3,                                  "Simulated" },
2658
    { 0x4,                                  "LocalOperation" },
2659
    { 0x5,                                  "MaintenanceRequired" },
2660
    { 0x6,                                  "MaintenanceDemanded" },    
2661
    { 0x7,                                  "MaintenanceAlarm" },
2662
    { 0x8,                                  "Unknown" },
2663
    { 0x9,                                  "ConfigurationChanged" },
2664
    { 0xA,                                  "IOnotAvailable" },
2665
    { 0,                                    NULL }
2666
};
2667
2668
static int hf_s7comm_szl_xy78_xxxx_dis_operating_state;
2669
static int hf_s7comm_szl_xy78_xxxx_dis_own_state;
2670
static const value_string s7comm_szl_xy78_xxxx_dis_own_state_names[] = {
2671
    { 0x0,                                  "Good" },
2672
    { 0x1,                                  "Deactivated" },
2673
    { 0x2,                                  "Maintenance Required" },
2674
    { 0x3,                                  "Maintenance Demanded" },
2675
    { 0x4,                                  "Error" },
2676
    { 0x5,                                  "Not Reachable" },
2677
    { 0x6,                                  "Unknown" },
2678
    { 0x7,                                  "IOnotAvailable" },
2679
    { 0,                                    NULL }
2680
};
2681
2682
static int hf_s7comm_szl_xy78_xxxx_sub_ord_io_state;
2683
static int hf_s7comm_szl_xy78_xxxx_sub_ord_state;
2684
static int hf_s7comm_szl_xy78_xxxx_disp_own_state;
2685
static int hf_s7comm_szl_xy78_xxxx_disp_sub_ord_state;
2686
static int hf_s7comm_szl_xy78_xxxx_disp_mode;
2687
static int hf_s7comm_szl_xy78_xxxx_vendor;
2688
static int hf_s7comm_szl_xy78_xxxx_order_id;
2689
static int hf_s7comm_szl_xy78_xxxx_im1;
2690
static int hf_s7comm_szl_xy78_xxxx_iam1_function;
2691
static int hf_s7comm_szl_xy78_xxxx_iam1_location;
2692
static int hf_s7comm_szl_xy78_xxxx_asset_id;
2693
static int hf_s7comm_szl_xy78_xxxx_tlv;
2694
static int hf_s7comm_szl_xy78_xxxx_tlv_num;
2695
static int hf_s7comm_szl_xy78_xxxx_tlv_item;
2696
2697
static int hf_s7comm_szl_xy78_xxxx_tlv_item_type;
2698
static const value_string szl_xy78_xxxx_tlv_item_type_names[] = {
2699
    { 0x1,                                  "DTI-Type" },
2700
    { 0x2,                                  "Alarm-SD" },
2701
    { 0x3,                                  "Propagation behaviour" },
2702
    { 0,                                    NULL }
2703
};
2704
2705
static int hf_s7comm_szl_xy78_xxxx_tlv_item_len;
2706
static int hf_s7comm_szl_xy78_xxxx_tlv_item_data;
2707
static int hf_s7comm_szl_xy78_xxxx_tlv_item_dti_type;
2708
static const value_string szl_xy78_xxxx_tlv_item_dti_type_name[] = {
2709
    { 0x1,                                  "IO-System" },
2710
    { 0x2,                                  "Device" },
2711
    { 0x3,                                  "Rack" },
2712
    { 0x4,                                  "Module" },
2713
    { 0x5,                                  "Submodule" },
2714
    { 0xB,                                  "IO-Device Agent" },
2715
    { 0,                                    NULL }
2716
};
2717
2718
static int ett_s7comm_szl_xy78_xxxx_geo_addr;
2719
static int ett_s7comm_szl_xy78_xxxx_dis;
2720
static int ett_s7comm_szl_xy78_xxxx_dis_cdiags;
2721
static int ett_s7comm_szl_xy78_xxxx_dis_cdiag_entry;
2722
static int ett_s7comm_szl_xy78_xxxx_dis_cdiag_add_val;
2723
static int ett_s7comm_szl_xy78_xxxx_iam1;
2724
static int ett_s7comm_szl_xy78_xxxx_tlv;
2725
static int ett_s7comm_szl_xy78_xxxx_tlv_item;
2726
2727
static int ett_s7comm_szl_xy78_xxxx_dis_io_state;
2728
static int* const s7comm_szl_xy78_xxxx_dis_io_state_fields[] = {
2729
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_0,
2730
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_1,
2731
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_2,
2732
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_3,
2733
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_4,
2734
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_5,
2735
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_6,
2736
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_7,
2737
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_8_14,
2738
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_15,
2739
    NULL
2740
};
2741
2742
static int ett_s7comm_szl_xy78_xxxx_sub_ord_io_state;
2743
static int* const s7comm_szl_xy78_xxxx_sub_ord_io_state_fields[] = {
2744
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_0,
2745
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_1,
2746
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_2,
2747
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_3,
2748
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_4,
2749
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_5,
2750
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_6,
2751
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_7,
2752
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_8_14,
2753
    &hf_s7comm_szl_xy78_xxxx_dis_io_state_15,
2754
    NULL
2755
};
2756
2757
static int ett_s7comm_szl_xy78_xxxx_dis_comp_state_detail;
2758
static int* const s7comm_szl_xy78_xxxx_dis_comp_state_detail_fields[] = {
2759
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_0_2,
2760
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_3,
2761
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_4,
2762
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_5,
2763
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_6,
2764
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_7_10,
2765
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_11_14,
2766
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_15,
2767
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_16,
2768
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_17,
2769
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_18,
2770
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_19,
2771
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_20,
2772
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_21,
2773
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_22,
2774
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_23,
2775
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_24,
2776
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_25,
2777
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_26,
2778
    &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_27_31,
2779
    NULL
2780
};
2781
2782
/*******************************************************************************************************
2783
 *
2784
 * Get the textual description of the szl index. Returns NULL if not description available
2785
 *
2786
 *******************************************************************************************************/
2787
static const char*
2788
s7comm_get_szl_id_index_description_text(uint16_t id, uint16_t idx)
2789
35
{
2790
35
    const char* str = NULL;
2791
35
    switch (id) {
2792
0
        case 0x0077:
2793
0
            str = "DNN-Id";
2794
0
            break;
2795
0
        case 0x0078:
2796
0
            str = "DNN-Id";
2797
0
            break;
2798
0
        case 0x0111:
2799
0
            str = val_to_str_const(idx, szl_0111_index_names, "No description available");
2800
0
            break;
2801
0
        case 0x0112:
2802
0
            str = val_to_str_const(idx, szl_0112_index_names, "No description available");
2803
0
            break;
2804
0
        case 0x0113:
2805
0
            str = val_to_str_const(idx, szl_0113_index_names, "No description available");
2806
0
            break;
2807
0
        case 0x0114:
2808
0
            str = val_to_str_const(idx, szl_0114_index_names, "No description available");
2809
0
            break;
2810
0
        case 0x0115:
2811
0
            str = val_to_str_const(idx, szl_0115_index_names, "No description available");
2812
0
            break;
2813
0
        case 0x0116:
2814
0
            str = val_to_str_const(idx, szl_0116_index_names, "No description available");
2815
0
            break;
2816
0
        case 0x0118:
2817
0
            str = val_to_str_const(idx, szl_0118_index_names, "No description available");
2818
0
            break;
2819
0
        case 0x0119:
2820
0
            str = val_to_str_const(idx, szl_0119_0174_ledid_index_names, "No description available");
2821
0
            break;
2822
0
        case 0x0121:
2823
0
            str = val_to_str_const(idx, szl_0121_index_names, "No description available");
2824
0
            break;
2825
0
        case 0x0222:
2826
0
            str = val_to_str_const(idx, szl_0222_index_names, "No description available");
2827
0
            break;
2828
0
        case 0x0524:
2829
0
            str = val_to_str_const(idx, szl_0524_index_names, "No description available");
2830
0
            break;
2831
0
        case 0x0131:
2832
0
            str = val_to_str_const(idx, szl_0131_index_names, "No description available");
2833
0
            break;
2834
0
        case 0x0132:
2835
0
            str = val_to_str_const(idx, szl_0132_index_names, "No description available");
2836
0
            break;
2837
0
        case 0x0174:
2838
0
            str = val_to_str_const(idx, szl_0119_0174_ledid_index_names, "No description available");
2839
0
            break;
2840
0
        case 0x011c:
2841
0
        case 0x031c:
2842
0
            str = val_to_str_const(idx, szl_xy1c_index_names, "No description available");
2843
0
            break;
2844
35
    }
2845
35
    return str;
2846
35
}
2847
2848
/*******************************************************************************************************
2849
 *******************************************************************************************************
2850
 *
2851
 * PDU Type: User Data -> Function group 4 -> SZL functions -> All known SZD-ID and Indices
2852
 *
2853
 *******************************************************************************************************
2854
 *******************************************************************************************************/
2855
2856
/*******************************************************************************************************
2857
 *
2858
 * SZL-ID:      0xxy00
2859
 * Content:
2860
 *   If you read the partial lists with SZL-ID W#16#xy00, you obtain the
2861
 *   SZL-IDs supported by the module.
2862
 *
2863
 *  The SZL-ID of the partial list extract
2864
 * W#16#0000H: all SZL partial lists of the module
2865
 * W#16#0100H: a partial list with all partial list extracts
2866
 * W#16#0200H: a partial list extract
2867
 * W#16#0300H: possible indexes of a partial list extract
2868
 * W#16#0F00H: only partial list header information
2869
 *
2870
 *******************************************************************************************************/
2871
static void
2872
s7comm_szl_0000_0000_register(int proto)
2873
15
{
2874
15
    static hf_register_info hf[] = {
2875
15
        { &hf_s7comm_szl_0000_0000_szl_id,
2876
15
        { "SZL ID that exists", "s7comm.szl.0000.0000.szl_id", FT_UINT16, BASE_HEX | BASE_EXT_STRING, &szl_id_partlist_ex_names_ext, 0x0,
2877
15
          NULL, HFILL }},
2878
15
        { &hf_s7comm_szl_0000_0000_module_type_class,
2879
15
        { "Module type class", "s7comm.szl.0000.0000.module_type_class", FT_UINT16, BASE_HEX, NULL, 0xf000,
2880
15
          NULL, HFILL }},
2881
15
        { &hf_s7comm_szl_0000_0000_partlist_extr_nr,
2882
15
        { "Number of the SZL partial list extract", "s7comm.szl.0000.0000.partlist_extr_nr", FT_UINT16, BASE_HEX, NULL, 0x0f00,
2883
15
          NULL, HFILL }},
2884
15
        { &hf_s7comm_szl_0000_0000_partlist_nr,
2885
15
        { "Number of the SZL partial list", "s7comm.szl.0000.0000.partlist_nr", FT_UINT16, BASE_HEX, NULL, 0x00ff,
2886
15
          NULL, HFILL }}
2887
15
    };
2888
15
    proto_register_field_array(proto, hf, array_length(hf));
2889
15
}
2890
2891
/*----------------------------------------------------------------------------------------------------*/
2892
static uint32_t
2893
s7comm_decode_szl_id_xy00(tvbuff_t *tvb,
2894
                          proto_tree *tree,
2895
                          uint16_t id,
2896
                          uint16_t idx,
2897
                          uint32_t offset)
2898
0
{
2899
0
    if (id == 0 && idx == 0) {
2900
0
        proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_szl_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2901
0
        offset += 2;
2902
0
    } else if (id == 0x0100) {
2903
0
        proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_module_type_class, tvb, offset, 2, ENC_BIG_ENDIAN);
2904
0
        proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_partlist_nr, tvb, offset, 2, ENC_BIG_ENDIAN);
2905
0
        offset += 2;
2906
0
    } else if (id == 0x0200 || id == 0x0300) {
2907
0
        proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_module_type_class, tvb, offset, 2, ENC_BIG_ENDIAN);
2908
0
        proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_partlist_extr_nr, tvb, offset, 2, ENC_BIG_ENDIAN);
2909
0
        proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_partlist_nr, tvb, offset, 2, ENC_BIG_ENDIAN);
2910
0
        offset += 2;
2911
0
    } else {
2912
        /* 0x0f00 / 0x000: Partial list header information (number of all SZL-IDs of the module */
2913
0
        proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_szl_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2914
0
        offset += 2;
2915
0
    }
2916
2917
0
    return offset;
2918
0
}
2919
2920
/*******************************************************************************************************
2921
 *
2922
 * SZL-ID:  0x0013
2923
 * Index:   0x0000
2924
 * Content:
2925
 *  If you read the partial list with SZL-ID W#16#xy13, you obtain information
2926
 *  about the memory areas of the module.
2927
 *
2928
 *  The SZL-ID of the partial list extract
2929
 *      W#16#0013: data records of all memory areas
2930
 *      W#16#0113: data record for one memory area, You specify the memory area with the INDEX parameter.
2931
 *      W#16#0F13: only partial list header information
2932
 *
2933
 *******************************************************************************************************/
2934
static void
2935
s7comm_szl_0013_0000_register(int proto)
2936
15
{
2937
15
    static hf_register_info hf[] = {
2938
15
        { &hf_s7comm_szl_0013_0000_index,
2939
15
        { "Index", "s7comm.szl.0013.0000.index", FT_UINT16, BASE_HEX, VALS(szl_0113_index_names), 0x0,
2940
15
          "Index of an identification data record", HFILL }},
2941
15
        { &hf_s7comm_szl_0013_0000_code,
2942
15
        { "Code (Memory type)", "s7comm.szl.0013.0000.code", FT_UINT16, BASE_HEX, VALS(szl_memory_type_names), 0x0,
2943
15
          NULL, HFILL }},
2944
15
        { &hf_s7comm_szl_0013_0000_size,
2945
15
        { "Size (Total size of the selected memory, total of area 1 and area 2)", "s7comm.szl.0013.0000.size", FT_UINT32, BASE_DEC, NULL, 0x0,
2946
15
          NULL, HFILL }},
2947
15
        { &hf_s7comm_szl_0013_0000_mode,
2948
15
        { "Mode (Logical mode of the memory)", "s7comm.szl.0013.0000.mode", FT_UINT32, BASE_DEC, NULL, 0x0,
2949
15
          NULL, HFILL }},
2950
15
        { &hf_s7comm_szl_0013_0000_mode_0,
2951
15
        { "Volatile memory area", "s7comm.szl.0013.0000.mode.vol_mem", FT_BOOLEAN, 8, NULL, 0x01,
2952
15
          "Bit 0: Volatile memory area", HFILL }},
2953
15
        { &hf_s7comm_szl_0013_0000_mode_1,
2954
15
        { "Non-volatile memory area", "s7comm.szl.0013.0000.mode.nvol_mem", FT_BOOLEAN, 8, NULL, 0x02,
2955
15
          "Bit 1: Non-volatile memory area", HFILL }},
2956
15
        { &hf_s7comm_szl_0013_0000_mode_2,
2957
15
        { "Mixed memory area", "s7comm.szl.0013.0000.mode.mixed_mem", FT_BOOLEAN, 8, NULL, 0x04,
2958
15
          "Bit 2: Mixed memory area", HFILL }},
2959
15
        { &hf_s7comm_szl_0013_0000_mode_3,
2960
15
        { "Code and data separate (for work memory)", "s7comm.szl.0013.0000.mode.cd_sep", FT_BOOLEAN, 8, NULL, 0x08,
2961
15
          "Bit 3: Code and data separate (for work memory)", HFILL }},
2962
15
        { &hf_s7comm_szl_0013_0000_mode_4,
2963
15
        { "Code and data together (for work memory)", "s7comm.szl.0013.0000.mode.cd_tog", FT_BOOLEAN, 8, NULL, 0x10,
2964
15
          "Bit 4: Code and data together (for work memory)", HFILL }},
2965
15
        { &hf_s7comm_szl_0013_0000_granu,
2966
15
        { "Granu", "s7comm.szl.0013.0000.granu", FT_UINT16, BASE_HEX, NULL, 0x0,
2967
15
          "Granu (Always has the value 0)", HFILL }},
2968
15
        { &hf_s7comm_szl_0013_0000_ber1,
2969
15
        { "ber1 (Size of the volatile memory area in bytes)", "s7comm.szl.0013.0000.ber1", FT_UINT32, BASE_DEC, NULL, 0x0,
2970
15
          NULL, HFILL }},
2971
15
        { &hf_s7comm_szl_0013_0000_belegt1,
2972
15
        { "belegt1 (Size of the volatile memory area being used)", "s7comm.szl.0013.0000.belegt1", FT_UINT32, BASE_DEC, NULL, 0x0,
2973
15
          NULL, HFILL }},
2974
15
        { &hf_s7comm_szl_0013_0000_block1,
2975
15
        { "block1 (Largest free block in the volatile memory area)", "s7comm.szl.0013.0000.block1", FT_UINT32, BASE_DEC, NULL, 0x0,
2976
15
          NULL, HFILL }},
2977
15
        { &hf_s7comm_szl_0013_0000_ber2,
2978
15
        { "ber2 (Size of the non-volatile memory area in bytes)", "s7comm.szl.0013.0000.ber2", FT_UINT32, BASE_DEC, NULL, 0x0,
2979
15
          NULL, HFILL }},
2980
15
        { &hf_s7comm_szl_0013_0000_belegt2,
2981
15
        { "belegt2 (Size of the non-volatile memory area being used)", "s7comm.szl.0013.0000.belegt2", FT_UINT32, BASE_DEC, NULL, 0x0,
2982
15
          NULL, HFILL }},
2983
15
        { &hf_s7comm_szl_0013_0000_block2,
2984
15
        { "block2 (Largest free block in the non-volatile memory area)", "s7comm.szl.0013.0000.block2", FT_UINT32, BASE_DEC, NULL, 0x0,
2985
15
          NULL, HFILL }}
2986
15
    };
2987
15
    proto_register_field_array(proto, hf, array_length(hf));
2988
15
}
2989
2990
/*----------------------------------------------------------------------------------------------------*/
2991
static uint32_t
2992
s7comm_decode_szl_id_0013_idx_0000(tvbuff_t *tvb,
2993
                                   proto_tree *tree,
2994
                                   uint32_t offset)
2995
0
{
2996
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2997
0
    offset += 2;
2998
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2999
0
    offset += 2;
3000
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_size, tvb, offset, 4, ENC_BIG_ENDIAN);
3001
0
    offset += 4;
3002
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode, tvb, offset, 2, ENC_BIG_ENDIAN);
3003
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_0, tvb, offset, 2, ENC_BIG_ENDIAN);
3004
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_1, tvb, offset, 2, ENC_BIG_ENDIAN);
3005
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_2, tvb, offset, 2, ENC_BIG_ENDIAN);
3006
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_3, tvb, offset, 2, ENC_BIG_ENDIAN);
3007
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_4, tvb, offset, 2, ENC_BIG_ENDIAN);
3008
0
    offset += 2;
3009
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_granu, tvb, offset, 2, ENC_BIG_ENDIAN);
3010
0
    offset += 2;
3011
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_ber1, tvb, offset, 4, ENC_BIG_ENDIAN);
3012
0
    offset += 4;
3013
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_belegt1, tvb, offset, 4, ENC_BIG_ENDIAN);
3014
0
    offset += 4;
3015
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_block1, tvb, offset, 4, ENC_BIG_ENDIAN);
3016
0
    offset += 4;
3017
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_ber2, tvb, offset, 4, ENC_BIG_ENDIAN);
3018
0
    offset += 4;
3019
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_belegt2, tvb, offset, 4, ENC_BIG_ENDIAN);
3020
0
    offset += 4;
3021
0
    proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_block2, tvb, offset, 4, ENC_BIG_ENDIAN);
3022
0
    offset += 4;
3023
3024
0
    return offset;
3025
0
}
3026
3027
/*******************************************************************************************************
3028
 *
3029
 * SZL-ID:  0xxy14
3030
 * Index:   0x000x
3031
 * Content:
3032
 *  If you read the system status list with SZL-ID W#16#xy14, you obtain
3033
 *  information about the system areas of the module.
3034
 *
3035
 *******************************************************************************************************/
3036
static void
3037
s7comm_szl_xy14_000x_register(int proto)
3038
15
{
3039
15
    static hf_register_info hf[] = {
3040
15
        { &hf_s7comm_szl_xy14_000x_index,
3041
15
        { "Index", "s7comm.szl.xy14.000x.index", FT_UINT16, BASE_HEX, VALS(szl_0114_index_names), 0x0,
3042
15
          "Index of the system area", HFILL }},
3043
15
        { &hf_s7comm_szl_xy14_000x_code,
3044
15
        { "Code (Memory type)", "s7comm.szl.xy14.000x.code", FT_UINT16, BASE_HEX, VALS(szl_memory_type_names), 0x0,
3045
15
          NULL, HFILL }},
3046
15
        { &hf_s7comm_szl_xy14_000x_quantity,
3047
15
        { "Quantity (Number of elements of the system area)", "s7comm.szl.xy14.000x.quantity", FT_UINT16, BASE_DEC, NULL, 0x0,
3048
15
          NULL, HFILL }},
3049
15
        { &hf_s7comm_szl_xy14_000x_reman,
3050
15
        { "Reman (Number of retentive elements)", "s7comm.szl.xy14.000x.reman", FT_UINT16, BASE_DEC, NULL, 0x0,
3051
15
          NULL, HFILL }}
3052
15
    };
3053
15
    proto_register_field_array(proto, hf, array_length(hf));
3054
15
}
3055
3056
/*----------------------------------------------------------------------------------------------------*/
3057
static uint32_t
3058
s7comm_decode_szl_id_xy14_idx_000x(tvbuff_t *tvb,
3059
                                   proto_tree *tree,
3060
                                   uint32_t offset)
3061
0
{
3062
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy14_000x_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3063
0
    offset += 2;
3064
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy14_000x_code, tvb, offset, 2, ENC_BIG_ENDIAN);
3065
0
    offset += 2;
3066
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy14_000x_quantity, tvb, offset, 2, ENC_BIG_ENDIAN);
3067
0
    offset += 2;
3068
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy14_000x_reman, tvb, offset, 2, ENC_BIG_ENDIAN);
3069
0
    offset += 2;
3070
3071
0
    return offset;
3072
0
}
3073
3074
/*******************************************************************************************************
3075
 *
3076
 * SZL-ID:  0xxy15
3077
 * Index:   0x000x
3078
 * Content:
3079
 *  If you read the system status list with SZL-ID W#16#xy14, you obtain
3080
 *  the block types that exist on the module.
3081
 *
3082
 *******************************************************************************************************/
3083
static void
3084
s7comm_szl_xy15_000x_register(int proto)
3085
15
{
3086
15
    static hf_register_info hf[] = {
3087
15
        { &hf_s7comm_szl_xy15_000x_index,
3088
15
        { "Index", "s7comm.szl.xy15.000x.index", FT_UINT16, BASE_HEX, VALS(szl_0115_index_names), 0x0,
3089
15
          "Block type number", HFILL }},
3090
15
        { &hf_s7comm_szl_xy15_000x_maxanz,
3091
15
        { "MaxAnz (Maximum number of blocks of the type)", "s7comm.szl.xy15.000x.maxanz", FT_UINT16, BASE_DEC, NULL, 0x0,
3092
15
          NULL, HFILL }},
3093
15
        { &hf_s7comm_szl_xy15_000x_maxlng,
3094
15
        { "MaxLng (Maximum total size of the object to be loaded in Kbytes)", "s7comm.szl.xy15.000x.maxlng", FT_UINT16, BASE_DEC, NULL, 0x0,
3095
15
          NULL, HFILL }},
3096
15
        { &hf_s7comm_szl_xy15_000x_maxabl,
3097
15
        { "MaxAbl (Maximum length of the work memory part of a block in bytes)", "s7comm.szl.xy15.000x.maxabl", FT_UINT32, BASE_DEC, NULL, 0x0,
3098
15
          NULL, HFILL }}
3099
15
    };
3100
15
    proto_register_field_array(proto, hf, array_length(hf));
3101
15
}
3102
3103
/*----------------------------------------------------------------------------------------------------*/
3104
static uint32_t
3105
s7comm_decode_szl_id_xy15_idx_000x(tvbuff_t *tvb,
3106
                                   proto_tree *tree,
3107
                                   uint32_t offset)
3108
0
{
3109
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy15_000x_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3110
0
    offset += 2;
3111
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy15_000x_maxanz, tvb, offset, 2, ENC_BIG_ENDIAN);
3112
0
    offset += 2;
3113
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy15_000x_maxlng, tvb, offset, 2, ENC_BIG_ENDIAN);
3114
0
    offset += 2;
3115
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy15_000x_maxabl, tvb, offset, 4, ENC_BIG_ENDIAN);
3116
0
    offset += 4;
3117
3118
0
    return offset;
3119
0
}
3120
3121
/*******************************************************************************************************
3122
 *
3123
 * SZL-ID:  0xxy11
3124
 * Index:   0x0001
3125
 * Content:
3126
 *  If you read the system status list with SZL-ID W#16#xy11, you obtain the
3127
 *  module identification of the module.
3128
 *
3129
 *******************************************************************************************************/
3130
static void
3131
s7comm_szl_xy11_0001_register(int proto)
3132
15
{
3133
15
    static hf_register_info hf[] = {
3134
15
        { &hf_s7comm_szl_xy11_0001_index,
3135
15
        { "Index", "s7comm.szl.xy11.0001.index", FT_UINT16, BASE_HEX, VALS(szl_0111_index_names), 0x0,
3136
15
          "Index of an identification data record", HFILL }},
3137
15
        { &hf_s7comm_szl_xy11_0001_mlfb,
3138
15
        { "MlfB (Order number of the module)", "s7comm.szl.xy11.0001.anz", FT_STRING, BASE_NONE, NULL, 0x0,
3139
15
          NULL, HFILL }},
3140
15
        { &hf_s7comm_szl_xy11_0001_bgtyp,
3141
15
        { "BGTyp (Module type ID)", "s7comm.szl.xy11.0001.bgtyp", FT_UINT16, BASE_HEX, NULL, 0x0,
3142
15
          NULL, HFILL }},
3143
15
        { &hf_s7comm_szl_xy11_0001_ausbg,
3144
15
        { "Ausbg (Version of the module or release of the operating system)", "s7comm.szl.xy11.0001.ausbg", FT_UINT16, BASE_DEC, NULL, 0x0,
3145
15
          NULL, HFILL }},
3146
15
        { &hf_s7comm_szl_xy11_0001_ausbe,
3147
15
        { "Ausbe (Release of the PG description file)", "s7comm.szl.xy11.0001.ausbe", FT_UINT16, BASE_DEC, NULL, 0x0,
3148
15
          NULL, HFILL }}
3149
15
    };
3150
15
    proto_register_field_array(proto, hf, array_length(hf));
3151
15
}
3152
3153
/*----------------------------------------------------------------------------------------------------*/
3154
static uint32_t
3155
s7comm_decode_szl_id_0111_idx_0001(tvbuff_t *tvb,
3156
                                   proto_tree *tree,
3157
                                   uint32_t offset)
3158
0
{
3159
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3160
0
    offset += 2;
3161
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_mlfb, tvb, offset, 20, ENC_ASCII);
3162
0
    offset += 20;
3163
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_bgtyp, tvb, offset, 2, ENC_BIG_ENDIAN);
3164
0
    offset += 2;
3165
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_ausbg, tvb, offset, 2, ENC_BIG_ENDIAN);
3166
0
    offset += 2;
3167
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_ausbe, tvb, offset, 2, ENC_BIG_ENDIAN);
3168
0
    offset += 2;
3169
3170
0
    return offset;
3171
0
}
3172
3173
/*******************************************************************************************************
3174
 *
3175
 * SZL-ID:  0xxy22
3176
 * Index:   0x00xx
3177
 * Content:
3178
 *  Contains information about the current status of interrupt
3179
 *  processing and interrupt generation in the module.
3180
 *
3181
 *******************************************************************************************************/
3182
static void
3183
s7comm_szl_xy22_00xx_register(int proto)
3184
15
{
3185
15
    static hf_register_info hf[] = {
3186
15
        { &hf_s7comm_szl_xy22_00xx_info,
3187
15
        { "Start info for the given OB", "s7comm.szl.xy22.00xx.info", FT_BYTES, BASE_NONE, NULL, 0x0,
3188
15
          NULL, HFILL }},
3189
15
        { &hf_s7comm_szl_xy22_00xx_al1,
3190
15
        { "al1 (Processing identifiers)", "s7comm.szl.xy22.00xx.al1", FT_UINT16, BASE_HEX, NULL, 0x0,
3191
15
          NULL, HFILL }},
3192
15
        { &hf_s7comm_szl_xy22_00xx_al1_0,
3193
15
        { "Interrupt event is caused by parameters disabled", "s7comm.szl.xy22.00xx.al1.evpd", FT_BOOLEAN, 16, NULL, 0x0001,
3194
15
          "Bit 0: Interrupt event is caused by parameters, 0=Enabled, 1=Disabled", HFILL }},
3195
15
        { &hf_s7comm_szl_xy22_00xx_al1_1,
3196
15
        { "Interrupt event as per SFC 39 locked", "s7comm.szl.xy22.00xx.al1.iel", FT_BOOLEAN, 16, NULL, 0x0002,
3197
15
          "Bit 1: Interrupt event as per SFC 39, 0=Not locked, 1=Locked", HFILL }},
3198
15
        { &hf_s7comm_szl_xy22_00xx_al1_2,
3199
15
        { "Interrupt source is active", "s7comm.szl.xy22.00xx.al1.isia", FT_BOOLEAN, 16, NULL, 0x0004,
3200
15
          "Bit 2: Interrupt source is active", HFILL }},
3201
15
        { &hf_s7comm_szl_xy22_00xx_al1_4,
3202
15
        { "Interrupt OB is loaded", "s7comm.szl.xy22.00xx.al1.ioil", FT_BOOLEAN, 16, NULL, 0x0010,
3203
15
          "Bit 4: Interrupt OB, 0=Is not loaded, 1=Is loaded", HFILL }},
3204
15
        { &hf_s7comm_szl_xy22_00xx_al1_5,
3205
15
        { "Interrupt OB is locked by TIS", "s7comm.szl.xy22.00xx.al1.ioilbt", FT_BOOLEAN, 16, NULL, 0x0020,
3206
15
          "Bit 5: Interrupt OB is by TIS, 1=Locked", HFILL }},
3207
15
        { &hf_s7comm_szl_xy22_00xx_al1_6,
3208
15
        { "Entry in diagnostic buffer locked", "s7comm.szl.xy22.00xx.al1.eidbl", FT_BOOLEAN, 16, NULL, 0x0040,
3209
15
          "Bit 6: Entry in diagnostic buffer, 1=Locked", HFILL }},
3210
15
        { &hf_s7comm_szl_xy22_00xx_al2,
3211
15
        { "al2 (Reaction with not loaded/locked OB)", "s7comm.szl.xy22.00xx.al2", FT_UINT16, BASE_HEX, NULL, 0x0,
3212
15
          NULL, HFILL }},
3213
15
        { &hf_s7comm_szl_xy22_00xx_al2_0,
3214
15
        { "Lock interrupt source", "s7comm.szl.xy22.00xx.al2.lis", FT_BOOLEAN, 16, NULL, 0x0001,
3215
15
          "Bit 0: Lock interrupt source", HFILL }},
3216
15
        { &hf_s7comm_szl_xy22_00xx_al2_1,
3217
15
        { "Generate interrupt event error", "s7comm.szl.xy22.00xx.al2.giee", FT_BOOLEAN, 16, NULL, 0x0002,
3218
15
          "Bit 1: Generate interrupt event error", HFILL }},
3219
15
        { &hf_s7comm_szl_xy22_00xx_al2_2,
3220
15
        { "CPU goes into STOP mode", "s7comm.szl.xy22.00xx.al2.gism", FT_BOOLEAN, 16, NULL, 0x0004,
3221
15
          "Bit 2: CPU goes into STOP mode", HFILL }},
3222
15
        { &hf_s7comm_szl_xy22_00xx_al2_3,
3223
15
        { "Interrupt only discarded", "s7comm.szl.xy22.00xx.al2.iod", FT_BOOLEAN, 16, NULL, 0x0008,
3224
15
          "Bit 3: Interrupt only discarded", HFILL }},
3225
15
        { &hf_s7comm_szl_xy22_00xx_al3,
3226
15
        { "al3 (Discarded by TIS functions)", "s7comm.szl.xy22.00xx.al3", FT_UINT32, BASE_HEX, NULL, 0x0,
3227
15
          NULL, HFILL }}
3228
15
    };
3229
15
    proto_register_field_array(proto, hf, array_length(hf));
3230
15
}
3231
3232
/*----------------------------------------------------------------------------------------------------*/
3233
static uint32_t
3234
s7comm_decode_szl_id_xy22_idx_00xx(tvbuff_t *tvb,
3235
                                   proto_tree *tree,
3236
                                   uint32_t offset)
3237
0
{
3238
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy22_00xx_info, tvb, offset, 20, ENC_NA);
3239
0
    offset += 20;
3240
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_xy22_00xx_al1,
3241
0
        ett_s7comm_szl_xy22_00xx_al1, s7comm_szl_xy22_00xx_al1_fields, ENC_BIG_ENDIAN);
3242
0
    offset += 2;
3243
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_xy22_00xx_al2,
3244
0
        ett_s7comm_szl_xy22_00xx_al2, s7comm_szl_xy22_00xx_al2_fields, ENC_BIG_ENDIAN);
3245
0
    offset += 2;
3246
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy22_00xx_al3, tvb, offset, 4, ENC_BIG_ENDIAN);
3247
0
    offset += 4;
3248
3249
0
    return offset;
3250
0
}
3251
3252
/*******************************************************************************************************
3253
 *
3254
 * SZL-ID:  0x0131
3255
 * Index:   0x0001
3256
 * Content:
3257
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0001
3258
 *  contains general data about the communication of a communication unit.
3259
 *
3260
 *******************************************************************************************************/
3261
static void
3262
s7comm_szl_0131_0001_register(int proto)
3263
15
{
3264
15
    static hf_register_info hf[] = {
3265
15
        { &hf_s7comm_szl_0131_0001_index,
3266
15
        { "Index", "s7comm.szl.0131.0001.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3267
15
          "W#16#0001: Index for general communication data", HFILL }},
3268
15
        { &hf_s7comm_szl_0131_0001_pdu,
3269
15
        { "pdu (Maximum PDU size in bytes)", "s7comm.szl.0131.0001.pdu", FT_UINT16, BASE_DEC, NULL, 0x0,
3270
15
          "Maximum PDU size in bytes", HFILL }},
3271
15
        { &hf_s7comm_szl_0131_0001_anz,
3272
15
        { "anz (Maximum number of communication connections)", "s7comm.szl.0131.0001.anz", FT_UINT16, BASE_DEC, NULL, 0x0,
3273
15
          "Maximum number of communication connections", HFILL }},
3274
15
        { &hf_s7comm_szl_0131_0001_mpi_bps,
3275
15
        { "mpi_bps (Maximum data rate of the MPI in hexadecimal format)", "s7comm.szl.0131.0001.mpi_bps", FT_UINT32, BASE_HEX, NULL, 0x0,
3276
15
          "Maximum data rate of the MPI in hexadecimal format, Example: 0x2DC6C corresponds to 187500 bps", HFILL }},
3277
15
        { &hf_s7comm_szl_0131_0001_kbus_bps,
3278
15
        { "mkbus_bps (Maximum data rate of the communication bus)", "s7comm.szl.0131.0001.kbus_bps", FT_UINT32, BASE_HEX, NULL, 0x0,
3279
15
          "Maximum data rate of the communication bus", HFILL }},
3280
15
        { &hf_s7comm_szl_0131_0001_res,
3281
15
        { "res (Reserved)", "s7comm.szl.0131.0001.res", FT_BYTES, BASE_NONE, NULL, 0x0,
3282
15
          "Reserved", HFILL }}
3283
15
    };
3284
15
    proto_register_field_array(proto, hf, array_length(hf));
3285
15
}
3286
3287
/*----------------------------------------------------------------------------------------------------*/
3288
static uint32_t
3289
s7comm_decode_szl_id_0131_idx_0001(tvbuff_t *tvb,
3290
                                   proto_tree *tree,
3291
                                   uint32_t offset)
3292
0
{
3293
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3294
0
    offset += 2;
3295
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_pdu, tvb, offset, 2, ENC_BIG_ENDIAN);
3296
0
    offset += 2;
3297
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_anz, tvb, offset, 2, ENC_BIG_ENDIAN);
3298
0
    offset += 2;
3299
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_mpi_bps, tvb, offset, 4, ENC_BIG_ENDIAN);
3300
0
    offset += 4;
3301
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_kbus_bps, tvb, offset, 4, ENC_BIG_ENDIAN);
3302
0
    offset += 4;
3303
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_res, tvb, offset, 26, ENC_NA);
3304
0
    offset += 26;
3305
3306
0
    return offset;
3307
0
}
3308
3309
/*******************************************************************************************************
3310
 *
3311
 * SZL-ID:  0x0131
3312
 * Index:   0x0002
3313
 * Content:
3314
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0002
3315
 *  contains information about the test and installation constants of the module.
3316
 *
3317
 *******************************************************************************************************/
3318
static void
3319
s7comm_szl_0131_0002_register(int proto)
3320
15
{
3321
15
    static hf_register_info hf[] = {
3322
15
        { &hf_s7comm_szl_0131_0002_index,
3323
15
        { "Index", "s7comm.szl.0131.0002.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3324
15
          "W#16#0002: test and installation", HFILL }},
3325
15
        { &hf_s7comm_szl_0131_0002_funkt_0,
3326
15
        { "funkt_0", "s7comm.szl.0131.0002.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3327
15
          "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
3328
15
        { &hf_s7comm_szl_0131_0002_funkt_0_0,
3329
15
        { "Reserved", "s7comm.szl.0131.0002.funkt_0.bit0_res", FT_BOOLEAN, 8, NULL, 0x01,
3330
15
          "Bit 0: Reserved", HFILL }},
3331
15
        { &hf_s7comm_szl_0131_0002_funkt_0_1,
3332
15
        { "Block status", "s7comm.szl.0131.0002.funkt_0.block_stat", FT_BOOLEAN, 8, NULL, 0x02,
3333
15
          "Bit 1: Block status", HFILL }},
3334
15
        { &hf_s7comm_szl_0131_0002_funkt_0_2,
3335
15
        { "Variable status", "s7comm.szl.0131.0002.funkt_0.var_stat", FT_BOOLEAN, 8, NULL, 0x04,
3336
15
          "Bit 2: Variable status", HFILL }},
3337
15
        { &hf_s7comm_szl_0131_0002_funkt_0_3,
3338
15
        { "Output ISTACK", "s7comm.szl.0131.0002.funkt_0.outp_istack", FT_BOOLEAN, 8, NULL, 0x08,
3339
15
          "Bit 3: Output ISTACK", HFILL }},
3340
15
        { &hf_s7comm_szl_0131_0002_funkt_0_4,
3341
15
        { "Output BSTACK", "s7comm.szl.0131.0002.funkt_0.outp_bstack", FT_BOOLEAN, 8, NULL, 0x10,
3342
15
          "Bit 4: Output BSTACK", HFILL }},
3343
15
        { &hf_s7comm_szl_0131_0002_funkt_0_5,
3344
15
        { "Output LSTACK", "s7comm.szl.0131.0002.funkt_0.outp_lstack", FT_BOOLEAN, 8, NULL, 0x20,
3345
15
          "Bit 5: Output LSTACK", HFILL }},
3346
15
        { &hf_s7comm_szl_0131_0002_funkt_0_6,
3347
15
        { "Time measurement from ... to ...", "s7comm.szl.0131.0002.funkt_0.time_meas", FT_BOOLEAN, 8, NULL, 0x40,
3348
15
          "Bit 6: Time measurement from ... to ...", HFILL }},
3349
15
        { &hf_s7comm_szl_0131_0002_funkt_0_7,
3350
15
        { "Force selection", "s7comm.szl.0131.0002.funkt_0.force_sel", FT_BOOLEAN, 8, NULL, 0x80,
3351
15
          "Bit 7: Force selection", HFILL }},
3352
15
        { &hf_s7comm_szl_0131_0002_funkt_1,
3353
15
        { "funkt_1", "s7comm.szl.0131.0002.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3354
15
          "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
3355
15
        { &hf_s7comm_szl_0131_0002_funkt_1_0,
3356
15
        { "Modify variable", "s7comm.szl.0131.0002.funkt_1.mod_var", FT_BOOLEAN, 8, NULL, 0x01,
3357
15
          "Bit 0: Modify variable", HFILL }},
3358
15
        { &hf_s7comm_szl_0131_0002_funkt_1_1,
3359
15
        { "Force", "s7comm.szl.0131.0002.funkt_1.force", FT_BOOLEAN, 8, NULL, 0x02,
3360
15
          "Bit 1: Force", HFILL }},
3361
15
        { &hf_s7comm_szl_0131_0002_funkt_1_2,
3362
15
        { "Breakpoint", "s7comm.szl.0131.0002.funkt_1.breakp", FT_BOOLEAN, 8, NULL, 0x04,
3363
15
          "Bit 2: Breakpoint", HFILL }},
3364
15
        { &hf_s7comm_szl_0131_0002_funkt_1_3,
3365
15
        { "Exit HOLD", "s7comm.szl.0131.0002.funkt_1.exit_hold", FT_BOOLEAN, 8, NULL, 0x08,
3366
15
          "Bit 3: Exit HOLD", HFILL }},
3367
15
        { &hf_s7comm_szl_0131_0002_funkt_1_4,
3368
15
        { "Memory reset", "s7comm.szl.0131.0002.funkt_1.mem_res", FT_BOOLEAN, 8, NULL, 0x10,
3369
15
          "Bit 4: Memory reset", HFILL }},
3370
15
        { &hf_s7comm_szl_0131_0002_funkt_1_5,
3371
15
        { "Disable job", "s7comm.szl.0131.0002.funkt_1.dis_job", FT_BOOLEAN, 8, NULL, 0x20,
3372
15
          "Bit 5: Disable job", HFILL }},
3373
15
        { &hf_s7comm_szl_0131_0002_funkt_1_6,
3374
15
        { "Enable job", "s7comm.szl.0131.0002.funkt_1.en_job", FT_BOOLEAN, 8, NULL, 0x40,
3375
15
          "Bit 6: Enable job", HFILL }},
3376
15
        { &hf_s7comm_szl_0131_0002_funkt_1_7,
3377
15
        { "Delete job", "s7comm.szl.0131.0002.funkt_1.del_job", FT_BOOLEAN, 8, NULL, 0x80,
3378
15
          "Bit 7: Delete job", HFILL }},
3379
15
        { &hf_s7comm_szl_0131_0002_funkt_2,
3380
15
        { "funkt_2", "s7comm.szl.0131.0002.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
3381
15
          "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
3382
15
        { &hf_s7comm_szl_0131_0002_funkt_2_0,
3383
15
        { "Read job list", "s7comm.szl.0131.0002.funkt_2.rd_job_list", FT_BOOLEAN, 8, NULL, 0x01,
3384
15
          "Bit 0: Read job list", HFILL }},
3385
15
        { &hf_s7comm_szl_0131_0002_funkt_2_1,
3386
15
        { "Read job", "s7comm.szl.0131.0002.funkt_2.rd_job", FT_BOOLEAN, 8, NULL, 0x02,
3387
15
          "Bit 1: Read job", HFILL }},
3388
15
        { &hf_s7comm_szl_0131_0002_funkt_2_2,
3389
15
        { "Replace job", "s7comm.szl.0131.0002.funkt_2.repl_job", FT_BOOLEAN, 8, NULL, 0x04,
3390
15
          "Bit 2: Replace job", HFILL }},
3391
15
        { &hf_s7comm_szl_0131_0002_funkt_2_3,
3392
15
        { "Block status v2", "s7comm.szl.0131.0002.funkt_2.block_stat_v2", FT_BOOLEAN, 8, NULL, 0x08,
3393
15
          "Bit 3: Block status v2", HFILL }},
3394
15
        { &hf_s7comm_szl_0131_0002_funkt_2_4,
3395
15
        { "Reserved", "s7comm.szl.0131.0002.funkt_2.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
3396
15
          "Bit 4: Reserved", HFILL }},
3397
15
        { &hf_s7comm_szl_0131_0002_funkt_2_5,
3398
15
        { "Reserved", "s7comm.szl.0131.0002.funkt_2.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3399
15
          "Bit 5: Reserved", HFILL }},
3400
15
        { &hf_s7comm_szl_0131_0002_funkt_2_6,
3401
15
        { "Flash LED", "s7comm.szl.0131.0002.funkt_2.flash_led", FT_BOOLEAN, 8, NULL, 0x40,
3402
15
          "Bit 6: Flash LED", HFILL }},
3403
15
        { &hf_s7comm_szl_0131_0002_funkt_2_7,
3404
15
        { "Reserved", "s7comm.szl.0131.0002.funkt_2.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3405
15
          "Bit 7: Reserved", HFILL }},
3406
15
        { &hf_s7comm_szl_0131_0002_funkt_3,
3407
15
        { "funkt_3 (Reserved)", "s7comm.szl.0131.0002.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
3408
15
          "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
3409
15
        { &hf_s7comm_szl_0131_0002_funkt_4,
3410
15
        { "funkt_4 (Reserved)", "s7comm.szl.0131.0002.funkt_4", FT_UINT8, BASE_HEX, NULL, 0x0,
3411
15
          "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
3412
15
        { &hf_s7comm_szl_0131_0002_funkt_5,
3413
15
        { "funkt_5 (Reserved)", "s7comm.szl.0131.0002.funkt_5", FT_UINT8, BASE_HEX, NULL, 0x0,
3414
15
          "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
3415
15
        { &hf_s7comm_szl_0131_0002_aseg,
3416
15
        { "aseg", "s7comm.szl.0131.0002.aseg", FT_BYTES, BASE_NONE, NULL, 0x0,
3417
15
          "aseg (Non-relevant system data)", HFILL }},
3418
15
        { &hf_s7comm_szl_0131_0002_eseg,
3419
15
        { "eseg", "s7comm.szl.0131.0002.eseg", FT_BYTES, BASE_NONE, NULL, 0x0,
3420
15
          "eseg (Non-relevant system data)", HFILL }},
3421
15
        { &hf_s7comm_szl_0131_0002_trgereig_0,
3422
15
        { "trgereig_0 (Permitted trigger events)", "s7comm.szl.0131.0002.trgereig_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3423
15
          NULL, HFILL }},
3424
15
        { &hf_s7comm_szl_0131_0002_trgereig_0_0,
3425
15
        { "Immediately", "s7comm.szl.0131.0002.trgereig_0.immed", FT_BOOLEAN, 8, NULL, 0x01,
3426
15
          "Bit 0: immediately", HFILL }},
3427
15
        { &hf_s7comm_szl_0131_0002_trgereig_0_1,
3428
15
        { "System trigger", "s7comm.szl.0131.0002.trgereig_0.sys_trig", FT_BOOLEAN, 8, NULL, 0x02,
3429
15
          "Bit 1: System trigger", HFILL }},
3430
15
        { &hf_s7comm_szl_0131_0002_trgereig_0_2,
3431
15
        { "System checkpoint main cycle start", "s7comm.szl.0131.0002.trgereig_0.sys_cp_mcs", FT_BOOLEAN, 8, NULL, 0x04,
3432
15
          "Bit 2: System checkpoint main cycle start", HFILL }},
3433
15
        { &hf_s7comm_szl_0131_0002_trgereig_0_3,
3434
15
        { "System checkpoint main cycle end", "s7comm.szl.0131.0002.trgereig_0.sys_cp_mce", FT_BOOLEAN, 8, NULL, 0x08,
3435
15
          "Bit 3: System checkpoint main cycle end", HFILL }},
3436
15
        { &hf_s7comm_szl_0131_0002_trgereig_0_4,
3437
15
        { "Mode transition RUN-STOP", "s7comm.szl.0131.0002.trgereig_0.mtrans_rs", FT_BOOLEAN, 8, NULL, 0x10,
3438
15
          "Bit 4: Mode transition RUN-STOP", HFILL }},
3439
15
        { &hf_s7comm_szl_0131_0002_trgereig_0_5,
3440
15
        { "After code address", "s7comm.szl.0131.0002.trgereig_0.acode_adr", FT_BOOLEAN, 8, NULL, 0x20,
3441
15
          "Bit 5: After code address", HFILL }},
3442
15
        { &hf_s7comm_szl_0131_0002_trgereig_0_6,
3443
15
        { "Code address area", "s7comm.szl.0131.0002.trgereig_0.code_adr_a", FT_BOOLEAN, 8, NULL, 0x40,
3444
15
          "Bit 6: Code address area", HFILL }},
3445
15
        { &hf_s7comm_szl_0131_0002_trgereig_0_7,
3446
15
        { "Data address", "s7comm.szl.0131.0002.trgereig_0.data_adr", FT_BOOLEAN, 8, NULL, 0x80,
3447
15
          "Bit 7: Data Address", HFILL }},
3448
15
        { &hf_s7comm_szl_0131_0002_trgereig_1,
3449
15
        { "trgereig_1 (Permitted trigger events)", "s7comm.szl.0131.0002.trgereig_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3450
15
          NULL, HFILL }},
3451
15
        { &hf_s7comm_szl_0131_0002_trgereig_1_0,
3452
15
        { "Data address area", "s7comm.szl.0131.0002.trgereig_1.data_adr_a", FT_BOOLEAN, 8, NULL, 0x01,
3453
15
          "Bit 0: Data address area", HFILL }},
3454
15
        { &hf_s7comm_szl_0131_0002_trgereig_1_1,
3455
15
        { "Local data address", "s7comm.szl.0131.0002.trgereig_1.loc_adr", FT_BOOLEAN, 8, NULL, 0x02,
3456
15
          "Bit 1: Local data address", HFILL }},
3457
15
        { &hf_s7comm_szl_0131_0002_trgereig_1_2,
3458
15
        { "Local data address area", "s7comm.szl.0131.0002.trgereig_1.loc_adr_a", FT_BOOLEAN, 8, NULL, 0x04,
3459
15
          "Bit 2: Local data address area", HFILL }},
3460
15
        { &hf_s7comm_szl_0131_0002_trgereig_1_3,
3461
15
        { "Range trigger", "s7comm.szl.0131.0002.trgereig_1.range_trig", FT_BOOLEAN, 8, NULL, 0x08,
3462
15
          "Bit 3: Range trigger", HFILL }},
3463
15
        { &hf_s7comm_szl_0131_0002_trgereig_1_4,
3464
15
        { "Before code address", "s7comm.szl.0131.0002.trgereig_1.bcode_adr", FT_BOOLEAN, 8, NULL, 0x10,
3465
15
          "Bit 4: Before code address", HFILL }},
3466
15
        { &hf_s7comm_szl_0131_0002_trgereig_1_5,
3467
15
        { "Reserved", "s7comm.szl.0131.0002.trgereig_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3468
15
          "Bit 5: Reserved", HFILL }},
3469
15
        { &hf_s7comm_szl_0131_0002_trgereig_1_6,
3470
15
        { "Reserved", "s7comm.szl.0131.0002.trgereig_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3471
15
          "Bit 6: Reserved", HFILL }},
3472
15
        { &hf_s7comm_szl_0131_0002_trgereig_1_7,
3473
15
        { "Reserved", "s7comm.szl.0131.0002.trgereig_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3474
15
          "Bit 7: Reserved", HFILL }},
3475
15
        { &hf_s7comm_szl_0131_0002_trgereig_2,
3476
15
        { "trgereig_2 (Permitted trigger events, reserved)", "s7comm.szl.0131.0002.trgereig_2", FT_UINT8, BASE_HEX, NULL, 0x0,
3477
15
          NULL, HFILL }},
3478
15
        { &hf_s7comm_szl_0131_0002_trgbed,
3479
15
        { "trgbed (System data with no relevance)", "s7comm.szl.0131.0002.trgbed", FT_UINT8, BASE_HEX, NULL, 0x0,
3480
15
          NULL, HFILL }},
3481
15
        { &hf_s7comm_szl_0131_0002_pfad,
3482
15
        { "pfad (System data with no relevance)", "s7comm.szl.0131.0002.pfad", FT_UINT8, BASE_DEC, NULL, 0x0,
3483
15
          NULL, HFILL }},
3484
15
        { &hf_s7comm_szl_0131_0002_tiefe,
3485
15
        { "tiefe (System data with no relevance)", "s7comm.szl.0131.0002.tiefe", FT_UINT8, BASE_DEC, NULL, 0x0,
3486
15
          NULL, HFILL }},
3487
15
        { &hf_s7comm_szl_0131_0002_systrig,
3488
15
        { "systrig (System data with no relevance)", "s7comm.szl.0131.0002.systrig", FT_UINT8, BASE_HEX, NULL, 0x0,
3489
15
          NULL, HFILL }},
3490
15
        { &hf_s7comm_szl_0131_0002_erg_par,
3491
15
        { "erg par (System data with no relevance)", "s7comm.szl.0131.0002.erg_par", FT_UINT8, BASE_HEX, NULL, 0x0,
3492
15
          NULL, HFILL }},
3493
15
        { &hf_s7comm_szl_0131_0002_erg_pat_1,
3494
15
        { "erg pat 1 (System data with no relevance)", "s7comm.szl.0131.0002.erg_pat_1", FT_UINT16, BASE_HEX, NULL, 0x0,
3495
15
          NULL, HFILL }},
3496
15
        { &hf_s7comm_szl_0131_0002_erg_pat_2,
3497
15
        { "erg pat 2 (System data with no relevance)", "s7comm.szl.0131.0002.erg_pat_2", FT_UINT16, BASE_HEX, NULL, 0x0,
3498
15
          NULL, HFILL }},
3499
15
        { &hf_s7comm_szl_0131_0002_force,
3500
15
        { "force (Number of modifiable Variables)", "s7comm.szl.0131.0002.force", FT_UINT16, BASE_DEC, NULL, 0x0,
3501
15
          NULL, HFILL }},
3502
15
        { &hf_s7comm_szl_0131_0002_time,
3503
15
        { "time", "s7comm.szl.0131.0002.time", FT_UINT16, BASE_HEX, NULL, 0x0,
3504
15
          "time (Upper time limit run-time meas, Format: bits 0 to 11 contain the time value (0 to 4K-1); bits 12 to 15 contain the time base: 0H= 10^-10s, 1H = 10^-9s,...,AH = 100s, ... FH = 105s)", HFILL }},
3505
15
        { &hf_s7comm_szl_0131_0002_res,
3506
15
        { "res (Reserved)", "s7comm.szl.0131.0002.res", FT_UINT32, BASE_HEX, NULL, 0x0,
3507
15
          NULL, HFILL }}
3508
15
    };
3509
15
    proto_register_field_array(proto, hf, array_length(hf));
3510
15
}
3511
3512
/*----------------------------------------------------------------------------------------------------*/
3513
static uint32_t
3514
s7comm_decode_szl_id_0131_idx_0002(tvbuff_t *tvb,
3515
                                   proto_tree *tree,
3516
                                   uint32_t offset)
3517
0
{
3518
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3519
0
    offset += 2;
3520
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_funkt_0,
3521
0
        ett_s7comm_szl_0131_0002_funkt_0, s7comm_szl_0131_0002_funkt_0_fields, ENC_BIG_ENDIAN);
3522
0
    offset += 1;
3523
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_funkt_1,
3524
0
        ett_s7comm_szl_0131_0002_funkt_1, s7comm_szl_0131_0002_funkt_1_fields, ENC_BIG_ENDIAN);
3525
0
    offset += 1;
3526
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_funkt_2,
3527
0
        ett_s7comm_szl_0131_0002_funkt_2, s7comm_szl_0131_0002_funkt_2_fields, ENC_BIG_ENDIAN);
3528
0
    offset += 1;
3529
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_funkt_3, tvb, offset, 1, ENC_BIG_ENDIAN);
3530
0
    offset += 1;
3531
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_funkt_4, tvb, offset, 1, ENC_BIG_ENDIAN);
3532
0
    offset += 1;
3533
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_funkt_5, tvb, offset, 1, ENC_BIG_ENDIAN);
3534
0
    offset += 1;
3535
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_aseg, tvb, offset, 6, ENC_NA);
3536
0
    offset += 6;
3537
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_eseg, tvb, offset, 6, ENC_NA);
3538
0
    offset += 6;
3539
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_trgereig_0,
3540
0
        ett_s7comm_szl_0131_0002_trgereig_0, s7comm_szl_0131_0002_trgereig_0_fields, ENC_BIG_ENDIAN);
3541
0
    offset += 1;
3542
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_trgereig_1,
3543
0
        ett_s7comm_szl_0131_0002_trgereig_1, s7comm_szl_0131_0002_trgereig_1_fields, ENC_BIG_ENDIAN);
3544
0
    offset += 1;
3545
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_trgereig_2, tvb, offset, 1, ENC_BIG_ENDIAN);
3546
0
    offset += 1;
3547
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_trgbed, tvb, offset, 1, ENC_BIG_ENDIAN);
3548
0
    offset += 1;
3549
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_pfad, tvb, offset, 1, ENC_BIG_ENDIAN);
3550
0
    offset += 1;
3551
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_tiefe, tvb, offset, 1, ENC_BIG_ENDIAN);
3552
0
    offset += 1;
3553
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_systrig, tvb, offset, 1, ENC_BIG_ENDIAN);
3554
0
    offset += 1;
3555
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_erg_par, tvb, offset, 1, ENC_BIG_ENDIAN);
3556
0
    offset += 1;
3557
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_erg_pat_1, tvb, offset, 2, ENC_BIG_ENDIAN);
3558
0
    offset += 2;
3559
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_erg_pat_2, tvb, offset, 2, ENC_BIG_ENDIAN);
3560
0
    offset += 2;
3561
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_force, tvb, offset, 2, ENC_BIG_ENDIAN);
3562
0
    offset += 2;
3563
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_time, tvb, offset, 2, ENC_BIG_ENDIAN);
3564
0
    offset += 2;
3565
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_res, tvb, offset, 4, ENC_BIG_ENDIAN);
3566
0
    offset += 4;
3567
3568
0
    return offset;
3569
0
}
3570
3571
/*******************************************************************************************************
3572
 *
3573
 * SZL-ID:  0x0131
3574
 * Index:   0x0003
3575
 * Content:
3576
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0003
3577
 *  contains information about the communication parameters of the module for
3578
 *  connection to a unit for operator interface functions.
3579
 *
3580
 *******************************************************************************************************/
3581
static void
3582
s7comm_szl_0131_0003_register(int proto)
3583
15
{
3584
15
    static hf_register_info hf[] = {
3585
15
        { &hf_s7comm_szl_0131_0003_index,
3586
15
        { "Index", "s7comm.szl.0131.0003.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3587
15
          "W#16#0003: Index for operator interface functions", HFILL }},
3588
15
        { &hf_s7comm_szl_0131_0003_funkt_0,
3589
15
        { "funkt_0", "s7comm.szl.0131.0003.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3590
15
          "Bits indicating the available functions (bit = 1: function exists)", HFILL }},
3591
15
        { &hf_s7comm_szl_0131_0003_funkt_0_0,
3592
15
        { "Read once", "s7comm.szl.0131.0003.funkt_0.read_once", FT_BOOLEAN, 8, NULL, 0x01,
3593
15
          "Bit 0: Read once", HFILL }},
3594
15
        { &hf_s7comm_szl_0131_0003_funkt_0_1,
3595
15
        { "Write once", "s7comm.szl.0131.0003.funkt_0.write_once", FT_BOOLEAN, 8, NULL, 0x02,
3596
15
          "Bit 1: Write once", HFILL }},
3597
15
        { &hf_s7comm_szl_0131_0003_funkt_0_2,
3598
15
        { "Initialize cyclic reading (start implicitly)", "s7comm.szl.0131.0003.funkt_0.init_cycl_read_impl", FT_BOOLEAN, 8, NULL, 0x04,
3599
15
          "Bit 2: Initialize cyclic reading (start implicitly)", HFILL }},
3600
15
        { &hf_s7comm_szl_0131_0003_funkt_0_3,
3601
15
        { "Initialize cyclic reading (start explicitly)", "s7comm.szl.0131.0003.funkt_0.init_cycl_read_expl", FT_BOOLEAN, 8, NULL, 0x08,
3602
15
          "Bit 3: Initialize cyclic reading (start explicitly)", HFILL }},
3603
15
        { &hf_s7comm_szl_0131_0003_funkt_0_4,
3604
15
        { "Start cyclic reading", "s7comm.szl.0131.0003.funkt_0.start_cycl_read", FT_BOOLEAN, 8, NULL, 0x10,
3605
15
          "Bit 4: Start cyclic reading", HFILL }},
3606
15
        { &hf_s7comm_szl_0131_0003_funkt_0_5,
3607
15
        { "Stop cyclic reading", "s7comm.szl.0131.0003.funkt_0.stop_cycl_read", FT_BOOLEAN, 8, NULL, 0x20,
3608
15
          "Bit 5: Stop cyclic reading", HFILL }},
3609
15
        { &hf_s7comm_szl_0131_0003_funkt_0_6,
3610
15
        { "Clear cyclic reading", "s7comm.szl.0131.0002.funkt_0.clr_cycl_read", FT_BOOLEAN, 8, NULL, 0x40,
3611
15
          "Bit 6: Clear cyclic reading", HFILL }},
3612
15
        { &hf_s7comm_szl_0131_0003_funkt_0_7,
3613
15
        { "Reserved", "s7comm.szl.0131.0002.funkt_0.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3614
15
          "Bit 7: Reserved", HFILL }},
3615
15
        { &hf_s7comm_szl_0131_0003_funkt_1,
3616
15
        { "funkt_1", "s7comm.szl.0131.0003.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3617
15
          "Bits indicating the available functions (bit = 1: function exists)", HFILL }},
3618
15
        { &hf_s7comm_szl_0131_0003_funkt_1_0,
3619
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_1.bit0_res", FT_BOOLEAN, 8, NULL, 0x01,
3620
15
          "Bit 0: Reserved", HFILL }},
3621
15
        { &hf_s7comm_szl_0131_0003_funkt_1_1,
3622
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_1.bit1_res", FT_BOOLEAN, 8, NULL, 0x02,
3623
15
          "Bit 1: Reserved", HFILL }},
3624
15
        { &hf_s7comm_szl_0131_0003_funkt_1_2,
3625
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_1.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
3626
15
          "Bit 2: Reserved", HFILL }},
3627
15
        { &hf_s7comm_szl_0131_0003_funkt_1_3,
3628
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_1.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
3629
15
          "Bit 3: Reserved", HFILL }},
3630
15
        { &hf_s7comm_szl_0131_0003_funkt_1_4,
3631
15
        { "Peripheral I/Os", "s7comm.szl.0131.0003.funkt_1.periph_io", FT_BOOLEAN, 8, NULL, 0x10,
3632
15
          "Bit 4: Peripheral I/Os", HFILL }},
3633
15
        { &hf_s7comm_szl_0131_0003_funkt_1_5,
3634
15
        { "Inputs", "s7comm.szl.0131.0003.funkt_1.inputs", FT_BOOLEAN, 8, NULL, 0x20,
3635
15
          "Bit 5: Inputs", HFILL }},
3636
15
        { &hf_s7comm_szl_0131_0003_funkt_1_6,
3637
15
        { "Outputs", "s7comm.szl.0131.0002.funkt_1.outputs", FT_BOOLEAN, 8, NULL, 0x40,
3638
15
          "Bit 6: Outputs", HFILL }},
3639
15
        { &hf_s7comm_szl_0131_0003_funkt_1_7,
3640
15
        { "Bit memory", "s7comm.szl.0131.0002.funkt_1.bit_mem", FT_BOOLEAN, 8, NULL, 0x80,
3641
15
          "Bit 7: Bit memory", HFILL }},
3642
15
        { &hf_s7comm_szl_0131_0003_funkt_2,
3643
15
        { "funkt_2", "s7comm.szl.0131.0003.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
3644
15
          "Bits indicating the available functions (bit = 1: function exists)", HFILL }},
3645
15
        { &hf_s7comm_szl_0131_0003_funkt_2_0,
3646
15
        { "User DB", "s7comm.szl.0131.0003.funkt_2.user_db", FT_BOOLEAN, 8, NULL, 0x01,
3647
15
          "Bit 0: User DB", HFILL }},
3648
15
        { &hf_s7comm_szl_0131_0003_funkt_2_1,
3649
15
        { "Data record", "s7comm.szl.0131.0003.funkt_2.data_rec", FT_BOOLEAN, 8, NULL, 0x02,
3650
15
          "Bit 1: Data record", HFILL }},
3651
15
        { &hf_s7comm_szl_0131_0003_funkt_2_2,
3652
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_2.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
3653
15
          "Bit 2: Reserved", HFILL }},
3654
15
        { &hf_s7comm_szl_0131_0003_funkt_2_3,
3655
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_2.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
3656
15
          "Bit 3: Reserved", HFILL }},
3657
15
        { &hf_s7comm_szl_0131_0003_funkt_2_4,
3658
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_2.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
3659
15
          "Bit 4: Reserved", HFILL }},
3660
15
        { &hf_s7comm_szl_0131_0003_funkt_2_5,
3661
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_2.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3662
15
          "Bit 5: Reserved", HFILL }},
3663
15
        { &hf_s7comm_szl_0131_0003_funkt_2_6,
3664
15
        { "Reserved", "s7comm.szl.0131.0002.funkt_2.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3665
15
          "Bit 6: Reserved", HFILL }},
3666
15
        { &hf_s7comm_szl_0131_0003_funkt_2_7,
3667
15
        { "S7 counter", "s7comm.szl.0131.0002.funkt_2.s7_counter", FT_BOOLEAN, 8, NULL, 0x80,
3668
15
          "Bit 7: S7 counter", HFILL }},
3669
15
        { &hf_s7comm_szl_0131_0003_funkt_3,
3670
15
        { "funkt_3", "s7comm.szl.0131.0003.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
3671
15
          "Bits indicating the available functions (bit = 1: function exists)", HFILL }},
3672
15
        { &hf_s7comm_szl_0131_0003_funkt_3_0,
3673
15
        { "S7 timer", "s7comm.szl.0131.0003.funkt_3.s7_timer", FT_BOOLEAN, 8, NULL, 0x01,
3674
15
          "Bit 0: S7 timer", HFILL }},
3675
15
        { &hf_s7comm_szl_0131_0003_funkt_3_1,
3676
15
        { "IEC counter", "s7comm.szl.0131.0003.funkt_3.iec_counter", FT_BOOLEAN, 8, NULL, 0x02,
3677
15
          "Bit 1: IEC counter", HFILL }},
3678
15
        { &hf_s7comm_szl_0131_0003_funkt_3_2,
3679
15
        { "IEC timer", "s7comm.szl.0131.0003.funkt_3.iec_timer", FT_BOOLEAN, 8, NULL, 0x04,
3680
15
          "Bit 2: IEC timer", HFILL }},
3681
15
        { &hf_s7comm_szl_0131_0003_funkt_3_3,
3682
15
        { "High speed counter", "s7comm.szl.0131.0003.funkt_3.hs_counter", FT_BOOLEAN, 8, NULL, 0x08,
3683
15
          "Bit 3: High speed counter", HFILL }},
3684
15
        { &hf_s7comm_szl_0131_0003_funkt_3_4,
3685
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_3.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
3686
15
          "Bit 4: Reserved", HFILL }},
3687
15
        { &hf_s7comm_szl_0131_0003_funkt_3_5,
3688
15
        { "Reserved", "s7comm.szl.0131.0003.funkt_3.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3689
15
          "Bit 5: Reserved", HFILL }},
3690
15
        { &hf_s7comm_szl_0131_0003_funkt_3_6,
3691
15
        { "Reserved", "s7comm.szl.0131.0002.funkt_3.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3692
15
          "Bit 6: Reserved", HFILL }},
3693
15
        { &hf_s7comm_szl_0131_0003_funkt_3_7,
3694
15
        { "Reserved", "s7comm.szl.0131.0002.funkt_3.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3695
15
          "Bit 7: Reserved", HFILL }},
3696
15
        { &hf_s7comm_szl_0131_0003_data,
3697
15
        { "data (Maximum size of consistently readable data)", "s7comm.szl.0131.0003.data", FT_UINT16, BASE_DEC, NULL, 0x0,
3698
15
          NULL, HFILL }},
3699
15
        { &hf_s7comm_szl_0131_0003_anz,
3700
15
        { "anz (Maximum number of cyclic read jobs)", "s7comm.szl.0131.0003.anz", FT_UINT16, BASE_DEC, NULL, 0x0,
3701
15
          NULL, HFILL }},
3702
15
        { &hf_s7comm_szl_0131_0003_per_min,
3703
15
        { "per min (Minimum period for cyclic read jobs (n x 100 ms))", "s7comm.szl.0131.0003.per_min", FT_UINT16, BASE_DEC, NULL, 0x0,
3704
15
          NULL, HFILL }},
3705
15
        { &hf_s7comm_szl_0131_0003_per_max,
3706
15
        { "per max (Maximum period for cyclic read jobs (n x 100 ms))", "s7comm.szl.0131.0003.per_max", FT_UINT16, BASE_DEC, NULL, 0x0,
3707
15
          NULL, HFILL }},
3708
15
        { &hf_s7comm_szl_0131_0003_res,
3709
15
        { "res (Reserved)", "s7comm.szl.0131.0003.res", FT_BYTES, BASE_NONE, NULL, 0x0,
3710
15
          NULL, HFILL }}
3711
15
    };
3712
15
    proto_register_field_array(proto, hf, array_length(hf));
3713
15
}
3714
3715
/*----------------------------------------------------------------------------------------------------*/
3716
static uint32_t
3717
s7comm_decode_szl_id_0131_idx_0003(tvbuff_t *tvb,
3718
                                   proto_tree *tree,
3719
                                   uint32_t offset)
3720
0
{
3721
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3722
0
    offset += 2;
3723
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0003_funkt_0,
3724
0
        ett_s7comm_szl_0131_0003_funkt_0, s7comm_szl_0131_0003_funkt_0_fields, ENC_BIG_ENDIAN);
3725
0
    offset += 1;
3726
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0003_funkt_1,
3727
0
        ett_s7comm_szl_0131_0003_funkt_1, s7comm_szl_0131_0003_funkt_1_fields, ENC_BIG_ENDIAN);
3728
0
    offset += 1;
3729
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0003_funkt_2,
3730
0
        ett_s7comm_szl_0131_0003_funkt_2, s7comm_szl_0131_0003_funkt_2_fields, ENC_BIG_ENDIAN);
3731
0
    offset += 1;
3732
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0003_funkt_3,
3733
0
        ett_s7comm_szl_0131_0003_funkt_3, s7comm_szl_0131_0003_funkt_3_fields, ENC_BIG_ENDIAN);
3734
0
    offset += 1;
3735
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_data, tvb, offset, 2, ENC_BIG_ENDIAN);
3736
0
    offset += 2;
3737
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_anz, tvb, offset, 2, ENC_BIG_ENDIAN);
3738
0
    offset += 2;
3739
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_per_min, tvb, offset, 2, ENC_BIG_ENDIAN);
3740
0
    offset += 2;
3741
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_per_max, tvb, offset, 2, ENC_BIG_ENDIAN);
3742
0
    offset += 2;
3743
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_res, tvb, offset, 26, ENC_NA);
3744
0
    offset += 26;
3745
3746
0
    return offset;
3747
0
}
3748
3749
/*******************************************************************************************************
3750
 *
3751
 * SZL-ID:  0x0131
3752
 * Index:   0x0004
3753
 * Content:
3754
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0004
3755
 *  contains information about the object management system (OMS) of the
3756
 *  module.
3757
 *
3758
 *******************************************************************************************************/
3759
static void
3760
s7comm_szl_0131_0004_register(int proto)
3761
15
{
3762
15
    static hf_register_info hf[] = {
3763
15
        { &hf_s7comm_szl_0131_0004_index,
3764
15
        { "Index", "s7comm.szl.0131.0004.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3765
15
          "W#16#0004 Index for OMS", HFILL }},
3766
15
        { &hf_s7comm_szl_0131_0004_funkt_0,
3767
15
        { "funkt_0", "s7comm.szl.0131.0004.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3768
15
          "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
3769
15
        { &hf_s7comm_szl_0131_0004_funkt_0_0,
3770
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_0.bit0_res", FT_BOOLEAN, 8, NULL, 0x01,
3771
15
          "Bit 0: Reserved", HFILL }},
3772
15
        { &hf_s7comm_szl_0131_0004_funkt_0_1,
3773
15
        { "Directory (hierarchy 1)", "s7comm.szl.0131.0004.funkt_0.dir_h1", FT_BOOLEAN, 8, NULL, 0x02,
3774
15
          "Bit 1: Directory (hierarchy 1)", HFILL }},
3775
15
        { &hf_s7comm_szl_0131_0004_funkt_0_2,
3776
15
        { "Directory (hierarchy 2)", "s7comm.szl.0131.0004.funkt_0.dir_h2", FT_BOOLEAN, 8, NULL, 0x04,
3777
15
          "Bit 2: Directory (hierarchy 2)", HFILL }},
3778
15
        { &hf_s7comm_szl_0131_0004_funkt_0_3,
3779
15
        { "Directory (hierarchy 3)", "s7comm.szl.0131.0004.funkt_0.dir_h3", FT_BOOLEAN, 8, NULL, 0x08,
3780
15
          "Bit 3: Directory (hierarchy 3)", HFILL }},
3781
15
        { &hf_s7comm_szl_0131_0004_funkt_0_4,
3782
15
        { "Copy", "s7comm.szl.0131.0004.funkt_0.copy", FT_BOOLEAN, 8, NULL, 0x10,
3783
15
          "Bit 4: Copy", HFILL }},
3784
15
        { &hf_s7comm_szl_0131_0004_funkt_0_5,
3785
15
        { "Chain (list)", "s7comm.szl.0131.0004.funkt_0.chain_list", FT_BOOLEAN, 8, NULL, 0x20,
3786
15
          "Bit 5: Chain (list)", HFILL }},
3787
15
        { &hf_s7comm_szl_0131_0004_funkt_0_6,
3788
15
        { "Chain (all copied)", "s7comm.szl.0131.0004.funkt_0.chain_copied", FT_BOOLEAN, 8, NULL, 0x40,
3789
15
          "Bit 6: Chain (all copied)", HFILL }},
3790
15
        { &hf_s7comm_szl_0131_0004_funkt_0_7,
3791
15
        { "Delete (list)", "s7comm.szl.0131.0004.funkt_0.delete_list", FT_BOOLEAN, 8, NULL, 0x80,
3792
15
          "Bit 7: Delete (list)", HFILL }},
3793
15
        { &hf_s7comm_szl_0131_0004_funkt_1,
3794
15
        { "funkt_1", "s7comm.szl.0131.0004.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3795
15
          "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
3796
15
        { &hf_s7comm_szl_0131_0004_funkt_1_0,
3797
15
        { "Upload on PG", "s7comm.szl.0131.0004.funkt_1.upl_on_pg", FT_BOOLEAN, 8, NULL, 0x01,
3798
15
          "Bit 0: Upload on PG", HFILL }},
3799
15
        { &hf_s7comm_szl_0131_0004_funkt_1_1,
3800
15
        { "Assign parameters when chaining", "s7comm.szl.0131.0004.funkt_1.asgn_w_chain", FT_BOOLEAN, 8, NULL, 0x02,
3801
15
          "Bit 1: Assign parameters when chaining", HFILL }},
3802
15
        { &hf_s7comm_szl_0131_0004_funkt_1_2,
3803
15
        { "LOAD function when exchanging data with CFBs", "s7comm.szl.0131.0004.funkt_1.load_w_chg", FT_BOOLEAN, 8, NULL, 0x04,
3804
15
          "Bit 2: LOAD function when exchanging data with CFBs", HFILL }},
3805
15
        { &hf_s7comm_szl_0131_0004_funkt_1_3,
3806
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_1.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
3807
15
          "Bit 3: Reserved", HFILL }},
3808
15
        { &hf_s7comm_szl_0131_0004_funkt_1_4,
3809
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_1.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
3810
15
          "Bit 4: Reserved", HFILL }},
3811
15
        { &hf_s7comm_szl_0131_0004_funkt_1_5,
3812
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3813
15
          "Bit 5: Reserved", HFILL }},
3814
15
        { &hf_s7comm_szl_0131_0004_funkt_1_6,
3815
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3816
15
          "Bit 6: Reserved", HFILL }},
3817
15
        { &hf_s7comm_szl_0131_0004_funkt_1_7,
3818
15
        { "Delete *.*", "s7comm.szl.0131.0004.funkt_1.delete_all", FT_BOOLEAN, 8, NULL, 0x80,
3819
15
          "Bit 7: Delete *.*", HFILL }},
3820
15
        { &hf_s7comm_szl_0131_0004_funkt_2,
3821
15
        { "funkt_2", "s7comm.szl.0131.0004.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
3822
15
          "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
3823
15
        { &hf_s7comm_szl_0131_0004_funkt_2_0,
3824
15
        { "Load user program (RAM)", "s7comm.szl.0131.0004.funkt_2.load_ram", FT_BOOLEAN, 8, NULL, 0x01,
3825
15
          "Bit 0: Load user program (RAM)", HFILL }},
3826
15
        { &hf_s7comm_szl_0131_0004_funkt_2_1,
3827
15
        { "Load user program (EPROM)", "s7comm.szl.0131.0004.funkt_2.load_eprom", FT_BOOLEAN, 8, NULL, 0x02,
3828
15
          "Bit 1: Load user program (EPROM)", HFILL }},
3829
15
        { &hf_s7comm_szl_0131_0004_funkt_2_2,
3830
15
        { "Save user program (RAM)", "s7comm.szl.0131.0004.funkt_2.save_ram", FT_BOOLEAN, 8, NULL, 0x04,
3831
15
          "Bit 2: Save user program (RAM)", HFILL }},
3832
15
        { &hf_s7comm_szl_0131_0004_funkt_2_3,
3833
15
        { "Save user program (EPROM)", "s7comm.szl.0131.0004.funkt_2.save_eprom", FT_BOOLEAN, 8, NULL, 0x08,
3834
15
          "Bit 3: Save user program (EPROM)", HFILL }},
3835
15
        { &hf_s7comm_szl_0131_0004_funkt_2_4,
3836
15
        { "Save user program (all)", "s7comm.szl.0131.0004.funkt_2.save_all", FT_BOOLEAN, 8, NULL, 0x10,
3837
15
          "Bit 4: Save user program (all)", HFILL }},
3838
15
        { &hf_s7comm_szl_0131_0004_funkt_2_5,
3839
15
        { "Compress (external)", "s7comm.szl.0131.0004.funkt_2.compress", FT_BOOLEAN, 8, NULL, 0x20,
3840
15
          "Bit 5: Compress (external)", HFILL }},
3841
15
        { &hf_s7comm_szl_0131_0004_funkt_2_6,
3842
15
        { "Firmware update (using communication)", "s7comm.szl.0131.0004.funkt_2.fw_update", FT_BOOLEAN, 8, NULL, 0x40,
3843
15
          "Bit 6: Firmware update (using communication)", HFILL }},
3844
15
        { &hf_s7comm_szl_0131_0004_funkt_2_7,
3845
15
        { "Set RAM memory mode", "s7comm.szl.0131.0004.funkt_2.set_ram_mode", FT_BOOLEAN, 8, NULL, 0x80,
3846
15
          "Bit 7: Set RAM memory mode", HFILL }},
3847
15
        { &hf_s7comm_szl_0131_0004_funkt_3,
3848
15
        { "funkt_3", "s7comm.szl.0131.0004.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
3849
15
          "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
3850
15
        { &hf_s7comm_szl_0131_0004_funkt_3_0,
3851
15
        { "Set EPROM memory mode", "s7comm.szl.0131.0004.funkt_3.set_eprom_mode", FT_BOOLEAN, 8, NULL, 0x01,
3852
15
          "Bit 0: Set EPROM memory mode", HFILL }},
3853
15
        { &hf_s7comm_szl_0131_0004_funkt_3_1,
3854
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit1_res", FT_BOOLEAN, 8, NULL, 0x02,
3855
15
          "Bit 1: Reserved", HFILL }},
3856
15
        { &hf_s7comm_szl_0131_0004_funkt_3_2,
3857
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
3858
15
          "Bit 2: Reserved", HFILL }},
3859
15
        { &hf_s7comm_szl_0131_0004_funkt_3_3,
3860
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
3861
15
          "Bit 3: Reserved", HFILL }},
3862
15
        { &hf_s7comm_szl_0131_0004_funkt_3_4,
3863
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
3864
15
          "Bit 4: Reserved", HFILL }},
3865
15
        { &hf_s7comm_szl_0131_0004_funkt_3_5,
3866
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3867
15
          "Bit 5: Reserved", HFILL }},
3868
15
        { &hf_s7comm_szl_0131_0004_funkt_3_6,
3869
15
        { "Assign parameters to newly plugged in modules", "s7comm.szl.0131.0004.funkt_3.asgn_par_mod", FT_BOOLEAN, 8, NULL, 0x40,
3870
15
          "Bit 6: Assign parameters to newly plugged in modules", HFILL }},
3871
15
        { &hf_s7comm_szl_0131_0004_funkt_3_7,
3872
15
        { "Assign parameters when evaluating memory card", "s7comm.szl.0131.0004.funkt_3.asgn_par_mc", FT_BOOLEAN, 8, NULL, 0x80,
3873
15
          "Bit 7: Assign parameters when evaluating memory card", HFILL }},
3874
15
        { &hf_s7comm_szl_0131_0004_funkt_4,
3875
15
        { "funkt_4", "s7comm.szl.0131.0004.funkt_4", FT_UINT8, BASE_HEX, NULL, 0x0,
3876
15
          "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
3877
15
        { &hf_s7comm_szl_0131_0004_funkt_4_0,
3878
15
        { "Assign parameters when loading user program", "s7comm.szl.0131.0004.funkt_4.asgn_par_lprog", FT_BOOLEAN, 8, NULL, 0x01,
3879
15
          "Bit 0: Assign parameters when loading user program", HFILL }},
3880
15
        { &hf_s7comm_szl_0131_0004_funkt_4_1,
3881
15
        { "Assign parameters in complete restart", "s7comm.szl.0131.0004.funkt_4.asgn_par_cres", FT_BOOLEAN, 8, NULL, 0x02,
3882
15
          "Bit 1: Assign parameters in complete restart", HFILL }},
3883
15
        { &hf_s7comm_szl_0131_0004_funkt_4_2,
3884
15
        { "Assign parameters in restart", "s7comm.szl.0131.0004.funkt_4.asgn_par_res", FT_BOOLEAN, 8, NULL, 0x04,
3885
15
          "Bit 2: Assign parameters in restart", HFILL }},
3886
15
        { &hf_s7comm_szl_0131_0004_funkt_4_3,
3887
15
        { "Compress (SFC25 COMPRESS)", "s7comm.szl.0131.0004.funkt_4.compress", FT_BOOLEAN, 8, NULL, 0x08,
3888
15
          "Bit 3: Compress (SFC25 COMPRESS)", HFILL }},
3889
15
        { &hf_s7comm_szl_0131_0004_funkt_4_4,
3890
15
        { "Evaluate memory card after switch setting", "s7comm.szl.0131.0004.funkt_4.ev_mc", FT_BOOLEAN, 8, NULL, 0x10,
3891
15
          "Bit 4: Evaluate memory card after switch setting", HFILL }},
3892
15
        { &hf_s7comm_szl_0131_0004_funkt_4_5,
3893
15
        { "Firmware update using memory card", "s7comm.szl.0131.0004.funkt_4.fw_update_mc", FT_BOOLEAN, 8, NULL, 0x20,
3894
15
          "Bit 5: Firmware update using memory card", HFILL }},
3895
15
        { &hf_s7comm_szl_0131_0004_funkt_4_6,
3896
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_4.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3897
15
          "Bit 6: Reserved", HFILL }},
3898
15
        { &hf_s7comm_szl_0131_0004_funkt_4_7,
3899
15
        { "Reserved", "s7comm.szl.0131.0004.funkt_4.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3900
15
          "Bit 7: Reserved", HFILL }},
3901
15
        { &hf_s7comm_szl_0131_0004_funkt_5,
3902
15
        { "funkt_5 (Reserved)", "s7comm.szl.0131.0004.funkt_5", FT_UINT8, BASE_HEX, NULL, 0x0,
3903
15
          "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
3904
15
        { &hf_s7comm_szl_0131_0004_funkt_6,
3905
15
        { "funkt_6 (Reserved)", "s7comm.szl.0131.0004.funkt_6", FT_UINT8, BASE_HEX, NULL, 0x0,
3906
15
          "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
3907
15
        { &hf_s7comm_szl_0131_0004_funkt_7,
3908
15
        { "funkt_7 (Reserved)", "s7comm.szl.0131.0004.funkt_7", FT_UINT8, BASE_HEX, NULL, 0x0,
3909
15
          "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
3910
15
        { &hf_s7comm_szl_0131_0004_kop,
3911
15
        { "kop (Maximum number of copied blocks)", "s7comm.szl.0131.0004.kop", FT_UINT8, BASE_DEC, NULL, 0x0,
3912
15
          NULL, HFILL }},
3913
15
        { &hf_s7comm_szl_0131_0004_del,
3914
15
        { "del (Maximum number of uninterruptable, deletable blocks)", "s7comm.szl.0131.0004.del", FT_UINT8, BASE_DEC, NULL, 0x0,
3915
15
          NULL, HFILL }},
3916
15
        { &hf_s7comm_szl_0131_0004_kett,
3917
15
        { "kett (Maximum number of blocks chained in one job)", "s7comm.szl.0131.0004.kett", FT_UINT8, BASE_DEC, NULL, 0x0,
3918
15
          NULL, HFILL }},
3919
15
        { &hf_s7comm_szl_0131_0004_hoch,
3920
15
        { "hoch (Maximum number of simultaneous upload procedures)", "s7comm.szl.0131.0004.hoch", FT_UINT8, BASE_DEC, NULL, 0x0,
3921
15
          NULL, HFILL }},
3922
15
        { &hf_s7comm_szl_0131_0004_ver,
3923
15
        { "ver (Maximum size (in bytes) of shiftable blocks in RUN)", "s7comm.szl.0131.0004.ver", FT_UINT8, BASE_DEC, NULL, 0x0,
3924
15
          "ver (Maximum size (in bytes) of shiftable blocks in RUN) With an S7-300, this size refers to the entire block,with the S7-400, it refers to the part of the block relevant to running the program.", HFILL }},
3925
15
        { &hf_s7comm_szl_0131_0004_res,
3926
15
        { "res (Reserved)", "s7comm.szl.0131.0004.res", FT_BYTES, BASE_NONE, NULL, 0x0,
3927
15
          NULL, HFILL }}
3928
15
    };
3929
15
    proto_register_field_array(proto, hf, array_length(hf));
3930
15
}
3931
3932
/*----------------------------------------------------------------------------------------------------*/
3933
static uint32_t
3934
s7comm_decode_szl_id_0131_idx_0004(tvbuff_t *tvb,
3935
                                   proto_tree *tree,
3936
                                   uint32_t offset)
3937
0
{
3938
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3939
0
    offset += 2;
3940
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_0,
3941
0
        ett_s7comm_szl_0131_0004_funkt_0, s7comm_szl_0131_0004_funkt_0_fields, ENC_BIG_ENDIAN);
3942
0
    offset += 1;
3943
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_1,
3944
0
        ett_s7comm_szl_0131_0004_funkt_1, s7comm_szl_0131_0004_funkt_1_fields, ENC_BIG_ENDIAN);
3945
0
    offset += 1;
3946
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_2,
3947
0
        ett_s7comm_szl_0131_0004_funkt_2, s7comm_szl_0131_0004_funkt_2_fields, ENC_BIG_ENDIAN);
3948
0
    offset += 1;
3949
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_3,
3950
0
        ett_s7comm_szl_0131_0004_funkt_3, s7comm_szl_0131_0004_funkt_3_fields, ENC_BIG_ENDIAN);
3951
0
    offset += 1;
3952
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_4,
3953
0
        ett_s7comm_szl_0131_0004_funkt_4, s7comm_szl_0131_0004_funkt_4_fields, ENC_BIG_ENDIAN);
3954
0
    offset += 1;
3955
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_funkt_5, tvb, offset, 1, ENC_BIG_ENDIAN);
3956
0
    offset += 1;
3957
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_funkt_6, tvb, offset, 1, ENC_BIG_ENDIAN);
3958
0
    offset += 1;
3959
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_funkt_7, tvb, offset, 1, ENC_BIG_ENDIAN);
3960
0
    offset += 1;
3961
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_kop, tvb, offset, 1, ENC_BIG_ENDIAN);
3962
0
    offset += 1;
3963
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_del, tvb, offset, 1, ENC_BIG_ENDIAN);
3964
0
    offset += 1;
3965
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_kett, tvb, offset, 1, ENC_BIG_ENDIAN);
3966
0
    offset += 1;
3967
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_hoch, tvb, offset, 1, ENC_BIG_ENDIAN);
3968
0
    offset += 1;
3969
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_ver, tvb, offset, 1, ENC_BIG_ENDIAN);
3970
0
    offset += 1;
3971
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_res, tvb, offset, 25, ENC_NA);
3972
0
    offset += 25;
3973
3974
0
    return offset;
3975
0
}
3976
3977
/*******************************************************************************************************
3978
 *
3979
 * SZL-ID:  0x0131
3980
 * Index:   0x0005
3981
 * Content:
3982
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0005
3983
 *  contains information about the diagnostic capabilities of the module.
3984
 *
3985
 *******************************************************************************************************/
3986
static void
3987
s7comm_szl_0131_0005_register(int proto)
3988
15
{
3989
15
    static hf_register_info hf[] = {
3990
15
        { &hf_s7comm_szl_0131_0005_index,
3991
15
        { "Index", "s7comm.szl.0131.0005.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3992
15
          "W#16#0005 Index for Diagnostics", HFILL }},
3993
15
        { &hf_s7comm_szl_0131_0005_funkt_0,
3994
15
        { "funkt_0 (Available diagnostic functions)", "s7comm.szl.0131.0005.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3995
15
          "Available diagnostic functions: (Bit = 1: functions exists)", HFILL }},
3996
15
        { &hf_s7comm_szl_0131_0005_funkt_0_0,
3997
15
        { "Reserved", "s7comm.szl.0131.0005.funkt_0.bit0_res", FT_BOOLEAN, 8, NULL, 0x01,
3998
15
          "Bit 0: Reserved", HFILL }},
3999
15
        { &hf_s7comm_szl_0131_0005_funkt_0_1,
4000
15
        { "Diagnostic buffer exists", "s7comm.szl.0131.0005.funkt_0.diag_buf", FT_BOOLEAN, 8, NULL, 0x02,
4001
15
          "Bit 1: Diagnostic buffer exists", HFILL }},
4002
15
        { &hf_s7comm_szl_0131_0005_funkt_0_2,
4003
15
        { "Sending system diagnostic data possible", "s7comm.szl.0131.0005.funkt_0.sysdiag", FT_BOOLEAN, 8, NULL, 0x04,
4004
15
          "Bit 2: Sending system diagnostic data possible", HFILL }},
4005
15
        { &hf_s7comm_szl_0131_0005_funkt_0_3,
4006
15
        { "Sending user-defined diagnostic messages possible", "s7comm.szl.0131.0005.funkt_0.userdiag", FT_BOOLEAN, 8, NULL, 0x08,
4007
15
          "Bit 3: Sending user-defined diagnostic messages possible", HFILL }},
4008
15
        { &hf_s7comm_szl_0131_0005_funkt_0_4,
4009
15
        { "Sending VMD status possible", "s7comm.szl.0131.0005.funkt_0.vmdstat", FT_BOOLEAN, 8, NULL, 0x10,
4010
15
          "Bit 4: Sending VMD status possible", HFILL }},
4011
15
        { &hf_s7comm_szl_0131_0005_funkt_0_5,
4012
15
        { "Evaluating diagnostic interrupts", "s7comm.szl.0131.0005.funkt_0.evaldiagint", FT_BOOLEAN, 8, NULL, 0x20,
4013
15
          "Bit 5: Evaluating diagnostic interrupts", HFILL }},
4014
15
        { &hf_s7comm_szl_0131_0005_funkt_0_6,
4015
15
        { "Diagnostic interrupt exists on module", "s7comm.szl.0131.0005.funkt_0.diagint", FT_BOOLEAN, 8, NULL, 0x40,
4016
15
          "Bit 6: Diagnostic interrupt exists on module", HFILL }},
4017
15
        { &hf_s7comm_szl_0131_0005_funkt_0_7,
4018
15
        { "Reserved", "s7comm.szl.0131.0005.funkt_0.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4019
15
          "Bit 7: Reserved", HFILL }},
4020
15
        { &hf_s7comm_szl_0131_0005_funkt_1,
4021
15
        { "funkt_1 (Reserved)", "s7comm.szl.0131.0005.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4022
15
          NULL, HFILL }},
4023
15
        { &hf_s7comm_szl_0131_0005_funkt_2,
4024
15
        { "funkt_2 (Reserved)", "s7comm.szl.0131.0005.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
4025
15
          NULL, HFILL }},
4026
15
        { &hf_s7comm_szl_0131_0005_funkt_3,
4027
15
        { "funkt_3 (Reserved)", "s7comm.szl.0131.0005.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
4028
15
          NULL, HFILL }},
4029
15
        { &hf_s7comm_szl_0131_0005_funkt_4,
4030
15
        { "funkt_4 (Reserved)", "s7comm.szl.0131.0005.funkt_4", FT_UINT8, BASE_HEX, NULL, 0x0,
4031
15
          NULL, HFILL }},
4032
15
        { &hf_s7comm_szl_0131_0005_funkt_5,
4033
15
        { "funkt_5 (Reserved)", "s7comm.szl.0131.0005.funkt_5", FT_UINT8, BASE_HEX, NULL, 0x0,
4034
15
          NULL, HFILL }},
4035
15
        { &hf_s7comm_szl_0131_0005_funkt_6,
4036
15
        { "funkt_6 (Reserved)", "s7comm.szl.0131.0005.funkt_6", FT_UINT8, BASE_HEX, NULL, 0x0,
4037
15
          NULL, HFILL }},
4038
15
        { &hf_s7comm_szl_0131_0005_funkt_7,
4039
15
        { "funkt_7 (Reserved)", "s7comm.szl.0131.0005.funkt_7", FT_UINT8, BASE_HEX, NULL, 0x0,
4040
15
          NULL, HFILL }},
4041
15
        { &hf_s7comm_szl_0131_0005_anz_sen,
4042
15
        { "anz_sen (Maximum number of diagnostic data sinks)", "s7comm.szl.0131.0005.anz_sen", FT_UINT16, BASE_DEC, NULL, 0x0,
4043
15
          NULL, HFILL }},
4044
15
        { &hf_s7comm_szl_0131_0005_anz_ein,
4045
15
        { "anz_ein (Maximum number of entries in the diagnostic buffer)", "s7comm.szl.0131.0005.anz_ein", FT_UINT16, BASE_DEC, NULL, 0x0,
4046
15
          NULL, HFILL }},
4047
15
        { &hf_s7comm_szl_0131_0005_anz_mel,
4048
15
        { "anz_mel (Maximum number of process control group messages)", "s7comm.szl.0131.0005.anz_mel", FT_UINT16, BASE_DEC, NULL, 0x0,
4049
15
          NULL, HFILL }},
4050
15
        { &hf_s7comm_szl_0131_0005_res,
4051
15
        { "res (Reserved)", "s7comm.szl.0131.0005.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4052
15
          NULL, HFILL }}
4053
15
    };
4054
15
    proto_register_field_array(proto, hf, array_length(hf));
4055
15
}
4056
4057
/*----------------------------------------------------------------------------------------------------*/
4058
static uint32_t
4059
s7comm_decode_szl_id_0131_idx_0005(tvbuff_t *tvb,
4060
                                   proto_tree *tree,
4061
                                   uint32_t offset)
4062
0
{
4063
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4064
0
    offset += 2;
4065
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0005_funkt_0,
4066
0
        ett_s7comm_szl_0131_0005_funkt_0, s7comm_szl_0131_0005_funkt_0_fields, ENC_BIG_ENDIAN);
4067
0
    offset += 1;
4068
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4069
0
    offset += 1;
4070
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4071
0
    offset += 1;
4072
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_3, tvb, offset, 1, ENC_BIG_ENDIAN);
4073
0
    offset += 1;
4074
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4075
0
    offset += 1;
4076
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4077
0
    offset += 1;
4078
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_6, tvb, offset, 1, ENC_BIG_ENDIAN);
4079
0
    offset += 1;
4080
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_7, tvb, offset, 1, ENC_BIG_ENDIAN);
4081
0
    offset += 1;
4082
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_anz_sen, tvb, offset, 2, ENC_BIG_ENDIAN);
4083
0
    offset += 2;
4084
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_anz_ein, tvb, offset, 2, ENC_BIG_ENDIAN);
4085
0
    offset += 2;
4086
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_anz_mel, tvb, offset, 2, ENC_BIG_ENDIAN);
4087
0
    offset += 2;
4088
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_res, tvb, offset, 24, ENC_NA);
4089
0
    offset += 24;
4090
4091
0
    return offset;
4092
0
}
4093
4094
/*******************************************************************************************************
4095
 *
4096
 * SZL-ID:  0x0131
4097
 * Index:   0x0006
4098
 * Content:
4099
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0006
4100
 *  contains information about the functions available for data exchange with
4101
 *  communication SFBs for configured connections on the module.
4102
 *
4103
 *******************************************************************************************************/
4104
static void
4105
s7comm_szl_0131_0006_register(int proto)
4106
15
{
4107
15
    static hf_register_info hf[] = {
4108
15
        { &hf_s7comm_szl_0131_0006_index,
4109
15
        { "Index", "s7comm.szl.0131.0006.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4110
15
          "W#16#0006 Data exchange with communication SFBs for configured connections", HFILL }},
4111
15
        { &hf_s7comm_szl_0131_0006_funkt_0,
4112
15
        { "funkt_0", "s7comm.szl.0131.0006.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
4113
15
          "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
4114
15
        { &hf_s7comm_szl_0131_0006_funkt_0_0,
4115
15
        { "Bit 0: USEND", "s7comm.szl.0131.0006.funkt_0.usend", FT_BOOLEAN, 8, NULL, 0x01,
4116
15
          NULL, HFILL }},
4117
15
        { &hf_s7comm_szl_0131_0006_funkt_0_1,
4118
15
        { "Bit 1: URCV", "s7comm.szl.0131.0006.funkt_0.urcv", FT_BOOLEAN, 8, NULL, 0x02,
4119
15
          NULL, HFILL }},
4120
15
        { &hf_s7comm_szl_0131_0006_funkt_0_2,
4121
15
        { "Bit 2: SEND", "s7comm.szl.0131.0006.funkt_0.send", FT_BOOLEAN, 8, NULL, 0x04,
4122
15
          NULL, HFILL }},
4123
15
        { &hf_s7comm_szl_0131_0006_funkt_0_3,
4124
15
        { "Bit 3: RCV", "s7comm.szl.0131.0006.funkt_0.rcv", FT_BOOLEAN, 8, NULL, 0x08,
4125
15
          NULL, HFILL }},
4126
15
        { &hf_s7comm_szl_0131_0006_funkt_0_4,
4127
15
        { "Bit 4: BSEND", "s7comm.szl.0131.0006.funkt_0.bsend", FT_BOOLEAN, 8, NULL, 0x10,
4128
15
          NULL, HFILL }},
4129
15
        { &hf_s7comm_szl_0131_0006_funkt_0_5,
4130
15
        { "Bit 5: BRCV", "s7comm.szl.0131.0006.funkt_0.brcv", FT_BOOLEAN, 8, NULL, 0x20,
4131
15
          NULL, HFILL }},
4132
15
        { &hf_s7comm_szl_0131_0006_funkt_0_6,
4133
15
        { "Bit 6: GET", "s7comm.szl.0131.0006.funkt_0.get", FT_BOOLEAN, 8, NULL, 0x40,
4134
15
          NULL, HFILL }},
4135
15
        { &hf_s7comm_szl_0131_0006_funkt_0_7,
4136
15
        { "Bit 7: PUT", "s7comm.szl.0131.0006.funkt_0.put", FT_BOOLEAN, 8, NULL, 0x80,
4137
15
          NULL, HFILL }},
4138
15
        { &hf_s7comm_szl_0131_0006_funkt_1,
4139
15
        { "funkt_1", "s7comm.szl.0131.0006.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4140
15
          "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
4141
15
        { &hf_s7comm_szl_0131_0006_funkt_1_0,
4142
15
        { "Bit 0: PRINT", "s7comm.szl.0131.0006.funkt_1.print", FT_BOOLEAN, 8, NULL, 0x01,
4143
15
          NULL, HFILL }},
4144
15
        { &hf_s7comm_szl_0131_0006_funkt_1_1,
4145
15
        { "Bit 1: ABORT", "s7comm.szl.0131.0006.funkt_1.abort", FT_BOOLEAN, 8, NULL, 0x02,
4146
15
          NULL, HFILL }},
4147
15
        { &hf_s7comm_szl_0131_0006_funkt_1_2,
4148
15
        { "Bit 2: INITIATE", "s7comm.szl.0131.0006.funkt_1.initiate", FT_BOOLEAN, 8, NULL, 0x04,
4149
15
          NULL, HFILL }},
4150
15
        { &hf_s7comm_szl_0131_0006_funkt_1_3,
4151
15
        { "Bit 3: START", "s7comm.szl.0131.0006.funkt_1.start", FT_BOOLEAN, 8, NULL, 0x08,
4152
15
          NULL, HFILL }},
4153
15
        { &hf_s7comm_szl_0131_0006_funkt_1_4,
4154
15
        { "Bit 4: STOP", "s7comm.szl.0131.0006.funkt_1.stop", FT_BOOLEAN, 8, NULL, 0x10,
4155
15
          NULL, HFILL }},
4156
15
        { &hf_s7comm_szl_0131_0006_funkt_1_5,
4157
15
        { "Bit 5: RESUME", "s7comm.szl.0131.0006.funkt_1.resume", FT_BOOLEAN, 8, NULL, 0x20,
4158
15
          NULL, HFILL }},
4159
15
        { &hf_s7comm_szl_0131_0006_funkt_1_6,
4160
15
        { "Bit 6: STATUS", "s7comm.szl.0131.0006.funkt_1.status", FT_BOOLEAN, 8, NULL, 0x40,
4161
15
          NULL, HFILL }},
4162
15
        { &hf_s7comm_szl_0131_0006_funkt_1_7,
4163
15
        { "Bit 7: USTATUS", "s7comm.szl.0131.0006.funkt_1.ustatus", FT_BOOLEAN, 8, NULL, 0x80,
4164
15
          NULL, HFILL }},
4165
15
        { &hf_s7comm_szl_0131_0006_funkt_2,
4166
15
        { "funkt_2", "s7comm.szl.0131.0006.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
4167
15
          "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
4168
15
        { &hf_s7comm_szl_0131_0006_funkt_2_0,
4169
15
        { "Bit 0: PI", "s7comm.szl.0131.0006.funkt_2.pi", FT_BOOLEAN, 8, NULL, 0x01,
4170
15
          NULL, HFILL }},
4171
15
        { &hf_s7comm_szl_0131_0006_funkt_2_1,
4172
15
        { "Bit 1: READ", "s7comm.szl.0131.0006.funkt_2.read", FT_BOOLEAN, 8, NULL, 0x02,
4173
15
          NULL, HFILL }},
4174
15
        { &hf_s7comm_szl_0131_0006_funkt_2_2,
4175
15
        { "Bit 2: WRITE", "s7comm.szl.0131.0006.funkt_2.write", FT_BOOLEAN, 8, NULL, 0x04,
4176
15
          NULL, HFILL }},
4177
15
        { &hf_s7comm_szl_0131_0006_funkt_2_3,
4178
15
        { "Bit 3: LOAD", "s7comm.szl.0131.0006.funkt_2.load", FT_BOOLEAN, 8, NULL, 0x08,
4179
15
          NULL, HFILL }},
4180
15
        { &hf_s7comm_szl_0131_0006_funkt_2_4,
4181
15
        { "Bit 4: LOAD_ME", "s7comm.szl.0131.0006.funkt_2.load_me", FT_BOOLEAN, 8, NULL, 0x10,
4182
15
          NULL, HFILL }},
4183
15
        { &hf_s7comm_szl_0131_0006_funkt_2_5,
4184
15
        { "Bit 5: ALARM", "s7comm.szl.0131.0006.funkt_2.alarm", FT_BOOLEAN, 8, NULL, 0x20,
4185
15
          NULL, HFILL }},
4186
15
        { &hf_s7comm_szl_0131_0006_funkt_2_6,
4187
15
        { "Bit 6: ALARM_8", "s7comm.szl.0131.0006.funkt_2.alarm_8", FT_BOOLEAN, 8, NULL, 0x40,
4188
15
          NULL, HFILL }},
4189
15
        { &hf_s7comm_szl_0131_0006_funkt_2_7,
4190
15
        { "Bit 7: ALARM_8P", "s7comm.szl.0131.0006.funkt_2.alarm_8p", FT_BOOLEAN, 8, NULL, 0x80,
4191
15
          NULL, HFILL }},
4192
15
        { &hf_s7comm_szl_0131_0006_funkt_3,
4193
15
        { "funkt_3", "s7comm.szl.0131.0006.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
4194
15
          "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
4195
15
        { &hf_s7comm_szl_0131_0006_funkt_3_0,
4196
15
        { "Bit 0: NOTIFY", "s7comm.szl.0131.0006.funkt_3.notify", FT_BOOLEAN, 8, NULL, 0x01,
4197
15
          NULL, HFILL }},
4198
15
        { &hf_s7comm_szl_0131_0006_funkt_3_1,
4199
15
        { "Bit 1: AR_SEND", "s7comm.szl.0131.0006.funkt_3.ar_send", FT_BOOLEAN, 8, NULL, 0x02,
4200
15
          NULL, HFILL }},
4201
15
        { &hf_s7comm_szl_0131_0006_funkt_3_2,
4202
15
        { "Bit 2: Reserved", "s7comm.szl.0131.0006.funkt_3.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
4203
15
          NULL, HFILL }},
4204
15
        { &hf_s7comm_szl_0131_0006_funkt_3_3,
4205
15
        { "Bit 3: Reserved", "s7comm.szl.0131.0006.funkt_3.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
4206
15
          NULL, HFILL }},
4207
15
        { &hf_s7comm_szl_0131_0006_funkt_3_4,
4208
15
        { "Bit 4: Reserved", "s7comm.szl.0131.0006.funkt_3.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
4209
15
          NULL, HFILL }},
4210
15
        { &hf_s7comm_szl_0131_0006_funkt_3_5,
4211
15
        { "Bit 5: Reserved", "s7comm.szl.0131.0006.funkt_3.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
4212
15
          NULL, HFILL }},
4213
15
        { &hf_s7comm_szl_0131_0006_funkt_3_6,
4214
15
        { "Bit 6: Reserved", "s7comm.szl.0131.0006.funkt_3.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
4215
15
          NULL, HFILL }},
4216
15
        { &hf_s7comm_szl_0131_0006_funkt_3_7,
4217
15
        { "Bit 7: Reserved", "s7comm.szl.0131.0006.funkt_3.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4218
15
          NULL, HFILL }},
4219
15
        { &hf_s7comm_szl_0131_0006_funkt_4,
4220
15
        { "funkt_4", "s7comm.szl.0131.0006.funkt_4", FT_UINT8, BASE_HEX, NULL, 0x0,
4221
15
          "Reserved", HFILL }},
4222
15
        { &hf_s7comm_szl_0131_0006_funkt_5,
4223
15
        { "funkt_5", "s7comm.szl.0131.0006.funkt_5", FT_UINT8, BASE_HEX, NULL, 0x0,
4224
15
          "Reserved", HFILL }},
4225
15
        { &hf_s7comm_szl_0131_0006_funkt_6,
4226
15
        { "funkt_6", "s7comm.szl.0131.0006.funkt_6", FT_UINT8, BASE_HEX, NULL, 0x0,
4227
15
          "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
4228
15
        { &hf_s7comm_szl_0131_0006_funkt_6_0,
4229
15
        { "Bit 0: X_SEND", "s7comm.szl.0131.0006.funkt_6.x_send", FT_BOOLEAN, 8, NULL, 0x01,
4230
15
          NULL, HFILL }},
4231
15
        { &hf_s7comm_szl_0131_0006_funkt_6_1,
4232
15
        { "Bit 1: X_RCV", "s7comm.szl.0131.0006.funkt_6.x_rcv", FT_BOOLEAN, 8, NULL, 0x02,
4233
15
          NULL, HFILL }},
4234
15
        { &hf_s7comm_szl_0131_0006_funkt_6_2,
4235
15
        { "Bit 2: X_GET", "s7comm.szl.0131.0006.funkt_6.x_get", FT_BOOLEAN, 8, NULL, 0x04,
4236
15
          NULL, HFILL }},
4237
15
        { &hf_s7comm_szl_0131_0006_funkt_6_3,
4238
15
        { "Bit 3: X_PUT", "s7comm.szl.0131.0006.funkt_6.x_put", FT_BOOLEAN, 8, NULL, 0x08,
4239
15
          NULL, HFILL }},
4240
15
        { &hf_s7comm_szl_0131_0006_funkt_6_4,
4241
15
        { "Bit 4: X_ABORT", "s7comm.szl.0131.0006.funkt_6.x_abort", FT_BOOLEAN, 8, NULL, 0x10,
4242
15
          NULL, HFILL }},
4243
15
        { &hf_s7comm_szl_0131_0006_funkt_6_5,
4244
15
        { "Bit 5: I_GET", "s7comm.szl.0131.0006.funkt_6.i_get", FT_BOOLEAN, 8, NULL, 0x20,
4245
15
          NULL, HFILL }},
4246
15
        { &hf_s7comm_szl_0131_0006_funkt_6_6,
4247
15
        { "Bit 6: I_PUT", "s7comm.szl.0131.0006.funkt_6.i_put", FT_BOOLEAN, 8, NULL, 0x40,
4248
15
          NULL, HFILL }},
4249
15
        { &hf_s7comm_szl_0131_0006_funkt_6_7,
4250
15
        { "Bit 7: I_ABORT", "s7comm.szl.0131.0006.funkt_6.i_abort", FT_BOOLEAN, 8, NULL, 0x80,
4251
15
          NULL, HFILL }},
4252
15
        { &hf_s7comm_szl_0131_0006_funkt_7,
4253
15
        { "funkt_7", "s7comm.szl.0131.0006.funkt_7", FT_UINT8, BASE_HEX, NULL, 0x0,
4254
15
          "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
4255
15
        { &hf_s7comm_szl_0131_0006_funkt_7_0,
4256
15
        { "Bit 0: SCAN_SND", "s7comm.szl.0131.0006.funkt_7.scan_snd", FT_BOOLEAN, 8, NULL, 0x01,
4257
15
          NULL, HFILL }},
4258
15
        { &hf_s7comm_szl_0131_0006_funkt_7_1,
4259
15
        { "Bit 1: ALARM_SQ", "s7comm.szl.0131.0006.funkt_7.alarm_sq", FT_BOOLEAN, 8, NULL, 0x02,
4260
15
          NULL, HFILL }},
4261
15
        { &hf_s7comm_szl_0131_0006_funkt_7_2,
4262
15
        { "Bit 2: ALARM_S", "s7comm.szl.0131.0006.funkt_7.alarm_s", FT_BOOLEAN, 8, NULL, 0x04,
4263
15
          NULL, HFILL }},
4264
15
        { &hf_s7comm_szl_0131_0006_funkt_7_3,
4265
15
        { "Bit 3: ALARM_SC", "s7comm.szl.0131.0006.funkt_7.alarm_sc", FT_BOOLEAN, 8, NULL, 0x08,
4266
15
          NULL, HFILL }},
4267
15
        { &hf_s7comm_szl_0131_0006_funkt_7_4,
4268
15
        { "Bit 4: EN_MSG", "s7comm.szl.0131.0006.funkt_7.en_msg", FT_BOOLEAN, 8, NULL, 0x10,
4269
15
          NULL, HFILL }},
4270
15
        { &hf_s7comm_szl_0131_0006_funkt_7_5,
4271
15
        { "Bit 5: DIS_MSG", "s7comm.szl.0131.0006.funkt_7.dis_msg", FT_BOOLEAN, 8, NULL, 0x20,
4272
15
          NULL, HFILL }},
4273
15
        { &hf_s7comm_szl_0131_0006_funkt_7_6,
4274
15
        { "Bit 6: CONTROL", "s7comm.szl.0131.0006.funkt_7.control", FT_BOOLEAN, 8, NULL, 0x40,
4275
15
          NULL, HFILL }},
4276
15
        { &hf_s7comm_szl_0131_0006_funkt_7_7,
4277
15
        { "Bit 7: Reserved", "s7comm.szl.0131.0006.funkt_7.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4278
15
          NULL, HFILL }},
4279
15
        { &hf_s7comm_szl_0131_0006_schnell,
4280
15
        { "schnell (Fast reaction yes/no)", "s7comm.szl.0131.0006.schnell", FT_UINT8, BASE_HEX, NULL, 0x0,
4281
15
          NULL, HFILL }},
4282
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0,
4283
15
        { "zugtyp_0", "s7comm.szl.0131.0006.zugtyp_0", FT_UINT8, BASE_HEX, NULL, 0x0,
4284
15
          "zugtyp_0 (Permitted module types for fast reaction)", HFILL }},
4285
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0_0,
4286
15
        { "Bit 0: USEND", "s7comm.szl.0131.0006.zugtyp_0.usend", FT_BOOLEAN, 8, NULL, 0x01,
4287
15
          NULL, HFILL }},
4288
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0_1,
4289
15
        { "Bit 1: URCV", "s7comm.szl.0131.0006.zugtyp_0.urcv", FT_BOOLEAN, 8, NULL, 0x02,
4290
15
          NULL, HFILL }},
4291
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0_2,
4292
15
        { "Bit 2: SEND", "s7comm.szl.0131.0006.zugtyp_0.send", FT_BOOLEAN, 8, NULL, 0x04,
4293
15
          NULL, HFILL }},
4294
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0_3,
4295
15
        { "Bit 3: RCV", "s7comm.szl.0131.0006.zugtyp_0.rcv", FT_BOOLEAN, 8, NULL, 0x08,
4296
15
          NULL, HFILL }},
4297
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0_4,
4298
15
        { "Bit 4: BSEND", "s7comm.szl.0131.0006.zugtyp_0.bsend", FT_BOOLEAN, 8, NULL, 0x10,
4299
15
          NULL, HFILL }},
4300
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0_5,
4301
15
        { "Bit 5: BRCV", "s7comm.szl.0131.0006.zugtyp_0.brcv", FT_BOOLEAN, 8, NULL, 0x20,
4302
15
          NULL, HFILL }},
4303
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0_6,
4304
15
        { "Bit 6: GET", "s7comm.szl.0131.0006.zugtyp_0.get", FT_BOOLEAN, 8, NULL, 0x40,
4305
15
          NULL, HFILL }},
4306
15
        { &hf_s7comm_szl_0131_0006_zugtyp_0_7,
4307
15
        { "Bit 7: PUT", "s7comm.szl.0131.0006.zugtyp_0.put", FT_BOOLEAN, 8, NULL, 0x80,
4308
15
          NULL, HFILL }},
4309
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1,
4310
15
        { "zugtyp_1", "s7comm.szl.0131.0006.zugtyp_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4311
15
          "zugtyp_1 (Permitted module types for fast reaction)", HFILL }},
4312
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1_0,
4313
15
        { "Bit 0: PRINT", "s7comm.szl.0131.0006.zugtyp_1.print", FT_BOOLEAN, 8, NULL, 0x01,
4314
15
          NULL, HFILL }},
4315
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1_1,
4316
15
        { "Bit 1: ABORT", "s7comm.szl.0131.0006.zugtyp_1abort", FT_BOOLEAN, 8, NULL, 0x02,
4317
15
          NULL, HFILL }},
4318
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1_2,
4319
15
        { "Bit 2: INITIATE", "s7comm.szl.0131.0006.zugtyp_1.initiate", FT_BOOLEAN, 8, NULL, 0x04,
4320
15
          NULL, HFILL }},
4321
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1_3,
4322
15
        { "Bit 3: START", "s7comm.szl.0131.0006.zugtyp_1.start", FT_BOOLEAN, 8, NULL, 0x08,
4323
15
          NULL, HFILL }},
4324
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1_4,
4325
15
        { "Bit 4: STOP", "s7comm.szl.0131.0006.zugtyp_1.stop", FT_BOOLEAN, 8, NULL, 0x10,
4326
15
          NULL, HFILL }},
4327
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1_5,
4328
15
        { "Bit 5: RESUME", "s7comm.szl.0131.0006.zugtyp_1.resume", FT_BOOLEAN, 8, NULL, 0x20,
4329
15
          NULL, HFILL }},
4330
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1_6,
4331
15
        { "Bit 6: STATUS", "s7comm.szl.0131.0006.zugtyp_1.status", FT_BOOLEAN, 8, NULL, 0x40,
4332
15
          NULL, HFILL }},
4333
15
        { &hf_s7comm_szl_0131_0006_zugtyp_1_7,
4334
15
        { "Bit 7: USTATUS", "s7comm.szl.0131.0006.zugtyp_1.ustatus", FT_BOOLEAN, 8, NULL, 0x80,
4335
15
          NULL, HFILL }},
4336
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2,
4337
15
        { "zugtyp_2", "s7comm.szl.0131.0006.zugtyp_2", FT_UINT8, BASE_HEX, NULL, 0x0,
4338
15
          "zugtyp_2 (Permitted module types for fast reaction)", HFILL }},
4339
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2_0,
4340
15
        { "Bit 0: PI", "s7comm.szl.0131.0006.zugtyp_2.pi", FT_BOOLEAN, 8, NULL, 0x01,
4341
15
          NULL, HFILL }},
4342
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2_1,
4343
15
        { "Bit 1: READ", "s7comm.szl.0131.0006.zugtyp_2.read", FT_BOOLEAN, 8, NULL, 0x02,
4344
15
          NULL, HFILL }},
4345
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2_2,
4346
15
        { "Bit 2: WRITE", "s7comm.szl.0131.0006.zugtyp_2.write", FT_BOOLEAN, 8, NULL, 0x04,
4347
15
          NULL, HFILL }},
4348
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2_3,
4349
15
        { "Bit 3: LOAD", "s7comm.szl.0131.0006.zugtyp_2.load", FT_BOOLEAN, 8, NULL, 0x08,
4350
15
          NULL, HFILL }},
4351
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2_4,
4352
15
        { "Bit 4: LOAD_ME", "s7comm.szl.0131.0006.zugtyp_2.load_me", FT_BOOLEAN, 8, NULL, 0x10,
4353
15
          NULL, HFILL }},
4354
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2_5,
4355
15
        { "Bit 5: ALARM", "s7comm.szl.0131.0006.zugtyp_2.alarm", FT_BOOLEAN, 8, NULL, 0x20,
4356
15
          NULL, HFILL }},
4357
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2_6,
4358
15
        { "Bit 6: ALARM_8", "s7comm.szl.0131.0006.zugtyp_2.alarm_8", FT_BOOLEAN, 8, NULL, 0x40,
4359
15
          NULL, HFILL }},
4360
15
        { &hf_s7comm_szl_0131_0006_zugtyp_2_7,
4361
15
        { "Bit 7: ALARM_8P", "s7comm.szl.0131.0006.zugtyp_2.alarm_8p", FT_BOOLEAN, 8, NULL, 0x80,
4362
15
          NULL, HFILL }},
4363
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3,
4364
15
        { "zugtyp_3", "s7comm.szl.0131.0006.zugtyp_3", FT_UINT8, BASE_HEX, NULL, 0x0,
4365
15
          "zugtyp_3 (Permitted module types for fast reaction)", HFILL }},
4366
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3_0,
4367
15
        { "Bit 0: NOTIFY", "s7comm.szl.0131.0006.zugtyp_3.notify", FT_BOOLEAN, 8, NULL, 0x01,
4368
15
          NULL, HFILL }},
4369
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3_1,
4370
15
        { "Bit 1: AR_SEND", "s7comm.szl.0131.0006.zugtyp_3.ar_send", FT_BOOLEAN, 8, NULL, 0x02,
4371
15
          NULL, HFILL }},
4372
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3_2,
4373
15
        { "Bit 2: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
4374
15
          NULL, HFILL }},
4375
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3_3,
4376
15
        { "Bit 3: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
4377
15
          NULL, HFILL }},
4378
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3_4,
4379
15
        { "Bit 4: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
4380
15
          NULL, HFILL }},
4381
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3_5,
4382
15
        { "Bit 5: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
4383
15
          NULL, HFILL }},
4384
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3_6,
4385
15
        { "Bit 6: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
4386
15
          NULL, HFILL }},
4387
15
        { &hf_s7comm_szl_0131_0006_zugtyp_3_7,
4388
15
        { "Bit 7: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4389
15
          NULL, HFILL }},
4390
15
        { &hf_s7comm_szl_0131_0006_zugtyp_4,
4391
15
        { "zugtyp_4", "s7comm.szl.0131.0006.zugtyp_4", FT_UINT8, BASE_HEX, NULL, 0x0,
4392
15
          "zugtyp_4 (Permitted module types for fast reaction)", HFILL }},
4393
15
        { &hf_s7comm_szl_0131_0006_zugtyp_5,
4394
15
        { "zugtyp_5", "s7comm.szl.0131.0006.zugtyp_5", FT_UINT8, BASE_HEX, NULL, 0x0,
4395
15
          "zugtyp_5 (Permitted module types for fast reaction)", HFILL }},
4396
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6,
4397
15
        { "zugtyp_6", "s7comm.szl.0131.0006.zugtyp_6", FT_UINT8, BASE_HEX, NULL, 0x0,
4398
15
          "zugtyp_6 (Permitted module types for fast reaction)", HFILL }},
4399
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6_0,
4400
15
        { "Bit 0: X_SEND", "s7comm.szl.0131.0006.zugtyp_6.x_send", FT_BOOLEAN, 8, NULL, 0x01,
4401
15
          NULL, HFILL }},
4402
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6_1,
4403
15
        { "Bit 1: X_RCV", "s7comm.szl.0131.0006.zugtyp_6.x_rcv", FT_BOOLEAN, 8, NULL, 0x02,
4404
15
          NULL, HFILL }},
4405
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6_2,
4406
15
        { "Bit 2: X_GET", "s7comm.szl.0131.0006.zugtyp_6.x_get", FT_BOOLEAN, 8, NULL, 0x04,
4407
15
          NULL, HFILL }},
4408
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6_3,
4409
15
        { "Bit 3: X_PUT", "s7comm.szl.0131.0006.zugtyp_6.x_put", FT_BOOLEAN, 8, NULL, 0x08,
4410
15
          NULL, HFILL }},
4411
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6_4,
4412
15
        { "Bit 4: X_ABORT", "s7comm.szl.0131.0006.zugtyp_6.x_abort", FT_BOOLEAN, 8, NULL, 0x10,
4413
15
          NULL, HFILL }},
4414
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6_5,
4415
15
        { "Bit 5: I_GET", "s7comm.szl.0131.0006.zugtyp_6.i_get", FT_BOOLEAN, 8, NULL, 0x20,
4416
15
          NULL, HFILL }},
4417
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6_6,
4418
15
        { "Bit 6: I_PUT", "s7comm.szl.0131.0006.zugtyp_6.i_put", FT_BOOLEAN, 8, NULL, 0x40,
4419
15
          NULL, HFILL }},
4420
15
        { &hf_s7comm_szl_0131_0006_zugtyp_6_7,
4421
15
        { "Bit 7: I_ABORT", "s7comm.szl.0131.0006.zugtyp_6.i_abort", FT_BOOLEAN, 8, NULL, 0x80,
4422
15
          NULL, HFILL }},
4423
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7,
4424
15
        { "zugtyp_7", "s7comm.szl.0131.0006.zugtyp_7", FT_UINT8, BASE_HEX, NULL, 0x0,
4425
15
          "zugtyp_7 (Permitted module types for fast reaction)", HFILL }},
4426
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7_0,
4427
15
        { "Bit 0: SCAN_SND", "s7comm.szl.0131.0006.zugtyp_7.scan_snd", FT_BOOLEAN, 8, NULL, 0x01,
4428
15
          NULL, HFILL }},
4429
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7_1,
4430
15
        { "Bit 1: ALARM_SQ", "s7comm.szl.0131.0006.zugtyp_7.alarm_sq", FT_BOOLEAN, 8, NULL, 0x02,
4431
15
          NULL, HFILL }},
4432
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7_2,
4433
15
        { "Bit 2: ALARM_S", "s7comm.szl.0131.0006.zugtyp_7.alarm_s", FT_BOOLEAN, 8, NULL, 0x04,
4434
15
          NULL, HFILL }},
4435
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7_3,
4436
15
        { "Bit 3: ALARM_SC", "s7comm.szl.0131.0006.zugtyp_7.alarm_sc", FT_BOOLEAN, 8, NULL, 0x08,
4437
15
          NULL, HFILL }},
4438
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7_4,
4439
15
        { "Bit 4: EN_MSG", "s7comm.szl.0131.0006.zugtyp_7.en_msg", FT_BOOLEAN, 8, NULL, 0x10,
4440
15
          NULL, HFILL }},
4441
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7_5,
4442
15
        { "Bit 5: DIS_MSG", "s7comm.szl.0131.0006.zugtyp_7.dis_msg", FT_BOOLEAN, 8, NULL, 0x20,
4443
15
          NULL, HFILL }},
4444
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7_6,
4445
15
        { "Bit 6: CONTROL", "s7comm.szl.0131.0006.zugtyp_7.control", FT_BOOLEAN, 8, NULL, 0x40,
4446
15
          NULL, HFILL }},
4447
15
        { &hf_s7comm_szl_0131_0006_zugtyp_7_7,
4448
15
        { "Bit 7: Reserved", "s7comm.szl.0131.0006.zugtyp_7.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4449
15
          NULL, HFILL }},
4450
15
        { &hf_s7comm_szl_0131_0006_res1,
4451
15
        { "res1 (Reserved)", "s7comm.szl.0131.0006.res1", FT_BYTES, BASE_NONE, NULL, 0x0,
4452
15
          NULL, HFILL }},
4453
15
        { &hf_s7comm_szl_0131_0006_max_sd_empf,
4454
15
        { "max_sd_empf (Maximum number of send and receive parameters per block)", "s7comm.szl.0131.0006.max_sd_empf", FT_UINT16, BASE_DEC, NULL, 0x0,
4455
15
          NULL, HFILL }},
4456
15
        { &hf_s7comm_szl_0131_0006_max_sd_al8p,
4457
15
        { "max_sd_al8p (Maximum number of send parameters for ALARM_8P)", "s7comm.szl.0131.0006.max_sd_al8p", FT_UINT16, BASE_DEC, NULL, 0x0,
4458
15
          NULL, HFILL }},
4459
15
        { &hf_s7comm_szl_0131_0006_max_inst,
4460
15
        { "max_inst (Maximum number of instances for communication SFBs for configured connections)", "s7comm.szl.0131.0006.max_inst", FT_UINT16, BASE_DEC, NULL, 0x0,
4461
15
          NULL, HFILL }},
4462
15
        { &hf_s7comm_szl_0131_0006_res2,
4463
15
        { "res2 (Reserved)", "s7comm.szl.0131.0006.res2", FT_BYTES, BASE_NONE, NULL, 0x0,
4464
15
          NULL, HFILL }},
4465
15
        { &hf_s7comm_szl_0131_0006_verb_proj,
4466
15
        { "verb_proj (Connection configured (yes=1) possible)", "s7comm.szl.0131.0006.verb_proj", FT_UINT8, BASE_HEX, NULL, 0x0,
4467
15
          NULL, HFILL }},
4468
15
        { &hf_s7comm_szl_0131_0006_verb_prog,
4469
15
        { "verb_prog (Connection programmed (yes=1) possible)", "s7comm.szl.0131.0006.verb_prog", FT_UINT8, BASE_HEX, NULL, 0x0,
4470
15
          NULL, HFILL }},
4471
15
        { &hf_s7comm_szl_0131_0006_res3,
4472
15
        { "res3 (Reserved)", "s7comm.szl.0131.0006.res3", FT_BYTES, BASE_NONE, NULL, 0x0,
4473
15
          NULL, HFILL }}
4474
15
    };
4475
15
    proto_register_field_array(proto, hf, array_length(hf));
4476
15
}
4477
4478
/*----------------------------------------------------------------------------------------------------*/
4479
static uint32_t
4480
s7comm_decode_szl_id_0131_idx_0006(tvbuff_t *tvb,
4481
                                   proto_tree *tree,
4482
                                   uint32_t offset)
4483
0
{
4484
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4485
0
    offset += 2;
4486
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_0,
4487
0
        ett_s7comm_szl_0131_0006_funkt_0, s7comm_szl_0131_0006_funkt_0_fields, ENC_BIG_ENDIAN);
4488
0
    offset += 1;
4489
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_1,
4490
0
        ett_s7comm_szl_0131_0006_funkt_1, s7comm_szl_0131_0006_funkt_1_fields, ENC_BIG_ENDIAN);
4491
0
    offset += 1;
4492
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_2,
4493
0
        ett_s7comm_szl_0131_0006_funkt_2, s7comm_szl_0131_0006_funkt_2_fields, ENC_BIG_ENDIAN);
4494
0
    offset += 1;
4495
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_3,
4496
0
        ett_s7comm_szl_0131_0006_funkt_3, s7comm_szl_0131_0006_funkt_3_fields, ENC_BIG_ENDIAN);
4497
0
    offset += 1;
4498
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4499
0
    offset += 1;
4500
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4501
0
    offset += 1;
4502
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_6,
4503
0
        ett_s7comm_szl_0131_0006_funkt_6, s7comm_szl_0131_0006_funkt_6_fields, ENC_BIG_ENDIAN);
4504
0
    offset += 1;
4505
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_7,
4506
0
        ett_s7comm_szl_0131_0006_funkt_7, s7comm_szl_0131_0006_funkt_7_fields, ENC_BIG_ENDIAN);
4507
0
    offset += 1;
4508
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_schnell, tvb, offset, 1, ENC_BIG_ENDIAN);
4509
0
    offset += 1;
4510
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_0,
4511
0
        ett_s7comm_szl_0131_0006_zugtyp_0, s7comm_szl_0131_0006_zugtyp_0_fields, ENC_BIG_ENDIAN);
4512
0
    offset += 1;
4513
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_1,
4514
0
        ett_s7comm_szl_0131_0006_zugtyp_1, s7comm_szl_0131_0006_zugtyp_1_fields, ENC_BIG_ENDIAN);
4515
0
    offset += 1;
4516
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_2,
4517
0
        ett_s7comm_szl_0131_0006_zugtyp_2, s7comm_szl_0131_0006_zugtyp_2_fields, ENC_BIG_ENDIAN);
4518
0
    offset += 1;
4519
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_3,
4520
0
        ett_s7comm_szl_0131_0006_zugtyp_3, s7comm_szl_0131_0006_zugtyp_3_fields, ENC_BIG_ENDIAN);
4521
0
    offset += 1;
4522
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_zugtyp_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4523
0
    offset += 1;
4524
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_zugtyp_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4525
0
    offset += 1;
4526
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_6,
4527
0
        ett_s7comm_szl_0131_0006_zugtyp_6, s7comm_szl_0131_0006_zugtyp_6_fields, ENC_BIG_ENDIAN);
4528
0
    offset += 1;
4529
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_7,
4530
0
        ett_s7comm_szl_0131_0006_zugtyp_7, s7comm_szl_0131_0006_zugtyp_7_fields, ENC_BIG_ENDIAN);
4531
0
    offset += 1;
4532
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_res1, tvb, offset, 1, ENC_NA);
4533
0
    offset += 1;
4534
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_max_sd_empf, tvb, offset, 2, ENC_BIG_ENDIAN);
4535
0
    offset += 2;
4536
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_max_sd_al8p, tvb, offset, 2, ENC_BIG_ENDIAN);
4537
0
    offset += 2;
4538
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_max_inst, tvb, offset, 2, ENC_BIG_ENDIAN);
4539
0
    offset += 2;
4540
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_res2, tvb, offset, 2, ENC_NA);
4541
0
    offset += 2;
4542
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_verb_proj, tvb, offset, 1, ENC_BIG_ENDIAN);
4543
0
    offset += 1;
4544
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_verb_prog, tvb, offset, 1, ENC_BIG_ENDIAN);
4545
0
    offset += 1;
4546
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_res3, tvb, offset, 10, ENC_NA);
4547
0
    offset += 10;
4548
4549
0
    return offset;
4550
0
}
4551
4552
/*******************************************************************************************************
4553
 *
4554
 * SZL-ID:  0x0131
4555
 * Index:   0x0007
4556
 * Content:
4557
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0007
4558
 *  contains information about the functions available for global data
4559
 *  communication on the module.
4560
 *
4561
 *******************************************************************************************************/
4562
static void
4563
s7comm_szl_0131_0007_register(int proto)
4564
15
{
4565
15
    static hf_register_info hf[] = {
4566
15
        { &hf_s7comm_szl_0131_0007_index,
4567
15
        { "Index", "s7comm.szl.0131.0007.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4568
15
          "W#16#0007 Global data communication", HFILL }},
4569
15
        { &hf_s7comm_szl_0131_0007_funkt_0,
4570
15
        { "funkt_0 (Available GD functions)", "s7comm.szl.0131.0007.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
4571
15
          NULL, HFILL }},
4572
15
        { &hf_s7comm_szl_0131_0007_funkt_0_0,
4573
15
        { "Cyclic", "s7comm.szl.0131.0007.funkt_0.cyclic", FT_BOOLEAN, 8, NULL, 0x01,
4574
15
          "Bit 0: Cyclic", HFILL }},
4575
15
        { &hf_s7comm_szl_0131_0007_funkt_0_1,
4576
15
        { "GD_SND", "s7comm.szl.0131.0007.funkt_0.gd_snd", FT_BOOLEAN, 8, NULL, 0x02,
4577
15
          "Bit 1: GD_SND", HFILL }},
4578
15
        { &hf_s7comm_szl_0131_0007_funkt_0_2,
4579
15
        { "GD_RCV", "s7comm.szl.0131.0007.funkt_0.gd_rcv", FT_BOOLEAN, 8, NULL, 0x04,
4580
15
          "Bit 2: GD_RCV", HFILL }},
4581
15
        { &hf_s7comm_szl_0131_0007_funkt_0_3,
4582
15
        { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
4583
15
          "Bit 3: Reserved", HFILL }},
4584
15
        { &hf_s7comm_szl_0131_0007_funkt_0_4,
4585
15
        { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
4586
15
          "Bit 4: Reserved", HFILL }},
4587
15
        { &hf_s7comm_szl_0131_0007_funkt_0_5,
4588
15
        { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
4589
15
          "Bit 5: Reserved", HFILL }},
4590
15
        { &hf_s7comm_szl_0131_0007_funkt_0_6,
4591
15
        { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
4592
15
          "Bit 6: Reserved", HFILL }},
4593
15
        { &hf_s7comm_szl_0131_0007_funkt_0_7,
4594
15
        { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4595
15
          "Bit 7: Reserved", HFILL }},
4596
15
        { &hf_s7comm_szl_0131_0007_funkt_1,
4597
15
        { "funkt_1 (Reserved)", "s7comm.szl.0131.0007.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4598
15
          NULL, HFILL }},
4599
15
        { &hf_s7comm_szl_0131_0007_obj_0,
4600
15
        { "obj_0 (Addressable objects)", "s7comm.szl.0131.0007.obj_0", FT_UINT8, BASE_HEX, NULL, 0x0,
4601
15
          NULL, HFILL }},
4602
15
        { &hf_s7comm_szl_0131_0007_obj_0_0,
4603
15
        { "M", "s7comm.szl.0131.0007.obj_0.m", FT_BOOLEAN, 8, NULL, 0x01,
4604
15
          "Bit 0: M", HFILL }},
4605
15
        { &hf_s7comm_szl_0131_0007_obj_0_1,
4606
15
        { "PII", "s7comm.szl.0131.0007.obj_0.pii", FT_BOOLEAN, 8, NULL, 0x02,
4607
15
          "Bit 1: PII", HFILL }},
4608
15
        { &hf_s7comm_szl_0131_0007_obj_0_2,
4609
15
        { "PIQ", "s7comm.szl.0131.0007.obj_0.piq", FT_BOOLEAN, 8, NULL, 0x04,
4610
15
          "Bit 2: PIQ", HFILL }},
4611
15
        { &hf_s7comm_szl_0131_0007_obj_0_3,
4612
15
        { "T", "s7comm.szl.0131.0007.obj_0.t", FT_BOOLEAN, 8, NULL, 0x08,
4613
15
          "Bit 3: T", HFILL }},
4614
15
        { &hf_s7comm_szl_0131_0007_obj_0_4,
4615
15
        { "C", "s7comm.szl.0131.0007.obj_0.c", FT_BOOLEAN, 8, NULL, 0x10,
4616
15
          "Bit 4: C", HFILL }},
4617
15
        { &hf_s7comm_szl_0131_0007_obj_0_5,
4618
15
        { "DB", "s7comm.szl.0131.0007.obj_0.db", FT_BOOLEAN, 8, NULL, 0x20,
4619
15
          "Bit 5: DB", HFILL }},
4620
15
        { &hf_s7comm_szl_0131_0007_obj_0_6,
4621
15
        { "Reserved", "s7comm.szl.0131.0007.obj_0.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
4622
15
          "Bit 6: Reserved", HFILL }},
4623
15
        { &hf_s7comm_szl_0131_0007_obj_0_7,
4624
15
        { "Reserved", "s7comm.szl.0131.0007.obj_0.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4625
15
          "Bit 7: Reserved", HFILL }},
4626
15
        { &hf_s7comm_szl_0131_0007_obj_1,
4627
15
        { "obj_1 (Reserved)", "s7comm.szl.0131.0007.obj_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4628
15
          NULL, HFILL }},
4629
15
        { &hf_s7comm_szl_0131_0007_kons,
4630
15
        { "kons (Consistent length in bytes)", "s7comm.szl.0131.0007.kons", FT_UINT8, BASE_DEC, NULL, 0x0,
4631
15
          NULL, HFILL }},
4632
15
        { &hf_s7comm_szl_0131_0007_sen,
4633
15
        { "sen (Minimum scan rate for sending)", "s7comm.szl.0131.0007.sen", FT_UINT8, BASE_DEC, NULL, 0x0,
4634
15
          NULL, HFILL }},
4635
15
        { &hf_s7comm_szl_0131_0007_rec,
4636
15
        { "rec (Minimum scan rate for receiving)", "s7comm.szl.0131.0007.rec", FT_UINT8, BASE_DEC, NULL, 0x0,
4637
15
          NULL, HFILL }},
4638
15
        { &hf_s7comm_szl_0131_0007_time,
4639
15
        { "time (Time monitoring when receiving yes/no)", "s7comm.szl.0131.0007.time", FT_UINT8, BASE_DEC, NULL, 0x0,
4640
15
          NULL, HFILL }},
4641
15
        { &hf_s7comm_szl_0131_0007_proj,
4642
15
        { "proj (Re-configuration possible in RUN yes/no)", "s7comm.szl.0131.0007.proj", FT_UINT8, BASE_DEC, NULL, 0x0,
4643
15
          NULL, HFILL }},
4644
15
        { &hf_s7comm_szl_0131_0007_alarm,
4645
15
        { "alarm (Communication interrupt yes/no)", "s7comm.szl.0131.0007.alarm", FT_UINT8, BASE_DEC, NULL, 0x0,
4646
15
          NULL, HFILL }},
4647
15
        { &hf_s7comm_szl_0131_0007_mode,
4648
15
        { "mode", "s7comm.szl.0131.0007.mode", FT_UINT8, BASE_HEX, NULL, 0x0,
4649
15
          "mode: Party line/MPI, communication bus", HFILL }},
4650
15
        { &hf_s7comm_szl_0131_0007_mode_0,
4651
15
        { "Party line/MPI", "s7comm.szl.0131.0007.mode.pl_mpi", FT_BOOLEAN, 8, NULL, 0x01,
4652
15
          "Bit 0: Party line/MPI", HFILL }},
4653
15
        { &hf_s7comm_szl_0131_0007_mode_1,
4654
15
        { "Communication bus", "s7comm.szl.0131.0007.mode.comm_bus", FT_BOOLEAN, 8, NULL, 0x02,
4655
15
          "Bit 1: Communication bus", HFILL }},
4656
15
        { &hf_s7comm_szl_0131_0007_kreis,
4657
15
        { "kreis (Maximum number of GD groups of the CPU)", "s7comm.szl.0131.0007.kreis", FT_UINT8, BASE_DEC, NULL, 0x0,
4658
15
          NULL, HFILL }},
4659
15
        { &hf_s7comm_szl_0131_0007_sk_1,
4660
15
        { "sk_1 (Maximum number of GD packets to be sent per GD circle of the CPU)", "s7comm.szl.0131.0007.sk_1", FT_UINT8, BASE_DEC, NULL, 0x0,
4661
15
          NULL, HFILL }},
4662
15
        { &hf_s7comm_szl_0131_0007_sk_2,
4663
15
        { "sk_2 (Maximum number of GD packets to be sent for all GD circles of the CPU)", "s7comm.szl.0131.0007.sk_2", FT_UINT8, BASE_DEC, NULL, 0x0,
4664
15
          NULL, HFILL }},
4665
15
        { &hf_s7comm_szl_0131_0007_ek_1,
4666
15
        { "ek_1 (Maximum number of GD packets to be received per GD circle of the CPU)", "s7comm.szl.0131.0007.ek_1", FT_UINT8, BASE_DEC, NULL, 0x0,
4667
15
          NULL, HFILL }},
4668
15
        { &hf_s7comm_szl_0131_0007_ek_2,
4669
15
        { "ek_2 (Maximum number of GD packets to be received for all GD circles of the CPU)", "s7comm.szl.0131.0007.ek_2", FT_UINT8, BASE_DEC, NULL, 0x0,
4670
15
          NULL, HFILL }},
4671
15
        { &hf_s7comm_szl_0131_0007_len_1,
4672
15
        { "len_1 (Maximum length of a GD packet)", "s7comm.szl.0131.0007.len_1", FT_UINT8, BASE_DEC, NULL, 0x0,
4673
15
          NULL, HFILL }},
4674
15
        { &hf_s7comm_szl_0131_0007_len_2,
4675
15
        { "len_2 (Maximum length of a GD packet header)", "s7comm.szl.0131.0007.len_2", FT_UINT8, BASE_DEC, NULL, 0x0,
4676
15
          NULL, HFILL }},
4677
15
        { &hf_s7comm_szl_0131_0007_len_3,
4678
15
        { "len_3 (Length of the object description header)", "s7comm.szl.0131.0007.len_3", FT_UINT8, BASE_DEC, NULL, 0x0,
4679
15
          NULL, HFILL }},
4680
15
        { &hf_s7comm_szl_0131_0007_res,
4681
15
        { "res (Reserved)", "s7comm.szl.0131.0007.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4682
15
          NULL, HFILL }}
4683
15
    };
4684
15
    proto_register_field_array(proto, hf, array_length(hf));
4685
15
}
4686
4687
/*----------------------------------------------------------------------------------------------------*/
4688
static uint32_t
4689
s7comm_decode_szl_id_0131_idx_0007(tvbuff_t *tvb,
4690
                                   proto_tree *tree,
4691
                                   uint32_t offset)
4692
0
{
4693
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4694
0
    offset += 2;
4695
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0007_funkt_0,
4696
0
        ett_s7comm_szl_0131_0007_funkt_0, s7comm_szl_0131_0007_funkt_0_fields, ENC_BIG_ENDIAN);
4697
0
    offset += 1;
4698
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_funkt_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4699
0
    offset += 1;
4700
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0007_obj_0,
4701
0
        ett_s7comm_szl_0131_0007_obj_0, s7comm_szl_0131_0007_obj_0_fields, ENC_BIG_ENDIAN);
4702
0
    offset += 1;
4703
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_obj_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4704
0
    offset += 1;
4705
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_kons, tvb, offset, 1, ENC_BIG_ENDIAN);
4706
0
    offset += 1;
4707
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_sen, tvb, offset, 1, ENC_BIG_ENDIAN);
4708
0
    offset += 1;
4709
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_rec, tvb, offset, 1, ENC_BIG_ENDIAN);
4710
0
    offset += 1;
4711
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_time, tvb, offset, 1, ENC_BIG_ENDIAN);
4712
0
    offset += 1;
4713
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_proj, tvb, offset, 1, ENC_BIG_ENDIAN);
4714
0
    offset += 1;
4715
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_alarm, tvb, offset, 1, ENC_BIG_ENDIAN);
4716
0
    offset += 1;
4717
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0007_mode,
4718
0
        ett_s7comm_szl_0131_0007_mode, s7comm_szl_0131_0007_mode_fields, ENC_BIG_ENDIAN);
4719
0
    offset += 1;
4720
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_kreis, tvb, offset, 1, ENC_BIG_ENDIAN);
4721
0
    offset += 1;
4722
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_sk_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4723
0
    offset += 1;
4724
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_sk_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4725
0
    offset += 1;
4726
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_ek_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4727
0
    offset += 1;
4728
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_ek_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4729
0
    offset += 1;
4730
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_len_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4731
0
    offset += 1;
4732
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_len_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4733
0
    offset += 1;
4734
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_len_3, tvb, offset, 1, ENC_BIG_ENDIAN);
4735
0
    offset += 1;
4736
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_res, tvb, offset, 19, ENC_NA);
4737
0
    offset += 19;
4738
4739
0
    return offset;
4740
0
}
4741
4742
/*******************************************************************************************************
4743
 *
4744
 * SZL-ID:  0x0131
4745
 * Index:   0x0008
4746
 * Content:
4747
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0008
4748
 *  contains information about the time required for test and installation
4749
 *  functions.
4750
 *
4751
 *******************************************************************************************************/
4752
static void
4753
s7comm_szl_0131_0008_register(int proto)
4754
15
{
4755
15
    static hf_register_info hf[] = {
4756
15
        { &hf_s7comm_szl_0131_0008_index,
4757
15
        { "Index", "s7comm.szl.0131.0008.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4758
15
          "W#16#0008 Test and installation function time information", HFILL }},
4759
        /* Time format:
4760
         * - Bit 0 to bit 11 contains the time value
4761
         * - Bit 12 to bit 15 contains the time base: 0=10e-10 sec, 1=10e-9 sec, 0xa = 10e0 sec, 0xf=10e5 sec
4762
         */
4763
15
        { &hf_s7comm_szl_0131_0008_last_1,
4764
15
        { "last_1 (Basic overhead for status block) time value", "s7comm.szl.0131.0008.last_1", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4765
15
          NULL, HFILL }},
4766
15
        { &hf_s7comm_szl_0131_0008_last_1_tb,
4767
15
        { "last_1 (Basic overhead for status block) time base", "s7comm.szl.0131.0008.last_1_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4768
15
          NULL, HFILL }},
4769
15
        { &hf_s7comm_szl_0131_0008_last_2,
4770
15
        { "last_2 (Basic overhead for monitor variables) time value", "s7comm.szl.0131.0008.last_2", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4771
15
          NULL, HFILL }},
4772
15
        { &hf_s7comm_szl_0131_0008_last_2_tb,
4773
15
        { "last_2 (Basic overhead for monitor variables) time base", "s7comm.szl.0131.0008.last_2_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4774
15
          NULL, HFILL }},
4775
15
        { &hf_s7comm_szl_0131_0008_last_3,
4776
15
        { "last_3 (Basic overhead for modify variables) time value", "s7comm.szl.0131.0008.last_3", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4777
15
          NULL, HFILL }},
4778
15
        { &hf_s7comm_szl_0131_0008_last_3_tb,
4779
15
        { "last_3 (Basic overhead for modify variables) time base", "s7comm.szl.0131.0008.last_3_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4780
15
          NULL, HFILL }},
4781
15
        { &hf_s7comm_szl_0131_0008_merker,
4782
15
        { "merker (Time for one variable address 'memory bit') time value", "s7comm.szl.0131.0008.merker", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4783
15
          NULL, HFILL }},
4784
15
        { &hf_s7comm_szl_0131_0008_merker_tb,
4785
15
        { "merker (Time for one variable address 'memory bit') time base", "s7comm.szl.0131.0008.merker_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4786
15
          NULL, HFILL }},
4787
15
        { &hf_s7comm_szl_0131_0008_ea,
4788
15
        { "ea (Time for one variable address 'input' or 'output') time value", "s7comm.szl.0131.0008.ea", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4789
15
          NULL, HFILL }},
4790
15
        { &hf_s7comm_szl_0131_0008_ea_tb,
4791
15
        { "ea (Time for one variable address 'input' or 'output') time base", "s7comm.szl.0131.0008.ea_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4792
15
          NULL, HFILL }},
4793
15
        { &hf_s7comm_szl_0131_0008_tz,
4794
15
        { "tz (Time for one variable address 'timer' or 'counter') time value", "s7comm.szl.0131.0008.tz", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4795
15
          NULL, HFILL }},
4796
15
        { &hf_s7comm_szl_0131_0008_tz_tb,
4797
15
        { "tz (Time for one variable address 'timer' or 'counter') time base", "s7comm.szl.0131.0008.tz_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4798
15
          NULL, HFILL }},
4799
15
        { &hf_s7comm_szl_0131_0008_db,
4800
15
        { "db (Time for one variable address 'data block DB') time value", "s7comm.szl.0131.0008.db", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4801
15
          NULL, HFILL }},
4802
15
        { &hf_s7comm_szl_0131_0008_db_tb,
4803
15
        { "db (Time for one variable address 'data block DB') time base", "s7comm.szl.0131.0008.db_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4804
15
          NULL, HFILL }},
4805
15
        { &hf_s7comm_szl_0131_0008_ld,
4806
15
        { "ld (Time for one variable address 'ADB' or 'local data') time value", "s7comm.szl.0131.0008.ld", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4807
15
          NULL, HFILL }},
4808
15
        { &hf_s7comm_szl_0131_0008_ld_tb,
4809
15
        { "ld (Time for one variable address 'ADB' or 'local data') time base", "s7comm.szl.0131.0008.ld_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4810
15
          NULL, HFILL }},
4811
15
        { &hf_s7comm_szl_0131_0008_reg,
4812
15
        { "reg (Time for one variable address 'register') time value", "s7comm.szl.0131.0008.reg", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4813
15
          NULL, HFILL }},
4814
15
        { &hf_s7comm_szl_0131_0008_reg_tb,
4815
15
        { "reg (Time for one variable address 'register') time base", "s7comm.szl.0131.0008.reg_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4816
15
          NULL, HFILL }},
4817
15
        { &hf_s7comm_szl_0131_0008_ba_stali1,
4818
15
        { "ba_stali1 (Basic time for a status list ID of group 1) time value", "s7comm.szl.0131.0008.ba_stali1", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4819
15
          NULL, HFILL }},
4820
15
        { &hf_s7comm_szl_0131_0008_ba_stali1_tb,
4821
15
        { "ba_stali1 (Basic time for a status list ID of group 1) time base", "s7comm.szl.0131.0008.ba_stali1_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4822
15
          NULL, HFILL }},
4823
15
        { &hf_s7comm_szl_0131_0008_ba_stali2,
4824
15
        { "ba_stali2 (Basic time for a status list ID of group 2) time value", "s7comm.szl.0131.0008.ba_stali2", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4825
15
          NULL, HFILL }},
4826
15
        { &hf_s7comm_szl_0131_0008_ba_stali2_tb,
4827
15
        { "ba_stali2 (Basic time for a status list ID of group 2) time base", "s7comm.szl.0131.0008.ba_stali2_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4828
15
          NULL, HFILL }},
4829
15
        { &hf_s7comm_szl_0131_0008_ba_stali3,
4830
15
        { "ba_stali3 (Basic time for a status list ID of group 3) time value", "s7comm.szl.0131.0008.ba_stali3", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4831
15
          NULL, HFILL }},
4832
15
        { &hf_s7comm_szl_0131_0008_ba_stali3_tb,
4833
15
        { "ba_stali3 (Basic time for a status list ID of group 3) time base", "s7comm.szl.0131.0008.ba_stali3_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4834
15
          NULL, HFILL }},
4835
15
        { &hf_s7comm_szl_0131_0008_akku,
4836
15
        { "akku (Accumulators added to basic time when ACCU 1, 2 addressed) time value", "s7comm.szl.0131.0008.akku", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4837
15
          NULL, HFILL }},
4838
15
        { &hf_s7comm_szl_0131_0008_akku_tb,
4839
15
        { "akku (Accumulators added to basic time when ACCU 1, 2 addressed) time base", "s7comm.szl.0131.0008.akku_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4840
15
          NULL, HFILL }},
4841
15
        { &hf_s7comm_szl_0131_0008_address,
4842
15
        { "address (Address register added to basic time when AR 1 or AR 2 addressed) time value", "s7comm.szl.0131.0008.address", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4843
15
          NULL, HFILL }},
4844
15
        { &hf_s7comm_szl_0131_0008_address_tb,
4845
15
        { "address (Address register added to basic time when AR 1 or AR 2 addressed) time base", "s7comm.szl.0131.0008.address_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4846
15
          NULL, HFILL }},
4847
15
        { &hf_s7comm_szl_0131_0008_dbreg,
4848
15
        { "dbreg (DB register added to basic time when DB register addressed) time value", "s7comm.szl.0131.0008.dbreg", FT_UINT16, BASE_DEC, NULL, 0x0fff,
4849
15
          NULL, HFILL }},
4850
15
        { &hf_s7comm_szl_0131_0008_dbreg_tb,
4851
15
        { "dbreg (DB register added to basic time when DB register addressed) time base", "s7comm.szl.0131.0008.dbreg_tb", FT_UINT16, BASE_HEX, VALS(s7comm_szl_0131_0008_timebase_names), 0xf000,
4852
15
          NULL, HFILL }},
4853
15
        { &hf_s7comm_szl_0131_0008_res,
4854
15
        { "res (Reserved)", "s7comm.szl.0131.0008.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4855
15
          NULL, HFILL }}
4856
15
    };
4857
15
    proto_register_field_array(proto, hf, array_length(hf));
4858
15
}
4859
4860
/*----------------------------------------------------------------------------------------------------*/
4861
static uint32_t
4862
s7comm_decode_szl_id_0131_idx_0008(tvbuff_t *tvb,
4863
                                   proto_tree *tree,
4864
                                   uint32_t offset)
4865
0
{
4866
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4867
0
    offset += 2;
4868
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_1, tvb, offset, 2, ENC_BIG_ENDIAN);
4869
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_1_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4870
0
    offset += 2;
4871
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_2, tvb, offset, 2, ENC_BIG_ENDIAN);
4872
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_2_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4873
0
    offset += 2;
4874
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_3, tvb, offset, 2, ENC_BIG_ENDIAN);
4875
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_3_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4876
0
    offset += 2;
4877
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_merker, tvb, offset, 2, ENC_BIG_ENDIAN);
4878
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_merker_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4879
0
    offset += 2;
4880
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ea, tvb, offset, 2, ENC_BIG_ENDIAN);
4881
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ea_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4882
0
    offset += 2;
4883
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_tz, tvb, offset, 2, ENC_BIG_ENDIAN);
4884
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_tz_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4885
0
    offset += 2;
4886
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_db, tvb, offset, 2, ENC_BIG_ENDIAN);
4887
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_db_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4888
0
    offset += 2;
4889
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ld, tvb, offset, 2, ENC_BIG_ENDIAN);
4890
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ld_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4891
0
    offset += 2;
4892
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_reg, tvb, offset, 2, ENC_BIG_ENDIAN);
4893
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_reg_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4894
0
    offset += 2;
4895
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali1, tvb, offset, 2, ENC_BIG_ENDIAN);
4896
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali1_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4897
0
    offset += 2;
4898
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali2, tvb, offset, 2, ENC_BIG_ENDIAN);
4899
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali2_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4900
0
    offset += 2;
4901
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali3, tvb, offset, 2, ENC_BIG_ENDIAN);
4902
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali3_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4903
0
    offset += 2;
4904
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_akku, tvb, offset, 2, ENC_BIG_ENDIAN);
4905
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_akku_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4906
0
    offset += 2;
4907
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_address, tvb, offset, 2, ENC_BIG_ENDIAN);
4908
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_address_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4909
0
    offset += 2;
4910
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_dbreg, tvb, offset, 2, ENC_BIG_ENDIAN);
4911
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_dbreg_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
4912
0
    offset += 2;
4913
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_res, tvb, offset, 8, ENC_NA);
4914
0
    offset += 8;
4915
4916
0
    return offset;
4917
0
}
4918
4919
/*******************************************************************************************************
4920
 *
4921
 * SZL-ID:  0x0131
4922
 * Index:   0x0009
4923
 * Content:
4924
 *  The partial list extract with SZL-ID W#16#0131 and the index W#16#0009
4925
 *  contains time-of-day capability parameters.
4926
 *
4927
 *******************************************************************************************************/
4928
static void
4929
s7comm_szl_0131_0009_register(int proto)
4930
15
{
4931
15
    static hf_register_info hf[] = {
4932
15
        { &hf_s7comm_szl_0131_0009_index,
4933
15
        { "Index", "s7comm.szl.0131.0009.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4934
15
          "W#16#0009 Time-of-day capability", HFILL }},
4935
15
        { &hf_s7comm_szl_0131_0009_sync_k,
4936
15
        { "sync_k (Time synchronization C bus)", "s7comm.szl.0131.0009.sync_k", FT_UINT8, BASE_HEX, NULL, 0x0,
4937
15
          NULL, HFILL }},
4938
15
        { &hf_s7comm_szl_0131_0009_sync_k_0,
4939
15
        { "Time-of-day synchronization neutral", "s7comm.szl.0131.0009.sync_k.neutral", FT_BOOLEAN, 8, NULL, 0x01,
4940
15
          "Bit 0: Time-of-day synchronization neutral", HFILL }},
4941
15
        { &hf_s7comm_szl_0131_0009_sync_k_1,
4942
15
        { "Capable of being slave for time-of-day synchronization", "s7comm.szl.0131.0009.sync_k.slave", FT_BOOLEAN, 8, NULL, 0x02,
4943
15
          "Bit 1: Capable of being slave for time-of-day synchronization", HFILL }},
4944
15
        { &hf_s7comm_szl_0131_0009_sync_k_2,
4945
15
        { "Capable of being master for time-of-day synchronization", "s7comm.szl.0131.0009.sync_k.master", FT_BOOLEAN, 8, NULL, 0x04,
4946
15
          "Bit 2: Capable of being master for time-of-day synchronization", HFILL }},
4947
15
        { &hf_s7comm_szl_0131_0009_sync_mpi,
4948
15
        { "sync_mpi (Time synchronization via MPI)", "s7comm.szl.0131.0009.sync_mpi", FT_UINT8, BASE_HEX, NULL, 0x0,
4949
15
          NULL, HFILL }},
4950
15
        { &hf_s7comm_szl_0131_0009_sync_mpi_0,
4951
15
        { "Time-of-day synchronization neutral", "s7comm.szl.0131.0009.sync_mpi.neutral", FT_BOOLEAN, 8, NULL, 0x01,
4952
15
          "Bit 0: Time-of-day synchronization neutral", HFILL }},
4953
15
        { &hf_s7comm_szl_0131_0009_sync_mpi_1,
4954
15
        { "Capable of being slave for time-of-day synchronization", "s7comm.szl.0131.0009.sync_mpi.slave", FT_BOOLEAN, 8, NULL, 0x02,
4955
15
          "Bit 1: Capable of being slave for time-of-day synchronization", HFILL }},
4956
15
        { &hf_s7comm_szl_0131_0009_sync_mpi_2,
4957
15
        { "Capable of being master for time-of-day synchronization", "s7comm.szl.0131.0009.sync_mpi.master", FT_BOOLEAN, 8, NULL, 0x04,
4958
15
          "Bit 2: Capable of being master for time-of-day synchronization", HFILL }},
4959
15
        { &hf_s7comm_szl_0131_0009_sync_mfi,
4960
15
        { "sync_k (Time synchronization via MFI)", "s7comm.szl.0131.0009.sync_mfi", FT_UINT8, BASE_HEX, NULL, 0x0,
4961
15
          NULL, HFILL }},
4962
15
        { &hf_s7comm_szl_0131_0009_sync_mfi_0,
4963
15
        { "Time-of-day synchronization neutral", "s7comm.szl.0131.0009.sync_mfi.neutral", FT_BOOLEAN, 8, NULL, 0x01,
4964
15
          "Bit 0: Time-of-day synchronization neutral", HFILL }},
4965
15
        { &hf_s7comm_szl_0131_0009_sync_mfi_1,
4966
15
        { "Capable of being slave for time-of-day synchronization", "s7comm.szl.0131.0009.sync_mfi.slave", FT_BOOLEAN, 8, NULL, 0x02,
4967
15
          "Bit 1: Capable of being slave for time-of-day synchronization", HFILL }},
4968
15
        { &hf_s7comm_szl_0131_0009_sync_mfi_2,
4969
15
        { "Capable of being master for time-of-day synchronization", "s7comm.szl.0131.0009.sync_mfi.master", FT_BOOLEAN, 8, NULL, 0x04,
4970
15
          "Bit 2: Capable of being master for time-of-day synchronization", HFILL }},
4971
15
        { &hf_s7comm_szl_0131_0009_res1,
4972
15
        { "res1 (Reserved)", "s7comm.szl.0131.0009.res1", FT_UINT8, BASE_HEX, NULL, 0x0,
4973
15
          NULL, HFILL }},
4974
15
        { &hf_s7comm_szl_0131_0009_abw_puf,
4975
15
        { "abw_puf (Clock deviation in ms/day when backed up)", "s7comm.szl.0131.0009.abw_puf", FT_UINT16, BASE_DEC, NULL, 0x0,
4976
15
          NULL, HFILL }},
4977
15
        { &hf_s7comm_szl_0131_0009_abw_5v,
4978
15
        { "abw_5v (Clock deviation in ms/day in 5V operation)", "s7comm.szl.0131.0009.abw_5v", FT_UINT16, BASE_DEC, NULL, 0x0,
4979
15
          NULL, HFILL }},
4980
15
        { &hf_s7comm_szl_0131_0009_anz_bsz,
4981
15
        { "anz_bsz (Number of run-time meters)", "s7comm.szl.0131.0009.anz_bsz", FT_UINT16, BASE_DEC, NULL, 0x0,
4982
15
          NULL, HFILL }},
4983
15
        { &hf_s7comm_szl_0131_0009_res2,
4984
15
        { "res2 (Reserved)", "s7comm.szl.0131.0009.res2", FT_BYTES, BASE_NONE, NULL, 0x0,
4985
15
          NULL, HFILL }}
4986
15
    };
4987
15
    proto_register_field_array(proto, hf, array_length(hf));
4988
15
}
4989
4990
/*----------------------------------------------------------------------------------------------------*/
4991
static uint32_t
4992
s7comm_decode_szl_id_0131_idx_0009(tvbuff_t *tvb,
4993
                                   proto_tree *tree,
4994
                                   uint32_t offset)
4995
0
{
4996
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4997
0
    offset += 2;
4998
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0009_sync_k,
4999
0
        ett_s7comm_szl_0131_0009_sync_k, s7comm_szl_0131_0009_sync_k_fields, ENC_BIG_ENDIAN);
5000
0
    offset += 1;
5001
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0009_sync_mpi,
5002
0
        ett_s7comm_szl_0131_0009_sync_mpi, s7comm_szl_0131_0009_sync_mpi_fields, ENC_BIG_ENDIAN);
5003
0
    offset += 1;
5004
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0009_sync_mfi,
5005
0
        ett_s7comm_szl_0131_0009_sync_mfi, s7comm_szl_0131_0009_sync_mfi_fields, ENC_BIG_ENDIAN);
5006
0
    offset += 1;
5007
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_res1, tvb, offset, 1, ENC_BIG_ENDIAN);
5008
0
    offset += 1;
5009
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_abw_puf, tvb, offset, 2, ENC_BIG_ENDIAN);
5010
0
    offset += 2;
5011
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_abw_5v, tvb, offset, 2, ENC_BIG_ENDIAN);
5012
0
    offset += 2;
5013
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_anz_bsz, tvb, offset, 2, ENC_BIG_ENDIAN);
5014
0
    offset += 2;
5015
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_res2, tvb, offset, 28, ENC_NA);
5016
0
    offset += 28;
5017
5018
0
    return offset;
5019
0
}
5020
5021
/*******************************************************************************************************
5022
 *
5023
 * SZL-ID:  0x0131
5024
 * Index:   0x0010
5025
 * Content:
5026
 *  The partial list extract with SZL-ID W#16#0131 and index W#16#0010
5027
 *  contains message parameters.
5028
 *
5029
 *******************************************************************************************************/
5030
static void
5031
s7comm_szl_0131_0010_register(int proto)
5032
15
{
5033
15
    static hf_register_info hf[] = {
5034
15
        { &hf_s7comm_szl_0131_0010_index,
5035
15
        { "Index", "s7comm.szl.0131.0010.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5036
15
          "W#16#0010 Message parameter", HFILL }},
5037
15
        { &hf_s7comm_szl_0131_0010_funk_1,
5038
15
        { "funk_1", "s7comm.szl.0131.0010.funk_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5039
15
          "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
5040
15
        { &hf_s7comm_szl_0131_0010_funk_1_0,
5041
15
        { "Bit 0: Group status messages exist", "s7comm.szl.0131.0010.funk_1.grp_status_msg", FT_BOOLEAN, 8, NULL, 0x01,
5042
15
          NULL, HFILL }},
5043
15
        { &hf_s7comm_szl_0131_0010_funk_1_1,
5044
15
        { "Bit 1: Scan possible", "s7comm.szl.0131.0010.funk_1.scan_possible", FT_BOOLEAN, 8, NULL, 0x02,
5045
15
          NULL, HFILL }},
5046
15
        { &hf_s7comm_szl_0131_0010_funk_1_2,
5047
15
        { "Bit 2: NOTIFY, ALARM, ALARM_8P, ALARM_8, (multicast) possible", "s7comm.szl.0131.0010.funk_1.notify_alarm", FT_BOOLEAN, 8, NULL, 0x04,
5048
15
          NULL, HFILL }},
5049
15
        { &hf_s7comm_szl_0131_0010_funk_1_3,
5050
15
        { "Bit 3: Sending archive data possible", "s7comm.szl.0131.0010.funk_1.send_arc", FT_BOOLEAN, 8, NULL, 0x08,
5051
15
          NULL, HFILL }},
5052
15
        { &hf_s7comm_szl_0131_0010_funk_1_4,
5053
15
        { "Bit 4: Reserved", "s7comm.szl.0131.0010.funk_1.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
5054
15
          NULL, HFILL }},
5055
15
        { &hf_s7comm_szl_0131_0010_funk_1_5,
5056
15
        { "Bit 5: Reserved", "s7comm.szl.0131.0010.funk_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
5057
15
          NULL, HFILL }},
5058
15
        { &hf_s7comm_szl_0131_0010_funk_1_6,
5059
15
        { "Bit 6: Reserved", "s7comm.szl.0131.0010.funk_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
5060
15
          NULL, HFILL }},
5061
15
        { &hf_s7comm_szl_0131_0010_funk_1_7,
5062
15
        { "Bit 7: Reserved", "s7comm.szl.0131.0010.funk_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
5063
15
          NULL, HFILL }},
5064
15
        { &hf_s7comm_szl_0131_0010_funk_2,
5065
15
        { "funk_2", "s7comm.szl.0131.0010.funk_2", FT_UINT8, BASE_HEX, NULL, 0x0,
5066
15
          "Reserved", HFILL }},
5067
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1,
5068
15
        { "ber_meld_1", "s7comm.szl.0131.0010.ber_meld_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5069
15
          "Permitted address areas for messages (SCAN)", HFILL }},
5070
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1_0,
5071
15
        { "Bit 0: PII", "s7comm.szl.0131.0010.ber_meld_1.pii", FT_BOOLEAN, 8, NULL, 0x01,
5072
15
          NULL, HFILL }},
5073
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1_1,
5074
15
        { "Bit 1: PIQ", "s7comm.szl.0131.0010.ber_meld_1.piq", FT_BOOLEAN, 8, NULL, 0x02,
5075
15
          NULL, HFILL }},
5076
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1_2,
5077
15
        { "Bit 2: M", "s7comm.szl.0131.0010.ber_meld_1.m", FT_BOOLEAN, 8, NULL, 0x04,
5078
15
          NULL, HFILL }},
5079
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1_3,
5080
15
        { "Bit 3: DB", "s7comm.szl.0131.0010.ber_meld_1.db", FT_BOOLEAN, 8, NULL, 0x08,
5081
15
          NULL, HFILL }},
5082
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1_4,
5083
15
        { "Bit 4: Reserved", "s7comm.szl.0131.0010.ber_meld_1.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
5084
15
          NULL, HFILL }},
5085
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1_5,
5086
15
        { "Bit 5: Reserved", "s7comm.szl.0131.0010.ber_meld_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
5087
15
          NULL, HFILL }},
5088
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1_6,
5089
15
        { "Bit 6: Reserved", "s7comm.szl.0131.0010.ber_meld_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
5090
15
          NULL, HFILL }},
5091
15
        { &hf_s7comm_szl_0131_0010_ber_meld_1_7,
5092
15
        { "Bit 7: Reserved", "s7comm.szl.0131.0010.ber_meld_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
5093
15
          NULL, HFILL }},
5094
15
        { &hf_s7comm_szl_0131_0010_ber_meld_2,
5095
15
        { "ber_meld_2", "s7comm.szl.0131.0010.ber_meld_2", FT_UINT8, BASE_HEX, NULL, 0x0,
5096
15
          "Reserved", HFILL }},
5097
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1,
5098
15
        { "ber_zus_1", "s7comm.szl.0131.0010.ber_zus_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5099
15
          "Permitted address areas for messages (SCAN)", HFILL }},
5100
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1_0,
5101
15
        { "Bit 0: PII", "s7comm.szl.0131.0010.ber_zus_1.pii", FT_BOOLEAN, 8, NULL, 0x01,
5102
15
          NULL, HFILL }},
5103
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1_1,
5104
15
        { "Bit 1: PIQ", "s7comm.szl.0131.0010.ber_zus_1.piq", FT_BOOLEAN, 8, NULL, 0x02,
5105
15
          NULL, HFILL }},
5106
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1_2,
5107
15
        { "Bit 2: M", "s7comm.szl.0131.0010.ber_zus_1.m", FT_BOOLEAN, 8, NULL, 0x04,
5108
15
          NULL, HFILL }},
5109
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1_3,
5110
15
        { "Bit 3: DB", "s7comm.szl.0131.0010.ber_zus_1.db", FT_BOOLEAN, 8, NULL, 0x08,
5111
15
          NULL, HFILL }},
5112
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1_4,
5113
15
        { "Bit 4: Reserved", "s7comm.szl.0131.0010.ber_zus_1.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
5114
15
          NULL, HFILL }},
5115
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1_5,
5116
15
        { "Bit 5: Reserved", "s7comm.szl.0131.0010.ber_zus_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
5117
15
          NULL, HFILL }},
5118
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1_6,
5119
15
        { "Bit 6: Reserved", "s7comm.szl.0131.0010.ber_zus_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
5120
15
          NULL, HFILL }},
5121
15
        { &hf_s7comm_szl_0131_0010_ber_zus_1_7,
5122
15
        { "Bit 7: Reserved", "s7comm.szl.0131.0010.ber_zus_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
5123
15
          NULL, HFILL }},
5124
15
        { &hf_s7comm_szl_0131_0010_ber_zus_2,
5125
15
        { "ber_zus_2", "s7comm.szl.0131.0010.ber_zus_2", FT_UINT8, BASE_HEX, NULL, 0x0,
5126
15
          "Reserved", HFILL }},
5127
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1,
5128
15
        { "typ_zus_1", "s7comm.szl.0131.0010.typ_zus_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5129
15
          "Permitted data types for additional values (SCAN)", HFILL }},
5130
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1_0,
5131
15
        { "Bit 0: Bit", "s7comm.szl.0131.0010.typ_zus_1.bit", FT_BOOLEAN, 8, NULL, 0x01,
5132
15
          NULL, HFILL }},
5133
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1_1,
5134
15
        { "Bit 1: Byte", "s7comm.szl.0131.0010.typ_zus_1.byte", FT_BOOLEAN, 8, NULL, 0x02,
5135
15
          NULL, HFILL }},
5136
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1_2,
5137
15
        { "Bit 2: Word", "s7comm.szl.0131.0010.typ_zus_1.word", FT_BOOLEAN, 8, NULL, 0x04,
5138
15
          NULL, HFILL }},
5139
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1_3,
5140
15
        { "Bit 3: DWord", "s7comm.szl.0131.0010.typ_zus_1.dword", FT_BOOLEAN, 8, NULL, 0x08,
5141
15
          NULL, HFILL }},
5142
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1_4,
5143
15
        { "Bit 4: Timer", "s7comm.szl.0131.0010.typ_zus_1.timer", FT_BOOLEAN, 8, NULL, 0x10,
5144
15
          NULL, HFILL }},
5145
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1_5,
5146
15
        { "Bit 5: Counter", "s7comm.szl.0131.0010.typ_zus_1.counter", FT_BOOLEAN, 8, NULL, 0x20,
5147
15
          NULL, HFILL }},
5148
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1_6,
5149
15
        { "Bit 6: Array of char[16]", "s7comm.szl.0131.0010.typ_zus_1.array_char", FT_BOOLEAN, 8, NULL, 0x40,
5150
15
          NULL, HFILL }},
5151
15
        { &hf_s7comm_szl_0131_0010_typ_zus_1_7,
5152
15
        { "Bit 7: Reserved", "s7comm.szl.0131.0010.typ_zus_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
5153
15
          NULL, HFILL }},
5154
15
        { &hf_s7comm_szl_0131_0010_typ_zus_2,
5155
15
        { "typ_zus_2", "s7comm.szl.0131.0010.typ_zus_2", FT_UINT8, BASE_HEX, NULL, 0x0,
5156
15
          "Reserved", HFILL }},
5157
15
        { &hf_s7comm_szl_0131_0010_maxanz_arch,
5158
15
        { "maxanz_arch (Maximum number of archives for 'Send Archive')", "s7comm.szl.0132.0010.maxanz_arch", FT_UINT16, BASE_DEC, NULL, 0x0,
5159
15
          NULL, HFILL }},
5160
15
        { &hf_s7comm_szl_0131_0010_res,
5161
15
        { "res (Reserved)", "s7comm.szl.0131.0010.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5162
15
          NULL, HFILL }}
5163
15
    };
5164
15
    proto_register_field_array(proto, hf, array_length(hf));
5165
15
}
5166
5167
/*----------------------------------------------------------------------------------------------------*/
5168
static uint32_t
5169
s7comm_decode_szl_id_0131_idx_0010(tvbuff_t *tvb,
5170
                                   proto_tree *tree,
5171
                                   uint32_t offset)
5172
0
{
5173
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5174
0
    offset += 2;
5175
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0010_funk_1,
5176
0
        ett_s7comm_szl_0131_0010_funk_1, s7comm_szl_0131_0010_funk_1_fields, ENC_BIG_ENDIAN);
5177
0
    offset += 1;
5178
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_funk_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5179
0
    offset += 1;
5180
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0010_ber_meld_1,
5181
0
        ett_s7comm_szl_0131_0010_ber_meld_1, s7comm_szl_0131_0010_ber_meld_1_fields, ENC_BIG_ENDIAN);
5182
0
    offset += 1;
5183
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_ber_meld_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5184
0
    offset += 1;
5185
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0010_ber_zus_1,
5186
0
        ett_s7comm_szl_0131_0010_ber_zus_1, s7comm_szl_0131_0010_ber_zus_1_fields, ENC_BIG_ENDIAN);
5187
0
    offset += 1;
5188
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_ber_zus_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5189
0
    offset += 1;
5190
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0010_typ_zus_1,
5191
0
        ett_s7comm_szl_0131_0010_typ_zus_1, s7comm_szl_0131_0010_typ_zus_1_fields, ENC_BIG_ENDIAN);
5192
0
    offset += 1;
5193
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_typ_zus_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5194
0
    offset += 1;
5195
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_maxanz_arch, tvb, offset, 2, ENC_BIG_ENDIAN);
5196
0
    offset += 2;
5197
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_res, tvb, offset, 28, ENC_NA);
5198
0
    offset += 28;
5199
5200
0
    return offset;
5201
0
}
5202
5203
/*******************************************************************************************************
5204
 *
5205
 * SZL-ID:  0x0132
5206
 * Index:   0x0001
5207
 * Content:
5208
 *  The partial list extract with SZL-ID W#16#0132 and index W#16#0001
5209
 *  contains general communication status data.
5210
 *
5211
 *******************************************************************************************************/
5212
static void
5213
s7comm_szl_0132_0001_register(int proto)
5214
15
{
5215
15
    static hf_register_info hf[] = {
5216
15
        { &hf_s7comm_szl_0132_0001_index,
5217
15
        { "Index", "s7comm.szl.0132.0001.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5218
15
          "W#16#0001: General status data for communication", HFILL }},
5219
15
        { &hf_s7comm_szl_0132_0001_res_pg,
5220
15
        { "res pg (Guaranteed number of PG connections)", "s7comm.szl.0132.0001.res_pg", FT_UINT16, BASE_DEC, NULL, 0x0,
5221
15
          NULL, HFILL }},
5222
15
        { &hf_s7comm_szl_0132_0001_res_os,
5223
15
        { "res os (Guaranteed number of OS connections)", "s7comm.szl.0132.0001.res_os", FT_UINT16, BASE_DEC, NULL, 0x0,
5224
15
          NULL, HFILL }},
5225
15
        { &hf_s7comm_szl_0132_0001_u_pg,
5226
15
        { "u pg (Current number of PG connections)", "s7comm.szl.0132.0001.u_pg", FT_UINT16, BASE_DEC, NULL, 0x0,
5227
15
          NULL, HFILL }},
5228
15
        { &hf_s7comm_szl_0132_0001_u_os,
5229
15
        { "u os (Current number of OS connections)", "s7comm.szl.0132.0001.u_os", FT_UINT16, BASE_DEC, NULL, 0x0,
5230
15
          NULL, HFILL }},
5231
15
        { &hf_s7comm_szl_0132_0001_proj,
5232
15
        { "proj (Current number of configured connections)", "s7comm.szl.0132.0001.proj", FT_UINT16, BASE_DEC, NULL, 0x0,
5233
15
          NULL, HFILL }},
5234
15
        { &hf_s7comm_szl_0132_0001_auf,
5235
15
        { "auf (Current number of connections established by proj)", "s7comm.szl.0132.0001.auf", FT_UINT16, BASE_DEC, NULL, 0x0,
5236
15
          NULL, HFILL }},
5237
15
        { &hf_s7comm_szl_0132_0001_free,
5238
15
        { "free (Number of free connections)", "s7comm.szl.0132.0001.free", FT_UINT16, BASE_DEC, NULL, 0x0,
5239
15
          NULL, HFILL }},
5240
15
        { &hf_s7comm_szl_0132_0001_used,
5241
15
        { "used (Number of free connections used)", "s7comm.szl.0132.0001.used", FT_UINT16, BASE_DEC, NULL, 0x0,
5242
15
          NULL, HFILL }},
5243
15
        { &hf_s7comm_szl_0132_0001_last,
5244
15
        { "last (Maximum selected communication load of the CPU in %)", "s7comm.szl.0132.0001.last", FT_UINT16, BASE_DEC, NULL, 0x0,
5245
15
          NULL, HFILL }},
5246
15
        { &hf_s7comm_szl_0132_0001_res,
5247
15
        { "res (Reserved)", "s7comm.szl.0132.0001.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5248
15
          NULL, HFILL }}
5249
15
    };
5250
15
    proto_register_field_array(proto, hf, array_length(hf));
5251
15
}
5252
5253
/*----------------------------------------------------------------------------------------------------*/
5254
static uint32_t
5255
s7comm_decode_szl_id_0132_idx_0001(tvbuff_t *tvb,
5256
                                   proto_tree *tree,
5257
                                   uint32_t offset)
5258
0
{
5259
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5260
0
    offset += 2;
5261
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_res_pg, tvb, offset, 2, ENC_BIG_ENDIAN);
5262
0
    offset += 2;
5263
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_res_os, tvb, offset, 2, ENC_BIG_ENDIAN);
5264
0
    offset += 2;
5265
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_u_pg, tvb, offset, 2, ENC_BIG_ENDIAN);
5266
0
    offset += 2;
5267
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_u_os, tvb, offset, 2, ENC_BIG_ENDIAN);
5268
0
    offset += 2;
5269
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_proj, tvb, offset, 2, ENC_BIG_ENDIAN);
5270
0
    offset += 2;
5271
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_auf, tvb, offset, 2, ENC_BIG_ENDIAN);
5272
0
    offset += 2;
5273
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_free, tvb, offset, 2, ENC_BIG_ENDIAN);
5274
0
    offset += 2;
5275
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_used, tvb, offset, 2, ENC_BIG_ENDIAN);
5276
0
    offset += 2;
5277
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_last, tvb, offset, 2, ENC_BIG_ENDIAN);
5278
0
    offset += 2;
5279
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_res, tvb, offset, 20, ENC_NA);
5280
0
    offset += 20;
5281
5282
0
    return offset;
5283
0
}
5284
5285
/*******************************************************************************************************
5286
 *
5287
 * SZL-ID:  0x0132
5288
 * Index:   0x0002
5289
 * Content:
5290
 *  The partial list extract with SZL-ID W#16#0132 and the index W#16#0002
5291
 *  contains information about the test and installation function status of the module.
5292
 *
5293
 *******************************************************************************************************/
5294
static void
5295
s7comm_szl_0132_0002_register(int proto)
5296
15
{
5297
15
    static hf_register_info hf[] = {
5298
15
        { &hf_s7comm_szl_0132_0002_index,
5299
15
        { "Index", "s7comm.szl.0132.0002.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5300
15
          "W#16#0002: Test and installation status", HFILL }},
5301
15
        { &hf_s7comm_szl_0132_0002_anz,
5302
15
        { "anz (Number of initialized test and installation jobs)", "s7comm.szl.0132.0002.anz", FT_UINT16, BASE_DEC, NULL, 0x0,
5303
15
          NULL, HFILL }},
5304
15
        { &hf_s7comm_szl_0132_0002_res,
5305
15
        { "res (Reserved)", "s7comm.szl.0132.0002.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5306
15
          NULL, HFILL }}
5307
15
    };
5308
15
    proto_register_field_array(proto, hf, array_length(hf));
5309
15
}
5310
5311
/*----------------------------------------------------------------------------------------------------*/
5312
static uint32_t
5313
s7comm_decode_szl_id_0132_idx_0002(tvbuff_t *tvb,
5314
                                   proto_tree *tree,
5315
                                   uint32_t offset)
5316
0
{
5317
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0002_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5318
0
    offset += 2;
5319
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0002_anz, tvb, offset, 2, ENC_BIG_ENDIAN);
5320
0
    offset += 2;
5321
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0002_res, tvb, offset, 36, ENC_NA);
5322
0
    offset += 36;
5323
5324
0
    return offset;
5325
0
}
5326
5327
/*******************************************************************************************************
5328
 *
5329
 * SZL-ID:  0x0132
5330
 * Index:   0x0004
5331
 * Content:
5332
 *  The partial list extract with SZL-ID W#16#0132 and the index W#16#0004
5333
 *  contains information about the protection level of the module.
5334
 *
5335
 *******************************************************************************************************/
5336
static void
5337
s7comm_szl_0132_0004_register(int proto)
5338
15
{
5339
15
    static hf_register_info hf[] = {
5340
15
        { &hf_s7comm_szl_0132_0004_index,
5341
15
        { "Index", "s7comm.szl.0132.0004.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5342
15
          "W#16#0004 Protection status data", HFILL }},
5343
15
        { &hf_s7comm_szl_0132_0004_key,
5344
15
        { "key (Protection level for the key switch, possible values: 1,2 or 3)", "s7comm.szl.0132.0004.key", FT_UINT16, BASE_DEC, NULL, 0x0,
5345
15
          NULL, HFILL }},
5346
15
        { &hf_s7comm_szl_0132_0004_param,
5347
15
        { "param (Assigned protection level, possible values: 0, 1, 2 or 3)", "s7comm.szl.0132.0004.param", FT_UINT16, BASE_DEC, NULL, 0x0,
5348
15
          "param (Assigned protection level (possible values: 0, 1, 2 or 3;0 means: no password assigned, assigned protection level is not valid)", HFILL }},
5349
15
        { &hf_s7comm_szl_0132_0004_real,
5350
15
        { "real (Valid protection level of the CPU, possible values: 1, 2 or 3)", "s7comm.szl.0132.0004.real", FT_UINT16, BASE_DEC, NULL, 0x0,
5351
15
          NULL, HFILL }},
5352
15
        { &hf_s7comm_szl_0132_0004_bart_sch,
5353
15
        { "bart_sch (Position of the mode switch)", "s7comm.szl.0132.0004.bart_sch", FT_UINT16, BASE_DEC, VALS(szl_bart_sch_names), 0x0,
5354
15
          NULL, HFILL }},
5355
15
        { &hf_s7comm_szl_0132_0004_crst_wrst,
5356
15
        { "crst_wrst (Setting of the CRST/WRST switch)", "s7comm.szl.0132.0004.crst_wrst", FT_UINT16, BASE_DEC, VALS(szl_crst_wrst_names), 0x0,
5357
15
          NULL, HFILL }},
5358
15
        { &hf_s7comm_szl_0132_0004_ken_f,
5359
15
        { "ken_f (Reserved)", "s7comm.szl.0132.0004.ken_f", FT_UINT16, BASE_HEX, NULL, 0x0,
5360
15
          NULL, HFILL }},
5361
15
        { &hf_s7comm_szl_0132_0004_ken_rel,
5362
15
        { "ken_rel (ID for valid version identifications/checksums)", "s7comm.szl.0132.0004.ken_rel", FT_UINT16, BASE_HEX, NULL, 0x0,
5363
15
          "ken_rel (ID for valid version identifications/checksums) 0=invalid", HFILL }},
5364
15
        { &hf_s7comm_szl_0132_0004_ken_ver1_hw,
5365
15
        { "ken_ver1_hw (Version ID/checksum 1 of the hardware configuration)", "s7comm.szl.0132.0004.ken_ver1_hw", FT_UINT16, BASE_HEX, NULL, 0x0,
5366
15
          "ken_ver1_hw: Version ID/checksum 1 of the hardware configuration: XOR over the length of all SDBs", HFILL }},
5367
15
        { &hf_s7comm_szl_0132_0004_ken_ver2_hw,
5368
15
        { "ken_ver2_hw (Version ID/checksum 2 of the hardware configuration)", "s7comm.szl.0132.0004.ken_ver2_hw", FT_UINT16, BASE_HEX, NULL, 0x0,
5369
15
          "ken_ver2_hw: Version ID/checksum 2 of the hardware configuration: XOR over the checksums of all SDBs", HFILL }},
5370
15
        { &hf_s7comm_szl_0132_0004_ken_ver1_awp,
5371
15
        { "ken_ver1_awp (Version ID/checksum 1 of the user program)", "s7comm.szl.0132.0004.ken_ver1_awp", FT_UINT16, BASE_HEX, NULL, 0x0,
5372
15
          "ken_ver1_awp: Version ID/checksum 1 of the user program): XOR over the length of all OBs, DBs, FBs, FCs", HFILL }},
5373
15
        { &hf_s7comm_szl_0132_0004_ken_ver2_awp,
5374
15
        { "ken_ver2_awp (Version ID/checksum 2 of the user program)", "s7comm.szl.0132.0004.ken_ver2_awp", FT_UINT16, BASE_HEX, NULL, 0x0,
5375
15
          "ken_ver2_awp: Version ID/checksum 2 of the user program): XOR over the checksums of all OBs, DBs, FBs, FCs", HFILL }},
5376
15
        { &hf_s7comm_szl_0132_0004_res,
5377
15
        { "res (Reserved)", "s7comm.szl.0132.0004.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5378
15
          NULL, HFILL }}
5379
15
    };
5380
15
    proto_register_field_array(proto, hf, array_length(hf));
5381
15
}
5382
5383
/*----------------------------------------------------------------------------------------------------*/
5384
static uint32_t
5385
s7comm_decode_szl_id_0132_idx_0004(tvbuff_t *tvb,
5386
                                   proto_tree *tree,
5387
                                   uint32_t offset)
5388
0
{
5389
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5390
0
    offset += 2;
5391
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_key, tvb, offset, 2, ENC_BIG_ENDIAN);
5392
0
    offset += 2;
5393
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_param, tvb, offset, 2, ENC_BIG_ENDIAN);
5394
0
    offset += 2;
5395
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_real, tvb, offset, 2, ENC_BIG_ENDIAN);
5396
0
    offset += 2;
5397
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_bart_sch, tvb, offset, 2, ENC_BIG_ENDIAN);
5398
0
    offset += 2;
5399
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_crst_wrst, tvb, offset, 2, ENC_BIG_ENDIAN);
5400
0
    offset += 2;
5401
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_f, tvb, offset, 2, ENC_BIG_ENDIAN);
5402
0
    offset += 2;
5403
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_rel, tvb, offset, 2, ENC_BIG_ENDIAN);
5404
0
    offset += 2;
5405
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_ver1_hw, tvb, offset, 2, ENC_LITTLE_ENDIAN);
5406
0
    offset += 2;
5407
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_ver2_hw, tvb, offset, 2, ENC_LITTLE_ENDIAN);
5408
0
    offset += 2;
5409
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_ver1_awp, tvb, offset, 2, ENC_LITTLE_ENDIAN);
5410
0
    offset += 2;
5411
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_ver2_awp, tvb, offset, 2, ENC_LITTLE_ENDIAN);
5412
0
    offset += 2;
5413
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_res, tvb, offset, 16, ENC_NA);
5414
0
    offset += 16;
5415
5416
0
    return offset;
5417
0
}
5418
5419
/*******************************************************************************************************
5420
 *
5421
 * SZL-ID:  0x0132
5422
 * Index:   0x0005
5423
 * Content:
5424
 *  The partial list extract with SZL-ID W#16#0132 and index W#16#0005
5425
 *  contains information about the status of the diagnostics on the module.
5426
 *
5427
 *******************************************************************************************************/
5428
static void
5429
s7comm_szl_0132_0005_register(int proto)
5430
15
{
5431
15
    static hf_register_info hf[] = {
5432
15
        { &hf_s7comm_szl_0132_0005_index,
5433
15
        { "Index", "s7comm.szl.0132.0005.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5434
15
          "W#16#0005: Diagnostics", HFILL }},
5435
15
        { &hf_s7comm_szl_0132_0005_erw,
5436
15
        { "erw (Extended functions)", "s7comm.szl.0132.0005.erw", FT_UINT16, BASE_DEC, VALS(szl_0132_0005_func_exist_names), 0x0,
5437
15
          NULL, HFILL }},
5438
15
        { &hf_s7comm_szl_0132_0005_send,
5439
15
        { "send (Automatic sending)", "s7comm.szl.0132.0005.send", FT_UINT16, BASE_DEC, VALS(szl_0132_0005_func_exist_names), 0x0,
5440
15
          NULL, HFILL }},
5441
15
        { &hf_s7comm_szl_0132_0005_moeg,
5442
15
        { "moeg (Sending user-defined diagnostic messages currently possible)", "s7comm.szl.0132.0005.moeg", FT_UINT16, BASE_DEC, VALS(szl_0132_0005_func_exist_names), 0x0,
5443
15
          NULL, HFILL }},
5444
15
        { &hf_s7comm_szl_0132_0005_ltmerz,
5445
15
        { "ltmerz (Generation of status message active)", "s7comm.szl.0132.0005.ltmerz", FT_UINT16, BASE_DEC, VALS(szl_0132_0005_func_exist_names), 0x0,
5446
15
          NULL, HFILL }},
5447
15
        { &hf_s7comm_szl_0132_0005_res,
5448
15
        { "res (Reserved)", "s7comm.szl.0132.0005.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5449
15
          NULL, HFILL }}
5450
15
    };
5451
15
    proto_register_field_array(proto, hf, array_length(hf));
5452
15
}
5453
5454
/*----------------------------------------------------------------------------------------------------*/
5455
static uint32_t
5456
s7comm_decode_szl_id_0132_idx_0005(tvbuff_t *tvb,
5457
                                   proto_tree *tree,
5458
                                   uint32_t offset)
5459
0
{
5460
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5461
0
    offset += 2;
5462
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_erw, tvb, offset, 2, ENC_BIG_ENDIAN);
5463
0
    offset += 2;
5464
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_send, tvb, offset, 2, ENC_BIG_ENDIAN);
5465
0
    offset += 2;
5466
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_moeg, tvb, offset, 2, ENC_BIG_ENDIAN);
5467
0
    offset += 2;
5468
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_ltmerz, tvb, offset, 2, ENC_BIG_ENDIAN);
5469
0
    offset += 2;
5470
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_res, tvb, offset, 30, ENC_NA);
5471
0
    offset += 30;
5472
5473
0
    return offset;
5474
0
}
5475
5476
/*******************************************************************************************************
5477
 *
5478
 * SZL-ID:  0x0132
5479
 * Index:   0x0006
5480
 * Content:
5481
 *  The partial list extract with SZL-ID W#16#0132 and index W#16#0006
5482
 *  contains status data about data exchange with communication SFBs for
5483
 *  configured connections.
5484
 *
5485
 *******************************************************************************************************/
5486
static void
5487
s7comm_szl_0132_0006_register(int proto)
5488
15
{
5489
15
    static hf_register_info hf[] = {
5490
15
        { &hf_s7comm_szl_0132_0006_index,
5491
15
        { "Index", "s7comm.szl.0132.0006.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5492
15
          "W#16#0006: Data exchange with communication SFBs for configured connections", HFILL }},
5493
15
        { &hf_s7comm_szl_0132_0006_used_0,
5494
15
        { "used_0 (Blocks used)", "s7comm.szl.0132.0006.used_0", FT_BYTES, BASE_NONE, NULL, 0x0,
5495
15
          NULL, HFILL }},
5496
15
        { &hf_s7comm_szl_0132_0006_used_1,
5497
15
        { "used_1 (Blocks used)", "s7comm.szl.0132.0006.used_1", FT_BYTES, BASE_NONE, NULL, 0x0,
5498
15
          NULL, HFILL }},
5499
15
        { &hf_s7comm_szl_0132_0006_used_2,
5500
15
        { "used_2 (Blocks used)", "s7comm.szl.0132.0006.used_2", FT_BYTES, BASE_NONE, NULL, 0x0,
5501
15
          NULL, HFILL }},
5502
15
        { &hf_s7comm_szl_0132_0006_used_3,
5503
15
        { "used_3 (Blocks used)", "s7comm.szl.0132.0006.used_3", FT_BYTES, BASE_NONE, NULL, 0x0,
5504
15
          NULL, HFILL }},
5505
15
        { &hf_s7comm_szl_0132_0006_used_4,
5506
15
        { "used_4 (Blocks used)", "s7comm.szl.0132.0006.used_4", FT_BYTES, BASE_NONE, NULL, 0x0,
5507
15
          NULL, HFILL }},
5508
15
        { &hf_s7comm_szl_0132_0006_used_5,
5509
15
        { "used_5 (Blocks used)", "s7comm.szl.0132.0006.used_5", FT_BYTES, BASE_NONE, NULL, 0x0,
5510
15
          NULL, HFILL }},
5511
15
        { &hf_s7comm_szl_0132_0006_used_6,
5512
15
        { "used_6 (Blocks used)", "s7comm.szl.0132.0006.used_6", FT_BYTES, BASE_NONE, NULL, 0x0,
5513
15
          NULL, HFILL }},
5514
15
        { &hf_s7comm_szl_0132_0006_used_7,
5515
15
        { "used_7 (Blocks used)", "s7comm.szl.0132.0006.used_7", FT_BYTES, BASE_NONE, NULL, 0x0,
5516
15
          NULL, HFILL }},
5517
15
        { &hf_s7comm_szl_0132_0006_anz_schnell,
5518
15
        { "anz_schnell (Reserved)", "s7comm.szl.0132.0006.anz_schnell", FT_UINT16, BASE_DEC, NULL, 0x0,
5519
15
          NULL, HFILL }},
5520
15
        { &hf_s7comm_szl_0132_0006_anz_inst,
5521
15
        { "anz_inst (Number of loaded SFB instances)", "s7comm.szl.0132.0006.anz_inst", FT_UINT16, BASE_DEC, NULL, 0x0,
5522
15
          NULL, HFILL }},
5523
15
        { &hf_s7comm_szl_0132_0006_anz_multicast,
5524
15
        { "anz_multicast (Number of blocks used for multicast)", "s7comm.szl.0132.0006.anz_multicast", FT_UINT16, BASE_DEC, NULL, 0x0,
5525
15
          NULL, HFILL }},
5526
15
        { &hf_s7comm_szl_0132_0006_res,
5527
15
        { "res (Reserved)", "s7comm.szl.0132.0006.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5528
15
          NULL, HFILL }}
5529
15
    };
5530
15
    proto_register_field_array(proto, hf, array_length(hf));
5531
15
}
5532
5533
/*----------------------------------------------------------------------------------------------------*/
5534
static uint32_t
5535
s7comm_decode_szl_id_0132_idx_0006(tvbuff_t *tvb,
5536
                                   proto_tree *tree,
5537
                                   uint32_t offset)
5538
0
{
5539
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5540
0
    offset += 2;
5541
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_0, tvb, offset, 1, ENC_NA);
5542
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5543
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5544
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5545
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_3, tvb, offset, 1, ENC_BIG_ENDIAN);
5546
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_4, tvb, offset, 1, ENC_BIG_ENDIAN);
5547
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_5, tvb, offset, 1, ENC_BIG_ENDIAN);
5548
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_6, tvb, offset, 1, ENC_BIG_ENDIAN);
5549
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_7, tvb, offset, 1, ENC_BIG_ENDIAN);
5550
0
    offset += 1;
5551
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_1, tvb, offset, 1, ENC_NA);
5552
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5553
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5554
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5555
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_3, tvb, offset, 1, ENC_BIG_ENDIAN);
5556
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_4, tvb, offset, 1, ENC_BIG_ENDIAN);
5557
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_5, tvb, offset, 1, ENC_BIG_ENDIAN);
5558
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_6, tvb, offset, 1, ENC_BIG_ENDIAN);
5559
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_7, tvb, offset, 1, ENC_BIG_ENDIAN);
5560
0
    offset += 1;
5561
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_2, tvb, offset, 1, ENC_NA);
5562
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5563
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5564
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5565
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_3, tvb, offset, 1, ENC_BIG_ENDIAN);
5566
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_4, tvb, offset, 1, ENC_BIG_ENDIAN);
5567
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_5, tvb, offset, 1, ENC_BIG_ENDIAN);
5568
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_6, tvb, offset, 1, ENC_BIG_ENDIAN);
5569
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_7, tvb, offset, 1, ENC_BIG_ENDIAN);
5570
0
    offset += 1;
5571
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_3, tvb, offset, 1, ENC_NA);
5572
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5573
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5574
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5575
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_3, tvb, offset, 1, ENC_BIG_ENDIAN);
5576
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_4, tvb, offset, 1, ENC_BIG_ENDIAN);
5577
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_5, tvb, offset, 1, ENC_BIG_ENDIAN);
5578
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_6, tvb, offset, 1, ENC_BIG_ENDIAN);
5579
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_7, tvb, offset, 1, ENC_BIG_ENDIAN);
5580
0
    offset += 1;
5581
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_4, tvb, offset, 1, ENC_NA);
5582
0
    offset += 1;
5583
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_5, tvb, offset, 1, ENC_NA);
5584
0
    offset += 1;
5585
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_6, tvb, offset, 1, ENC_NA);
5586
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5587
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5588
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5589
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_3, tvb, offset, 1, ENC_BIG_ENDIAN);
5590
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_4, tvb, offset, 1, ENC_BIG_ENDIAN);
5591
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_5, tvb, offset, 1, ENC_BIG_ENDIAN);
5592
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_6, tvb, offset, 1, ENC_BIG_ENDIAN);
5593
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_7, tvb, offset, 1, ENC_BIG_ENDIAN);
5594
0
    offset += 1;
5595
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_7, tvb, offset, 1, ENC_NA);
5596
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5597
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5598
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_2, tvb, offset, 1, ENC_BIG_ENDIAN);
5599
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_3, tvb, offset, 1, ENC_BIG_ENDIAN);
5600
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_4, tvb, offset, 1, ENC_BIG_ENDIAN);
5601
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_5, tvb, offset, 1, ENC_BIG_ENDIAN);
5602
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_6, tvb, offset, 1, ENC_BIG_ENDIAN);
5603
0
    proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_7, tvb, offset, 1, ENC_BIG_ENDIAN);
5604
0
    offset += 1;
5605
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_anz_schnell, tvb, offset, 1, ENC_BIG_ENDIAN);
5606
0
    offset += 1;
5607
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_anz_inst, tvb, offset, 2, ENC_BIG_ENDIAN);
5608
0
    offset += 2;
5609
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_anz_multicast, tvb, offset, 2, ENC_BIG_ENDIAN);
5610
0
    offset += 2;
5611
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_res, tvb, offset, 25, ENC_NA);
5612
0
    offset += 25;
5613
5614
0
    return offset;
5615
0
}
5616
5617
/*******************************************************************************************************
5618
 *
5619
 * SZL-ID:  0x0132
5620
 * Index:   0x0008
5621
 * Content:
5622
 *  The partial list extract with SZL-ID W#16#0132 and index W#16#0008
5623
 *  contains information on the status of the modules time system.
5624
 *
5625
 *******************************************************************************************************/
5626
static void
5627
s7comm_szl_0132_0008_register(int proto)
5628
15
{
5629
15
    static hf_register_info hf[] = {
5630
15
        { &hf_s7comm_szl_0132_0008_index,
5631
15
        { "Index", "s7comm.szl.0132.0008.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5632
15
          "W#16#0008: Time system status", HFILL }},
5633
15
        { &hf_s7comm_szl_0132_0008_zykl,
5634
15
        { "zykl (Cycle time of the synchronization frames)", "s7comm.szl.0132.0008.zykl", FT_UINT16, BASE_DEC, NULL, 0x0,
5635
15
          NULL, HFILL }},
5636
15
        { &hf_s7comm_szl_0132_0008_korr,
5637
15
        { "korr (Correction factor for time-of-day)", "s7comm.szl.0132.0008.korr", FT_UINT16, BASE_DEC, NULL, 0x0,
5638
15
          NULL, HFILL }},
5639
15
        { &hf_s7comm_szl_0132_0008_clock0,
5640
15
        { "clock 0 (Run-time meter 0: Time in hours)", "s7comm.szl.0132.0008.clock0", FT_UINT16, BASE_DEC, NULL, 0x0,
5641
15
          NULL, HFILL }},
5642
15
        { &hf_s7comm_szl_0132_0008_clock1,
5643
15
        { "clock 1 (Run-time meter 1: Time in hours)", "s7comm.szl.0132.0008.clock1", FT_UINT16, BASE_DEC, NULL, 0x0,
5644
15
          NULL, HFILL }},
5645
15
        { &hf_s7comm_szl_0132_0008_clock2,
5646
15
        { "clock 2 (Run-time meter 2: Time in hours)", "s7comm.szl.0132.0008.clock2", FT_UINT16, BASE_DEC, NULL, 0x0,
5647
15
          NULL, HFILL }},
5648
15
        { &hf_s7comm_szl_0132_0008_clock3,
5649
15
        { "clock 3 (Run-time meter 3: Time in hours)", "s7comm.szl.0132.0008.clock3", FT_UINT16, BASE_DEC, NULL, 0x0,
5650
15
          NULL, HFILL }},
5651
15
        { &hf_s7comm_szl_0132_0008_clock4,
5652
15
        { "clock 4 (Run-time meter 4: Time in hours)", "s7comm.szl.0132.0008.clock4", FT_UINT16, BASE_DEC, NULL, 0x0,
5653
15
          NULL, HFILL }},
5654
15
        { &hf_s7comm_szl_0132_0008_clock5,
5655
15
        { "clock 5 (Run-time meter 5: Time in hours)", "s7comm.szl.0132.0008.clock5", FT_UINT16, BASE_DEC, NULL, 0x0,
5656
15
          NULL, HFILL }},
5657
15
        { &hf_s7comm_szl_0132_0008_clock6,
5658
15
        { "clock 6 (Run-time meter 6: Time in hours)", "s7comm.szl.0132.0008.clock6", FT_UINT16, BASE_DEC, NULL, 0x0,
5659
15
          NULL, HFILL }},
5660
15
        { &hf_s7comm_szl_0132_0008_clock7,
5661
15
        { "clock 7 (Run-time meter 7: Time in hours)", "s7comm.szl.0132.0008.clock7", FT_UINT16, BASE_DEC, NULL, 0x0,
5662
15
          NULL, HFILL }},
5663
15
        { &hf_s7comm_szl_0132_0008_time,
5664
15
        { "time (Current date and time)", "s7comm.szl.0132.0008.time", FT_BYTES, BASE_NONE, NULL, 0x0,
5665
15
          "time (Current date and time) format: date_and_time", HFILL }},
5666
15
        { &hf_s7comm_szl_0132_0008_res,
5667
15
        { "res (Reserved)", "s7comm.szl.0132.0008.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5668
15
          NULL, HFILL }}
5669
15
    };
5670
15
    proto_register_field_array(proto, hf, array_length(hf));
5671
15
}
5672
5673
/*----------------------------------------------------------------------------------------------------*/
5674
static uint32_t
5675
s7comm_decode_szl_id_0132_idx_0008(tvbuff_t *tvb,
5676
                                   proto_tree *tree,
5677
                                   uint32_t offset)
5678
0
{
5679
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5680
0
    offset += 2;
5681
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_zykl, tvb, offset, 2, ENC_BIG_ENDIAN);
5682
0
    offset += 2;
5683
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_korr, tvb, offset, 2, ENC_BIG_ENDIAN);
5684
0
    offset += 2;
5685
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock0, tvb, offset, 2, ENC_BIG_ENDIAN);
5686
0
    offset += 2;
5687
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock1, tvb, offset, 2, ENC_BIG_ENDIAN);
5688
0
    offset += 2;
5689
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock2, tvb, offset, 2, ENC_BIG_ENDIAN);
5690
0
    offset += 2;
5691
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock3, tvb, offset, 2, ENC_BIG_ENDIAN);
5692
0
    offset += 2;
5693
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock4, tvb, offset, 2, ENC_BIG_ENDIAN);
5694
0
    offset += 2;
5695
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock5, tvb, offset, 2, ENC_BIG_ENDIAN);
5696
0
    offset += 2;
5697
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock6, tvb, offset, 2, ENC_BIG_ENDIAN);
5698
0
    offset += 2;
5699
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock7, tvb, offset, 2, ENC_BIG_ENDIAN);
5700
0
    offset += 2;
5701
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_time, tvb, offset, 8, ENC_NA);
5702
0
    offset += 8;
5703
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_res, tvb, offset, 10, ENC_NA);
5704
0
    offset += 10;
5705
5706
0
    return offset;
5707
0
}
5708
5709
/*******************************************************************************************************
5710
 *
5711
 * SZL-ID:  0x0132
5712
 * Index:   0x000b
5713
 * Content:
5714
 *  The partial list extract with SZL-ID W#16#0132 and index W#16#000B
5715
 *  contains information about the status of the 32-bit run-time meters 0..7 of the module.
5716
 *
5717
 *******************************************************************************************************/
5718
static void
5719
s7comm_szl_0132_000b_register(int proto)
5720
15
{
5721
15
    static hf_register_info hf[] = {
5722
15
        { &hf_s7comm_szl_0132_000b_index,
5723
15
        { "Index", "s7comm.szl.0132.000b.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5724
15
          "W#16#000B: Time system status", HFILL }},
5725
15
        { &hf_s7comm_szl_0132_000b_bszl_0,
5726
15
        { "bszl_0 (Status of run-time meter)", "s7comm.szl.0132.000b.bszl_0", FT_UINT8, BASE_HEX, NULL, 0x0,
5727
15
          "bszl_0 (Status of run-time meter): Bit = 1: run-time meter is busy" , HFILL }},
5728
15
        { &hf_s7comm_szl_0132_000b_bszl_1,
5729
15
        { "bszl_1 (Reserved)", "s7comm.szl.0132.000b.bszl_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5730
15
          NULL, HFILL }},
5731
15
        { &hf_s7comm_szl_0132_000b_bszu_0,
5732
15
        { "bszu_0 (Overflow of run-time meter)", "s7comm.szl.0132.000b.bszu_0", FT_UINT8, BASE_HEX, NULL, 0x0,
5733
15
          "bszu_0 (Overflow of run-time meter): Bit = 1: overflow", HFILL }},
5734
15
        { &hf_s7comm_szl_0132_000b_bszu_1,
5735
15
        { "bszu_1 (Reserved)", "s7comm.szl.0132.000b.bszu_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5736
15
          NULL, HFILL }},
5737
15
        { &hf_s7comm_szl_0132_000b_clock0,
5738
15
        { "clock 0 (Run-time meter 0: Time in hours)", "s7comm.szl.0132.000b.clock0", FT_UINT32, BASE_DEC, NULL, 0x0,
5739
15
          NULL, HFILL }},
5740
15
        { &hf_s7comm_szl_0132_000b_clock1,
5741
15
        { "clock 1 (Run-time meter 1: Time in hours)", "s7comm.szl.0132.000b.clock1", FT_UINT32, BASE_DEC, NULL, 0x0,
5742
15
          NULL, HFILL }},
5743
15
        { &hf_s7comm_szl_0132_000b_clock2,
5744
15
        { "clock 2 (Run-time meter 2: Time in hours)", "s7comm.szl.0132.000b.clock2", FT_UINT32, BASE_DEC, NULL, 0x0,
5745
15
          NULL, HFILL }},
5746
15
        { &hf_s7comm_szl_0132_000b_clock3,
5747
15
        { "clock 3 (Run-time meter 3: Time in hours)", "s7comm.szl.0132.000b.clock3", FT_UINT32, BASE_DEC, NULL, 0x0,
5748
15
          NULL, HFILL }},
5749
15
        { &hf_s7comm_szl_0132_000b_clock4,
5750
15
        { "clock 4 (Run-time meter 4: Time in hours)", "s7comm.szl.0132.000b.clock4", FT_UINT32, BASE_DEC, NULL, 0x0,
5751
15
          NULL, HFILL }},
5752
15
        { &hf_s7comm_szl_0132_000b_clock5,
5753
15
        { "clock 5 (Run-time meter 5: Time in hours)", "s7comm.szl.0132.000b.clock5", FT_UINT32, BASE_DEC, NULL, 0x0,
5754
15
          NULL, HFILL }},
5755
15
        { &hf_s7comm_szl_0132_000b_clock6,
5756
15
        { "clock 6 (Run-time meter 6: Time in hours)", "s7comm.szl.0132.000b.clock6", FT_UINT32, BASE_DEC, NULL, 0x0,
5757
15
          NULL, HFILL }},
5758
15
        { &hf_s7comm_szl_0132_000b_clock7,
5759
15
        { "clock 7 (Run-time meter 7: Time in hours)", "s7comm.szl.0132.000b.clock7", FT_UINT32, BASE_DEC, NULL, 0x0,
5760
15
          NULL, HFILL }},
5761
15
        { &hf_s7comm_szl_0132_000b_res,
5762
15
        { "res (Reserved)", "s7comm.szl.0132.000b.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5763
15
          NULL, HFILL }}
5764
15
    };
5765
15
    proto_register_field_array(proto, hf, array_length(hf));
5766
15
}
5767
/*----------------------------------------------------------------------------------------------------*/
5768
static uint32_t
5769
s7comm_decode_szl_id_0132_idx_000b(tvbuff_t *tvb,
5770
                                   proto_tree *tree,
5771
                                   uint32_t offset)
5772
0
{
5773
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5774
0
    offset += 2;
5775
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_bszl_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5776
0
    offset += 1;
5777
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_bszl_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5778
0
    offset += 1;
5779
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_bszu_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5780
0
    offset += 1;
5781
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_bszu_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5782
0
    offset += 1;
5783
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock0, tvb, offset, 4, ENC_BIG_ENDIAN);
5784
0
    offset += 4;
5785
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock1, tvb, offset, 4, ENC_BIG_ENDIAN);
5786
0
    offset += 4;
5787
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock2, tvb, offset, 4, ENC_BIG_ENDIAN);
5788
0
    offset += 4;
5789
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock3, tvb, offset, 4, ENC_BIG_ENDIAN);
5790
0
    offset += 4;
5791
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock4, tvb, offset, 4, ENC_BIG_ENDIAN);
5792
0
    offset += 4;
5793
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock5, tvb, offset, 4, ENC_BIG_ENDIAN);
5794
0
    offset += 4;
5795
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock6, tvb, offset, 4, ENC_BIG_ENDIAN);
5796
0
    offset += 4;
5797
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock7, tvb, offset, 4, ENC_BIG_ENDIAN);
5798
0
    offset += 4;
5799
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_res, tvb, offset, 2, ENC_NA);
5800
0
    offset += 2;
5801
5802
0
    return offset;
5803
0
}
5804
5805
/*******************************************************************************************************
5806
 *
5807
 * SZL-ID:  0x0132
5808
 * Index:   0x000c
5809
 * Content:
5810
 *  The partial list extract with SZL-ID W#16#0132 and index W#16#000C
5811
 *  contains information about the status of the 32-bit run-time meters 8..15 of the module.
5812
 *
5813
 *******************************************************************************************************/
5814
static void
5815
s7comm_szl_0132_000c_register(int proto)
5816
15
{
5817
15
    static hf_register_info hf[] = {
5818
15
        { &hf_s7comm_szl_0132_000c_index,
5819
15
        { "Index", "s7comm.szl.0132.000c.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5820
15
          "W#16#000C: Time system status", HFILL }},
5821
15
        { &hf_s7comm_szl_0132_000c_bszl_0,
5822
15
        { "bszl_0 (Status of run-time meter)", "s7comm.szl.0132.000c.bszl_0", FT_UINT8, BASE_HEX, NULL, 0x0,
5823
15
          "bszl_0 (Status of run-time meter): Bit = 1: run-time meter is busy" , HFILL }},
5824
15
        { &hf_s7comm_szl_0132_000c_bszl_1,
5825
15
        { "bszl_1 (Reserved)", "s7comm.szl.0132.000c.bszl_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5826
15
          NULL, HFILL }},
5827
15
        { &hf_s7comm_szl_0132_000c_bszu_0,
5828
15
        { "bszu_0 (Overflow of run-time meter)", "s7comm.szl.0132.000c.bszu_0", FT_UINT8, BASE_HEX, NULL, 0x0,
5829
15
          "bszu_0 (Overflow of run-time meter): Bit = 1: overflow", HFILL }},
5830
15
        { &hf_s7comm_szl_0132_000c_bszu_1,
5831
15
        { "bszu_1 (Reserved)", "s7comm.szl.0132.000c.bszu_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5832
15
          NULL, HFILL }},
5833
15
        { &hf_s7comm_szl_0132_000c_clock8,
5834
15
        { "clock 8 (Run-time meter 8: Time in hours)", "s7comm.szl.0132.000c.clock8", FT_UINT32, BASE_DEC, NULL, 0x0,
5835
15
          NULL, HFILL }},
5836
15
        { &hf_s7comm_szl_0132_000c_clock9,
5837
15
        { "clock 9 (Run-time meter 9: Time in hours)", "s7comm.szl.0132.000c.clock9", FT_UINT32, BASE_DEC, NULL, 0x0,
5838
15
          NULL, HFILL }},
5839
15
        { &hf_s7comm_szl_0132_000c_clock10,
5840
15
        { "clock 10 (Run-time meter 10: Time in hours)", "s7comm.szl.0132.000c.clock10", FT_UINT32, BASE_DEC, NULL, 0x0,
5841
15
          NULL, HFILL }},
5842
15
        { &hf_s7comm_szl_0132_000c_clock11,
5843
15
        { "clock 11 (Run-time meter 11: Time in hours)", "s7comm.szl.0132.000c.clock11", FT_UINT32, BASE_DEC, NULL, 0x0,
5844
15
          NULL, HFILL }},
5845
15
        { &hf_s7comm_szl_0132_000c_clock12,
5846
15
        { "clock 12 (Run-time meter 12: Time in hours)", "s7comm.szl.0132.000c.clock12", FT_UINT32, BASE_DEC, NULL, 0x0,
5847
15
          NULL, HFILL }},
5848
15
        { &hf_s7comm_szl_0132_000c_clock13,
5849
15
        { "clock 13 (Run-time meter 13: Time in hours)", "s7comm.szl.0132.000c.clock13", FT_UINT32, BASE_DEC, NULL, 0x0,
5850
15
          NULL, HFILL }},
5851
15
        { &hf_s7comm_szl_0132_000c_clock14,
5852
15
        { "clock 14 (Run-time meter 14: Time in hours)", "s7comm.szl.0132.000c.clock14", FT_UINT32, BASE_DEC, NULL, 0x0,
5853
15
          NULL, HFILL }},
5854
15
        { &hf_s7comm_szl_0132_000c_clock15,
5855
15
        { "clock 15 (Run-time meter 15: Time in hours)", "s7comm.szl.0132.000c.clock15", FT_UINT32, BASE_DEC, NULL, 0x0,
5856
15
          NULL, HFILL }},
5857
15
        { &hf_s7comm_szl_0132_000c_res,
5858
15
        { "res (Reserved)", "s7comm.szl.0132.000c.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5859
15
          NULL, HFILL }}
5860
15
    };
5861
15
    proto_register_field_array(proto, hf, array_length(hf));
5862
15
}
5863
5864
/*----------------------------------------------------------------------------------------------------*/
5865
static uint32_t
5866
s7comm_decode_szl_id_0132_idx_000c(tvbuff_t *tvb,
5867
                                   proto_tree *tree,
5868
                                   uint32_t offset)
5869
0
{
5870
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5871
0
    offset += 2;
5872
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_bszl_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5873
0
    offset += 1;
5874
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_bszl_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5875
0
    offset += 1;
5876
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_bszu_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5877
0
    offset += 1;
5878
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_bszu_1, tvb, offset, 1, ENC_BIG_ENDIAN);
5879
0
    offset += 1;
5880
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock8, tvb, offset, 4, ENC_BIG_ENDIAN);
5881
0
    offset += 4;
5882
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock9, tvb, offset, 4, ENC_BIG_ENDIAN);
5883
0
    offset += 4;
5884
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock10, tvb, offset, 4, ENC_BIG_ENDIAN);
5885
0
    offset += 4;
5886
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock11, tvb, offset, 4, ENC_BIG_ENDIAN);
5887
0
    offset += 4;
5888
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock12, tvb, offset, 4, ENC_BIG_ENDIAN);
5889
0
    offset += 4;
5890
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock13, tvb, offset, 4, ENC_BIG_ENDIAN);
5891
0
    offset += 4;
5892
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock14, tvb, offset, 4, ENC_BIG_ENDIAN);
5893
0
    offset += 4;
5894
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock15, tvb, offset, 4, ENC_BIG_ENDIAN);
5895
0
    offset += 4;
5896
0
    proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_res, tvb, offset, 2, ENC_NA);
5897
0
    offset += 2;
5898
5899
0
    return offset;
5900
0
}
5901
5902
/*******************************************************************************************************
5903
 *
5904
 * SZL-ID:  0xxy74
5905
 * Index:   0x0000
5906
 * Content:
5907
 *  If you read the partial list SSL-ID W#16#xy74, with standard CPUs (if present) and
5908
 *  with the H CPUs, you obtain the status of the module LEDs.
5909
 *
5910
 *******************************************************************************************************/
5911
static void
5912
s7comm_szl_xy74_0000_register(int proto)
5913
15
{
5914
15
    static hf_register_info hf[] = {
5915
15
        { &hf_s7comm_szl_xy74_0000_cpu_led_id,
5916
15
        { "cpu_led_id", "s7comm.szl.xy74.0000.cpu_led_id", FT_UINT16, BASE_HEX, NULL, 0x0,
5917
15
          NULL, HFILL }},
5918
15
        { &hf_s7comm_szl_xy74_0000_cpu_led_id_rackno,
5919
15
        { "Bits 0, 1, 2: Rack number", "s7comm.szl.xy74.0000.cpu_led_id.rackno", FT_UINT16, BASE_DEC, NULL, 0x0700,
5920
15
          NULL, HFILL }},
5921
15
        { &hf_s7comm_szl_xy74_0000_cpu_led_id_cputype,
5922
15
        { "Bit 3: CPU Type (0=Standby, 1=Master)", "s7comm.szl.xy74.0000.cpu_led_id.cputype", FT_UINT16, BASE_DEC, NULL, 0x0800,
5923
15
          NULL, HFILL }},
5924
15
        { &hf_s7comm_szl_xy74_0000_cpu_led_id_id,
5925
15
        { "Byte 1: LED ID", "s7comm.szl.xy74.0000.cpu_led_id.id", FT_UINT16, BASE_DEC, VALS(szl_0119_0174_ledid_index_names), 0x00ff,
5926
15
          NULL, HFILL }},
5927
15
        { &hf_s7comm_szl_xy74_0000_led_on,
5928
15
        { "Status of the LED", "s7comm.szl.xy74.0000.led_on", FT_UINT8, BASE_DEC, VALS(szl_xy74_0000_led_on_names), 0x00,
5929
15
          NULL, HFILL }},
5930
15
        { &hf_s7comm_szl_xy74_0000_led_blink,
5931
15
        { "Flashing status of the LED", "s7comm.szl.xy74.0000.led_blink", FT_UINT8, BASE_DEC, VALS(szl_xy74_0000_led_blink_names), 0x00,
5932
15
          NULL, HFILL }}
5933
15
    };
5934
15
    proto_register_field_array(proto, hf, array_length(hf));
5935
15
}
5936
5937
/*----------------------------------------------------------------------------------------------------*/
5938
static uint32_t
5939
s7comm_decode_szl_id_xy74_idx_0000(tvbuff_t *tvb,
5940
                                   proto_tree *tree,
5941
                                   uint32_t offset)
5942
0
{
5943
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_cpu_led_id, tvb, offset, 2, ENC_BIG_ENDIAN);
5944
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_cpu_led_id_rackno, tvb, offset, 2, ENC_BIG_ENDIAN);
5945
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_cpu_led_id_cputype, tvb, offset, 2, ENC_BIG_ENDIAN);
5946
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_cpu_led_id_id, tvb, offset, 2, ENC_BIG_ENDIAN);
5947
0
    offset += 2;
5948
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_led_on, tvb, offset, 1, ENC_BIG_ENDIAN);
5949
0
    offset += 1;
5950
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_led_blink, tvb, offset, 1, ENC_BIG_ENDIAN);
5951
0
    offset += 1;
5952
5953
0
    return offset;
5954
0
}
5955
5956
/*******************************************************************************************************
5957
 *
5958
 * SZL-ID:  0xxy76
5959
 * Index:   0x0000
5960
 * Content:
5961
 *  If you read the partial list SSL-ID W#16#xy76, you obtain the DNN-Id of the top DNN node.
5962
 *
5963
 *******************************************************************************************************/
5964
static void
5965
s7comm_szl_xy76_0000_register(int proto)
5966
15
{
5967
15
    static hf_register_info hf[] = {
5968
15
        { &hf_s7comm_szl_xy76_0000_version,
5969
15
        { "Version", "s7comm.szl.xy76.0000.version", FT_UINT16, BASE_DEC, NULL, 0x0,
5970
15
          NULL, HFILL }},
5971
15
        { &hf_s7comm_szl_xy76_0000_top_dnn_id,
5972
15
        { "Top DNN Id", "s7comm.szl.xy76.0000.top_dnn_id", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
5973
15
          NULL, HFILL }}
5974
15
    };
5975
15
    proto_register_field_array(proto, hf, array_length(hf));
5976
15
}
5977
5978
/*******************************************************************************************************
5979
 *
5980
 * SZL-ID:  0xxy77
5981
 * Index:   0xxxxx
5982
 * Content:
5983
 *  If you read the partial list SSL-ID W#16#xy77, you obtain the relations of a DNN node.
5984
 *
5985
 *******************************************************************************************************/
5986
static void
5987
s7comm_szl_xy77_xxxx_register(int proto)
5988
15
{
5989
15
    static hf_register_info hf[] = {
5990
15
        { &hf_s7comm_szl_xy77_xxxx_version,
5991
15
        { "Version", "s7comm.szl.xy77.xxxx.version", FT_UINT16, BASE_DEC, NULL, 0x0,
5992
15
          NULL, HFILL }},
5993
15
        { &hf_s7comm_szl_xy77_xxxx_num_parent,
5994
15
        { "Number of parent objects", "s7comm.szl.xy77.xxxx.num_parent", FT_UINT16, BASE_DEC, NULL, 0x0,
5995
15
          NULL, HFILL }},
5996
15
        { &hf_s7comm_szl_xy77_xxxx_obj_parent,
5997
15
        { "Parent object", "s7comm.szl.xy77.xxxx.obj_parent", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
5998
15
          NULL, HFILL }},
5999
15
        { &hf_s7comm_szl_xy77_xxxx_num_child,
6000
15
        { "Number of child objects", "s7comm.szl.xy77.xxxx.num_child", FT_UINT16, BASE_DEC, NULL, 0x0,
6001
15
          NULL, HFILL }},
6002
15
        { &hf_s7comm_szl_xy77_xxxx_obj_child,
6003
15
        { "Child object", "s7comm.szl.xy77.xxxx.obj_child", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6004
15
          NULL, HFILL }},
6005
15
        { &hf_s7comm_szl_xy77_xxxx_num_redundancy_links,
6006
15
        { "Number of redundancy links", "s7comm.szl.xy77.xxxx.num_red_links", FT_UINT16, BASE_DEC, NULL, 0x0,
6007
15
          NULL, HFILL }},
6008
15
        { &hf_s7comm_szl_xy77_xxxx_obj_redundancy,
6009
15
        { "Redundancy object", "s7comm.szl.xy77.xxxx.obj_red", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6010
15
          NULL, HFILL }},
6011
15
        { &hf_s7comm_szl_xy77_xxxx_num_iodevice_agent_links,
6012
15
        { "Number of redundancy links", "s7comm.szl.xy77.xxxx.num_red_links", FT_UINT16, BASE_DEC, NULL, 0x0,
6013
15
          NULL, HFILL }},
6014
15
        { &hf_s7comm_szl_xy77_xxxx_obj_iodevice_agent,
6015
15
        { "IO-Device agent object", "s7comm.szl.xy77.xxxx.obj_agent", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6016
15
          NULL, HFILL }}
6017
15
    };
6018
15
    proto_register_field_array(proto, hf, array_length(hf));
6019
15
}
6020
6021
/*******************************************************************************************************
6022
 *
6023
 * SZL-ID:  0xxy78
6024
 * Index:   0xxxxx
6025
 * Content:
6026
 *  If you read the partial list SSL-ID W#16#xy78, you obtain the diagnostic data of a DNN node.
6027
 *
6028
 *******************************************************************************************************/
6029
static void
6030
s7comm_szl_xy78_xxxx_register(int proto)
6031
15
{
6032
15
    static hf_register_info hf[] = {
6033
15
        { &hf_s7comm_szl_xy78_xxxx_version,
6034
15
        { "Version", "s7comm.szl.xy78.xxxx.version", FT_UINT16, BASE_DEC, NULL, 0x0,
6035
15
          NULL, HFILL }},
6036
15
        { &hf_s7comm_szl_xy78_xxxx_unknown_version_data,
6037
15
        { "Unknown versioned data", "s7comm.szl.xy78.xxxx.unknown_version_data", FT_BYTES, BASE_NONE, NULL, 0x0,
6038
15
          NULL, HFILL }},          
6039
15
        { &hf_s7comm_szl_xy78_xxxx_geo_addr,
6040
15
        { "GEO. addr", "s7comm.szl.xy78.xxxx.geo", FT_NONE, BASE_NONE, NULL, 0x0,
6041
15
          NULL, HFILL }},
6042
15
        { &hf_s7comm_szl_xy78_xxxx_geo_addr_subsys,
6043
15
        { "Subsystem", "s7comm.szl.xy78.xxxx.geo.subsys", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6044
15
          NULL, HFILL }},
6045
15
        { &hf_s7comm_szl_xy78_xxxx_geo_addr_station,
6046
15
        { "Station", "s7comm.szl.xy78.xxxx.geo.station", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6047
15
          NULL, HFILL }},
6048
15
        { &hf_s7comm_szl_xy78_xxxx_geo_addr_rack,
6049
15
        { "Rack", "s7comm.szl.xy78.xxxx.geo.rack", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6050
15
          NULL, HFILL }},
6051
15
        { &hf_s7comm_szl_xy78_xxxx_geo_addr_slot,
6052
15
        { "Slot", "s7comm.szl.xy78.xxxx.geo.slot", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6053
15
          NULL, HFILL }},
6054
15
        { &hf_s7comm_szl_xy78_xxxx_geo_addr_subslot,
6055
15
        { "Subslot", "s7comm.szl.xy78.xxxx.geo.subslot", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6056
15
          NULL, HFILL }},
6057
15
        { &hf_s7comm_szl_xy78_xxxx_name,
6058
15
        { "Name", "s7comm.szl.xy78.xxxx.name", FT_STRING, BASE_NONE, NULL, 0x0,
6059
15
          NULL, HFILL }},
6060
15
        { &hf_s7comm_szl_xy78_xxxx_short_name,
6061
15
        { "Short name", "s7comm.szl.xy78.xxxx.short_name", FT_STRING, BASE_NONE, NULL, 0x0,
6062
15
          NULL, HFILL }},
6063
15
        { &hf_s7comm_szl_xy78_xxxx_dnn_mode,
6064
15
        { "DNN mode", "s7comm.szl.xy78.xxxx.dnn_mode", FT_UINT16, BASE_HEX, NULL, 0x0,
6065
15
          NULL, HFILL }},
6066
15
        { &hf_s7comm_szl_xy78_xxxx_dis,
6067
15
        { "DIS", "s7comm.szl.xy78.xxxx.dis", FT_NONE, BASE_NONE, NULL, 0x0,
6068
15
          NULL, HFILL }},
6069
15
        { &hf_s7comm_szl_xy78_xxxx_dis_num_cdiag,
6070
15
        { "Number of component diags", "s7comm.szl.xy78.xxxx.dis.num_cdiag", FT_UINT16, BASE_HEX, NULL, 0x0,
6071
15
          NULL, HFILL }},
6072
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiags,
6073
15
        { "Component diagnostics", "s7comm.szl.xy78.xxxx.dis.cdiag", FT_NONE, BASE_NONE, NULL, 0x0,
6074
15
          NULL, HFILL }},
6075
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry,
6076
15
        { "Diagnostic entry", "s7comm.szl.xy78.xxxx.dis.cdiag.entry", FT_NONE, BASE_NONE, NULL, 0x0,
6077
15
          NULL, HFILL }},
6078
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_ch_nr,
6079
15
        { "Channel number", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.ch_nr", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6080
15
          NULL, HFILL }},
6081
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_ch_prop,
6082
15
        { "Channel properties", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.ch_prop", FT_UINT16, BASE_HEX, NULL, 0x0,
6083
15
          NULL, HFILL }},
6084
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_alcat,
6085
15
        { "Alarm category", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.alcat", FT_UINT16, BASE_DEC_HEX | BASE_EXT_STRING,
6086
15
          &s7comm_szl_xy78_xxxx_dis_cdiag_entry_alcat_names_ext, 0x00,
6087
15
          NULL, HFILL }},
6088
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_res,
6089
15
        { "Reserved", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.res", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6090
15
          NULL, HFILL }},
6091
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_qualifier,
6092
15
        { "Qualifier", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.qual", FT_UINT32, BASE_HEX, NULL, 0x0,
6093
15
          NULL, HFILL }},
6094
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_chet,
6095
15
        { "TextList - CHET", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.text_chet", FT_UINT16, BASE_DEC_HEX | BASE_EXT_STRING,
6096
15
          &s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_names_ext, 0x00,
6097
15
          NULL, HFILL }},
6098
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet,
6099
15
        { "CHET", "s7comm.szl.xy78.xxxx.dis.cdiag.chet", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6100
15
          NULL, HFILL }},
6101
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8,
6102
15
        { "Text", "s7comm.szl.xy78.xxxx.dis.cdiag.text_chet.l8.chet", FT_UINT16, BASE_DEC_HEX | BASE_EXT_STRING,
6103
15
          &s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8_names_ext, 0x00,
6104
15
          NULL, HFILL }},
6105
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_echet,
6106
15
        { "TextList - ECHET", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.text_echet", FT_UINT16, BASE_DEC_HEX | BASE_EXT_STRING,
6107
15
          &s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_names_ext, 0x00,
6108
15
          NULL, HFILL }},
6109
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_echet,
6110
15
        { "ECHET", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.echet", FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
6111
15
          NULL, HFILL }},
6112
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val,
6113
15
        { "AddVal", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.adval", FT_NONE, BASE_NONE, NULL, 0x0,
6114
15
          NULL, HFILL }},
6115
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_0,
6116
15
        { "W0", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.adval.w0", FT_UINT16, BASE_HEX, NULL, 0x0,
6117
15
          NULL, HFILL }},
6118
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_1,
6119
15
        { "W1", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.adval.w1", FT_UINT16, BASE_HEX, NULL, 0x0,
6120
15
          NULL, HFILL }},
6121
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_2,
6122
15
        { "W2", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.adval.w2", FT_UINT16, BASE_HEX, NULL, 0x0,
6123
15
          NULL, HFILL }},
6124
15
        { &hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_3,
6125
15
        { "W3", "s7comm.szl.xy78.xxxx.dis.cdiag.entry.adval.w3", FT_UINT16, BASE_HEX, NULL, 0x0,
6126
15
          NULL, HFILL }},
6127
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail,
6128
15
        { "Component state details", "s7comm.szl.xy78.xxxx.dis.comp_state", FT_UINT32, BASE_HEX, NULL, 0x0,
6129
15
          NULL, HFILL }},
6130
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_0_2,
6131
15
          { "Submodule State AddInfo", "s7comm.szl.xy78.xxxx.dis.comp_state.bit0_2", FT_BOOLEAN, 32, NULL, 0x00000007,
6132
15
          "Bit 0-2: Submodule State AddInfo", HFILL }},
6133
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_3,
6134
15
          { "Qualified Diagnosis", "s7comm.szl.xy78.xxxx.dis.comp_state.bit3", FT_BOOLEAN, 32, NULL, 0x00000008,
6135
15
          "Bit 3: Qualified Diagnosis", HFILL }},
6136
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_4,
6137
15
          { "Maintenance Required", "s7comm.szl.xy78.xxxx.dis.comp_state.bit4", FT_BOOLEAN, 32, NULL, 0x00000010,
6138
15
          "Bit 4: Maintenance Required", HFILL }},
6139
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_5,
6140
15
          { "Maintenance Demanded", "s7comm.szl.xy78.xxxx.dis.comp_state.bit5", FT_BOOLEAN, 32, NULL, 0x00000020,
6141
15
          "Bit 5: Maintenance Demanded", HFILL }},
6142
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_6,
6143
15
          { "Diagnostic Information", "s7comm.szl.xy78.xxxx.dis.comp_state.bit6", FT_BOOLEAN, 32, NULL, 0x00000040,
6144
15
          "Bit 6: Diagnostic Information", HFILL }},
6145
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_7_10,
6146
15
          { "AR Information", "s7comm.szl.xy78.xxxx.dis.comp_state.bit7_10", FT_BOOLEAN, 32, NULL, 0x00000780,
6147
15
          "Bit 7-10: AR Information", HFILL }},
6148
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_11_14,
6149
15
          { "Ident Information", "s7comm.szl.xy78.xxxx.dis.comp_state.bit11_14", FT_BOOLEAN, 32, NULL, 0x00007800,
6150
15
          "Bit 11-14: Ident Information", HFILL }},
6151
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_15,
6152
15
          { "Form Indicator", "s7comm.szl.xy78.xxxx.dis.comp_state.bit15", FT_BOOLEAN, 32, NULL, 0x00008000,
6153
15
          "Bit 15: Form Indicator", HFILL } },
6154
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_16,
6155
15
          { "Deactivated", "s7comm.szl.xy78.xxxx.dis.comp_state.bit16", FT_BOOLEAN, 32, NULL, 0x00010000,
6156
15
          "Bit 16: Deactivated", HFILL } },
6157
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_17,
6158
15
          { "CiR", "s7comm.szl.xy78.xxxx.dis.comp_state.bit17", FT_BOOLEAN, 32, NULL, 0x00020000,
6159
15
          "Bit 17: CiR", HFILL } },
6160
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_18,
6161
15
          { "Input not available", "s7comm.szl.xy78.xxxx.dis.comp_state.bit18", FT_BOOLEAN, 32, NULL, 0x00040000,
6162
15
          "Bit 18: Input not available", HFILL } },
6163
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_19,
6164
15
          { "Output not available", "s7comm.szl.xy78.xxxx.dis.comp_state.bit19", FT_BOOLEAN, 32, NULL, 0x00080000,
6165
15
          "Bit 19: Output not available", HFILL } },
6166
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_20,
6167
15
          { "AS-Log overflow", "s7comm.szl.xy78.xxxx.dis.comp_state.bit20", FT_BOOLEAN, 32, NULL, 0x00100000,
6168
15
          "Bit 20: AS-Log overflow", HFILL } },
6169
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_21,
6170
15
          { "Out of service", "s7comm.szl.xy78.xxxx.dis.comp_state.bit21", FT_BOOLEAN, 32, NULL, 0x00200000,
6171
15
          "Bit 21: Out of service", HFILL } },
6172
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_22,
6173
15
          { "Partial Failure", "s7comm.szl.xy78.xxxx.dis.comp_state.bit22", FT_BOOLEAN, 32, NULL, 0x00400000,
6174
15
          "Bit 22: Partial Failure", HFILL } },
6175
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_23,
6176
15
          { "H-Unknown", "s7comm.szl.xy78.xxxx.dis.comp_state.bit23", FT_BOOLEAN, 32, NULL, 0x00800000,
6177
15
          "Bit 23: H-Unknown", HFILL } },
6178
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_24,
6179
15
          { "Passivated", "s7comm.szl.xy78.xxxx.dis.comp_state.bit24", FT_BOOLEAN, 32, NULL, 0x01000000,
6180
15
          "Bit 24: Passivated", HFILL } },
6181
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_25,
6182
15
          { "Simulated", "s7comm.szl.xy78.xxxx.dis.comp_state.bit25", FT_BOOLEAN, 32, NULL, 0x02000000,
6183
15
          "Bit 25: Simulated", HFILL } },
6184
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_26,
6185
15
          { "Local Operation", "s7comm.szl.xy78.xxxx.dis.comp_state.bit26", FT_BOOLEAN, 32, NULL, 0x04000000,
6186
15
          "Bit 26: Local Operation", HFILL } },
6187
15
        { &hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail_b_27_31,
6188
15
          { "Reserved", "s7comm.szl.xy78.xxxx.dis.comp_state.bit27_31", FT_BOOLEAN, 32, NULL, 0xF8000000,
6189
15
          "Bit 27-31: Reserved", HFILL } },
6190
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state,
6191
15
        { "IO state", "s7comm.szl.xy78.xxxx.dis.io_state", FT_UINT16, BASE_HEX, NULL, 0x0,
6192
15
          NULL, HFILL }},
6193
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_0,
6194
15
        { "Good", "s7comm.szl.xy78.xxxx.dis.io_state.bit0", FT_BOOLEAN, 16, NULL, 0x0001,
6195
15
          "Bit 0: Good", HFILL }},
6196
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_1,
6197
15
        { "Deactivated", "s7comm.szl.xy78.xxxx.dis.io_state.bit1", FT_BOOLEAN, 16, NULL, 0x0002,
6198
15
          "Bit 1: Deactivated", HFILL }},
6199
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_2,
6200
15
        { "Maint. Req.", "s7comm.szl.xy78.xxxx.dis.io_state.bit2", FT_BOOLEAN, 16, NULL, 0x0004,
6201
15
          "Bit 2: Maint. Req.", HFILL }},
6202
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_3,
6203
15
        { "Maint. Dem.", "s7comm.szl.xy78.xxxx.dis.io_state.bit3", FT_BOOLEAN, 16, NULL, 0x0008,
6204
15
          "Bit 3: Maint. Dem.", HFILL }},
6205
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_4,
6206
15
        { "Error", "s7comm.szl.xy78.xxxx.dis.io_state.bit4", FT_BOOLEAN, 16, NULL, 0x0010,
6207
15
          "Bit 4: Error", HFILL }},
6208
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_5,
6209
15
        { "Not reachable", "s7comm.szl.xy78.xxxx.dis.io_state.bit5", FT_BOOLEAN, 16, NULL, 0x0020,
6210
15
          "Bit 5: Not reachable", HFILL } },
6211
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_6,
6212
15
        { "Qualified", "s7comm.szl.xy78.xxxx.dis.io_state.bit6", FT_BOOLEAN, 16, NULL, 0x0040,
6213
15
          "Bit 6: Qualified", HFILL } },
6214
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_7,
6215
15
        { "Not available", "s7comm.szl.xy78.xxxx.dis.io_state.bit7", FT_BOOLEAN, 16, NULL, 0x0080,
6216
15
          "Bit 7: Not available", HFILL } },
6217
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_8_14,
6218
15
        { "Reserved", "s7comm.szl.xy78.xxxx.dis.io_state.bit8_14", FT_BOOLEAN, 16, NULL, 0x7F00,
6219
15
          "Bit 8-14: Reserved", HFILL } },
6220
15
        { &hf_s7comm_szl_xy78_xxxx_dis_io_state_15,
6221
15
        { "Hardware fault", "s7comm.szl.xy78.xxxx.dis.io_state.bit15_res", FT_BOOLEAN, 16, NULL, 0x8000,
6222
15
          "Bit 15: Hardware fault", HFILL } },
6223
15
        { &hf_s7comm_szl_xy78_xxxx_dis_res,
6224
15
        { "Reserved", "s7comm.szl.xy78.xxxx.dis.reserved", FT_UINT16, BASE_HEX, NULL, 0x0,
6225
15
          NULL, HFILL }},
6226
15
        { &hf_s7comm_szl_xy78_xxxx_dis_maint_state,
6227
15
        { "Maintenance state", "s7comm.szl.xy78.xxxx.dis.maint", FT_UINT32, BASE_HEX, VALS(s7comm_szl_xy78_xxxx_dis_maint_state_names), 0x00,
6228
15
          NULL, HFILL }},
6229
15
        { &hf_s7comm_szl_xy78_xxxx_dis_operating_state,
6230
15
        { "Operating state", "s7comm.szl.xy78.xxxx.dis.operating_state", FT_UINT16, BASE_HEX, NULL, 0x0,
6231
15
          NULL, HFILL }},
6232
15
        { &hf_s7comm_szl_xy78_xxxx_dis_own_state,
6233
15
        { "Own state", "s7comm.szl.xy78.xxxx.dis.own_state", FT_UINT16, BASE_HEX, VALS(s7comm_szl_xy78_xxxx_dis_own_state_names), 0x00,
6234
15
          NULL, HFILL }},
6235
15
        { &hf_s7comm_szl_xy78_xxxx_sub_ord_io_state,
6236
15
        { "Subordinated io state", "s7comm.szl.xy78.xxxx.sub_io_state", FT_UINT16, BASE_HEX, NULL, 0x0,
6237
15
          NULL, HFILL }},
6238
15
        { &hf_s7comm_szl_xy78_xxxx_sub_ord_state,
6239
15
        { "Subordinated state", "s7comm.szl.xy78.xxxx.sub_state", FT_UINT16, BASE_HEX, VALS(s7comm_szl_xy78_xxxx_dis_own_state_names), 0x00,
6240
15
          NULL, HFILL } },
6241
15
        { &hf_s7comm_szl_xy78_xxxx_disp_own_state,
6242
15
        { "Displayed own state", "s7comm.szl.xy78.xxxx.disp_own_state", FT_UINT16, BASE_HEX, NULL, 0x0,
6243
15
          NULL, HFILL } },
6244
15
        { &hf_s7comm_szl_xy78_xxxx_disp_sub_ord_state,
6245
15
        { "Displayed sub. state", "s7comm.szl.xy78.xxxx.disp_sub_state", FT_UINT16, BASE_HEX, NULL, 0x0,
6246
15
          NULL, HFILL } },
6247
15
        { &hf_s7comm_szl_xy78_xxxx_disp_mode,
6248
15
        { "Display mode", "s7comm.szl.xy78.xxxx.disp_mode", FT_UINT16, BASE_HEX, NULL, 0x0,
6249
15
          NULL, HFILL } },
6250
15
        { &hf_s7comm_szl_xy78_xxxx_vendor,
6251
15
        { "Vendor-Id", "s7comm.szl.xy78.xxxx.vendor_high", FT_UINT16, BASE_HEX, NULL, 0x0,
6252
15
          NULL, HFILL } },
6253
15
        { &hf_s7comm_szl_xy78_xxxx_order_id,
6254
15
        { "Order-Id", "s7comm.szl.xy78.xxxx.order_id", FT_STRING, BASE_NONE, NULL, 0x0,
6255
15
          NULL, HFILL } },
6256
15
        { &hf_s7comm_szl_xy78_xxxx_im1,
6257
15
        { "I&M1", "s7comm.szl.xy78.xxxx.ium1", FT_NONE, BASE_NONE, NULL, 0x0,
6258
15
          NULL, HFILL } },
6259
15
        { &hf_s7comm_szl_xy78_xxxx_iam1_function,
6260
15
        { "Function", "s7comm.szl.xy78.xxxx.ium1.func", FT_STRING, BASE_NONE, NULL, 0x0,
6261
15
          NULL, HFILL } },
6262
15
        { &hf_s7comm_szl_xy78_xxxx_iam1_location,
6263
15
        { "Location", "s7comm.szl.xy78.xxxx.ium1.loc", FT_STRING, BASE_NONE, NULL, 0x0,
6264
15
          NULL, HFILL } },
6265
15
        { &hf_s7comm_szl_xy78_xxxx_asset_id,
6266
15
        { "Asset-Id", "s7comm.szl.xy78.xxxx.asset", FT_STRING, BASE_NONE, NULL, 0x0,
6267
15
          NULL, HFILL } },
6268
15
        { &hf_s7comm_szl_xy78_xxxx_tlv,
6269
15
        { "TLV", "s7comm.szl.xy78.xxxx.tlv", FT_NONE, BASE_NONE, NULL, 0x0,
6270
15
          NULL, HFILL } },
6271
15
        { &hf_s7comm_szl_xy78_xxxx_tlv_num,
6272
15
        { "Count", "s7comm.szl.xy78.xxxx.tlv.num", FT_UINT16, BASE_DEC, NULL, 0x0,
6273
15
          NULL, HFILL } },
6274
15
        { &hf_s7comm_szl_xy78_xxxx_tlv_item,
6275
15
        { "Item", "s7comm.szl.xy78.xxxx.tlv.item", FT_NONE, BASE_NONE, NULL, 0x0,
6276
15
          NULL, HFILL } },
6277
15
        { &hf_s7comm_szl_xy78_xxxx_tlv_item_type,
6278
15
        { "Type", "s7comm.szl.xy78.xxxx.tlv.item.type", FT_UINT8, BASE_DEC, VALS(szl_xy78_xxxx_tlv_item_type_names), 0x00,
6279
15
          NULL, HFILL } },
6280
15
        { &hf_s7comm_szl_xy78_xxxx_tlv_item_len,
6281
15
        { "Length", "s7comm.szl.xy78.xxxx.tlv.item.len", FT_UINT8, BASE_DEC, NULL, 0x0,
6282
15
          NULL, HFILL } },
6283
15
        { &hf_s7comm_szl_xy78_xxxx_tlv_item_data,
6284
15
        { "Data", "s7comm.szl.xy78.xxxx.tlv.item.data", FT_BYTES, BASE_NONE, NULL, 0x0,
6285
15
          NULL, HFILL } },
6286
15
        { &hf_s7comm_szl_xy78_xxxx_tlv_item_dti_type,
6287
15
        { "DTI-Type", "s7comm.szl.xy78.xxxx.tlv.item.dti", FT_UINT16, BASE_DEC, VALS(szl_xy78_xxxx_tlv_item_dti_type_name), 0x00,
6288
15
          NULL, HFILL } },
6289
15
    };
6290
6291
    /* Register Subtrees */
6292
15
    static int* ett[] = {
6293
15
        &ett_s7comm_szl_xy78_xxxx_geo_addr,
6294
15
        &ett_s7comm_szl_xy78_xxxx_dis,
6295
15
        &ett_s7comm_szl_xy78_xxxx_dis_cdiags,
6296
15
        &ett_s7comm_szl_xy78_xxxx_dis_cdiag_entry,
6297
15
        &ett_s7comm_szl_xy78_xxxx_dis_cdiag_add_val,
6298
15
        &ett_s7comm_szl_xy78_xxxx_iam1,
6299
15
        &ett_s7comm_szl_xy78_xxxx_tlv,
6300
15
        &ett_s7comm_szl_xy78_xxxx_tlv_item,
6301
15
        &ett_s7comm_szl_xy78_xxxx_dis_io_state,
6302
15
        &ett_s7comm_szl_xy78_xxxx_sub_ord_io_state,
6303
15
        &ett_s7comm_szl_xy78_xxxx_dis_comp_state_detail
6304
15
    };
6305
6306
15
    proto_register_subtree_array(ett, array_length(ett));
6307
15
    proto_register_field_array(proto, hf, array_length(hf));
6308
15
}
6309
6310
/*******************************************************************************************************
6311
 *
6312
 * SZL-ID:  0xxy76
6313
 * Index:   0x0000
6314
 * Content:
6315
 *  If you read the partial list SSL-ID W#16#xy76, you obtain the DNN-Id of the top DNN node.
6316
 *
6317
 *******************************************************************************************************/
6318
static uint32_t
6319
s7comm_decode_szl_id_xy76_idx_0000(tvbuff_t *tvb,
6320
                                   proto_tree *tree,
6321
                                   uint32_t offset)
6322
0
{
6323
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy76_0000_version, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6324
0
    offset += 2;
6325
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy76_0000_top_dnn_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6326
0
    offset += 2;    
6327
6328
0
    return offset;
6329
0
}
6330
6331
/*******************************************************************************************************
6332
 *
6333
 * SZL-ID:  0xxy77
6334
 * Index:   0xxxxx
6335
 * Content:
6336
 *  If you read the partial list SSL-ID W#16#xy77, you obtain the relations of the given DNN node.
6337
 *
6338
 *******************************************************************************************************/
6339
static uint32_t
6340
s7comm_decode_szl_id_xy77_idx_xxxx(tvbuff_t *tvb,
6341
                                   proto_tree *tree,
6342
                                   uint32_t offset)
6343
0
{
6344
0
    uint16_t num_parent;
6345
0
    uint16_t num_child;
6346
0
    uint16_t num_red;
6347
0
    uint16_t num_agent;
6348
0
    uint16_t i;
6349
6350
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy77_xxxx_version, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6351
0
    offset += 2;
6352
0
    proto_tree_add_item_ret_uint16(tree, hf_s7comm_szl_xy77_xxxx_num_parent, tvb, offset, 2, ENC_LITTLE_ENDIAN, &num_parent);
6353
0
    offset += 2;
6354
6355
0
    for (i = 0; i < num_parent; i++) {
6356
0
        proto_tree_add_item(tree, hf_s7comm_szl_xy77_xxxx_obj_parent, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6357
0
        offset += 2;
6358
0
    }
6359
6360
0
    proto_tree_add_item_ret_uint16(tree, hf_s7comm_szl_xy77_xxxx_num_child, tvb, offset, 2, ENC_LITTLE_ENDIAN, &num_child);
6361
0
    offset += 2;
6362
6363
0
    for (i = 0; i < num_child; i++) {
6364
0
        proto_tree_add_item(tree, hf_s7comm_szl_xy77_xxxx_obj_child, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6365
0
        offset += 2;
6366
0
    }
6367
6368
0
    proto_tree_add_item_ret_uint16(tree, hf_s7comm_szl_xy77_xxxx_num_redundancy_links, tvb, offset, 2, ENC_LITTLE_ENDIAN, &num_red);
6369
0
    offset += 2;
6370
6371
0
    for (i = 0; i < num_red; i++) {
6372
0
        proto_tree_add_item(tree, hf_s7comm_szl_xy77_xxxx_obj_redundancy, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6373
0
        offset += 2;
6374
0
    }
6375
6376
0
    proto_tree_add_item_ret_uint16(tree, hf_s7comm_szl_xy77_xxxx_num_iodevice_agent_links, tvb, offset, 2, ENC_LITTLE_ENDIAN, &num_agent);
6377
0
    offset += 2;
6378
6379
0
    for (i = 0; i < num_agent; i++) {
6380
0
        proto_tree_add_item(tree, hf_s7comm_szl_xy77_xxxx_obj_iodevice_agent, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6381
0
        offset += 2;
6382
0
    }
6383
6384
0
    return offset;
6385
0
}
6386
6387
/*******************************************************************************************************
6388
 *
6389
 * SZL-ID:  0xxy78
6390
 * Index:   0xxxxx
6391
 * Content:
6392
 *  If you read the partial list SSL-ID W#16#xy78, you obtain the diagnostic data of a DNN node.
6393
 *
6394
 *******************************************************************************************************/
6395
static uint32_t
6396
s7comm_decode_szl_id_xy78_idx_xxxx(tvbuff_t *tvb,
6397
                                   packet_info *pinfo,
6398
                                   proto_tree *tree,
6399
                                   uint32_t offset)
6400
0
{
6401
0
    proto_item *geo_addr_item = NULL;
6402
0
    proto_tree *geo_addr_item_tree = NULL;
6403
0
    proto_item *dis_item = NULL;
6404
0
    proto_tree *dis_item_tree = NULL;
6405
0
    proto_item *cdiags_item = NULL;
6406
0
    proto_tree *cdiags_item_tree = NULL;
6407
0
    proto_item *cdiag_entry_item = NULL;
6408
0
    proto_tree *cdiag_entry_item_tree = NULL;
6409
0
    proto_item *adval_item = NULL;
6410
0
    proto_tree *adval_item_tree = NULL;
6411
0
    proto_item *iam1_item = NULL;
6412
0
    proto_tree *iam1_item_tree = NULL;
6413
0
    proto_item *tlv_item = NULL;
6414
0
    proto_tree *tlv_item_tree = NULL;
6415
0
    proto_item *tlv_item_item = NULL;
6416
0
    proto_tree *tlv_item_item_tree = NULL;
6417
0
    proto_item* chet_item_gen = NULL;
6418
0
    proto_item* echet_item_gen = NULL;
6419
6420
0
    uint16_t num_cdiag;
6421
0
    int32_t dis_cdiag_total_len;
6422
0
    int32_t dis_total_len;
6423
0
    uint16_t i;
6424
0
    int32_t remaining_bytes;
6425
0
    uint8_t num_tlvs;
6426
0
    uint8_t tlv_item_len;
6427
0
    uint8_t tlv_type;
6428
0
    uint16_t version;
6429
0
    uint16_t text_list;
6430
0
    uint16_t chet;
6431
0
    uint16_t echet;
6432
0
    int32_t chet_entry_count = 0;
6433
0
    const uint16_t cdiag_entry_len = 28;
6434
0
    const uint16_t supported_version = 0x0005;
6435
6436
0
    proto_tree_add_item_ret_uint16(tree, hf_s7comm_szl_xy78_xxxx_version, tvb, offset, 2, ENC_LITTLE_ENDIAN, &version);
6437
0
    offset += 2;
6438
6439
    /*unknown version data*/
6440
0
    if (version != supported_version) {
6441
0
        remaining_bytes = tvb_reported_length_remaining(tvb, offset);
6442
0
        proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_unknown_version_data, tvb, offset, remaining_bytes, ENC_NA);
6443
0
        offset += remaining_bytes;
6444
0
        return offset;
6445
0
    }
6446
6447
    /*GEO address*/
6448
0
    geo_addr_item = proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_geo_addr, tvb, offset, 8, ENC_NA);
6449
0
    geo_addr_item_tree = proto_item_add_subtree(geo_addr_item, ett_s7comm_szl_xy78_xxxx_geo_addr);
6450
0
    proto_tree_add_item(geo_addr_item_tree, hf_s7comm_szl_xy78_xxxx_geo_addr_subsys, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6451
0
    offset += 2;
6452
0
    proto_tree_add_item(geo_addr_item_tree, hf_s7comm_szl_xy78_xxxx_geo_addr_station, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6453
0
    offset += 2;
6454
0
    proto_tree_add_item(geo_addr_item_tree, hf_s7comm_szl_xy78_xxxx_geo_addr_rack, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6455
0
    offset += 2;
6456
0
    proto_tree_add_item(geo_addr_item_tree, hf_s7comm_szl_xy78_xxxx_geo_addr_slot, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6457
0
    offset += 2;
6458
0
    proto_tree_add_item(geo_addr_item_tree, hf_s7comm_szl_xy78_xxxx_geo_addr_subslot, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6459
0
    offset += 2;
6460
6461
    /*Name data*/
6462
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_name, tvb, offset, 32, ENC_ASCII);
6463
0
    offset += 32;
6464
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_short_name, tvb, offset, 32, ENC_ASCII);
6465
0
    offset += 32;
6466
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_dnn_mode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6467
0
    offset += 2;
6468
6469
    /*DIS section*/
6470
0
    num_cdiag = tvb_get_letohs(tvb, offset);
6471
0
    dis_cdiag_total_len = cdiag_entry_len * num_cdiag;
6472
0
    dis_total_len = dis_cdiag_total_len + 18;
6473
0
    dis_item = proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_dis, tvb, offset, dis_total_len, ENC_NA);
6474
0
    dis_item_tree = proto_item_add_subtree(dis_item, ett_s7comm_szl_xy78_xxxx_dis);    
6475
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_dis_num_cdiag, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6476
0
    offset += 2;
6477
6478
    /*DIS component diagnostic entry section*/
6479
0
    if (num_cdiag != 0) {
6480
0
        cdiags_item = proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiags, tvb, offset, dis_cdiag_total_len, ENC_NA);
6481
0
        cdiags_item_tree = proto_item_add_subtree(cdiags_item, ett_s7comm_szl_xy78_xxxx_dis_cdiags);
6482
6483
0
        for (i = 0; i < num_cdiag; i++) {
6484
0
            cdiag_entry_item = proto_tree_add_item(cdiags_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry, tvb, offset, cdiag_entry_len, ENC_NA);
6485
0
            cdiag_entry_item_tree = proto_item_add_subtree(cdiag_entry_item, ett_s7comm_szl_xy78_xxxx_dis_cdiag_entry);
6486
0
            proto_tree_add_item(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_ch_nr, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6487
0
            offset += 2;
6488
0
            proto_tree_add_item(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_ch_prop, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6489
0
            offset += 2;
6490
0
            proto_tree_add_item(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_alcat, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6491
0
            offset += 2;
6492
0
            proto_tree_add_item(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_res, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6493
0
            offset += 2;
6494
0
            proto_tree_add_item(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_qualifier, tvb, offset, 4, ENC_LITTLE_ENDIAN);
6495
0
            offset += 4;
6496
6497
            /*evaluate channel error type (CHET)*/
6498
0
            chet = tvb_get_letohs(tvb, offset);
6499
0
            proto_tree_add_item(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6500
0
            offset += 2;
6501
0
            text_list = tvb_get_letohs(tvb, offset);
6502
0
            proto_tree_add_item(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_chet, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6503
6504
            /*add corresponding text for TextList 8*/
6505
0
            if (text_list == 8 && chet != 0 && chet != 0xFFFF) {
6506
0
                chet_item_gen = proto_tree_add_uint(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8, tvb, offset-2, 2, chet);
6507
0
                PROTO_ITEM_SET_GENERATED(chet_item_gen);
6508
0
                proto_item_append_text(cdiag_entry_item, " / %s",
6509
0
                    val_to_str_ext(pinfo->pool, chet, &s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8_names_ext, "unknown 0x%04x"));
6510
0
            } else {
6511
0
                proto_item_append_text(cdiag_entry_item, " / CHET: 0x%04x", chet);
6512
0
            }
6513
6514
0
            if (chet != 0 && chet != 0xFFFF) {
6515
0
                chet_entry_count++;
6516
0
            }
6517
0
            offset += 2;
6518
6519
            /*evaluate ext. channel error type (ECHET)*/
6520
0
            proto_tree_add_item_ret_uint16(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_echet, tvb, offset, 2, ENC_LITTLE_ENDIAN, &echet);
6521
0
            offset += 2;
6522
0
            proto_tree_add_item_ret_uint16(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_text_list_echet, tvb, offset, 2, ENC_LITTLE_ENDIAN, &text_list);
6523
0
            if (text_list == 8 && echet != 0) {
6524
0
                echet_item_gen = proto_tree_add_uint(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_chet_text_list_8, tvb, offset - 2, 2, echet);
6525
0
                PROTO_ITEM_SET_GENERATED(echet_item_gen);
6526
0
            }
6527
0
            offset += 2;
6528
6529
            /*Addvalue decoding*/
6530
0
            adval_item = proto_tree_add_item(cdiag_entry_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val, tvb, offset, 8, ENC_NA);
6531
0
            adval_item_tree = proto_item_add_subtree(adval_item, ett_s7comm_szl_xy78_xxxx_dis_cdiag_add_val);
6532
0
            proto_tree_add_item(adval_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_0, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6533
0
            offset += 2;
6534
0
            proto_tree_add_item(adval_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6535
0
            offset += 2;
6536
0
            proto_tree_add_item(adval_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6537
0
            offset += 2;
6538
0
            proto_tree_add_item(adval_item_tree, hf_s7comm_szl_xy78_xxxx_dis_cdiag_entry_add_val_3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6539
0
            offset += 2;
6540
0
        }
6541
0
    }
6542
6543
0
    if (chet_entry_count != 0) {
6544
0
        col_append_fstr(pinfo->cinfo, COL_INFO, " [%u CHET entry]", chet_entry_count);
6545
0
    }
6546
6547
0
    proto_tree_add_bitmask(dis_item_tree, tvb, offset, hf_s7comm_szl_xy78_xxxx_dis_comp_state_detail,
6548
0
        ett_s7comm_szl_xy78_xxxx_dis_comp_state_detail, s7comm_szl_xy78_xxxx_dis_comp_state_detail_fields, ENC_LITTLE_ENDIAN);
6549
0
    offset += 4;
6550
0
    proto_tree_add_bitmask(dis_item_tree, tvb, offset, hf_s7comm_szl_xy78_xxxx_dis_io_state,
6551
0
        ett_s7comm_szl_xy78_xxxx_dis_io_state, s7comm_szl_xy78_xxxx_dis_io_state_fields, ENC_LITTLE_ENDIAN);
6552
0
    offset += 2;
6553
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_dis_res, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6554
0
    offset += 2;
6555
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_dis_maint_state, tvb, offset, 4, ENC_LITTLE_ENDIAN);
6556
0
    offset += 4;
6557
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_dis_operating_state, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6558
0
    offset += 2;
6559
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_dis_own_state, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6560
0
    offset += 2;
6561
6562
    /*Further state information*/
6563
0
    proto_tree_add_bitmask(dis_item_tree, tvb, offset, hf_s7comm_szl_xy78_xxxx_sub_ord_io_state,
6564
0
        ett_s7comm_szl_xy78_xxxx_sub_ord_io_state, s7comm_szl_xy78_xxxx_sub_ord_io_state_fields, ENC_LITTLE_ENDIAN);
6565
0
    offset += 2;
6566
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_sub_ord_state, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6567
0
    offset += 2;
6568
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_disp_own_state, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6569
0
    offset += 2;
6570
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_disp_sub_ord_state, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6571
0
    offset += 2;
6572
0
    proto_tree_add_item(dis_item_tree, hf_s7comm_szl_xy78_xxxx_disp_mode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6573
0
    offset += 2;
6574
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_vendor, tvb, offset, 2, ENC_BIG_ENDIAN);
6575
0
    offset += 2;
6576
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_order_id, tvb, offset, 20, ENC_ASCII);
6577
0
    offset += 20;
6578
6579
    /*I&M1 data*/
6580
0
    iam1_item = proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_im1, tvb, offset, 54, ENC_NA);
6581
0
    iam1_item_tree = proto_item_add_subtree(iam1_item, ett_s7comm_szl_xy78_xxxx_iam1);
6582
0
    proto_tree_add_item(iam1_item_tree, hf_s7comm_szl_xy78_xxxx_iam1_function, tvb, offset, 32, ENC_ASCII);
6583
0
    offset += 32;
6584
0
    proto_tree_add_item(iam1_item_tree, hf_s7comm_szl_xy78_xxxx_iam1_location, tvb, offset, 22, ENC_ASCII);
6585
0
    offset += 22;
6586
0
    proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_asset_id, tvb, offset, 32, ENC_ASCII);
6587
0
    offset += 32;
6588
6589
    /*check for TLVs*/
6590
0
    remaining_bytes = tvb_reported_length_remaining(tvb, offset);
6591
0
    if (remaining_bytes == 0) {
6592
0
        return offset;
6593
0
    }
6594
6595
0
    tlv_item = proto_tree_add_item(tree, hf_s7comm_szl_xy78_xxxx_tlv, tvb, offset, remaining_bytes, ENC_NA);
6596
0
    tlv_item_tree = proto_item_add_subtree(tlv_item, ett_s7comm_szl_xy78_xxxx_tlv);
6597
0
    num_tlvs = tvb_get_uint8(tvb, offset);
6598
0
    proto_tree_add_item(tlv_item_tree, hf_s7comm_szl_xy78_xxxx_tlv_num, tvb, offset, 2, ENC_LITTLE_ENDIAN);
6599
0
    offset += 2;
6600
6601
    /*iterate over TLVs*/
6602
0
    for (i = 0; i < num_tlvs; i++) {
6603
0
        tlv_item_item = proto_tree_add_item(tlv_item_tree, hf_s7comm_szl_xy78_xxxx_tlv_item, tvb, offset, 2, ENC_NA);
6604
0
        tlv_item_item_tree = proto_item_add_subtree(tlv_item_item, ett_s7comm_szl_xy78_xxxx_tlv_item);
6605
6606
0
        proto_tree_add_item_ret_uint8(tlv_item_item_tree, hf_s7comm_szl_xy78_xxxx_tlv_item_type, tvb, offset, 1, ENC_LITTLE_ENDIAN, &tlv_type);
6607
0
        offset += 1;
6608
0
        proto_tree_add_item_ret_uint8(tlv_item_item_tree, hf_s7comm_szl_xy78_xxxx_tlv_item_len, tvb, offset, 1, ENC_LITTLE_ENDIAN, &tlv_item_len);
6609
0
        offset += 1;
6610
0
        switch (tlv_type) {
6611
0
            case 1:
6612
0
                proto_tree_add_item(tlv_item_item_tree, hf_s7comm_szl_xy78_xxxx_tlv_item_dti_type, tvb, offset, tlv_item_len, ENC_LITTLE_ENDIAN);
6613
0
                offset += tlv_item_len;
6614
0
                break;
6615
0
            default:
6616
0
                proto_tree_add_item(tlv_item_item_tree, hf_s7comm_szl_xy78_xxxx_tlv_item_data, tvb, offset, tlv_item_len, ENC_NA);
6617
0
                offset += tlv_item_len;
6618
0
                break;
6619
0
        }
6620
0
    }
6621
6622
0
    return offset;
6623
0
}
6624
6625
/*******************************************************************************************************
6626
 *
6627
 * SZL-ID:  0xxy1c
6628
 * Index:   0x000x
6629
 * Content:
6630
 *  If you read the partial list SSL-ID W#16#xy1c, you obtain the CPU or PLC identification.
6631
 *
6632
 *******************************************************************************************************/
6633
static void
6634
s7comm_szl_xy1c_000x_register(int proto)
6635
15
{
6636
15
    static hf_register_info hf[] = {
6637
15
        { &hf_s7comm_szl_001c_000x_index,
6638
15
        { "Index", "s7comm.szl.001c.000x.index", FT_UINT16, BASE_HEX, VALS(szl_xy1c_index_names), 0x0,
6639
15
          NULL, HFILL }},
6640
15
        { &hf_s7comm_szl_001c_000x_res,
6641
15
        { "Reserved", "s7comm.szl.001c.000x.res", FT_BYTES, BASE_NONE, NULL, 0x0,
6642
15
          NULL, HFILL }},
6643
15
        { &hf_s7comm_szl_001c_0001_name,
6644
15
        { "Name (Name of the PLC)", "s7comm.szl.001c.0001.name", FT_STRING, BASE_NONE, NULL, 0x0,
6645
15
          NULL, HFILL }},
6646
15
        { &hf_s7comm_szl_001c_0002_name,
6647
15
        { "Name (Name of the module)", "s7comm.szl.001c.0002.name", FT_STRING, BASE_NONE, NULL, 0x0,
6648
15
          NULL, HFILL }},
6649
15
        { &hf_s7comm_szl_001c_0003_tag,
6650
15
        { "Tag (Plant identification of the module)", "s7comm.szl.001c.0003.tag", FT_STRING, BASE_NONE, NULL, 0x0,
6651
15
          NULL, HFILL }},
6652
15
        { &hf_s7comm_szl_001c_0004_copyright,
6653
15
        { "Copyright", "s7comm.szl.001c.0004.copyright", FT_STRING, BASE_NONE, NULL, 0x0,
6654
15
          NULL, HFILL }},
6655
15
        { &hf_s7comm_szl_001c_0005_serialn,
6656
15
        { "Serialn (Serialnumber of the module)", "s7comm.szl.001c.0005.serialn", FT_STRING, BASE_NONE, NULL, 0x0,
6657
15
          NULL, HFILL }},
6658
15
        { &hf_s7comm_szl_001c_0007_cputypname,
6659
15
        { "Cputypname (Module type namee)", "s7comm.szl.001c.0007.cputypname", FT_STRING, BASE_NONE, NULL, 0x0,
6660
15
          NULL, HFILL }},
6661
15
        { &hf_s7comm_szl_001c_0008_snmcmmc,
6662
15
        { "Sn_mc/mmc (Serial number of the Memory Card/Micro Memory Card)", "s7comm.szl.001c.0008.snmcmmc", FT_STRING, BASE_NONE, NULL, 0x0,
6663
15
          NULL, HFILL }},
6664
15
        { &hf_s7comm_szl_001c_0009_manufacturer_id,
6665
15
        { "Manufacturer_id", "s7comm.szl.001c.0009.manufacturer_id", FT_UINT16, BASE_HEX, NULL, 0x0,
6666
15
          "Manufacturer_id (PROFIBUS / PROFINET Identification & Maintenance)", HFILL }},
6667
15
        { &hf_s7comm_szl_001c_0009_profile_id,
6668
15
        { "Profile_id", "s7comm.szl.001c.0009.profile_id", FT_UINT16, BASE_HEX, NULL, 0x0,
6669
15
          "Profile_id (PROFIBUS / PROFINET Identification & Maintenance)", HFILL }},
6670
15
        { &hf_s7comm_szl_001c_0009_profile_spec_typ,
6671
15
        { "Profile_spec_typ", "s7comm.szl.001c.0009.profile_spec_typ", FT_UINT16, BASE_HEX, NULL, 0x0,
6672
15
          "Profile_spec_typ (PROFIBUS / PROFINET Identification & Maintenance)", HFILL }},
6673
15
        { &hf_s7comm_szl_001c_000a_oem_copyright_string,
6674
15
        { "Oem_copyright_string (OEM Copyright ID)", "s7comm.szl.001c.000a.oem_copyright_string", FT_STRING, BASE_NONE, NULL, 0x0,
6675
15
          NULL, HFILL }},
6676
15
        { &hf_s7comm_szl_001c_000a_oem_id,
6677
15
        { "Oem_id (OEM ID)", "s7comm.szl.001c.000a.oem_id", FT_UINT16, BASE_HEX, NULL, 0x0,
6678
15
          NULL, HFILL }},
6679
15
        { &hf_s7comm_szl_001c_000a_oem_add_id,
6680
15
        { "Oem_add_id (OEM additional ID)", "s7comm.szl.001c.000a.oem_add_id", FT_UINT32, BASE_HEX, NULL, 0x0,
6681
15
          NULL, HFILL }},
6682
15
        { &hf_s7comm_szl_001c_000b_loc_id,
6683
15
        { "Loc_id (Location designation)", "s7comm.szl.001c.000b.loc_id", FT_STRING, BASE_NONE, NULL, 0x0,
6684
15
          NULL, HFILL }}
6685
15
    };
6686
15
    proto_register_field_array(proto, hf, array_length(hf));
6687
15
}
6688
6689
/*----------------------------------------------------------------------------------------------------*/
6690
static uint32_t
6691
s7comm_decode_szl_id_xy1c_idx_000x(tvbuff_t *tvb,
6692
                                   proto_tree *tree,
6693
                                   uint32_t offset)
6694
0
{
6695
0
    uint32_t idx;
6696
0
    proto_tree_add_item_ret_uint(tree, hf_s7comm_szl_001c_000x_index, tvb, offset, 2, ENC_BIG_ENDIAN, &idx);
6697
0
    offset += 2;
6698
    /* For redundant H-CPUs there may be some upper bits set to identify the CPU */
6699
0
    switch (idx & 0x000f) {
6700
0
        case 0x0001:
6701
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0001_name, tvb, offset, 24, ENC_ASCII);
6702
0
            offset += 24;
6703
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 8, ENC_NA);
6704
0
            offset += 8;
6705
0
            break;
6706
0
        case 0x0002:
6707
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0002_name, tvb, offset, 24, ENC_ASCII);
6708
0
            offset += 24;
6709
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 8, ENC_NA);
6710
0
            offset += 8;
6711
0
            break;
6712
0
        case 0x0003:
6713
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0003_tag, tvb, offset, 32, ENC_ASCII);
6714
0
            offset += 32;
6715
0
            break;
6716
0
        case 0x0004:
6717
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0004_copyright, tvb, offset, 26, ENC_ASCII);
6718
0
            offset += 26;
6719
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 6, ENC_NA);
6720
0
            offset += 6;
6721
0
            break;
6722
0
        case 0x0005:
6723
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0005_serialn, tvb, offset, 24, ENC_ASCII);
6724
0
            offset += 24;
6725
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 8, ENC_NA);
6726
0
            offset += 8;
6727
0
            break;
6728
0
        case 0x0007:
6729
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0007_cputypname, tvb, offset, 32, ENC_ASCII);
6730
0
            offset += 32;
6731
0
            break;
6732
0
        case 0x0008:
6733
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0008_snmcmmc, tvb, offset, 32, ENC_ASCII);
6734
0
            offset += 32;
6735
0
            break;
6736
0
        case 0x0009:
6737
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0009_manufacturer_id, tvb, offset, 2, ENC_BIG_ENDIAN);
6738
0
            offset += 2;
6739
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0009_profile_id, tvb, offset, 2, ENC_BIG_ENDIAN);
6740
0
            offset += 2;
6741
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_0009_profile_spec_typ, tvb, offset, 2, ENC_BIG_ENDIAN);
6742
0
            offset += 2;
6743
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 26, ENC_NA);
6744
0
            offset += 26;
6745
0
            break;
6746
0
        case 0x000a:
6747
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000a_oem_copyright_string, tvb, offset, 26, ENC_ASCII);
6748
0
            offset += 26;
6749
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000a_oem_id, tvb, offset, 2, ENC_BIG_ENDIAN);
6750
0
            offset += 2;
6751
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000a_oem_add_id, tvb, offset, 4, ENC_BIG_ENDIAN);
6752
0
            offset += 4;
6753
0
            break;
6754
0
        case 0x000b:
6755
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000b_loc_id, tvb, offset, 32, ENC_ASCII);
6756
0
            offset += 32;
6757
0
            break;
6758
0
        default:
6759
0
            proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 32, ENC_NA);
6760
0
            offset += 32;
6761
0
            break;
6762
0
    }
6763
0
    return offset;
6764
0
}
6765
6766
/*******************************************************************************************************
6767
 *
6768
 * SZL-ID:  0xxy91
6769
 * Index:   0x0000
6770
 * Content:
6771
 *  If you read the partial list SSL-ID W#16#xy91, you obtain the status information of modules assigned
6772
 *  to the CPU.
6773
 *
6774
 *******************************************************************************************************/
6775
static void
6776
s7comm_szl_xy91_0000_register(int proto)
6777
15
{
6778
15
    static hf_register_info hf[] = {
6779
15
        { &hf_s7comm_szl_0091_0000_adr1,
6780
15
        { "Adr1", "s7comm.szl.0091.0000.adr1", FT_UINT16, BASE_HEX, NULL, 0x0,
6781
15
          NULL, HFILL }},
6782
15
        { &hf_s7comm_szl_0091_0000_adr2,
6783
15
        { "Adr2", "s7comm.szl.0091.0000.adr2", FT_UINT16, BASE_HEX, NULL, 0x0,
6784
15
          NULL, HFILL }},
6785
15
        { &hf_s7comm_szl_0091_0000_logadr,
6786
15
        { "Logadr", "s7comm.szl.0091.0000.logadr", FT_UINT16, BASE_DEC, NULL, 0x0,
6787
15
          "Logadr (First assigned logical I/O address (base address))", HFILL }},
6788
15
        { &hf_s7comm_szl_0091_0000_solltyp,
6789
15
        { "Expected type", "s7comm.szl.0091.0000.exptype", FT_UINT16, BASE_HEX, NULL, 0x0,
6790
15
          "Solltyp (PROFINET IO: expected (configured) type, otherwise reserved)", HFILL }},
6791
15
        { &hf_s7comm_szl_0091_0000_isttyp,
6792
15
        { "Actual type", "s7comm.szl.0091.0000.acttype", FT_UINT16, BASE_HEX, NULL, 0x0,
6793
15
          "Isttyp (PROFINET IO: actual type, otherwise reserved)", HFILL }},
6794
        /* Field depends on the first byte of the SZL-ID */
6795
15
        { &hf_s7comm_szl_0091_0000_res1,
6796
15
        { "Reserved", "s7comm.szl.0091.0000.res1", FT_UINT16, BASE_HEX, NULL, 0x0,
6797
15
          NULL, HFILL }},
6798
15
        { &hf_s7comm_szl_0091_0000_res1_0c_4c_4d,
6799
15
        { "Reserved (number of actually existing interface modules)", "s7comm.szl.0091.0000.res1_0c_4c_4d", FT_UINT16, BASE_DEC, NULL, 0x0,
6800
15
          NULL, HFILL }},
6801
15
        { &hf_s7comm_szl_0091_0000_res1_0d,
6802
15
        { "Reserved (number of interface modules)", "s7comm.szl.0091.0000.res1_0d", FT_UINT16, BASE_DEC, NULL, 0x0,
6803
15
          NULL, HFILL }},
6804
15
        { &hf_s7comm_szl_0091_0000_eastat,
6805
15
        { "I/O status", "s7comm.szl.0091.0000.eastat", FT_UINT16, BASE_HEX, NULL, 0x0,
6806
15
          NULL, HFILL }},
6807
15
        { &hf_s7comm_szl_0091_0000_eastat_0,
6808
15
        { "Module error", "s7comm.szl.0091.0000.eastat.moderror", FT_BOOLEAN, 16, NULL, 0x0001,
6809
15
          "Bit 0: Module error", HFILL }},
6810
15
        { &hf_s7comm_szl_0091_0000_eastat_1,
6811
15
        { "Module exists", "s7comm.szl.0091.0000.eastat.modexists", FT_BOOLEAN, 16, NULL, 0x0002,
6812
15
          "Bit 1: Module exists", HFILL }},
6813
15
        { &hf_s7comm_szl_0091_0000_eastat_2,
6814
15
        { "Module not available", "s7comm.szl.0091.0000.eastat.modnotav", FT_BOOLEAN, 16, NULL, 0x0004,
6815
15
          "Bit 2: Module not available", HFILL }},
6816
15
        { &hf_s7comm_szl_0091_0000_eastat_3,
6817
15
        { "Module disabled", "s7comm.szl.0091.0000.eastat.moddisabl", FT_BOOLEAN, 16, NULL, 0x0008,
6818
15
          "Bit 3: Module disabled", HFILL }},
6819
15
        { &hf_s7comm_szl_0091_0000_eastat_4,
6820
15
        { "Station error", "s7comm.szl.0091.0000.eastat.staterr", FT_BOOLEAN, 16, NULL, 0x0010,
6821
15
          "Bit 4: Station error", HFILL }},
6822
15
        { &hf_s7comm_szl_0091_0000_eastat_5,
6823
15
        { "CiR event busy", "s7comm.szl.0091.0000.eastat.cirbusy", FT_BOOLEAN, 16, NULL, 0x0020,
6824
15
          "Bit 5: A CiR event at this module/station is busy or not yet completed", HFILL }},
6825
15
        { &hf_s7comm_szl_0091_0000_eastat_6,
6826
15
        { "Reserved", "s7comm.szl.0091.0000.eastat.res", FT_BOOLEAN, 16, NULL, 0x0040,
6827
15
          "Bit 6: Reserved for S7-400", HFILL }},
6828
15
        { &hf_s7comm_szl_0091_0000_eastat_7,
6829
15
        { "Module in local bus segment", "s7comm.szl.0091.0000.eastat.modlocseg", FT_BOOLEAN, 16, NULL, 0x0080,
6830
15
          "Bit 7: Module in local bus segment", HFILL }},
6831
15
        { &hf_s7comm_szl_0091_0000_eastat_dataid,
6832
15
        { "Data ID for logical address", "s7comm.szl.0091.0000.eastat.dataid", FT_UINT16, BASE_HEX, VALS(szl_0091_0000_eastat_dataid_names), 0xff00,
6833
15
          "Bit 8 to 15: Data ID for logical address", HFILL }},
6834
15
        { &hf_s7comm_szl_0091_0000_berbgbr,
6835
15
        { "Ber_bgbr (Area ID/module width)", "s7comm.szl.0091.0000.berbgbr", FT_UINT16, BASE_HEX, NULL, 0x0,
6836
15
          NULL, HFILL }},
6837
15
        { &hf_s7comm_szl_0091_0000_berbgbr_0_2,
6838
15
        { "Module width", "s7comm.szl.0091.0000.berbgbr.width", FT_UINT16, BASE_DEC, NULL, 0x0007,
6839
15
          "Bit 0 to 2: Module width", HFILL }},
6840
15
        { &hf_s7comm_szl_0091_0000_berbgbr_3,
6841
15
        { "Reserved", "s7comm.szl.0091.0000.berbgbr.bit3_res", FT_BOOLEAN, 16, NULL, 0x0008,
6842
15
          "Bit 3: Reserved", HFILL }},
6843
15
        { &hf_s7comm_szl_0091_0000_berbgbr_areaid,
6844
15
        { "Area ID", "s7comm.szl.0091.0000.berbgbr.areaid", FT_UINT16, BASE_DEC, VALS(szl_0091_0000_berbgbr_areaid_names), 0x0070,
6845
15
          "Bit 4 to 6: Area ID", HFILL }},
6846
15
        { &hf_s7comm_szl_0091_0000_berbgbr_7,
6847
15
        { "Reserved", "s7comm.szl.0091.0000.berbgbr.bit7_res", FT_BOOLEAN, 16, NULL, 0x0080,
6848
15
          "Bit 7: Reserved", HFILL }}
6849
15
    };
6850
15
    proto_register_field_array(proto, hf, array_length(hf));
6851
15
}
6852
6853
/*----------------------------------------------------------------------------------------------------*/
6854
static uint32_t
6855
s7comm_decode_szl_id_xy91_idx_0000(tvbuff_t *tvb,
6856
                                   proto_tree *tree,
6857
                                   uint16_t id,
6858
                                   uint32_t offset)
6859
0
{
6860
0
    proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_adr1, tvb, offset, 2, ENC_BIG_ENDIAN);
6861
0
    offset += 2;
6862
0
    proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_adr2, tvb, offset, 2, ENC_BIG_ENDIAN);
6863
0
    offset += 2;
6864
0
    proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_logadr, tvb, offset, 2, ENC_BIG_ENDIAN);
6865
0
    offset += 2;
6866
0
    proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_solltyp, tvb, offset, 2, ENC_BIG_ENDIAN);
6867
0
    offset += 2;
6868
0
    proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_isttyp, tvb, offset, 2, ENC_BIG_ENDIAN);
6869
0
    offset += 2;
6870
0
    switch (id) {
6871
0
        case 0x0c91:
6872
0
        case 0x4c91:
6873
0
        case 0x4d91:
6874
0
            proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_res1_0c_4c_4d, tvb, offset, 2, ENC_BIG_ENDIAN);
6875
0
            break;
6876
0
        case 0x0d91:
6877
0
            proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_res1_0d, tvb, offset, 2, ENC_BIG_ENDIAN);
6878
0
            break;
6879
0
        default:
6880
0
            proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_res1, tvb, offset, 2, ENC_BIG_ENDIAN);
6881
0
            break;
6882
0
    }
6883
0
    offset += 2;
6884
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0091_0000_eastat,
6885
0
        ett_s7comm_szl_0091_0000_eastat, s7comm_szl_0091_0000_eastat_fields, ENC_BIG_ENDIAN);
6886
0
    offset += 2;
6887
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0091_0000_berbgbr,
6888
0
        ett_s7comm_szl_0091_0000_berbgbr, s7comm_szl_0091_0000_berbgbr_fields, ENC_BIG_ENDIAN);
6889
0
    offset += 2;
6890
6891
0
    return offset;
6892
0
}
6893
6894
/*******************************************************************************************************
6895
 *
6896
 * SZL-ID:  0xxy92
6897
 * Index:   0x0000
6898
 * Content:
6899
 *  If you read the partial list SSL-ID W#16#xy92, you obtain information about the expected and the
6900
 *  current hardware configuration of centrally installed racks and stations of a DP master system.
6901
 *
6902
 *******************************************************************************************************/
6903
static void
6904
s7comm_szl_xy92_xxxx_register(int proto)
6905
15
{
6906
15
    static hf_register_info hf[] = {
6907
15
        { &hf_s7comm_szl_0092_0xxx_status_0,
6908
15
        { "status_0", "s7comm.szl.0092.xxxx.status_0", FT_UINT8, BASE_HEX, NULL, 0x0,
6909
15
          "status_0: Status of station 1..8", HFILL }},
6910
15
        { &hf_s7comm_szl_0092_0xxx_status_1,
6911
15
        { "status_1", "s7comm.szl.0092.xxxx.status_1", FT_UINT8, BASE_HEX, NULL, 0x0,
6912
15
          "status_1: Status of station 9..16", HFILL }},
6913
15
        { &hf_s7comm_szl_0092_0xxx_status_2,
6914
15
        { "status_2", "s7comm.szl.0092.xxxx.status_2", FT_UINT8, BASE_HEX, NULL, 0x0,
6915
15
          "status_2: Status of station 17..24", HFILL }},
6916
15
        { &hf_s7comm_szl_0092_0xxx_status_3,
6917
15
        { "status_3", "s7comm.szl.0092.xxxx.status_3", FT_UINT8, BASE_HEX, NULL, 0x0,
6918
15
          "status_3: Status of station 25..32", HFILL }},
6919
15
        { &hf_s7comm_szl_0092_0xxx_status_4,
6920
15
        { "status_4", "s7comm.szl.0092.xxxx.status_4", FT_UINT8, BASE_HEX, NULL, 0x0,
6921
15
          "status_4: Status of station 33..40", HFILL }},
6922
15
        { &hf_s7comm_szl_0092_0xxx_status_5,
6923
15
        { "status_5", "s7comm.szl.0092.xxxx.status_5", FT_UINT8, BASE_HEX, NULL, 0x0,
6924
15
          "status_5: Status of station 41..48", HFILL }},
6925
15
        { &hf_s7comm_szl_0092_0xxx_status_6,
6926
15
        { "status_6", "s7comm.szl.0092.xxxx.status_6", FT_UINT8, BASE_HEX, NULL, 0x0,
6927
15
          "status_6: Status of station 49..56", HFILL }},
6928
15
        { &hf_s7comm_szl_0092_0xxx_status_7,
6929
15
        { "status_7", "s7comm.szl.0092.xxxx.status_7", FT_UINT8, BASE_HEX, NULL, 0x0,
6930
15
          "status_7: Status of station 57..64", HFILL }},
6931
15
        { &hf_s7comm_szl_0092_0xxx_status_8,
6932
15
        { "status_8", "s7comm.szl.0092.xxxx.status_8", FT_UINT8, BASE_HEX, NULL, 0x0,
6933
15
          "status_8: Status of station 65..72", HFILL }},
6934
15
        { &hf_s7comm_szl_0092_0xxx_status_9,
6935
15
        { "status_9", "s7comm.szl.0092.xxxx.status_9", FT_UINT8, BASE_HEX, NULL, 0x0,
6936
15
          "status_9: Status of station 73..80", HFILL }},
6937
15
        { &hf_s7comm_szl_0092_0xxx_status_10,
6938
15
        { "status_10", "s7comm.szl.0092.xxxx.status_10", FT_UINT8, BASE_HEX, NULL, 0x0,
6939
15
          "status_0: Status of station 81..88", HFILL }},
6940
15
        { &hf_s7comm_szl_0092_0xxx_status_11,
6941
15
        { "status_11", "s7comm.szl.0092.xxxx.status_11", FT_UINT8, BASE_HEX, NULL, 0x0,
6942
15
          "status_11: Status of station 89..96", HFILL }},
6943
15
        { &hf_s7comm_szl_0092_0xxx_status_12,
6944
15
        { "status_12", "s7comm.szl.0092.xxxx.status_12", FT_UINT8, BASE_HEX, NULL, 0x0,
6945
15
          "status_12: Status of station 97..104", HFILL }},
6946
15
        { &hf_s7comm_szl_0092_0xxx_status_13,
6947
15
        { "status_13", "s7comm.szl.0092.xxxx.status_13", FT_UINT8, BASE_HEX, NULL, 0x0,
6948
15
          "status_13: Status of station 105..112", HFILL }},
6949
15
        { &hf_s7comm_szl_0092_0xxx_status_14,
6950
15
        { "status_14", "s7comm.szl.0092.xxxx.status_14", FT_UINT8, BASE_HEX, NULL, 0x0,
6951
15
          "status_14: Status of station 113..120", HFILL }},
6952
15
        { &hf_s7comm_szl_0092_0xxx_status_15,
6953
15
        { "status_15", "s7comm.szl.0092.xxxx.status_15", FT_UINT8, BASE_HEX, NULL, 0x0,
6954
15
          "status_15: Status of station 121..128", HFILL }},
6955
15
    };
6956
15
    proto_register_field_array(proto, hf, array_length(hf));
6957
15
}
6958
6959
/*----------------------------------------------------------------------------------------------------*/
6960
static uint32_t
6961
add_station_byte_with_bitinfo(tvbuff_t *tvb,
6962
                              proto_tree *tree,
6963
                              int hf,
6964
                              const char *info_text,
6965
                              uint32_t start,
6966
                              uint32_t offset)
6967
0
{
6968
0
    proto_item *pi = NULL;
6969
0
    proto_item *pti = NULL;
6970
0
    proto_tree *pt = NULL;
6971
0
    uint32_t val;
6972
0
    uint32_t i;
6973
0
    pi = proto_tree_add_item_ret_uint(tree, hf, tvb, offset, 1, ENC_BIG_ENDIAN, &val);
6974
    /* Add the rack/station number when information bit is set */
6975
0
    if (val) {
6976
0
        pt = proto_item_add_subtree(pi, ett_s7comm_szl_xx9x_station_info);
6977
0
        for (i = 0; i < 8; i++) {
6978
0
            if (val & 1) {
6979
0
                pti = proto_tree_add_item(pt, hf_s7comm_szl_xx9x_station_info, tvb, offset, 1, ENC_NA);
6980
0
                proto_item_set_text(pti, "%s: %d", info_text, start + i);
6981
0
            }
6982
0
            val >>= 1;
6983
0
        }
6984
0
    }
6985
0
    return offset + 1;
6986
0
}
6987
6988
static uint32_t
6989
s7comm_decode_szl_id_xy92_idx_xxxx(tvbuff_t *tvb,
6990
                                   proto_tree *tree,
6991
                                   uint16_t id,
6992
                                   uint32_t offset)
6993
0
{
6994
0
    char *txt;
6995
0
    switch (id) {
6996
0
        case 0x0092:
6997
0
            txt = "Rack/Station configured";
6998
0
            break;
6999
0
        case 0x4092:
7000
0
            txt = "Station configured";
7001
0
            break;
7002
0
        case 0x0192:
7003
0
            txt = "Station configured and activated";
7004
0
            break;
7005
0
        case 0x0292:
7006
0
            txt = "Rack/Station exists, activated and not failed";
7007
0
            break;
7008
0
        case 0x0492:
7009
0
            txt = "Station exists, activated and not failed";
7010
0
            break;
7011
0
        case 0x0692:
7012
0
            txt = "Modules of a station in a expansion rack not OK or station deactivated";
7013
0
            break;
7014
0
        case 0x4692:
7015
0
            txt = "Modules of a station not OK or station deactivated";
7016
0
            break;
7017
0
        default:
7018
0
            txt = "Station info bit set";
7019
0
            break;
7020
0
    }
7021
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_0, txt, 1, offset);
7022
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_1, txt, 9, offset);
7023
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_2, txt, 17, offset);
7024
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_3, txt, 25, offset);
7025
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_4, txt, 33, offset);
7026
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_5, txt, 41, offset);
7027
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_6, txt, 49, offset);
7028
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_7, txt, 57, offset);
7029
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_8, txt, 65, offset);
7030
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_9, txt, 73, offset);
7031
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_10, txt, 81, offset);
7032
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_11, txt, 89, offset);
7033
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_12, txt, 97, offset);
7034
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_13, txt, 105, offset);
7035
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_14, txt, 113, offset);
7036
0
    offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_15, txt, 121, offset);
7037
7038
0
    return offset;
7039
0
}
7040
7041
/*******************************************************************************************************
7042
 *
7043
 * SZL-ID:  0x0x94
7044
 * Index:   0x0000
7045
 * Content:
7046
 *  Partial list SSL-ID W#16#0x94 contains information about the expected and actual
7047
 *  configuration of module racks in central configurations and stations of a
7048
 *  PROFIBUS DP mastersystem/PROFINET IO controller system.
7049
 *
7050
 *******************************************************************************************************/
7051
static void
7052
s7comm_szl_0x94_xxxx_register(int proto)
7053
15
{
7054
15
    static hf_register_info hf[] = {
7055
15
        { &hf_s7comm_szl_0094_xxxx_index,
7056
15
        { "Index", "s7comm.szl.0094.xxxx.index", FT_UINT16, BASE_HEX, NULL, 0x0,
7057
15
          "Index: 0=central module, 1-32=distributed module on PROFIBUS DP, 100-115=distributed module on PROFINET IO", HFILL }},
7058
15
        { &hf_s7comm_szl_0094_xxxx_status_0,
7059
15
        { "status_0 (Group information)", "s7comm.szl.0094.xxxx.status_0", FT_BOOLEAN, 8, NULL, 0x01,
7060
15
          "status_0 (Group information): 1=at least one of the following status bis has the value 1", HFILL }},
7061
15
        { &hf_s7comm_szl_0094_xxxx_status_1_2047,
7062
15
        { "Status", "s7comm.szl.0094.xxxx.status_1_2047", FT_BYTES, BASE_NONE, NULL, 0x0,
7063
15
          "Status of Station 1 to 2047", HFILL }},
7064
15
    };
7065
15
    proto_register_field_array(proto, hf, array_length(hf));
7066
15
}
7067
7068
/*----------------------------------------------------------------------------------------------------*/
7069
static uint32_t
7070
s7comm_decode_szl_id_0x94_idx_xxxx(tvbuff_t *tvb,
7071
                                   proto_tree *tree,
7072
                                   uint16_t id,
7073
                                   uint32_t offset)
7074
0
{
7075
0
    proto_item *pi = NULL;
7076
0
    proto_item *pti = NULL;
7077
0
    proto_tree *pt = NULL;
7078
0
    uint8_t val;
7079
0
    uint32_t i, j;
7080
0
    uint32_t offset_tmp;
7081
0
    uint32_t n;
7082
0
    char *txt;
7083
7084
0
    proto_tree_add_item(tree, hf_s7comm_szl_0094_xxxx_index, tvb, offset, 2, ENC_BIG_ENDIAN);
7085
0
    offset += 2;
7086
0
    proto_tree_add_item(tree, hf_s7comm_szl_0094_xxxx_status_0, tvb, offset, 1, ENC_BIG_ENDIAN);
7087
0
    pi = proto_tree_add_item(tree, hf_s7comm_szl_0094_xxxx_status_1_2047, tvb, offset, 256, ENC_NA);
7088
0
    offset_tmp = offset;
7089
0
    val = tvb_get_uint8(tvb, offset_tmp);
7090
    /* If first bit is set, there is at least one station with active information */
7091
0
    if (val & 1) {
7092
0
        switch (id) {
7093
0
            case 0x0094:
7094
0
                txt = "Rack/Station configured";
7095
0
                break;
7096
0
            case 0x0194:
7097
0
                txt = "Station configured and deactivated";
7098
0
                break;
7099
0
            case 0x0294:
7100
0
                txt = "Rack/Station exists, activated and not failed";
7101
0
                break;
7102
0
            case 0x0694:
7103
0
                txt = "Rack/Station with at least one module disrupted or deactivated";
7104
0
                break;
7105
0
            case 0x0794:
7106
0
                txt = "Rack/Station with problem and/or maintenance requirement/request";
7107
0
                break;
7108
0
            default:
7109
0
                txt = "Station info bit set";
7110
0
                break;
7111
0
        }
7112
0
        pt = proto_item_add_subtree(pi, ett_s7comm_szl_xx9x_station_info);
7113
0
        n = 0;
7114
        /* Add the rack/station number when information bit is set */
7115
0
        for (i = 0; i < 256; i++) {
7116
0
            val = tvb_get_uint8(tvb, offset_tmp);
7117
0
            if (val) {
7118
0
                for (j = 0; j < 8; j++) {
7119
0
                    if ((val & 1) && !(n == 0 && j == 0)) {  /* skip group information bit */
7120
0
                        pti = proto_tree_add_item(pt, hf_s7comm_szl_xx9x_station_info, tvb, offset_tmp, 1, ENC_NA);
7121
0
                        proto_item_set_text(pti, "%s: %d", txt, n + j);
7122
0
                    }
7123
0
                    val >>= 1;
7124
0
                }
7125
0
            }
7126
0
            n += 8;
7127
0
            offset_tmp += 1;
7128
0
        }
7129
0
    }
7130
0
    return offset + 256;
7131
0
}
7132
7133
/*******************************************************************************************************
7134
 *
7135
 * SZL-ID:  0xxy96
7136
 * Index:   0xxxxx
7137
 * Content:
7138
 *  The partial list SSL-ID W#16#xy96 contains status information on all the modules assigned to the CPU.
7139
 *
7140
 *******************************************************************************************************/
7141
static void
7142
s7comm_szl_xy96_xxxx_register(int proto)
7143
15
{
7144
15
    static hf_register_info hf[] = {
7145
15
        { &hf_s7comm_szl_0096_xxxx_logadr_adr,
7146
15
        { "logadr (Address of the module)", "s7comm.szl.xx96.xxxx.logadr.adr", FT_UINT16, BASE_HEX, NULL, 0x7fff,
7147
15
          NULL, HFILL }},
7148
15
        { &hf_s7comm_szl_0096_xxxx_logadr_area,
7149
15
        { "logadr (Area)", "s7comm.szl.xx96.xxxx.logadr.area", FT_BOOLEAN, 16, TFS(&tfs_szl_0096_xxx_logadr_area), 0x8000,
7150
15
          NULL, HFILL }},
7151
15
        { &hf_s7comm_szl_0096_xxxx_system,
7152
15
        { "System (Identifier for the central module/DP master system ID /PROFINET IO system ID)", "s7comm.szl.xx96.xxxx.system", FT_UINT16, BASE_DEC, NULL, 0x0,
7153
15
          "System: 0=central module, 1-32=distributed module on PROFIBUS DP, 100-115=distributed module on PROFINET IO", HFILL }},
7154
15
        { &hf_s7comm_szl_0096_xxxx_api,
7155
15
        { "API (Configured Application Profile)", "s7comm.szl.xx96.xxxx.api", FT_UINT32, BASE_HEX, NULL, 0x0,
7156
15
          NULL, HFILL }},
7157
15
        { &hf_s7comm_szl_0096_xxxx_station,
7158
15
        { "Station (Rack no./station number/device number)", "s7comm.szl.xx96.xxxx.station", FT_UINT16, BASE_DEC, NULL, 0x0,
7159
15
          NULL, HFILL }},
7160
15
        { &hf_s7comm_szl_0096_xxxx_slot,
7161
15
        { "Slot (Slot number)", "s7comm.szl.xx96.xxxx.slot", FT_UINT16, BASE_DEC, NULL, 0x0,
7162
15
          NULL, HFILL }},
7163
15
        { &hf_s7comm_szl_0096_xxxx_subslot,
7164
15
        { "Subslot (Interface module slot)", "s7comm.szl.xx96.xxxx.subslot", FT_UINT16, BASE_DEC, NULL, 0x0,
7165
15
          NULL, HFILL }},
7166
15
        { &hf_s7comm_szl_0096_xxxx_offset,
7167
15
        { "Offset (Offset in the user data address range of the associated module)", "s7comm.szl.xx96.xxxx.offset", FT_UINT16, BASE_DEC, NULL, 0x0,
7168
15
          NULL, HFILL }},
7169
15
        { &hf_s7comm_szl_0096_xxxx_solltyp1,
7170
15
        { "Solltyp1 (Expected Type: Manufacturer no. or profile identification)", "s7comm.szl.xx96.xxxx.solltyp1", FT_UINT16, BASE_HEX, NULL, 0x0,
7171
15
          NULL, HFILL }},
7172
15
        { &hf_s7comm_szl_0096_xxxx_solltyp2,
7173
15
        { "Solltyp2 (Device)", "s7comm.szl.xx96.xxxx.solltyp2", FT_UINT16, BASE_HEX, NULL, 0x0,
7174
15
          NULL, HFILL }},
7175
15
        { &hf_s7comm_szl_0096_xxxx_solltyp3,
7176
15
        { "Solltyp3 (Sequential number or profile index)", "s7comm.szl.xx96.xxxx.solltyp3", FT_UINT16, BASE_DEC, NULL, 0x0,
7177
15
          NULL, HFILL }},
7178
15
        { &hf_s7comm_szl_0096_xxxx_solltyp4_5,
7179
15
        { "Solltyp4_5 (Submodule identification)", "s7comm.szl.xx96.xxxx.solltyp4_5", FT_UINT32, BASE_HEX, NULL, 0x0,
7180
15
          NULL, HFILL }},
7181
15
        { &hf_s7comm_szl_0096_xxxx_solltyp6_7,
7182
15
        { "Solltyp6_7 (Interface module identification)", "s7comm.szl.xx96.xxxx.solltyp6_7", FT_UINT32, BASE_HEX, NULL, 0x0,
7183
15
          NULL, HFILL }},
7184
15
        { &hf_s7comm_szl_0096_xxxx_expactid,
7185
15
        { "Expected/actual identifier", "s7comm.szl.xx96.xxxx.expactid", FT_UINT16, BASE_HEX, NULL, 0x0,
7186
15
          "Expected/actual identifier: Bit0=0 -> Expected the same as actual, Bit0=1 -> Expected not same as actual", HFILL }},
7187
15
        { &hf_s7comm_szl_0096_xxxx_reserve1,
7188
15
        { "Reserve 1", "s7comm.szl.xx96.xxxx.reserve1", FT_UINT16, BASE_HEX, NULL, 0x0,
7189
15
          NULL, HFILL }},
7190
        /* From here almost identical with ID 0x0091, but there are some differences and it's also convenient to have separate filter fields */
7191
15
        { &hf_s7comm_szl_0096_xxxx_eastat,
7192
15
        { "I/O status", "s7comm.szl.xx96.xxxx.eastat", FT_UINT16, BASE_HEX, NULL, 0x0,
7193
15
          NULL, HFILL }},
7194
15
        { &hf_s7comm_szl_0096_xxxx_eastat_0,
7195
15
        { "Module disrupted", "s7comm.szl.xx96.xxxx.eastat.moddisrupt", FT_BOOLEAN, 16, NULL, 0x0001,
7196
15
          "Bit 0: Module disrupted (detected over diagnostic interrupt)", HFILL }},
7197
15
        { &hf_s7comm_szl_0096_xxxx_eastat_1,
7198
15
        { "Module exists", "s7comm.szl.xx96.xxxx.eastat.modexists", FT_BOOLEAN, 16, NULL, 0x0002,
7199
15
          "Bit 1: Module exists", HFILL }},
7200
15
        { &hf_s7comm_szl_0096_xxxx_eastat_2,
7201
15
        { "Module not available", "s7comm.szl.xx96.xxxx.eastat.modnotav", FT_BOOLEAN, 16, NULL, 0x0004,
7202
15
          "Bit 2: Module not available", HFILL }},
7203
15
        { &hf_s7comm_szl_0096_xxxx_eastat_3,
7204
15
        { "Module disabled", "s7comm.szl.xx96.xxxx.eastat.moddisabl", FT_BOOLEAN, 16, NULL, 0x0008,
7205
15
          "Bit 3: Module disabled", HFILL }},
7206
15
        { &hf_s7comm_szl_0096_xxxx_eastat_4,
7207
15
        { "Problem on station", "s7comm.szl.xx96.xxxx.eastat.statproblem", FT_BOOLEAN, 16, NULL, 0x0010,
7208
15
          "Bit 4: Problem on station (representative slot only)", HFILL }},
7209
15
        { &hf_s7comm_szl_0096_xxxx_eastat_5,
7210
15
        { "CiR event active", "s7comm.szl.xx96.xxxx.eastat.ciractive", FT_BOOLEAN, 16, NULL, 0x0020,
7211
15
          "Bit 5: A CiR event at this module/station is active or not yet completed", HFILL }},
7212
15
        { &hf_s7comm_szl_0096_xxxx_eastat_6,
7213
15
        { "Reserved", "s7comm.szl.xx96.xxxx.eastat.res", FT_BOOLEAN, 16, NULL, 0x0040,
7214
15
          "Bit 6: Reserved for S7-400", HFILL }},
7215
15
        { &hf_s7comm_szl_0096_xxxx_eastat_7,
7216
15
        { "Module in local bus segment", "s7comm.szl.xx96.xxxx.eastat.modlocseg", FT_BOOLEAN, 16, NULL, 0x0080,
7217
15
          "Bit 7: Module in local bus segment", HFILL }},
7218
15
        { &hf_s7comm_szl_0096_xxxx_eastat_8,
7219
15
        { "Module maintenance required", "s7comm.szl.xx96.xxxx.eastat.modmaintreq", FT_BOOLEAN, 16, NULL, 0x0100,
7220
15
          "Bit 8: Module maintenance required (green)", HFILL }},
7221
15
        { &hf_s7comm_szl_0096_xxxx_eastat_9,
7222
15
        { "Module maintenance demand", "s7comm.szl.xx96.xxxx.eastat.modmaintdem", FT_BOOLEAN, 16, NULL, 0x0200,
7223
15
          "Bit 9: Module maintenance demand (yellow)", HFILL }},
7224
15
        { &hf_s7comm_szl_0096_xxxx_berbgbr,
7225
15
        { "Ber_bgbr (Area ID/module width)", "s7comm.szl.xx96.xxxx.berbgbr", FT_UINT16, BASE_HEX, NULL, 0x0,
7226
15
          NULL, HFILL }},
7227
15
        { &hf_s7comm_szl_0096_xxxx_berbgbr_0_2,
7228
15
        { "Module width", "s7comm.szl.xx96.xxxx.berbgbr.width", FT_UINT16, BASE_DEC, NULL, 0x0007,
7229
15
          "Bit 0 to 2: Module width", HFILL }},
7230
15
        { &hf_s7comm_szl_0096_xxxx_berbgbr_3,
7231
15
        { "Reserved", "s7comm.szl.xx96.xxxx.berbgbr.bit3_res", FT_BOOLEAN, 16, NULL, 0x0008,
7232
15
          "Bit 3: Reserved", HFILL }},
7233
15
        { &hf_s7comm_szl_0096_xxxx_berbgbr_areaid,
7234
15
        { "Area ID", "s7comm.szl.xx96.xxxx.berbgbr.areaid", FT_UINT16, BASE_DEC, VALS(szl_0091_0000_berbgbr_areaid_names), 0x0070,
7235
15
          "Bit 4 to 6: Area ID", HFILL }},
7236
15
        { &hf_s7comm_szl_0096_xxxx_berbgbr_7,
7237
15
        { "Reserved", "s7comm.szl.xx96.xxxx.berbgbr.bit7_res", FT_BOOLEAN, 16, NULL, 0x0080,
7238
15
          "Bit 7: Reserved", HFILL }},
7239
15
        { &hf_s7comm_szl_0096_xxxx_reserve2,
7240
15
        { "res (Reserved)", "s7comm.szl.xx96.xxxx.reserve2", FT_BYTES, BASE_NONE, NULL, 0x0,
7241
15
          NULL, HFILL }}
7242
15
    };
7243
15
    proto_register_field_array(proto, hf, array_length(hf));
7244
15
}
7245
7246
/*----------------------------------------------------------------------------------------------------*/
7247
static uint32_t
7248
s7comm_decode_szl_id_xy96_idx_xxxx(tvbuff_t *tvb,
7249
                                   proto_tree *tree,
7250
                                   uint32_t offset)
7251
0
{
7252
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_logadr_adr, tvb, offset, 2, ENC_BIG_ENDIAN);
7253
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_logadr_area, tvb, offset, 2, ENC_BIG_ENDIAN);
7254
0
    offset += 2;
7255
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_system, tvb, offset, 2, ENC_BIG_ENDIAN);
7256
0
    offset += 2;
7257
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_api, tvb, offset, 4, ENC_BIG_ENDIAN);
7258
0
    offset += 4;
7259
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_station, tvb, offset, 2, ENC_BIG_ENDIAN);
7260
0
    offset += 2;
7261
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_slot, tvb, offset, 2, ENC_BIG_ENDIAN);
7262
0
    offset += 2;
7263
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_subslot, tvb, offset, 2, ENC_BIG_ENDIAN);
7264
0
    offset += 2;
7265
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
7266
0
    offset += 2;
7267
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp1, tvb, offset, 2, ENC_BIG_ENDIAN);
7268
0
    offset += 2;
7269
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp2, tvb, offset, 2, ENC_BIG_ENDIAN);
7270
0
    offset += 2;
7271
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp3, tvb, offset, 2, ENC_BIG_ENDIAN);
7272
0
    offset += 2;
7273
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp4_5, tvb, offset, 4, ENC_BIG_ENDIAN);
7274
0
    offset += 4;
7275
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp6_7, tvb, offset, 4, ENC_BIG_ENDIAN);
7276
0
    offset += 4;
7277
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_expactid, tvb, offset, 2, ENC_BIG_ENDIAN);
7278
0
    offset += 2;
7279
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_reserve1, tvb, offset, 2, ENC_BIG_ENDIAN);
7280
0
    offset += 2;
7281
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0096_xxxx_eastat,
7282
0
        ett_s7comm_szl_0096_xxxx_eastat, s7comm_szl_0096_xxxx_eastat_fields, ENC_BIG_ENDIAN);
7283
0
    offset += 2;
7284
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0096_xxxx_berbgbr,
7285
0
        ett_s7comm_szl_0096_xxxx_berbgbr, s7comm_szl_0096_xxxx_berbgbr_fields, ENC_BIG_ENDIAN);
7286
0
    offset += 2;
7287
0
    proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_reserve2, tvb, offset, 10, ENC_NA);
7288
0
    offset += 10;
7289
7290
0
    return offset;
7291
0
}
7292
7293
/*******************************************************************************************************
7294
 *
7295
 * SZL-ID:  0x0424
7296
 * Index:   0x0000
7297
 * Content:
7298
 *  If you read the system status list with SZL-ID W#16#xy24, you obtain
7299
 *  information about the modes of the module.
7300
 *
7301
 *******************************************************************************************************/
7302
static void
7303
s7comm_szl_0424_0000_register(int proto)
7304
15
{
7305
15
    static hf_register_info hf[] = {
7306
15
        { &hf_s7comm_szl_0424_0000_ereig,
7307
15
        { "ereig", "s7comm.szl.0424.0000.ereig", FT_UINT16, BASE_HEX, NULL, 0x0,
7308
15
          "Event ID", HFILL }},
7309
15
        { &hf_s7comm_szl_0424_0000_ae,
7310
15
        { "ae", "s7comm.szl.0424.0000.ae", FT_UINT8, BASE_HEX, NULL, 0x0,
7311
15
          "ae (B#16#FF)", HFILL }},
7312
15
        { &hf_s7comm_szl_0424_0000_bzu_id,
7313
15
        { "bzu-id", "s7comm.szl.0424.0000.bzu_id", FT_UINT8, BASE_HEX, NULL, 0x0,
7314
15
          "bzu-id (ID of the mode change divided into 4 bits, Bit 0 to 3: Requested mode, Bit 4 to 7: Previous mode)", HFILL }},
7315
15
        { &hf_s7comm_szl_0424_0000_bzu_id_req,
7316
15
        { "Requested mode", "s7comm.szl.0424.0000.bzu_id.req", FT_UINT8, BASE_HEX, VALS(szl_0424_0000_bzu_id_names), 0x0f,
7317
15
          "bzu-id Requested mode", HFILL }},
7318
15
        { &hf_s7comm_szl_0424_0000_bzu_id_pre,
7319
15
        { "Previous mode", "s7comm.szl.0424.0000.bzu_id.pre", FT_UINT8, BASE_HEX, VALS(szl_0424_0000_bzu_id_names), 0xf0,
7320
15
          "bzu-id Previous mode", HFILL }},
7321
15
        { &hf_s7comm_szl_0424_0000_res,
7322
15
        { "res (Reserved)", "s7comm.szl.0424.0000.res", FT_BYTES, BASE_NONE, NULL, 0x0,
7323
15
          NULL, HFILL }},
7324
15
        { &hf_s7comm_szl_0424_0000_anlinfo1,
7325
15
        { "anlinfo1", "s7comm.szl.0424.0000.anlinfo1", FT_UINT8, BASE_HEX, NULL, 0x0,
7326
15
          NULL, HFILL }},
7327
15
        { &hf_s7comm_szl_0424_0000_anlinfo2,
7328
15
        { "anlinfo2", "s7comm.szl.0424.0000.anlinfo2", FT_UINT8, BASE_HEX, VALS(szl_0424_0000_anlinfo2_names), 0x0,
7329
15
          "Type of startup just exceeded", HFILL }},
7330
15
        { &hf_s7comm_szl_0424_0000_anlinfo3,
7331
15
        { "anlinfo3", "s7comm.szl.0424.0000.anlinfo3", FT_UINT8, BASE_HEX, NULL, 0x0,
7332
15
          "Permissibility of startup types", HFILL }},
7333
15
        { &hf_s7comm_szl_0424_0000_anlinfo4,
7334
15
        { "anlinfo4", "s7comm.szl.0424.0000.anlinfo4", FT_UINT8, BASE_HEX, VALS(szl_0424_0000_anlinfo4_names), 0x0,
7335
15
          "Last valid operation or setting of the automatic startup type at power on", HFILL }},
7336
15
        { &hf_s7comm_szl_0424_0000_time,
7337
15
        { "time", "s7comm.szl.0424.0000.time", FT_BYTES, BASE_NONE, NULL, 0x0,
7338
15
          "time (Time stamp)", HFILL }}
7339
15
    };
7340
15
    proto_register_field_array(proto, hf, array_length(hf));
7341
15
}
7342
7343
/*----------------------------------------------------------------------------------------------------*/
7344
static uint32_t
7345
s7comm_decode_szl_id_0424_idx_0000(tvbuff_t *tvb,
7346
                                   proto_tree *tree,
7347
                                   uint32_t offset)
7348
0
{
7349
0
    proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_ereig, tvb, offset, 2, ENC_BIG_ENDIAN);
7350
0
    offset += 2;
7351
0
    proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_ae, tvb, offset, 1, ENC_BIG_ENDIAN);
7352
0
    offset += 1;
7353
0
    proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0424_0000_bzu_id,
7354
0
        ett_s7comm_szl_0424_0000_bzu_id, s7comm_szl_0424_0000_bzu_id_fields, ENC_BIG_ENDIAN);
7355
0
    offset += 1;
7356
0
    proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_res, tvb, offset, 4, ENC_NA);
7357
0
    offset += 4;
7358
0
    proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_anlinfo1, tvb, offset, 1, ENC_BIG_ENDIAN);
7359
0
    offset += 1;
7360
0
    proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_anlinfo2, tvb, offset, 1, ENC_BIG_ENDIAN);
7361
0
    offset += 1;
7362
0
    proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_anlinfo3, tvb, offset, 1, ENC_BIG_ENDIAN);
7363
0
    offset += 1;
7364
0
    proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_anlinfo4, tvb, offset, 1, ENC_BIG_ENDIAN);
7365
0
    offset += 1;
7366
0
    proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_time, tvb, offset, 8, ENC_NA);
7367
0
    offset += 8;
7368
7369
0
    return offset;
7370
0
}
7371
7372
/*******************************************************************************************************
7373
 *
7374
 * Register SZL header fields
7375
 *
7376
 *******************************************************************************************************/
7377
void
7378
s7comm_register_szl_types(int proto)
7379
15
{
7380
15
    static hf_register_info hf[] = {
7381
        /*** SZL functions ***/
7382
15
        { &hf_s7comm_userdata_szl_partial_list,
7383
15
        { "SZL partial list data", "s7comm.param.userdata.szl_part_list", FT_BYTES, BASE_NONE, NULL, 0x0,
7384
15
          NULL, HFILL }},
7385
          /* SZL ID */
7386
15
        { &hf_s7comm_userdata_szl_id,
7387
15
        { "SZL-ID", "s7comm.data.userdata.szl_id", FT_UINT16, BASE_HEX, NULL, 0x0,
7388
15
          "SZL-ID (System Status List) Bits 15-12: Diagnostic type, Bits 11-8: Number of the partial list extract, Bits 7-0: Number of the partial list", HFILL }},
7389
7390
        /* N.B. 2nd member of the bitfield test covers all 16 bits.. */
7391
15
        { &hf_s7comm_userdata_szl_id_type,
7392
15
        { "Diagnostic type", "s7comm.data.userdata.szl_id.diag_type", FT_UINT16, BASE_HEX, VALS(szl_module_type_names), 0xf000,
7393
15
          NULL, HFILL }},
7394
15
        { &hf_s7comm_userdata_szl_id_partlist_ex,
7395
15
        { "Number of the partial list extract", "s7comm.data.userdata.szl_id.partlist_ex", FT_UINT16, BASE_HEX | BASE_EXT_STRING, &szl_id_partlist_ex_names_ext, 0x0f00,
7396
15
          NULL, HFILL }},
7397
15
        { &hf_s7comm_userdata_szl_id_partlist_num,
7398
15
        { "Number of the partial list", "s7comm.data.userdata.szl_id.partlist_num", FT_UINT16, BASE_HEX | BASE_EXT_STRING, &szl_partial_list_names_ext, 0x00ff,
7399
15
          NULL, HFILL }},
7400
7401
          /* SZL index */
7402
15
        { &hf_s7comm_userdata_szl_index,
7403
15
        { "SZL-Index", "s7comm.data.userdata.szl_index", FT_UINT16, BASE_HEX, NULL, 0x0,
7404
15
          "SZL-Index (System Status List)", HFILL }},
7405
15
        { &hf_s7comm_userdata_szl_tree,
7406
15
        { "SZL data tree", "s7comm.data.userdata.szl_data_tree", FT_NONE, BASE_NONE, NULL, 0x0,
7407
15
          NULL, HFILL }},
7408
15
        { &hf_s7comm_userdata_szl_id_partlist_len,
7409
15
        { "SZL partial list length in bytes", "s7comm.data.userdata.szl_id.partlist_len", FT_UINT16, BASE_DEC, NULL, 0x0,
7410
15
          NULL, HFILL }},
7411
15
        { &hf_s7comm_userdata_szl_id_partlist_cnt,
7412
15
        { "SZL partial list count", "s7comm.data.userdata.szl_id.partlist_cnt", FT_UINT16, BASE_DEC, NULL, 0x0,
7413
15
          "SZL partial list count: the number of datasets in the results", HFILL }},
7414
7415
15
        { &hf_s7comm_szl_xy12_0x00_charac,
7416
15
        { "Characteristic", "s7comm.szl.xy12.0x00.charac", FT_UINT16, BASE_HEX, VALS(szl_xy12_cpu_characteristic_names), 0x0,
7417
15
          NULL, HFILL }},
7418
        /* For general usage as a station information */
7419
15
        { &hf_s7comm_szl_xx9x_station_info,
7420
15
        { "Station", "s7comm.szl.xy12.xx9x.station_info", FT_NONE, BASE_NONE, NULL, 0x0,
7421
15
          NULL, HFILL }}
7422
15
    };
7423
7424
    /* Register Subtrees */
7425
15
    static int *ett[] = {
7426
15
        &ett_s7comm_szl,
7427
15
        &ett_s7comm_userdata_szl_id,
7428
15
        &ett_s7comm_szl_xy22_00xx_al1,
7429
15
        &ett_s7comm_szl_xy22_00xx_al2,
7430
15
        &ett_s7comm_szl_0131_0002_funkt_0,
7431
15
        &ett_s7comm_szl_0131_0002_funkt_1,
7432
15
        &ett_s7comm_szl_0131_0002_funkt_2,
7433
15
        &ett_s7comm_szl_0131_0002_trgereig_0,
7434
15
        &ett_s7comm_szl_0131_0002_trgereig_1,
7435
15
        &ett_s7comm_szl_0131_0003_funkt_0,
7436
15
        &ett_s7comm_szl_0131_0003_funkt_1,
7437
15
        &ett_s7comm_szl_0131_0003_funkt_2,
7438
15
        &ett_s7comm_szl_0131_0003_funkt_3,
7439
15
        &ett_s7comm_szl_0131_0004_funkt_0,
7440
15
        &ett_s7comm_szl_0131_0004_funkt_1,
7441
15
        &ett_s7comm_szl_0131_0004_funkt_2,
7442
15
        &ett_s7comm_szl_0131_0004_funkt_3,
7443
15
        &ett_s7comm_szl_0131_0004_funkt_4,
7444
15
        &ett_s7comm_szl_0131_0005_funkt_0,
7445
15
        &ett_s7comm_szl_0131_0006_funkt_0,
7446
15
        &ett_s7comm_szl_0131_0006_funkt_1,
7447
15
        &ett_s7comm_szl_0131_0006_funkt_2,
7448
15
        &ett_s7comm_szl_0131_0006_funkt_3,
7449
15
        &ett_s7comm_szl_0131_0006_funkt_6,
7450
15
        &ett_s7comm_szl_0131_0006_funkt_7,
7451
15
        &ett_s7comm_szl_0131_0006_zugtyp_0,
7452
15
        &ett_s7comm_szl_0131_0006_zugtyp_1,
7453
15
        &ett_s7comm_szl_0131_0006_zugtyp_2,
7454
15
        &ett_s7comm_szl_0131_0006_zugtyp_3,
7455
15
        &ett_s7comm_szl_0131_0006_zugtyp_6,
7456
15
        &ett_s7comm_szl_0131_0006_zugtyp_7,
7457
15
        &ett_s7comm_szl_0131_0007_funkt_0,
7458
15
        &ett_s7comm_szl_0131_0007_obj_0,
7459
15
        &ett_s7comm_szl_0131_0007_mode,
7460
15
        &ett_s7comm_szl_0131_0009_sync_k,
7461
15
        &ett_s7comm_szl_0131_0009_sync_mpi,
7462
15
        &ett_s7comm_szl_0131_0009_sync_mfi,
7463
15
        &ett_s7comm_szl_0131_0010_funk_1,
7464
15
        &ett_s7comm_szl_0131_0010_ber_meld_1,
7465
15
        &ett_s7comm_szl_0131_0010_ber_zus_1,
7466
15
        &ett_s7comm_szl_0131_0010_typ_zus_1,
7467
15
        &ett_s7comm_szl_0091_0000_eastat,
7468
15
        &ett_s7comm_szl_0091_0000_berbgbr,
7469
15
        &ett_s7comm_szl_0096_xxxx_eastat,
7470
15
        &ett_s7comm_szl_0096_xxxx_berbgbr,
7471
15
        &ett_s7comm_szl_xx9x_station_info,
7472
15
        &ett_s7comm_szl_0424_0000_bzu_id,
7473
15
    };
7474
15
    proto_register_subtree_array(ett, array_length (ett));
7475
15
    proto_register_field_array(proto, hf, array_length(hf));
7476
7477
    /* Register the SZL fields */
7478
15
    s7comm_szl_0000_0000_register(proto);
7479
15
    s7comm_szl_0013_0000_register(proto);
7480
15
    s7comm_szl_xy14_000x_register(proto);
7481
15
    s7comm_szl_xy15_000x_register(proto);
7482
15
    s7comm_szl_xy11_0001_register(proto);
7483
15
    s7comm_szl_xy22_00xx_register(proto);
7484
15
    s7comm_szl_0131_0001_register(proto);
7485
15
    s7comm_szl_0131_0002_register(proto);
7486
15
    s7comm_szl_0131_0003_register(proto);
7487
15
    s7comm_szl_0131_0004_register(proto);
7488
15
    s7comm_szl_0131_0005_register(proto);
7489
15
    s7comm_szl_0131_0006_register(proto);
7490
15
    s7comm_szl_0131_0007_register(proto);
7491
15
    s7comm_szl_0131_0008_register(proto);
7492
15
    s7comm_szl_0131_0009_register(proto);
7493
15
    s7comm_szl_0131_0010_register(proto);
7494
15
    s7comm_szl_0132_0001_register(proto);
7495
15
    s7comm_szl_0132_0002_register(proto);
7496
15
    s7comm_szl_0132_0004_register(proto);
7497
15
    s7comm_szl_0132_0005_register(proto);
7498
15
    s7comm_szl_0132_0006_register(proto);
7499
15
    s7comm_szl_0132_0008_register(proto);
7500
15
    s7comm_szl_0132_000b_register(proto);
7501
15
    s7comm_szl_0132_000c_register(proto);
7502
15
    s7comm_szl_xy1c_000x_register(proto);
7503
15
    s7comm_szl_xy91_0000_register(proto);
7504
15
    s7comm_szl_xy92_xxxx_register(proto);
7505
15
    s7comm_szl_0x94_xxxx_register(proto);
7506
15
    s7comm_szl_xy96_xxxx_register(proto);
7507
15
    s7comm_szl_xy74_0000_register(proto);
7508
15
    s7comm_szl_0424_0000_register(proto);
7509
15
    s7comm_szl_xy76_0000_register(proto);
7510
15
    s7comm_szl_xy77_xxxx_register(proto);
7511
15
    s7comm_szl_xy78_xxxx_register(proto);
7512
15
}
7513
7514
/*******************************************************************************************************
7515
 *
7516
 * PDU Type: User Data -> Function group 4 -> SZL functions
7517
 *
7518
 *******************************************************************************************************/
7519
uint32_t
7520
s7comm_decode_ud_cpu_szl_subfunc(tvbuff_t *tvb,
7521
                                 packet_info *pinfo,
7522
                                 proto_tree *data_tree,
7523
                                 uint8_t type,                /* Type of data (request/response) */
7524
                                 uint8_t ret_val,             /* Return value in data part */
7525
                                 uint32_t dlength,
7526
                                 uint32_t offset)
7527
37
{
7528
37
    uint16_t id;
7529
37
    uint16_t idx;
7530
37
    uint16_t list_len;
7531
37
    uint16_t list_count;
7532
37
    uint16_t i;
7533
37
    uint32_t start_offset;
7534
37
    proto_item *szl_item = NULL;
7535
37
    proto_tree *szl_item_tree = NULL;
7536
37
    proto_item *szl_item_entry = NULL;
7537
37
    const char* szl_index_description;
7538
37
    bool szl_decoded = false;
7539
7540
37
    start_offset = offset;
7541
37
    if (type == S7COMM_UD_TYPE_REQ) {
7542
0
        id = tvb_get_ntohs(tvb, offset);
7543
0
        proto_tree_add_bitmask(data_tree, tvb, offset, hf_s7comm_userdata_szl_id,
7544
0
            ett_s7comm_userdata_szl_id, s7comm_userdata_szl_id_fields, ENC_BIG_ENDIAN);
7545
0
        offset += 2;
7546
0
        idx = tvb_get_ntohs(tvb, offset);
7547
0
        szl_item_entry = proto_tree_add_item(data_tree, hf_s7comm_userdata_szl_index, tvb, offset, 2, ENC_BIG_ENDIAN);
7548
0
        offset += 2;
7549
0
        szl_index_description = s7comm_get_szl_id_index_description_text(id, idx);
7550
0
        if (szl_index_description != NULL) {
7551
0
            proto_item_append_text(szl_item_entry, " [%s]", szl_index_description);
7552
0
        }
7553
0
        proto_item_append_text(data_tree, " (SZL-ID: 0x%04x, Index: 0x%04x)", id, idx);
7554
0
        col_append_fstr(pinfo->cinfo, COL_INFO, " ID=0x%04x Index=0x%04x" , id, idx);
7555
37
    } else if (type == S7COMM_UD_TYPE_RES) {
7556
36
        if (ret_val == S7COMM_ITEM_RETVAL_DATA_OK) {
7557
35
            id = tvb_get_ntohs(tvb, offset);
7558
35
            proto_tree_add_bitmask(data_tree, tvb, offset, hf_s7comm_userdata_szl_id,
7559
35
                ett_s7comm_userdata_szl_id, s7comm_userdata_szl_id_fields, ENC_BIG_ENDIAN);
7560
35
            offset += 2;
7561
35
            idx = tvb_get_ntohs(tvb, offset);
7562
35
            szl_item_entry = proto_tree_add_item(data_tree, hf_s7comm_userdata_szl_index, tvb, offset, 2, ENC_BIG_ENDIAN);
7563
35
            offset += 2;
7564
35
            szl_index_description = s7comm_get_szl_id_index_description_text(id, idx);
7565
35
            if (szl_index_description != NULL) {
7566
0
                proto_item_append_text(szl_item_entry, " [%s]", szl_index_description);
7567
0
            }
7568
35
            proto_item_append_text(data_tree, " (SZL-ID: 0x%04x, Index: 0x%04x)", id, idx);
7569
35
            col_append_fstr(pinfo->cinfo, COL_INFO, " ID=0x%04x Index=0x%04x" , id, idx);
7570
7571
            /* SZL-Data, 4 Bytes header, 4 bytes id/index = 8 bytes */
7572
35
            list_len = tvb_get_ntohs(tvb, offset); /* Length of an list set in bytes */
7573
35
            proto_tree_add_uint(data_tree, hf_s7comm_userdata_szl_id_partlist_len, tvb, offset, 2, list_len);
7574
35
            offset += 2;
7575
35
            list_count = tvb_get_ntohs(tvb, offset); /* count of partlists */
7576
35
            proto_tree_add_uint(data_tree, hf_s7comm_userdata_szl_id_partlist_cnt, tvb, offset, 2, list_count);
7577
35
            offset += 2;
7578
            /* Check the listcount, as in fragmented packets some CPUs (firmware bug?) send 0xffff as list count */
7579
35
            if (((uint32_t)list_count * (uint32_t)list_len) > (dlength - (offset - start_offset))) {
7580
                /* TODO: Make entry in expert field */
7581
23
                list_count = (dlength - (offset - start_offset)) / list_len;
7582
23
            }
7583
            /* Add a Data element for each partlist */
7584
35
            if (dlength > 8) {      /* minimum length of a correct szl data part is 8 bytes */
7585
1.10k
                for (i = 1; i <= list_count && (list_count * list_len != 0); i++) {
7586
                    /* Add a separate tree for the SZL data */
7587
1.07k
                    szl_item = proto_tree_add_item(data_tree, hf_s7comm_userdata_szl_tree, tvb, offset, list_len, ENC_NA);
7588
1.07k
                    szl_item_tree = proto_item_add_subtree(szl_item, ett_s7comm_szl);
7589
1.07k
                    proto_item_append_text(szl_item, " (list count no. %d)", i);
7590
1.07k
                    szl_decoded = false;
7591
                    /* lets try to decode some known szl-id and indexes */
7592
1.07k
                    switch (id) {
7593
0
                        case 0x0000:
7594
0
                            offset = s7comm_decode_szl_id_xy00(tvb, szl_item_tree, id, idx, offset);
7595
0
                            szl_decoded = true;
7596
0
                            break;
7597
0
                        case 0x0012:
7598
0
                        case 0x0112:
7599
0
                            proto_tree_add_item(szl_item_tree, hf_s7comm_szl_xy12_0x00_charac, tvb, offset, 2, ENC_BIG_ENDIAN);
7600
0
                            offset += 2;
7601
0
                            szl_decoded = true;
7602
0
                            break;
7603
0
                        case 0x0013:
7604
0
                        case 0x0113:
7605
0
                            if (idx == 0x0000) {
7606
0
                                offset = s7comm_decode_szl_id_0013_idx_0000(tvb, szl_item_tree, offset);
7607
0
                                szl_decoded = true;
7608
0
                            }
7609
0
                            break;
7610
0
                        case 0x0014:
7611
0
                        case 0x0114:
7612
0
                            offset = s7comm_decode_szl_id_xy14_idx_000x(tvb, szl_item_tree, offset);
7613
0
                            szl_decoded = true;
7614
0
                            break;
7615
0
                        case 0x0015:
7616
0
                        case 0x0115:
7617
0
                            offset = s7comm_decode_szl_id_xy15_idx_000x(tvb, szl_item_tree, offset);
7618
0
                            szl_decoded = true;
7619
0
                            break;
7620
0
                        case 0x0011:
7621
0
                        case 0x0111:
7622
                            /* It's (almost) the same structure for all possible indexes */
7623
0
                            offset = s7comm_decode_szl_id_0111_idx_0001(tvb, szl_item_tree, offset);
7624
0
                            szl_decoded = true;
7625
0
                            break;
7626
0
                        case 0x0222:
7627
0
                            offset = s7comm_decode_szl_id_xy22_idx_00xx(tvb, szl_item_tree, offset);
7628
0
                            szl_decoded = true;
7629
0
                            break;
7630
0
                        case 0x00a0:
7631
0
                        case 0x01a0:
7632
0
                        case 0x04a0:
7633
0
                        case 0x05a0:
7634
0
                        case 0x06a0:
7635
0
                        case 0x07a0:
7636
0
                        case 0x08a0:
7637
0
                        case 0x09a0:
7638
0
                        case 0x0aa0:
7639
0
                        case 0x0ba0:
7640
0
                        case 0x0ca0:
7641
0
                        case 0x0da0:
7642
0
                        case 0x0ea0:
7643
                            /* the data structure is the same as used when CPU is sending online such messages */
7644
0
                            offset = s7comm_decode_ud_cpu_diagnostic_message(tvb, pinfo, false, szl_item_tree, offset);
7645
0
                            szl_decoded = true;
7646
0
                            break;
7647
0
                        case 0x001c:
7648
0
                        case 0x011c:
7649
0
                        case 0x021c:
7650
0
                        case 0x031c:
7651
0
                            offset = s7comm_decode_szl_id_xy1c_idx_000x(tvb, szl_item_tree, offset);
7652
0
                            szl_decoded = true;
7653
0
                            break;
7654
0
                        case 0x0131:
7655
0
                            switch (idx) {
7656
0
                                case 0x0001:
7657
0
                                    offset = s7comm_decode_szl_id_0131_idx_0001(tvb, szl_item_tree, offset);
7658
0
                                    szl_decoded = true;
7659
0
                                    break;
7660
0
                                case 0x0002:
7661
0
                                    offset = s7comm_decode_szl_id_0131_idx_0002(tvb, szl_item_tree, offset);
7662
0
                                    szl_decoded = true;
7663
0
                                    break;
7664
0
                                case 0x0003:
7665
0
                                    offset = s7comm_decode_szl_id_0131_idx_0003(tvb, szl_item_tree, offset);
7666
0
                                    szl_decoded = true;
7667
0
                                    break;
7668
0
                                case 0x0004:
7669
0
                                    offset = s7comm_decode_szl_id_0131_idx_0004(tvb, szl_item_tree, offset);
7670
0
                                    szl_decoded = true;
7671
0
                                    break;
7672
0
                                case 0x0005:
7673
0
                                    offset = s7comm_decode_szl_id_0131_idx_0005(tvb, szl_item_tree, offset);
7674
0
                                    szl_decoded = true;
7675
0
                                    break;
7676
0
                                case 0x0006:
7677
0
                                    offset = s7comm_decode_szl_id_0131_idx_0006(tvb, szl_item_tree, offset);
7678
0
                                    szl_decoded = true;
7679
0
                                    break;
7680
0
                                case 0x0007:
7681
0
                                    offset = s7comm_decode_szl_id_0131_idx_0007(tvb, szl_item_tree, offset);
7682
0
                                    szl_decoded = true;
7683
0
                                    break;
7684
0
                                case 0x0008:
7685
0
                                    offset = s7comm_decode_szl_id_0131_idx_0008(tvb, szl_item_tree, offset);
7686
0
                                    szl_decoded = true;
7687
0
                                    break;
7688
0
                                case 0x0009:
7689
0
                                    offset = s7comm_decode_szl_id_0131_idx_0009(tvb, szl_item_tree, offset);
7690
0
                                    szl_decoded = true;
7691
0
                                    break;
7692
0
                                case 0x0010:
7693
0
                                    offset = s7comm_decode_szl_id_0131_idx_0010(tvb, szl_item_tree, offset);
7694
0
                                    szl_decoded = true;
7695
0
                                    break;
7696
0
                            }
7697
0
                            break;
7698
0
                        case 0x0132:
7699
0
                            switch (idx) {
7700
0
                                case 0x0001:
7701
0
                                    offset = s7comm_decode_szl_id_0132_idx_0001(tvb, szl_item_tree, offset);
7702
0
                                    szl_decoded = true;
7703
0
                                    break;
7704
0
                                case 0x0002:
7705
0
                                    offset = s7comm_decode_szl_id_0132_idx_0002(tvb, szl_item_tree, offset);
7706
0
                                    szl_decoded = true;
7707
0
                                    break;
7708
0
                                case 0x0004:
7709
0
                                    offset = s7comm_decode_szl_id_0132_idx_0004(tvb, szl_item_tree, offset);
7710
0
                                    szl_decoded = true;
7711
0
                                    break;
7712
0
                                case 0x0005:
7713
0
                                    offset = s7comm_decode_szl_id_0132_idx_0005(tvb, szl_item_tree, offset);
7714
0
                                    szl_decoded = true;
7715
0
                                    break;
7716
0
                                case 0x0006:
7717
0
                                    offset = s7comm_decode_szl_id_0132_idx_0006(tvb, szl_item_tree, offset);
7718
0
                                    szl_decoded = true;
7719
0
                                    break;
7720
0
                                case 0x0008:
7721
0
                                    offset = s7comm_decode_szl_id_0132_idx_0008(tvb, szl_item_tree, offset);
7722
0
                                    szl_decoded = true;
7723
0
                                    break;
7724
0
                                case 0x000b:
7725
0
                                    offset = s7comm_decode_szl_id_0132_idx_000b(tvb, szl_item_tree, offset);
7726
0
                                    szl_decoded = true;
7727
0
                                    break;
7728
0
                                case 0x000c:
7729
0
                                    offset = s7comm_decode_szl_id_0132_idx_000c(tvb, szl_item_tree, offset);
7730
0
                                    szl_decoded = true;
7731
0
                                    break;
7732
0
                            }
7733
0
                            break;
7734
0
                        case 0x0019:
7735
0
                        case 0x0119:
7736
0
                        case 0x0074:
7737
0
                        case 0x0174:
7738
0
                                offset = s7comm_decode_szl_id_xy74_idx_0000(tvb, szl_item_tree, offset);
7739
0
                                szl_decoded = true;
7740
0
                            break;
7741
0
                        case 0x0076:
7742
0
                            offset = s7comm_decode_szl_id_xy76_idx_0000(tvb, szl_item_tree, offset);
7743
0
                            szl_decoded = true;
7744
0
                            break;
7745
0
                        case 0x0077:
7746
0
                            offset = s7comm_decode_szl_id_xy77_idx_xxxx(tvb, szl_item_tree, offset);
7747
0
                            szl_decoded = true;
7748
0
                            break;
7749
0
                        case 0x0078:
7750
0
                            offset = s7comm_decode_szl_id_xy78_idx_xxxx(tvb, pinfo, szl_item_tree, offset);
7751
0
                            szl_decoded = true;
7752
0
                            break;
7753
0
                        case 0x0091:
7754
0
                        case 0x0191:
7755
0
                        case 0x0291:
7756
0
                        case 0x0391:
7757
0
                        case 0x0491:
7758
0
                        case 0x0591:
7759
0
                        case 0x0991:
7760
0
                        case 0x0a91:
7761
0
                        case 0x0c91:
7762
0
                        case 0x4c91:
7763
0
                        case 0x0d91:
7764
0
                        case 0x0e91:
7765
0
                            offset = s7comm_decode_szl_id_xy91_idx_0000(tvb, szl_item_tree, id, offset);
7766
0
                            szl_decoded = true;
7767
0
                            break;
7768
0
                        case 0x0092:
7769
0
                        case 0x0192:
7770
0
                        case 0x0292:
7771
0
                        case 0x0392:
7772
0
                        case 0x0492:
7773
0
                        case 0x0592:
7774
0
                        case 0x0692:
7775
0
                        case 0x4092:
7776
0
                        case 0x4292:
7777
0
                        case 0x4692:
7778
0
                            offset = s7comm_decode_szl_id_xy92_idx_xxxx(tvb, szl_item_tree, id, offset);
7779
0
                            szl_decoded = true;
7780
0
                            break;
7781
0
                        case 0x0094:
7782
0
                        case 0x0194:
7783
0
                        case 0x0294:
7784
0
                        case 0x0694:
7785
0
                        case 0x0794:
7786
0
                            offset = s7comm_decode_szl_id_0x94_idx_xxxx(tvb, szl_item_tree, id, offset);
7787
0
                            szl_decoded = true;
7788
0
                            break;
7789
0
                        case 0x0696:
7790
0
                        case 0x0c96:
7791
0
                            offset = s7comm_decode_szl_id_xy96_idx_xxxx(tvb, szl_item_tree, offset);
7792
0
                            szl_decoded = true;
7793
0
                            break;
7794
0
                        case 0x0124:
7795
0
                        case 0x0424:
7796
0
                            if (idx == 0x0000) {
7797
0
                                offset = s7comm_decode_szl_id_0424_idx_0000(tvb, szl_item_tree, offset);
7798
0
                                szl_decoded = true;
7799
0
                            }
7800
0
                            break;
7801
1.07k
                        default:
7802
1.07k
                            szl_decoded = false;
7803
1.07k
                            break;
7804
1.07k
                    }
7805
1.07k
                    if (szl_decoded == false) {
7806
1.07k
                        proto_tree_add_item(szl_item_tree, hf_s7comm_userdata_szl_partial_list, tvb, offset, list_len, ENC_NA);
7807
1.07k
                        offset += list_len;
7808
1.07k
                    }
7809
1.07k
                } /* ...for */
7810
34
            }
7811
35
        } else {
7812
1
            col_append_fstr(pinfo->cinfo, COL_INFO, " Return value:[%s]", val_to_str(pinfo->pool, ret_val, s7comm_item_return_valuenames, "Unknown return value:0x%02x"));
7813
1
        }
7814
36
    }
7815
37
    return offset;
7816
37
}
7817
7818
/*
7819
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
7820
 *
7821
 * Local variables:
7822
 * c-basic-offset: 4
7823
 * tab-width: 8
7824
 * indent-tabs-mode: nil
7825
 * End:
7826
 *
7827
 * vi: set shiftwidth=4 tabstop=8 expandtab:
7828
 * :indentSize=4:tabSize=8:noTabs=true:
7829
 */