Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-s7comm_szl_ids.c
blob6369d45317ba44500abe4cea3c255858c4d6cd37
1 /* packet-s7comm_szl_ids.c
3 * Author: Thomas Wiens, 2014 (th.wiens@gmx.de)
4 * Description: Wireshark dissector for S7-Communication
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * SPDX-License-Identifier: GPL-2.0-or-later
13 #include "config.h"
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"
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 */
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 }
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
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 }
200 static value_string_ext szl_id_partlist_ex_names_ext = VALUE_STRING_EXT_INIT(szl_id_partlist_ex_names);
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 { 0x0081, "Start information list" },
227 { 0x0082, "Start event list" },
228 { 0x0090, "DP Master System Information" },
229 { 0x0091, "Module status information" },
230 { 0x0092, "Rack / station status information" },
231 { 0x0094, "Rack / station status information" },
232 { 0x0095, "Extended DP master system information" },
233 { 0x0096, "Module status information, PROFINET IO and PROFIBUS DP" },
234 { 0x00a0, "Diagnostic buffer of the CPU" },
235 { 0x00b1, "Module diagnostic information (data record 0)" },
236 { 0x00b2, "Module diagnostic information (data record 1), geographical address" },
237 { 0x00b3, "Module diagnostic information (data record 1), logical address" },
238 { 0x00b4, "Diagnostic data of a DP slave" },
239 { 0, NULL }
241 static value_string_ext szl_partial_list_names_ext = VALUE_STRING_EXT_INIT(szl_partial_list_names);
243 static int hf_s7comm_userdata_szl_index; /* SZL index */
244 static int hf_s7comm_userdata_szl_tree; /* SZL item tree */
246 /* Index description for SZL Requests */
247 static const value_string szl_0111_index_names[] = {
248 { 0x0001, "Identification of the module" },
249 { 0x0006, "Identification of the basic hardware" },
250 { 0x0007, "Identification of the basic firmware" },
251 { 0x0081, "Identification of the firmware-extension" },
252 { 0, NULL }
255 static const value_string szl_0112_index_names[] = {
256 { 0x0000, "MC7 processing unit" },
257 { 0x0100, "Time system" },
258 { 0x0200, "System response" },
259 { 0x0300, "Language description of the CPU" },
260 { 0x0400, "Availability of SFC 87 and SFC 88" },
261 { 0, NULL }
264 static const value_string szl_0113_index_names[] = {
265 { 0x0001, "Work memory" },
266 { 0x0002, "Load memory integrated" },
267 { 0x0003, "Load memory plugged in" },
268 { 0x0004, "Maximum plug-in load memory" },
269 { 0x0005, "Size of the backup memory" },
270 { 0x0006, "Size of the memory reserved by the system for CFBs" },
271 { 0, NULL }
274 static const value_string szl_0114_index_names[] = {
275 { 0x0001, "PII (number in bytes)" },
276 { 0x0002, "PIQ (number in bytes)" },
277 { 0x0003, "Memory (number)" },
278 { 0x0004, "Timers (number)" },
279 { 0x0005, "Counters (number)" },
280 { 0x0006, "Number of bytes in the logical address area" },
281 { 0x0007, "Size of the entire local data area of the CPU in bytes" },
282 { 0x0008, "Memory (number in bytes)" },
283 { 0x0009, "Local data (entire local data area of the CPU in Kbytes)" },
284 { 0, NULL }
287 static const value_string szl_0115_index_names[] = {
288 { 0x0800, "OB" },
289 { 0x0a00, "DB" },
290 { 0x0b00, "SDB" },
291 { 0x0c00, "FC" },
292 { 0x0e00, "FB" },
293 { 0, NULL }
296 static const value_string szl_0116_index_names[] = {
297 { 0x0000, "Free cycle" },
298 { 0x000a, "Time-of-day interrupt" },
299 { 0x0014, "Time-delay interrupt" },
300 { 0x001e, "Cyclic interrupt" },
301 { 0x0028, "Hardware interrupt" },
302 { 0x0050, "Asynchronous error interrupt" },
303 { 0x005a, "Background" },
304 { 0x0064, "Startup" },
305 { 0x0078, "Synchronous error interrupt" },
306 { 0, NULL }
309 static const value_string szl_0118_index_names[] = {
310 { 0x0001, "Number of the rack: 1" },
311 { 0x0002, "Number of the rack: 2" },
312 { 0x0003, "Number of the rack: 3" },
313 { 0x00ff, "Maximum number of racks (racknr) and total number of possible slots (anzst)" },
314 { 0, NULL }
317 static const value_string szl_0121_index_names[] = {
318 { 0x0000, "Free cycle" },
319 { 0x0a0a, "Time-of-day interrupt" },
320 { 0x1414, "Time-delay interrupt" },
321 { 0x1e23, "Cyclic interrupt" },
322 { 0x2828, "Hardware interrupt" },
323 { 0x5050, "Asynchronous error interrupt" },
324 { 0x005a, "Background" },
325 { 0x0064, "Startup" },
326 { 0x7878, "Synchronous error interrupt" },
327 { 0, NULL }
330 static const value_string szl_0222_index_names[] = {
331 { 0x0000, "Free cycle" },
332 { 0x000a, "Time-of-day interrupt" },
333 { 0x0014, "Time-delay interrupt" },
334 { 0x001e, "Cyclic interrupt" },
335 { 0x0028, "Hardware interrupt" },
336 { 0x0032, "DP interrupt" },
337 { 0x003c, "Multicomputing or synchronous cycle (isochrone) interrupt" },
338 { 0x0048, "Redundancy interrupt (on with S7-400H systems)" },
339 { 0x0050, "Asynchronous error interrupt" },
340 { 0x005a, "Background" },
341 { 0x0064, "Startup" },
342 { 0x0078, "Synchronous error interrupt" },
343 { 0, NULL }
346 static const value_string szl_0524_index_names[] = {
347 { 0x5000, "Mode STOP" },
348 { 0x5010, "Mode STARTUP" },
349 { 0x5020, "Mode RUN" },
350 { 0x5030, "Mode HOLD" },
351 { 0x4520, "Mode DEFECT" },
352 { 0, NULL }
355 static const value_string szl_0131_index_names[] = {
356 { 0x0001, "General data for communication" },
357 { 0x0002, "Test and installation function constants" },
358 { 0x0003, "Operator interface (O/I)" },
359 { 0x0004, "Object management system (OMS)" },
360 { 0x0005, "Diagnostics" },
361 { 0x0006, "Communication function block (CFB)" },
362 { 0x0007, "Global data" },
363 { 0x0008, "Test and installation function time information" },
364 { 0x0009, "Time-of-day capability parameters" },
365 { 0x0010, "Message parameters" },
366 { 0x0011, "SCAN capability parameters" },
367 { 0, NULL }
370 static const value_string szl_0132_index_names[] = {
371 { 0x0001, "General data for communication" },
372 { 0x0002, "Test and installation status" },
373 { 0x0003, "Operator interface status" },
374 { 0x0004, "Object management system status" },
375 { 0x0005, "Diagnostics" },
376 { 0x0006, "Data exchange with CFBs" },
377 { 0x0007, "Global data" },
378 { 0x0008, "Time system" },
379 { 0x0009, "MPI status" },
380 { 0x000a, "Communication bus status" },
381 { 0x000b, "32-bit runtime meters 0-7" },
382 { 0x000c, "32-bit runtime meters 8-15" },
383 { 0x0010, "S7-SCAN part 1" },
384 { 0x0011, "S7-SCAN part 2" },
385 { 0, NULL }
388 static const value_string szl_0119_0174_ledid_index_names[] = {
389 { 0x0001, "SF (group error)" },
390 { 0x0002, "INTF (internal error)" },
391 { 0x0003, "EXTF (external error)" },
392 { 0x0004, "RUN" },
393 { 0x0005, "STOP" },
394 { 0x0006, "FRCE (force)" },
395 { 0x0007, "CRST (cold restart)" },
396 { 0x0008, "BAF (battery fault/overload, short circuit of battery voltage on bus)" },
397 { 0x0009, "USR (user-defined)" },
398 { 0x000a, "USR1 (user-defined)" },
399 { 0x000b, "BUS1F (bus error interface 1)" },
400 { 0x000c, "BUS2F (bus error interface 2)" },
401 { 0x000d, "REDF (redundancy error)" },
402 { 0x000e, "MSTR (master)" },
403 { 0x000f, "RACK0 (rack number 0)" },
404 { 0x0010, "RACK1 (rack number 1)" },
405 { 0x0011, "RACK2 (rack number 2)" },
406 { 0x0012, "IFM1F (interface error interface module 1)" },
407 { 0x0013, "IFM2F (interface error interface module 2)" },
408 { 0x0014, "BUS3F (bus fault interface 3)" },
409 { 0x0015, "MAINT (maintenance demand)" },
410 { 0x0016, "DC24V" },
411 { 0x0080, "IF (init failure)" },
412 { 0x0081, "UF (user failure)" },
413 { 0x0082, "MF (monitoring failure)" },
414 { 0x0083, "CF (communication failure)" },
415 { 0x0084, "TF (task failure)" },
416 { 0x00ec, "APPL_STATE_RED" },
417 { 0x00ed, "APPL_STATE_GREEN" },
418 { 0, NULL }
421 static const value_string szl_xy1c_index_names[] = {
422 { 0x0001, "Name of the automation system" },
423 { 0x0002, "Name of the module" },
424 { 0x0003, "Plant designation of the module" },
425 { 0x0004, "Copyright entry" },
426 { 0x0005, "Serial number of the module" },
427 { 0x0007, "Module type name" },
428 { 0x0008, "Serial number of the memory card" },
429 { 0x0009, "Manufacturer and profile of a CPU module" },
430 { 0x000a, "OEM ID of a module" },
431 { 0x000b, "Location ID of a module" },
432 { 0, NULL }
435 /* Header fields of the SZL */
436 static int hf_s7comm_szl_0000_0000_szl_id;
437 static int hf_s7comm_szl_0000_0000_module_type_class;
438 static int hf_s7comm_szl_0000_0000_partlist_extr_nr;
439 static int hf_s7comm_szl_0000_0000_partlist_nr;
441 static int hf_s7comm_szl_xy12_0x00_charac;
442 static const value_string szl_xy12_cpu_characteristic_names[] = {
443 { 0x0000, "MC7 processing unit group" },
444 { 0x0001, "MC7 processing generating code" },
445 { 0x0002, "MC7 interpreter" },
446 { 0x0100, "Time system group" },
447 { 0x0101, "1 ms resolution" },
448 { 0x0102, "10 ms resolution" },
449 { 0x0103, "No real time clock" },
450 { 0x0104, "BCD time-of-day format" },
451 { 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)" },
452 { 0x0106, "SFC 78 OB_RT is available" },
453 { 0x0200, "System response group" },
454 { 0x0201, "Capable of multiprocessor mode" },
455 { 0x0202, "Cold restart, warm restart and hot restart possible" },
456 { 0x0203, "Cold restart and hot restart possible" },
457 { 0x0204, "Warm restart and hot restart possible" },
458 { 0x0205, "Only warm restart possible" },
459 { 0x0206, "New distributed I/O configuration is possible during RUN by using predefined resources" },
460 { 0x0207, "H-CPU in stand-alone mode: New distributed I/O configuration is possible during RUN by using predefined resources" },
461 { 0x0208, "For taking motion control functionality into account" },
462 { 0x0300, "Language description of the CPU group" },
463 { 0x0301, "Reserved" },
464 { 0x0302, "All 32 bit fixed-point instructions" },
465 { 0x0303, "All floating-point instructions" },
466 { 0x0304, "sin, asin, cos, acos, tan, atan, sqr, sqrt, ln, exp" },
467 { 0x0305, "Accumulator 3/accumulator 4 with corresponding instructions (ENT,PUSH,POP,LEAVE)" },
468 { 0x0306, "Master Control Relay instructions" },
469 { 0x0307, "Address register 1 exists with corresponding instructions" },
470 { 0x0308, "Address register 2 exists with corresponding instructions" },
471 { 0x0309, "Operations for area-crossing addressing" },
472 { 0x030A, "Operations for area-internal addressing" },
473 { 0x030B, "All memory-indirect addressing instructions for bit memory (M)" },
474 { 0x030C, "All memory-indirect addressing instructions for data blocks (DB)" },
475 { 0x030D, "All memory-indirect addressing instructions for data blocks (DI)" },
476 { 0x030E, "All memory-indirect addressing instructions for local data (L)" },
477 { 0x030F, "All instructions for parameter transfer in FCs" },
478 { 0x0310, "Memory bit edge instructions for process image input (I)" },
479 { 0x0311, "Memory bit edge instructions for process image output (Q)" },
480 { 0x0312, "Memory bit edge instructions for bit memory (M)" },
481 { 0x0313, "Memory bit edge instructions for data blocks (DB)" },
482 { 0x0314, "Memory bit edge instructions for data blocks (DI)" },
483 { 0x0315, "Memory bit edge instructions for local data (L)" },
484 { 0x0316, "Dynamic evaluation of the FC bit" },
485 { 0x0317, "Dynamic local data area with the corresponding instructions" },
486 { 0x0318, "Reserved" },
487 { 0x0319, "Reserved" },
488 { 0x0401, "SFC 87 C_DIAG is available" },
489 { 0x0402, "SFC 88 C_CNTRL is available" },
490 { 0, NULL }
493 static int hf_s7comm_szl_0013_0000_index;
495 static int hf_s7comm_szl_0013_0000_code;
496 static const value_string szl_memory_type_names[] = {
497 { 0x0001, "volatile memory (RAM)" },
498 { 0x0002, "non-volatile memory (FEPROM)" },
499 { 0x0003, "mixed memory (RAM + FEPROM)" },
500 { 0, NULL }
502 static int hf_s7comm_szl_0013_0000_size;
503 static int hf_s7comm_szl_0013_0000_mode;
504 static int hf_s7comm_szl_0013_0000_mode_0;
505 static int hf_s7comm_szl_0013_0000_mode_1;
506 static int hf_s7comm_szl_0013_0000_mode_2;
507 static int hf_s7comm_szl_0013_0000_mode_3;
508 static int hf_s7comm_szl_0013_0000_mode_4;
509 static int hf_s7comm_szl_0013_0000_granu;
510 static int hf_s7comm_szl_0013_0000_ber1;
511 static int hf_s7comm_szl_0013_0000_belegt1;
512 static int hf_s7comm_szl_0013_0000_block1;
513 static int hf_s7comm_szl_0013_0000_ber2;
514 static int hf_s7comm_szl_0013_0000_belegt2;
515 static int hf_s7comm_szl_0013_0000_block2;
517 static int hf_s7comm_szl_xy11_0001_index;
518 static int hf_s7comm_szl_xy11_0001_mlfb;
519 static int hf_s7comm_szl_xy11_0001_bgtyp;
520 static int hf_s7comm_szl_xy11_0001_ausbg;
521 static int hf_s7comm_szl_xy11_0001_ausbe;
523 static int hf_s7comm_szl_xy14_000x_index;
524 static int hf_s7comm_szl_xy14_000x_code;
525 static int hf_s7comm_szl_xy14_000x_quantity;
526 static int hf_s7comm_szl_xy14_000x_reman;
528 static int hf_s7comm_szl_xy15_000x_index;
529 static int hf_s7comm_szl_xy15_000x_maxanz;
530 static int hf_s7comm_szl_xy15_000x_maxlng;
531 static int hf_s7comm_szl_xy15_000x_maxabl;
533 static int hf_s7comm_szl_xy22_00xx_info;
534 static int hf_s7comm_szl_xy22_00xx_al1;
535 static int hf_s7comm_szl_xy22_00xx_al1_0;
536 static int hf_s7comm_szl_xy22_00xx_al1_1;
537 static int hf_s7comm_szl_xy22_00xx_al1_2;
538 static int hf_s7comm_szl_xy22_00xx_al1_4;
539 static int hf_s7comm_szl_xy22_00xx_al1_5;
540 static int hf_s7comm_szl_xy22_00xx_al1_6;
541 static int hf_s7comm_szl_xy22_00xx_al2;
542 static int hf_s7comm_szl_xy22_00xx_al2_0;
543 static int hf_s7comm_szl_xy22_00xx_al2_1;
544 static int hf_s7comm_szl_xy22_00xx_al2_2;
545 static int hf_s7comm_szl_xy22_00xx_al2_3;
546 static int hf_s7comm_szl_xy22_00xx_al3;
548 static int ett_s7comm_szl_xy22_00xx_al1;
549 static int * const s7comm_szl_xy22_00xx_al1_fields[] = {
550 &hf_s7comm_szl_xy22_00xx_al1_0,
551 &hf_s7comm_szl_xy22_00xx_al1_1,
552 &hf_s7comm_szl_xy22_00xx_al1_2,
553 &hf_s7comm_szl_xy22_00xx_al1_4,
554 &hf_s7comm_szl_xy22_00xx_al1_5,
555 &hf_s7comm_szl_xy22_00xx_al1_6,
556 NULL
558 static int ett_s7comm_szl_xy22_00xx_al2;
559 static int * const s7comm_szl_xy22_00xx_al2_fields[] = {
560 &hf_s7comm_szl_xy22_00xx_al2_0,
561 &hf_s7comm_szl_xy22_00xx_al2_1,
562 &hf_s7comm_szl_xy22_00xx_al2_2,
563 &hf_s7comm_szl_xy22_00xx_al2_3,
564 NULL
567 static int hf_s7comm_szl_0131_0001_index;
568 static int hf_s7comm_szl_0131_0001_pdu;
569 static int hf_s7comm_szl_0131_0001_anz;
570 static int hf_s7comm_szl_0131_0001_mpi_bps;
571 static int hf_s7comm_szl_0131_0001_kbus_bps;
572 static int hf_s7comm_szl_0131_0001_res;
574 static int hf_s7comm_szl_0131_0002_index;
575 static int hf_s7comm_szl_0131_0002_funkt_0;
576 static int hf_s7comm_szl_0131_0002_funkt_0_0;
577 static int hf_s7comm_szl_0131_0002_funkt_0_1;
578 static int hf_s7comm_szl_0131_0002_funkt_0_2;
579 static int hf_s7comm_szl_0131_0002_funkt_0_3;
580 static int hf_s7comm_szl_0131_0002_funkt_0_4;
581 static int hf_s7comm_szl_0131_0002_funkt_0_5;
582 static int hf_s7comm_szl_0131_0002_funkt_0_6;
583 static int hf_s7comm_szl_0131_0002_funkt_0_7;
584 static int hf_s7comm_szl_0131_0002_funkt_1;
585 static int hf_s7comm_szl_0131_0002_funkt_1_0;
586 static int hf_s7comm_szl_0131_0002_funkt_1_1;
587 static int hf_s7comm_szl_0131_0002_funkt_1_2;
588 static int hf_s7comm_szl_0131_0002_funkt_1_3;
589 static int hf_s7comm_szl_0131_0002_funkt_1_4;
590 static int hf_s7comm_szl_0131_0002_funkt_1_5;
591 static int hf_s7comm_szl_0131_0002_funkt_1_6;
592 static int hf_s7comm_szl_0131_0002_funkt_1_7;
593 static int hf_s7comm_szl_0131_0002_funkt_2;
594 static int hf_s7comm_szl_0131_0002_funkt_2_0;
595 static int hf_s7comm_szl_0131_0002_funkt_2_1;
596 static int hf_s7comm_szl_0131_0002_funkt_2_2;
597 static int hf_s7comm_szl_0131_0002_funkt_2_3;
598 static int hf_s7comm_szl_0131_0002_funkt_2_4;
599 static int hf_s7comm_szl_0131_0002_funkt_2_5;
600 static int hf_s7comm_szl_0131_0002_funkt_2_6;
601 static int hf_s7comm_szl_0131_0002_funkt_2_7;
602 static int hf_s7comm_szl_0131_0002_funkt_3;
603 static int hf_s7comm_szl_0131_0002_funkt_4;
604 static int hf_s7comm_szl_0131_0002_funkt_5;
605 static int hf_s7comm_szl_0131_0002_aseg;
606 static int hf_s7comm_szl_0131_0002_eseg;
607 static int hf_s7comm_szl_0131_0002_trgereig_0;
608 static int hf_s7comm_szl_0131_0002_trgereig_0_0;
609 static int hf_s7comm_szl_0131_0002_trgereig_0_1;
610 static int hf_s7comm_szl_0131_0002_trgereig_0_2;
611 static int hf_s7comm_szl_0131_0002_trgereig_0_3;
612 static int hf_s7comm_szl_0131_0002_trgereig_0_4;
613 static int hf_s7comm_szl_0131_0002_trgereig_0_5;
614 static int hf_s7comm_szl_0131_0002_trgereig_0_6;
615 static int hf_s7comm_szl_0131_0002_trgereig_0_7;
616 static int hf_s7comm_szl_0131_0002_trgereig_1;
617 static int hf_s7comm_szl_0131_0002_trgereig_1_0;
618 static int hf_s7comm_szl_0131_0002_trgereig_1_1;
619 static int hf_s7comm_szl_0131_0002_trgereig_1_2;
620 static int hf_s7comm_szl_0131_0002_trgereig_1_3;
621 static int hf_s7comm_szl_0131_0002_trgereig_1_4;
622 static int hf_s7comm_szl_0131_0002_trgereig_1_5;
623 static int hf_s7comm_szl_0131_0002_trgereig_1_6;
624 static int hf_s7comm_szl_0131_0002_trgereig_1_7;
625 static int hf_s7comm_szl_0131_0002_trgereig_2;
626 static int hf_s7comm_szl_0131_0002_trgbed;
627 static int hf_s7comm_szl_0131_0002_pfad;
628 static int hf_s7comm_szl_0131_0002_tiefe;
629 static int hf_s7comm_szl_0131_0002_systrig;
630 static int hf_s7comm_szl_0131_0002_erg_par;
631 static int hf_s7comm_szl_0131_0002_erg_pat_1;
632 static int hf_s7comm_szl_0131_0002_erg_pat_2;
633 static int hf_s7comm_szl_0131_0002_force;
634 static int hf_s7comm_szl_0131_0002_time;
635 static int hf_s7comm_szl_0131_0002_res;
637 static int ett_s7comm_szl_0131_0002_funkt_0;
638 static int * const s7comm_szl_0131_0002_funkt_0_fields[] = {
639 &hf_s7comm_szl_0131_0002_funkt_0_0,
640 &hf_s7comm_szl_0131_0002_funkt_0_1,
641 &hf_s7comm_szl_0131_0002_funkt_0_2,
642 &hf_s7comm_szl_0131_0002_funkt_0_3,
643 &hf_s7comm_szl_0131_0002_funkt_0_4,
644 &hf_s7comm_szl_0131_0002_funkt_0_5,
645 &hf_s7comm_szl_0131_0002_funkt_0_6,
646 &hf_s7comm_szl_0131_0002_funkt_0_7,
647 NULL
649 static int ett_s7comm_szl_0131_0002_funkt_1;
650 static int * const s7comm_szl_0131_0002_funkt_1_fields[] = {
651 &hf_s7comm_szl_0131_0002_funkt_1_0,
652 &hf_s7comm_szl_0131_0002_funkt_1_1,
653 &hf_s7comm_szl_0131_0002_funkt_1_2,
654 &hf_s7comm_szl_0131_0002_funkt_1_3,
655 &hf_s7comm_szl_0131_0002_funkt_1_4,
656 &hf_s7comm_szl_0131_0002_funkt_1_5,
657 &hf_s7comm_szl_0131_0002_funkt_1_6,
658 &hf_s7comm_szl_0131_0002_funkt_1_7,
659 NULL
661 static int ett_s7comm_szl_0131_0002_funkt_2;
662 static int * const s7comm_szl_0131_0002_funkt_2_fields[] = {
663 &hf_s7comm_szl_0131_0002_funkt_2_0,
664 &hf_s7comm_szl_0131_0002_funkt_2_1,
665 &hf_s7comm_szl_0131_0002_funkt_2_2,
666 &hf_s7comm_szl_0131_0002_funkt_2_3,
667 &hf_s7comm_szl_0131_0002_funkt_2_4,
668 &hf_s7comm_szl_0131_0002_funkt_2_5,
669 &hf_s7comm_szl_0131_0002_funkt_2_6,
670 &hf_s7comm_szl_0131_0002_funkt_2_7,
671 NULL
673 static int ett_s7comm_szl_0131_0002_trgereig_0;
674 static int * const s7comm_szl_0131_0002_trgereig_0_fields[] = {
675 &hf_s7comm_szl_0131_0002_trgereig_0_0,
676 &hf_s7comm_szl_0131_0002_trgereig_0_1,
677 &hf_s7comm_szl_0131_0002_trgereig_0_2,
678 &hf_s7comm_szl_0131_0002_trgereig_0_3,
679 &hf_s7comm_szl_0131_0002_trgereig_0_4,
680 &hf_s7comm_szl_0131_0002_trgereig_0_5,
681 &hf_s7comm_szl_0131_0002_trgereig_0_6,
682 &hf_s7comm_szl_0131_0002_trgereig_0_7,
683 NULL
685 static int ett_s7comm_szl_0131_0002_trgereig_1;
686 static int * const s7comm_szl_0131_0002_trgereig_1_fields[] = {
687 &hf_s7comm_szl_0131_0002_trgereig_1_0,
688 &hf_s7comm_szl_0131_0002_trgereig_1_1,
689 &hf_s7comm_szl_0131_0002_trgereig_1_2,
690 &hf_s7comm_szl_0131_0002_trgereig_1_3,
691 &hf_s7comm_szl_0131_0002_trgereig_1_4,
692 &hf_s7comm_szl_0131_0002_trgereig_1_5,
693 &hf_s7comm_szl_0131_0002_trgereig_1_6,
694 &hf_s7comm_szl_0131_0002_trgereig_1_7,
695 NULL
698 static int hf_s7comm_szl_0131_0003_index;
699 static int hf_s7comm_szl_0131_0003_funkt_0;
700 static int hf_s7comm_szl_0131_0003_funkt_0_0;
701 static int hf_s7comm_szl_0131_0003_funkt_0_1;
702 static int hf_s7comm_szl_0131_0003_funkt_0_2;
703 static int hf_s7comm_szl_0131_0003_funkt_0_3;
704 static int hf_s7comm_szl_0131_0003_funkt_0_4;
705 static int hf_s7comm_szl_0131_0003_funkt_0_5;
706 static int hf_s7comm_szl_0131_0003_funkt_0_6;
707 static int hf_s7comm_szl_0131_0003_funkt_0_7;
708 static int hf_s7comm_szl_0131_0003_funkt_1;
709 static int hf_s7comm_szl_0131_0003_funkt_1_0;
710 static int hf_s7comm_szl_0131_0003_funkt_1_1;
711 static int hf_s7comm_szl_0131_0003_funkt_1_2;
712 static int hf_s7comm_szl_0131_0003_funkt_1_3;
713 static int hf_s7comm_szl_0131_0003_funkt_1_4;
714 static int hf_s7comm_szl_0131_0003_funkt_1_5;
715 static int hf_s7comm_szl_0131_0003_funkt_1_6;
716 static int hf_s7comm_szl_0131_0003_funkt_1_7;
717 static int hf_s7comm_szl_0131_0003_funkt_2;
718 static int hf_s7comm_szl_0131_0003_funkt_2_0;
719 static int hf_s7comm_szl_0131_0003_funkt_2_1;
720 static int hf_s7comm_szl_0131_0003_funkt_2_2;
721 static int hf_s7comm_szl_0131_0003_funkt_2_3;
722 static int hf_s7comm_szl_0131_0003_funkt_2_4;
723 static int hf_s7comm_szl_0131_0003_funkt_2_5;
724 static int hf_s7comm_szl_0131_0003_funkt_2_6;
725 static int hf_s7comm_szl_0131_0003_funkt_2_7;
726 static int hf_s7comm_szl_0131_0003_funkt_3;
727 static int hf_s7comm_szl_0131_0003_funkt_3_0;
728 static int hf_s7comm_szl_0131_0003_funkt_3_1;
729 static int hf_s7comm_szl_0131_0003_funkt_3_2;
730 static int hf_s7comm_szl_0131_0003_funkt_3_3;
731 static int hf_s7comm_szl_0131_0003_funkt_3_4;
732 static int hf_s7comm_szl_0131_0003_funkt_3_5;
733 static int hf_s7comm_szl_0131_0003_funkt_3_6;
734 static int hf_s7comm_szl_0131_0003_funkt_3_7;
735 static int hf_s7comm_szl_0131_0003_data;
736 static int hf_s7comm_szl_0131_0003_anz;
737 static int hf_s7comm_szl_0131_0003_per_min;
738 static int hf_s7comm_szl_0131_0003_per_max;
739 static int hf_s7comm_szl_0131_0003_res;
741 static int ett_s7comm_szl_0131_0003_funkt_0;
742 static int * const s7comm_szl_0131_0003_funkt_0_fields[] = {
743 &hf_s7comm_szl_0131_0003_funkt_0_0,
744 &hf_s7comm_szl_0131_0003_funkt_0_1,
745 &hf_s7comm_szl_0131_0003_funkt_0_2,
746 &hf_s7comm_szl_0131_0003_funkt_0_3,
747 &hf_s7comm_szl_0131_0003_funkt_0_4,
748 &hf_s7comm_szl_0131_0003_funkt_0_5,
749 &hf_s7comm_szl_0131_0003_funkt_0_6,
750 &hf_s7comm_szl_0131_0003_funkt_0_7,
751 NULL
753 static int ett_s7comm_szl_0131_0003_funkt_1;
754 static int * const s7comm_szl_0131_0003_funkt_1_fields[] = {
755 &hf_s7comm_szl_0131_0003_funkt_1_0,
756 &hf_s7comm_szl_0131_0003_funkt_1_1,
757 &hf_s7comm_szl_0131_0003_funkt_1_2,
758 &hf_s7comm_szl_0131_0003_funkt_1_3,
759 &hf_s7comm_szl_0131_0003_funkt_1_4,
760 &hf_s7comm_szl_0131_0003_funkt_1_5,
761 &hf_s7comm_szl_0131_0003_funkt_1_6,
762 &hf_s7comm_szl_0131_0003_funkt_1_7,
763 NULL
765 static int ett_s7comm_szl_0131_0003_funkt_2;
766 static int * const s7comm_szl_0131_0003_funkt_2_fields[] = {
767 &hf_s7comm_szl_0131_0003_funkt_2_0,
768 &hf_s7comm_szl_0131_0003_funkt_2_1,
769 &hf_s7comm_szl_0131_0003_funkt_2_2,
770 &hf_s7comm_szl_0131_0003_funkt_2_3,
771 &hf_s7comm_szl_0131_0003_funkt_2_4,
772 &hf_s7comm_szl_0131_0003_funkt_2_5,
773 &hf_s7comm_szl_0131_0003_funkt_2_6,
774 &hf_s7comm_szl_0131_0003_funkt_2_7,
775 NULL
777 static int ett_s7comm_szl_0131_0003_funkt_3;
778 static int * const s7comm_szl_0131_0003_funkt_3_fields[] = {
779 &hf_s7comm_szl_0131_0003_funkt_3_0,
780 &hf_s7comm_szl_0131_0003_funkt_3_1,
781 &hf_s7comm_szl_0131_0003_funkt_3_2,
782 &hf_s7comm_szl_0131_0003_funkt_3_3,
783 &hf_s7comm_szl_0131_0003_funkt_3_4,
784 &hf_s7comm_szl_0131_0003_funkt_3_5,
785 &hf_s7comm_szl_0131_0003_funkt_3_6,
786 &hf_s7comm_szl_0131_0003_funkt_3_7,
787 NULL
790 static int hf_s7comm_szl_0131_0004_index;
791 static int hf_s7comm_szl_0131_0004_funkt_0;
792 static int hf_s7comm_szl_0131_0004_funkt_0_0;
793 static int hf_s7comm_szl_0131_0004_funkt_0_1;
794 static int hf_s7comm_szl_0131_0004_funkt_0_2;
795 static int hf_s7comm_szl_0131_0004_funkt_0_3;
796 static int hf_s7comm_szl_0131_0004_funkt_0_4;
797 static int hf_s7comm_szl_0131_0004_funkt_0_5;
798 static int hf_s7comm_szl_0131_0004_funkt_0_6;
799 static int hf_s7comm_szl_0131_0004_funkt_0_7;
800 static int hf_s7comm_szl_0131_0004_funkt_1;
801 static int hf_s7comm_szl_0131_0004_funkt_1_0;
802 static int hf_s7comm_szl_0131_0004_funkt_1_1;
803 static int hf_s7comm_szl_0131_0004_funkt_1_2;
804 static int hf_s7comm_szl_0131_0004_funkt_1_3;
805 static int hf_s7comm_szl_0131_0004_funkt_1_4;
806 static int hf_s7comm_szl_0131_0004_funkt_1_5;
807 static int hf_s7comm_szl_0131_0004_funkt_1_6;
808 static int hf_s7comm_szl_0131_0004_funkt_1_7;
809 static int hf_s7comm_szl_0131_0004_funkt_2;
810 static int hf_s7comm_szl_0131_0004_funkt_2_0;
811 static int hf_s7comm_szl_0131_0004_funkt_2_1;
812 static int hf_s7comm_szl_0131_0004_funkt_2_2;
813 static int hf_s7comm_szl_0131_0004_funkt_2_3;
814 static int hf_s7comm_szl_0131_0004_funkt_2_4;
815 static int hf_s7comm_szl_0131_0004_funkt_2_5;
816 static int hf_s7comm_szl_0131_0004_funkt_2_6;
817 static int hf_s7comm_szl_0131_0004_funkt_2_7;
818 static int hf_s7comm_szl_0131_0004_funkt_3;
819 static int hf_s7comm_szl_0131_0004_funkt_3_0;
820 static int hf_s7comm_szl_0131_0004_funkt_3_1;
821 static int hf_s7comm_szl_0131_0004_funkt_3_2;
822 static int hf_s7comm_szl_0131_0004_funkt_3_3;
823 static int hf_s7comm_szl_0131_0004_funkt_3_4;
824 static int hf_s7comm_szl_0131_0004_funkt_3_5;
825 static int hf_s7comm_szl_0131_0004_funkt_3_6;
826 static int hf_s7comm_szl_0131_0004_funkt_3_7;
827 static int hf_s7comm_szl_0131_0004_funkt_4;
828 static int hf_s7comm_szl_0131_0004_funkt_4_0;
829 static int hf_s7comm_szl_0131_0004_funkt_4_1;
830 static int hf_s7comm_szl_0131_0004_funkt_4_2;
831 static int hf_s7comm_szl_0131_0004_funkt_4_3;
832 static int hf_s7comm_szl_0131_0004_funkt_4_4;
833 static int hf_s7comm_szl_0131_0004_funkt_4_5;
834 static int hf_s7comm_szl_0131_0004_funkt_4_6;
835 static int hf_s7comm_szl_0131_0004_funkt_4_7;
836 static int hf_s7comm_szl_0131_0004_funkt_5;
837 static int hf_s7comm_szl_0131_0004_funkt_6;
838 static int hf_s7comm_szl_0131_0004_funkt_7;
839 static int hf_s7comm_szl_0131_0004_kop;
840 static int hf_s7comm_szl_0131_0004_del;
841 static int hf_s7comm_szl_0131_0004_kett;
842 static int hf_s7comm_szl_0131_0004_hoch;
843 static int hf_s7comm_szl_0131_0004_ver;
844 static int hf_s7comm_szl_0131_0004_res;
846 static int ett_s7comm_szl_0131_0004_funkt_0;
847 static int * const s7comm_szl_0131_0004_funkt_0_fields[] = {
848 &hf_s7comm_szl_0131_0004_funkt_0_0,
849 &hf_s7comm_szl_0131_0004_funkt_0_1,
850 &hf_s7comm_szl_0131_0004_funkt_0_2,
851 &hf_s7comm_szl_0131_0004_funkt_0_3,
852 &hf_s7comm_szl_0131_0004_funkt_0_4,
853 &hf_s7comm_szl_0131_0004_funkt_0_5,
854 &hf_s7comm_szl_0131_0004_funkt_0_6,
855 &hf_s7comm_szl_0131_0004_funkt_0_7,
856 NULL
858 static int ett_s7comm_szl_0131_0004_funkt_1;
859 static int * const s7comm_szl_0131_0004_funkt_1_fields[] = {
860 &hf_s7comm_szl_0131_0004_funkt_1_0,
861 &hf_s7comm_szl_0131_0004_funkt_1_1,
862 &hf_s7comm_szl_0131_0004_funkt_1_2,
863 &hf_s7comm_szl_0131_0004_funkt_1_3,
864 &hf_s7comm_szl_0131_0004_funkt_1_4,
865 &hf_s7comm_szl_0131_0004_funkt_1_5,
866 &hf_s7comm_szl_0131_0004_funkt_1_6,
867 &hf_s7comm_szl_0131_0004_funkt_1_7,
868 NULL
870 static int ett_s7comm_szl_0131_0004_funkt_2;
871 static int * const s7comm_szl_0131_0004_funkt_2_fields[] = {
872 &hf_s7comm_szl_0131_0004_funkt_2_0,
873 &hf_s7comm_szl_0131_0004_funkt_2_1,
874 &hf_s7comm_szl_0131_0004_funkt_2_2,
875 &hf_s7comm_szl_0131_0004_funkt_2_3,
876 &hf_s7comm_szl_0131_0004_funkt_2_4,
877 &hf_s7comm_szl_0131_0004_funkt_2_5,
878 &hf_s7comm_szl_0131_0004_funkt_2_6,
879 &hf_s7comm_szl_0131_0004_funkt_2_7,
880 NULL
882 static int ett_s7comm_szl_0131_0004_funkt_3;
883 static int * const s7comm_szl_0131_0004_funkt_3_fields[] = {
884 &hf_s7comm_szl_0131_0004_funkt_3_0,
885 &hf_s7comm_szl_0131_0004_funkt_3_1,
886 &hf_s7comm_szl_0131_0004_funkt_3_2,
887 &hf_s7comm_szl_0131_0004_funkt_3_3,
888 &hf_s7comm_szl_0131_0004_funkt_3_4,
889 &hf_s7comm_szl_0131_0004_funkt_3_5,
890 &hf_s7comm_szl_0131_0004_funkt_3_6,
891 &hf_s7comm_szl_0131_0004_funkt_3_7,
892 NULL
894 static int ett_s7comm_szl_0131_0004_funkt_4;
895 static int * const s7comm_szl_0131_0004_funkt_4_fields[] = {
896 &hf_s7comm_szl_0131_0004_funkt_4_0,
897 &hf_s7comm_szl_0131_0004_funkt_4_1,
898 &hf_s7comm_szl_0131_0004_funkt_4_2,
899 &hf_s7comm_szl_0131_0004_funkt_4_3,
900 &hf_s7comm_szl_0131_0004_funkt_4_4,
901 &hf_s7comm_szl_0131_0004_funkt_4_5,
902 &hf_s7comm_szl_0131_0004_funkt_4_6,
903 &hf_s7comm_szl_0131_0004_funkt_4_7,
904 NULL
907 static int hf_s7comm_szl_0131_0005_index;
908 static int hf_s7comm_szl_0131_0005_funkt_0;
909 static int hf_s7comm_szl_0131_0005_funkt_0_0;
910 static int hf_s7comm_szl_0131_0005_funkt_0_1;
911 static int hf_s7comm_szl_0131_0005_funkt_0_2;
912 static int hf_s7comm_szl_0131_0005_funkt_0_3;
913 static int hf_s7comm_szl_0131_0005_funkt_0_4;
914 static int hf_s7comm_szl_0131_0005_funkt_0_5;
915 static int hf_s7comm_szl_0131_0005_funkt_0_6;
916 static int hf_s7comm_szl_0131_0005_funkt_0_7;
917 static int hf_s7comm_szl_0131_0005_funkt_1;
918 static int hf_s7comm_szl_0131_0005_funkt_2;
919 static int hf_s7comm_szl_0131_0005_funkt_3;
920 static int hf_s7comm_szl_0131_0005_funkt_4;
921 static int hf_s7comm_szl_0131_0005_funkt_5;
922 static int hf_s7comm_szl_0131_0005_funkt_6;
923 static int hf_s7comm_szl_0131_0005_funkt_7;
924 static int hf_s7comm_szl_0131_0005_anz_sen;
925 static int hf_s7comm_szl_0131_0005_anz_ein;
926 static int hf_s7comm_szl_0131_0005_anz_mel;
927 static int hf_s7comm_szl_0131_0005_res;
929 static int ett_s7comm_szl_0131_0005_funkt_0;
930 static int * const s7comm_szl_0131_0005_funkt_0_fields[] = {
931 &hf_s7comm_szl_0131_0005_funkt_0_0,
932 &hf_s7comm_szl_0131_0005_funkt_0_1,
933 &hf_s7comm_szl_0131_0005_funkt_0_2,
934 &hf_s7comm_szl_0131_0005_funkt_0_3,
935 &hf_s7comm_szl_0131_0005_funkt_0_4,
936 &hf_s7comm_szl_0131_0005_funkt_0_5,
937 &hf_s7comm_szl_0131_0005_funkt_0_6,
938 &hf_s7comm_szl_0131_0005_funkt_0_7,
939 NULL
942 static int hf_s7comm_szl_0131_0006_index;
943 static int hf_s7comm_szl_0131_0006_funkt_0;
944 static int hf_s7comm_szl_0131_0006_funkt_0_0;
945 static int hf_s7comm_szl_0131_0006_funkt_0_1;
946 static int hf_s7comm_szl_0131_0006_funkt_0_2;
947 static int hf_s7comm_szl_0131_0006_funkt_0_3;
948 static int hf_s7comm_szl_0131_0006_funkt_0_4;
949 static int hf_s7comm_szl_0131_0006_funkt_0_5;
950 static int hf_s7comm_szl_0131_0006_funkt_0_6;
951 static int hf_s7comm_szl_0131_0006_funkt_0_7;
952 static int hf_s7comm_szl_0131_0006_funkt_1;
953 static int hf_s7comm_szl_0131_0006_funkt_1_0;
954 static int hf_s7comm_szl_0131_0006_funkt_1_1;
955 static int hf_s7comm_szl_0131_0006_funkt_1_2;
956 static int hf_s7comm_szl_0131_0006_funkt_1_3;
957 static int hf_s7comm_szl_0131_0006_funkt_1_4;
958 static int hf_s7comm_szl_0131_0006_funkt_1_5;
959 static int hf_s7comm_szl_0131_0006_funkt_1_6;
960 static int hf_s7comm_szl_0131_0006_funkt_1_7;
961 static int hf_s7comm_szl_0131_0006_funkt_2;
962 static int hf_s7comm_szl_0131_0006_funkt_2_0;
963 static int hf_s7comm_szl_0131_0006_funkt_2_1;
964 static int hf_s7comm_szl_0131_0006_funkt_2_2;
965 static int hf_s7comm_szl_0131_0006_funkt_2_3;
966 static int hf_s7comm_szl_0131_0006_funkt_2_4;
967 static int hf_s7comm_szl_0131_0006_funkt_2_5;
968 static int hf_s7comm_szl_0131_0006_funkt_2_6;
969 static int hf_s7comm_szl_0131_0006_funkt_2_7;
970 static int hf_s7comm_szl_0131_0006_funkt_3;
971 static int hf_s7comm_szl_0131_0006_funkt_3_0;
972 static int hf_s7comm_szl_0131_0006_funkt_3_1;
973 static int hf_s7comm_szl_0131_0006_funkt_3_2;
974 static int hf_s7comm_szl_0131_0006_funkt_3_3;
975 static int hf_s7comm_szl_0131_0006_funkt_3_4;
976 static int hf_s7comm_szl_0131_0006_funkt_3_5;
977 static int hf_s7comm_szl_0131_0006_funkt_3_6;
978 static int hf_s7comm_szl_0131_0006_funkt_3_7;
979 static int hf_s7comm_szl_0131_0006_funkt_4;
980 static int hf_s7comm_szl_0131_0006_funkt_5;
981 static int hf_s7comm_szl_0131_0006_funkt_6;
982 static int hf_s7comm_szl_0131_0006_funkt_6_0;
983 static int hf_s7comm_szl_0131_0006_funkt_6_1;
984 static int hf_s7comm_szl_0131_0006_funkt_6_2;
985 static int hf_s7comm_szl_0131_0006_funkt_6_3;
986 static int hf_s7comm_szl_0131_0006_funkt_6_4;
987 static int hf_s7comm_szl_0131_0006_funkt_6_5;
988 static int hf_s7comm_szl_0131_0006_funkt_6_6;
989 static int hf_s7comm_szl_0131_0006_funkt_6_7;
990 static int hf_s7comm_szl_0131_0006_funkt_7;
991 static int hf_s7comm_szl_0131_0006_funkt_7_0;
992 static int hf_s7comm_szl_0131_0006_funkt_7_1;
993 static int hf_s7comm_szl_0131_0006_funkt_7_2;
994 static int hf_s7comm_szl_0131_0006_funkt_7_3;
995 static int hf_s7comm_szl_0131_0006_funkt_7_4;
996 static int hf_s7comm_szl_0131_0006_funkt_7_5;
997 static int hf_s7comm_szl_0131_0006_funkt_7_6;
998 static int hf_s7comm_szl_0131_0006_funkt_7_7;
999 static int hf_s7comm_szl_0131_0006_schnell;
1000 static int hf_s7comm_szl_0131_0006_zugtyp_0;
1001 static int hf_s7comm_szl_0131_0006_zugtyp_0_0;
1002 static int hf_s7comm_szl_0131_0006_zugtyp_0_1;
1003 static int hf_s7comm_szl_0131_0006_zugtyp_0_2;
1004 static int hf_s7comm_szl_0131_0006_zugtyp_0_3;
1005 static int hf_s7comm_szl_0131_0006_zugtyp_0_4;
1006 static int hf_s7comm_szl_0131_0006_zugtyp_0_5;
1007 static int hf_s7comm_szl_0131_0006_zugtyp_0_6;
1008 static int hf_s7comm_szl_0131_0006_zugtyp_0_7;
1009 static int hf_s7comm_szl_0131_0006_zugtyp_1;
1010 static int hf_s7comm_szl_0131_0006_zugtyp_1_0;
1011 static int hf_s7comm_szl_0131_0006_zugtyp_1_1;
1012 static int hf_s7comm_szl_0131_0006_zugtyp_1_2;
1013 static int hf_s7comm_szl_0131_0006_zugtyp_1_3;
1014 static int hf_s7comm_szl_0131_0006_zugtyp_1_4;
1015 static int hf_s7comm_szl_0131_0006_zugtyp_1_5;
1016 static int hf_s7comm_szl_0131_0006_zugtyp_1_6;
1017 static int hf_s7comm_szl_0131_0006_zugtyp_1_7;
1018 static int hf_s7comm_szl_0131_0006_zugtyp_2;
1019 static int hf_s7comm_szl_0131_0006_zugtyp_2_0;
1020 static int hf_s7comm_szl_0131_0006_zugtyp_2_1;
1021 static int hf_s7comm_szl_0131_0006_zugtyp_2_2;
1022 static int hf_s7comm_szl_0131_0006_zugtyp_2_3;
1023 static int hf_s7comm_szl_0131_0006_zugtyp_2_4;
1024 static int hf_s7comm_szl_0131_0006_zugtyp_2_5;
1025 static int hf_s7comm_szl_0131_0006_zugtyp_2_6;
1026 static int hf_s7comm_szl_0131_0006_zugtyp_2_7;
1027 static int hf_s7comm_szl_0131_0006_zugtyp_3;
1028 static int hf_s7comm_szl_0131_0006_zugtyp_3_0;
1029 static int hf_s7comm_szl_0131_0006_zugtyp_3_1;
1030 static int hf_s7comm_szl_0131_0006_zugtyp_3_2;
1031 static int hf_s7comm_szl_0131_0006_zugtyp_3_3;
1032 static int hf_s7comm_szl_0131_0006_zugtyp_3_4;
1033 static int hf_s7comm_szl_0131_0006_zugtyp_3_5;
1034 static int hf_s7comm_szl_0131_0006_zugtyp_3_6;
1035 static int hf_s7comm_szl_0131_0006_zugtyp_3_7;
1036 static int hf_s7comm_szl_0131_0006_zugtyp_4;
1037 static int hf_s7comm_szl_0131_0006_zugtyp_5;
1038 static int hf_s7comm_szl_0131_0006_zugtyp_6;
1039 static int hf_s7comm_szl_0131_0006_zugtyp_6_0;
1040 static int hf_s7comm_szl_0131_0006_zugtyp_6_1;
1041 static int hf_s7comm_szl_0131_0006_zugtyp_6_2;
1042 static int hf_s7comm_szl_0131_0006_zugtyp_6_3;
1043 static int hf_s7comm_szl_0131_0006_zugtyp_6_4;
1044 static int hf_s7comm_szl_0131_0006_zugtyp_6_5;
1045 static int hf_s7comm_szl_0131_0006_zugtyp_6_6;
1046 static int hf_s7comm_szl_0131_0006_zugtyp_6_7;
1047 static int hf_s7comm_szl_0131_0006_zugtyp_7;
1048 static int hf_s7comm_szl_0131_0006_zugtyp_7_0;
1049 static int hf_s7comm_szl_0131_0006_zugtyp_7_1;
1050 static int hf_s7comm_szl_0131_0006_zugtyp_7_2;
1051 static int hf_s7comm_szl_0131_0006_zugtyp_7_3;
1052 static int hf_s7comm_szl_0131_0006_zugtyp_7_4;
1053 static int hf_s7comm_szl_0131_0006_zugtyp_7_5;
1054 static int hf_s7comm_szl_0131_0006_zugtyp_7_6;
1055 static int hf_s7comm_szl_0131_0006_zugtyp_7_7;
1056 static int hf_s7comm_szl_0131_0006_res1;
1057 static int hf_s7comm_szl_0131_0006_max_sd_empf;
1058 static int hf_s7comm_szl_0131_0006_max_sd_al8p;
1059 static int hf_s7comm_szl_0131_0006_max_inst;
1060 static int hf_s7comm_szl_0131_0006_res2;
1061 static int hf_s7comm_szl_0131_0006_verb_proj;
1062 static int hf_s7comm_szl_0131_0006_verb_prog;
1063 static int hf_s7comm_szl_0131_0006_res3;
1065 static int ett_s7comm_szl_0131_0006_funkt_0;
1066 static int * const s7comm_szl_0131_0006_funkt_0_fields[] = {
1067 &hf_s7comm_szl_0131_0006_funkt_0_0,
1068 &hf_s7comm_szl_0131_0006_funkt_0_1,
1069 &hf_s7comm_szl_0131_0006_funkt_0_2,
1070 &hf_s7comm_szl_0131_0006_funkt_0_3,
1071 &hf_s7comm_szl_0131_0006_funkt_0_4,
1072 &hf_s7comm_szl_0131_0006_funkt_0_5,
1073 &hf_s7comm_szl_0131_0006_funkt_0_6,
1074 &hf_s7comm_szl_0131_0006_funkt_0_7,
1075 NULL
1077 static int ett_s7comm_szl_0131_0006_funkt_1;
1078 static int * const s7comm_szl_0131_0006_funkt_1_fields[] = {
1079 &hf_s7comm_szl_0131_0006_funkt_1_0,
1080 &hf_s7comm_szl_0131_0006_funkt_1_1,
1081 &hf_s7comm_szl_0131_0006_funkt_1_2,
1082 &hf_s7comm_szl_0131_0006_funkt_1_3,
1083 &hf_s7comm_szl_0131_0006_funkt_1_4,
1084 &hf_s7comm_szl_0131_0006_funkt_1_5,
1085 &hf_s7comm_szl_0131_0006_funkt_1_6,
1086 &hf_s7comm_szl_0131_0006_funkt_1_7,
1087 NULL
1089 static int ett_s7comm_szl_0131_0006_funkt_2;
1090 static int * const s7comm_szl_0131_0006_funkt_2_fields[] = {
1091 &hf_s7comm_szl_0131_0006_funkt_2_0,
1092 &hf_s7comm_szl_0131_0006_funkt_2_1,
1093 &hf_s7comm_szl_0131_0006_funkt_2_2,
1094 &hf_s7comm_szl_0131_0006_funkt_2_3,
1095 &hf_s7comm_szl_0131_0006_funkt_2_4,
1096 &hf_s7comm_szl_0131_0006_funkt_2_5,
1097 &hf_s7comm_szl_0131_0006_funkt_2_6,
1098 &hf_s7comm_szl_0131_0006_funkt_2_7,
1099 NULL
1101 static int ett_s7comm_szl_0131_0006_funkt_3;
1102 static int * const s7comm_szl_0131_0006_funkt_3_fields[] = {
1103 &hf_s7comm_szl_0131_0006_funkt_3_0,
1104 &hf_s7comm_szl_0131_0006_funkt_3_1,
1105 &hf_s7comm_szl_0131_0006_funkt_3_2,
1106 &hf_s7comm_szl_0131_0006_funkt_3_3,
1107 &hf_s7comm_szl_0131_0006_funkt_3_4,
1108 &hf_s7comm_szl_0131_0006_funkt_3_5,
1109 &hf_s7comm_szl_0131_0006_funkt_3_6,
1110 &hf_s7comm_szl_0131_0006_funkt_3_7,
1111 NULL
1113 static int ett_s7comm_szl_0131_0006_funkt_6;
1114 static int * const s7comm_szl_0131_0006_funkt_6_fields[] = {
1115 &hf_s7comm_szl_0131_0006_funkt_6_0,
1116 &hf_s7comm_szl_0131_0006_funkt_6_1,
1117 &hf_s7comm_szl_0131_0006_funkt_6_2,
1118 &hf_s7comm_szl_0131_0006_funkt_6_3,
1119 &hf_s7comm_szl_0131_0006_funkt_6_4,
1120 &hf_s7comm_szl_0131_0006_funkt_6_5,
1121 &hf_s7comm_szl_0131_0006_funkt_6_6,
1122 &hf_s7comm_szl_0131_0006_funkt_6_7,
1123 NULL
1125 static int ett_s7comm_szl_0131_0006_funkt_7;
1126 static int * const s7comm_szl_0131_0006_funkt_7_fields[] = {
1127 &hf_s7comm_szl_0131_0006_funkt_7_0,
1128 &hf_s7comm_szl_0131_0006_funkt_7_1,
1129 &hf_s7comm_szl_0131_0006_funkt_7_2,
1130 &hf_s7comm_szl_0131_0006_funkt_7_3,
1131 &hf_s7comm_szl_0131_0006_funkt_7_4,
1132 &hf_s7comm_szl_0131_0006_funkt_7_5,
1133 &hf_s7comm_szl_0131_0006_funkt_7_6,
1134 &hf_s7comm_szl_0131_0006_funkt_7_7,
1135 NULL
1137 static int ett_s7comm_szl_0131_0006_zugtyp_0;
1138 static int * const s7comm_szl_0131_0006_zugtyp_0_fields[] = {
1139 &hf_s7comm_szl_0131_0006_zugtyp_0_0,
1140 &hf_s7comm_szl_0131_0006_zugtyp_0_1,
1141 &hf_s7comm_szl_0131_0006_zugtyp_0_2,
1142 &hf_s7comm_szl_0131_0006_zugtyp_0_3,
1143 &hf_s7comm_szl_0131_0006_zugtyp_0_4,
1144 &hf_s7comm_szl_0131_0006_zugtyp_0_5,
1145 &hf_s7comm_szl_0131_0006_zugtyp_0_6,
1146 &hf_s7comm_szl_0131_0006_zugtyp_0_7,
1147 NULL
1149 static int ett_s7comm_szl_0131_0006_zugtyp_1;
1150 static int * const s7comm_szl_0131_0006_zugtyp_1_fields[] = {
1151 &hf_s7comm_szl_0131_0006_zugtyp_1_0,
1152 &hf_s7comm_szl_0131_0006_zugtyp_1_1,
1153 &hf_s7comm_szl_0131_0006_zugtyp_1_2,
1154 &hf_s7comm_szl_0131_0006_zugtyp_1_3,
1155 &hf_s7comm_szl_0131_0006_zugtyp_1_4,
1156 &hf_s7comm_szl_0131_0006_zugtyp_1_5,
1157 &hf_s7comm_szl_0131_0006_zugtyp_1_6,
1158 &hf_s7comm_szl_0131_0006_zugtyp_1_7,
1159 NULL
1161 static int ett_s7comm_szl_0131_0006_zugtyp_2;
1162 static int * const s7comm_szl_0131_0006_zugtyp_2_fields[] = {
1163 &hf_s7comm_szl_0131_0006_zugtyp_2_0,
1164 &hf_s7comm_szl_0131_0006_zugtyp_2_1,
1165 &hf_s7comm_szl_0131_0006_zugtyp_2_2,
1166 &hf_s7comm_szl_0131_0006_zugtyp_2_3,
1167 &hf_s7comm_szl_0131_0006_zugtyp_2_4,
1168 &hf_s7comm_szl_0131_0006_zugtyp_2_5,
1169 &hf_s7comm_szl_0131_0006_zugtyp_2_6,
1170 &hf_s7comm_szl_0131_0006_zugtyp_2_7,
1171 NULL
1173 static int ett_s7comm_szl_0131_0006_zugtyp_3;
1174 static int * const s7comm_szl_0131_0006_zugtyp_3_fields[] = {
1175 &hf_s7comm_szl_0131_0006_zugtyp_3_0,
1176 &hf_s7comm_szl_0131_0006_zugtyp_3_1,
1177 &hf_s7comm_szl_0131_0006_zugtyp_3_2,
1178 &hf_s7comm_szl_0131_0006_zugtyp_3_3,
1179 &hf_s7comm_szl_0131_0006_zugtyp_3_4,
1180 &hf_s7comm_szl_0131_0006_zugtyp_3_5,
1181 &hf_s7comm_szl_0131_0006_zugtyp_3_6,
1182 &hf_s7comm_szl_0131_0006_zugtyp_3_7,
1183 NULL
1185 static int ett_s7comm_szl_0131_0006_zugtyp_6;
1186 static int * const s7comm_szl_0131_0006_zugtyp_6_fields[] = {
1187 &hf_s7comm_szl_0131_0006_zugtyp_6_0,
1188 &hf_s7comm_szl_0131_0006_zugtyp_6_1,
1189 &hf_s7comm_szl_0131_0006_zugtyp_6_2,
1190 &hf_s7comm_szl_0131_0006_zugtyp_6_3,
1191 &hf_s7comm_szl_0131_0006_zugtyp_6_4,
1192 &hf_s7comm_szl_0131_0006_zugtyp_6_5,
1193 &hf_s7comm_szl_0131_0006_zugtyp_6_6,
1194 &hf_s7comm_szl_0131_0006_zugtyp_6_7,
1195 NULL
1197 static int ett_s7comm_szl_0131_0006_zugtyp_7;
1198 static int * const s7comm_szl_0131_0006_zugtyp_7_fields[] = {
1199 &hf_s7comm_szl_0131_0006_zugtyp_7_0,
1200 &hf_s7comm_szl_0131_0006_zugtyp_7_1,
1201 &hf_s7comm_szl_0131_0006_zugtyp_7_2,
1202 &hf_s7comm_szl_0131_0006_zugtyp_7_3,
1203 &hf_s7comm_szl_0131_0006_zugtyp_7_4,
1204 &hf_s7comm_szl_0131_0006_zugtyp_7_5,
1205 &hf_s7comm_szl_0131_0006_zugtyp_7_6,
1206 &hf_s7comm_szl_0131_0006_zugtyp_7_7,
1207 NULL
1210 static int hf_s7comm_szl_0131_0007_index;
1211 static int hf_s7comm_szl_0131_0007_funkt_0;
1212 static int hf_s7comm_szl_0131_0007_funkt_0_0;
1213 static int hf_s7comm_szl_0131_0007_funkt_0_1;
1214 static int hf_s7comm_szl_0131_0007_funkt_0_2;
1215 static int hf_s7comm_szl_0131_0007_funkt_0_3;
1216 static int hf_s7comm_szl_0131_0007_funkt_0_4;
1217 static int hf_s7comm_szl_0131_0007_funkt_0_5;
1218 static int hf_s7comm_szl_0131_0007_funkt_0_6;
1219 static int hf_s7comm_szl_0131_0007_funkt_0_7;
1220 static int hf_s7comm_szl_0131_0007_funkt_1;
1221 static int hf_s7comm_szl_0131_0007_obj_0;
1222 static int hf_s7comm_szl_0131_0007_obj_0_0;
1223 static int hf_s7comm_szl_0131_0007_obj_0_1;
1224 static int hf_s7comm_szl_0131_0007_obj_0_2;
1225 static int hf_s7comm_szl_0131_0007_obj_0_3;
1226 static int hf_s7comm_szl_0131_0007_obj_0_4;
1227 static int hf_s7comm_szl_0131_0007_obj_0_5;
1228 static int hf_s7comm_szl_0131_0007_obj_0_6;
1229 static int hf_s7comm_szl_0131_0007_obj_0_7;
1230 static int hf_s7comm_szl_0131_0007_obj_1;
1231 static int hf_s7comm_szl_0131_0007_kons;
1232 static int hf_s7comm_szl_0131_0007_sen;
1233 static int hf_s7comm_szl_0131_0007_rec;
1234 static int hf_s7comm_szl_0131_0007_time;
1235 static int hf_s7comm_szl_0131_0007_proj;
1236 static int hf_s7comm_szl_0131_0007_alarm;
1237 static int hf_s7comm_szl_0131_0007_mode;
1238 static int hf_s7comm_szl_0131_0007_mode_0;
1239 static int hf_s7comm_szl_0131_0007_mode_1;
1240 static int hf_s7comm_szl_0131_0007_kreis;
1241 static int hf_s7comm_szl_0131_0007_sk_1;
1242 static int hf_s7comm_szl_0131_0007_sk_2;
1243 static int hf_s7comm_szl_0131_0007_ek_1;
1244 static int hf_s7comm_szl_0131_0007_ek_2;
1245 static int hf_s7comm_szl_0131_0007_len_1;
1246 static int hf_s7comm_szl_0131_0007_len_2;
1247 static int hf_s7comm_szl_0131_0007_len_3;
1248 static int hf_s7comm_szl_0131_0007_res;
1250 static int ett_s7comm_szl_0131_0007_funkt_0;
1251 static int * const s7comm_szl_0131_0007_funkt_0_fields[] = {
1252 &hf_s7comm_szl_0131_0007_funkt_0_0,
1253 &hf_s7comm_szl_0131_0007_funkt_0_1,
1254 &hf_s7comm_szl_0131_0007_funkt_0_2,
1255 &hf_s7comm_szl_0131_0007_funkt_0_3,
1256 &hf_s7comm_szl_0131_0007_funkt_0_4,
1257 &hf_s7comm_szl_0131_0007_funkt_0_5,
1258 &hf_s7comm_szl_0131_0007_funkt_0_6,
1259 &hf_s7comm_szl_0131_0007_funkt_0_7,
1260 NULL
1263 static int ett_s7comm_szl_0131_0007_obj_0;
1264 static int * const s7comm_szl_0131_0007_obj_0_fields[] = {
1265 &hf_s7comm_szl_0131_0007_obj_0_0,
1266 &hf_s7comm_szl_0131_0007_obj_0_1,
1267 &hf_s7comm_szl_0131_0007_obj_0_2,
1268 &hf_s7comm_szl_0131_0007_obj_0_3,
1269 &hf_s7comm_szl_0131_0007_obj_0_4,
1270 &hf_s7comm_szl_0131_0007_obj_0_5,
1271 &hf_s7comm_szl_0131_0007_obj_0_6,
1272 &hf_s7comm_szl_0131_0007_obj_0_7,
1273 NULL
1276 static int ett_s7comm_szl_0131_0007_mode;
1277 static int * const s7comm_szl_0131_0007_mode_fields[] = {
1278 &hf_s7comm_szl_0131_0007_mode_0,
1279 &hf_s7comm_szl_0131_0007_mode_1,
1280 NULL
1283 static int hf_s7comm_szl_0131_0008_index;
1284 static int hf_s7comm_szl_0131_0008_last_1;
1285 static int hf_s7comm_szl_0131_0008_last_1_tb;
1286 static int hf_s7comm_szl_0131_0008_last_2;
1287 static int hf_s7comm_szl_0131_0008_last_2_tb;
1288 static int hf_s7comm_szl_0131_0008_last_3;
1289 static int hf_s7comm_szl_0131_0008_last_3_tb;
1290 static int hf_s7comm_szl_0131_0008_merker;
1291 static int hf_s7comm_szl_0131_0008_merker_tb;
1292 static int hf_s7comm_szl_0131_0008_ea;
1293 static int hf_s7comm_szl_0131_0008_ea_tb;
1294 static int hf_s7comm_szl_0131_0008_tz;
1295 static int hf_s7comm_szl_0131_0008_tz_tb;
1296 static int hf_s7comm_szl_0131_0008_db;
1297 static int hf_s7comm_szl_0131_0008_db_tb;
1298 static int hf_s7comm_szl_0131_0008_ld;
1299 static int hf_s7comm_szl_0131_0008_ld_tb;
1300 static int hf_s7comm_szl_0131_0008_reg;
1301 static int hf_s7comm_szl_0131_0008_reg_tb;
1302 static int hf_s7comm_szl_0131_0008_ba_stali1;
1303 static int hf_s7comm_szl_0131_0008_ba_stali1_tb;
1304 static int hf_s7comm_szl_0131_0008_ba_stali2;
1305 static int hf_s7comm_szl_0131_0008_ba_stali2_tb;
1306 static int hf_s7comm_szl_0131_0008_ba_stali3;
1307 static int hf_s7comm_szl_0131_0008_ba_stali3_tb;
1308 static int hf_s7comm_szl_0131_0008_akku;
1309 static int hf_s7comm_szl_0131_0008_akku_tb;
1310 static int hf_s7comm_szl_0131_0008_address;
1311 static int hf_s7comm_szl_0131_0008_address_tb;
1312 static int hf_s7comm_szl_0131_0008_dbreg;
1313 static int hf_s7comm_szl_0131_0008_dbreg_tb;
1314 static int hf_s7comm_szl_0131_0008_res;
1315 static const value_string s7comm_szl_0131_0008_timebase_names[] = {
1316 { 0, "100 ps" },
1317 { 1, "1 ns" },
1318 { 2, "10 ns" },
1319 { 3, "100 ns" },
1320 { 4, "1 us" },
1321 { 5, "10 us" },
1322 { 6, "100 us" },
1323 { 7, "1 ms" },
1324 { 8, "10 ms" },
1325 { 9, "100 ms" },
1326 { 10, "1 s" },
1327 { 11, "10 s" },
1328 { 12, "100 s" },
1329 { 13, "1000 s" },
1330 { 14, "10000 s" },
1331 { 15, "1000000 s" },
1332 { 0, NULL }
1335 static int hf_s7comm_szl_0131_0009_index;
1336 static int hf_s7comm_szl_0131_0009_sync_k;
1337 static int hf_s7comm_szl_0131_0009_sync_k_0;
1338 static int hf_s7comm_szl_0131_0009_sync_k_1;
1339 static int hf_s7comm_szl_0131_0009_sync_k_2;
1340 static int hf_s7comm_szl_0131_0009_sync_mpi;
1341 static int hf_s7comm_szl_0131_0009_sync_mpi_0;
1342 static int hf_s7comm_szl_0131_0009_sync_mpi_1;
1343 static int hf_s7comm_szl_0131_0009_sync_mpi_2;
1344 static int hf_s7comm_szl_0131_0009_sync_mfi;
1345 static int hf_s7comm_szl_0131_0009_sync_mfi_0;
1346 static int hf_s7comm_szl_0131_0009_sync_mfi_1;
1347 static int hf_s7comm_szl_0131_0009_sync_mfi_2;
1348 static int hf_s7comm_szl_0131_0009_res1;
1349 static int hf_s7comm_szl_0131_0009_abw_puf;
1350 static int hf_s7comm_szl_0131_0009_abw_5v;
1351 static int hf_s7comm_szl_0131_0009_anz_bsz;
1352 static int hf_s7comm_szl_0131_0009_res2;
1354 static int ett_s7comm_szl_0131_0009_sync_k;
1355 static int * const s7comm_szl_0131_0009_sync_k_fields[] = {
1356 &hf_s7comm_szl_0131_0009_sync_k_0,
1357 &hf_s7comm_szl_0131_0009_sync_k_1,
1358 &hf_s7comm_szl_0131_0009_sync_k_2,
1359 NULL
1362 static int ett_s7comm_szl_0131_0009_sync_mpi;
1363 static int * const s7comm_szl_0131_0009_sync_mpi_fields[] = {
1364 &hf_s7comm_szl_0131_0009_sync_mpi_0,
1365 &hf_s7comm_szl_0131_0009_sync_mpi_1,
1366 &hf_s7comm_szl_0131_0009_sync_mpi_2,
1367 NULL
1370 static int ett_s7comm_szl_0131_0009_sync_mfi;
1371 static int * const s7comm_szl_0131_0009_sync_mfi_fields[] = {
1372 &hf_s7comm_szl_0131_0009_sync_mfi_0,
1373 &hf_s7comm_szl_0131_0009_sync_mfi_1,
1374 &hf_s7comm_szl_0131_0009_sync_mfi_2,
1375 NULL
1378 static int hf_s7comm_szl_0131_0010_index;
1379 static int hf_s7comm_szl_0131_0010_funk_1;
1380 static int hf_s7comm_szl_0131_0010_funk_1_0;
1381 static int hf_s7comm_szl_0131_0010_funk_1_1;
1382 static int hf_s7comm_szl_0131_0010_funk_1_2;
1383 static int hf_s7comm_szl_0131_0010_funk_1_3;
1384 static int hf_s7comm_szl_0131_0010_funk_1_4;
1385 static int hf_s7comm_szl_0131_0010_funk_1_5;
1386 static int hf_s7comm_szl_0131_0010_funk_1_6;
1387 static int hf_s7comm_szl_0131_0010_funk_1_7;
1388 static int hf_s7comm_szl_0131_0010_funk_2;
1389 static int hf_s7comm_szl_0131_0010_ber_meld_1;
1390 static int hf_s7comm_szl_0131_0010_ber_meld_1_0;
1391 static int hf_s7comm_szl_0131_0010_ber_meld_1_1;
1392 static int hf_s7comm_szl_0131_0010_ber_meld_1_2;
1393 static int hf_s7comm_szl_0131_0010_ber_meld_1_3;
1394 static int hf_s7comm_szl_0131_0010_ber_meld_1_4;
1395 static int hf_s7comm_szl_0131_0010_ber_meld_1_5;
1396 static int hf_s7comm_szl_0131_0010_ber_meld_1_6;
1397 static int hf_s7comm_szl_0131_0010_ber_meld_1_7;
1398 static int hf_s7comm_szl_0131_0010_ber_meld_2;
1399 static int hf_s7comm_szl_0131_0010_ber_zus_1;
1400 static int hf_s7comm_szl_0131_0010_ber_zus_1_0;
1401 static int hf_s7comm_szl_0131_0010_ber_zus_1_1;
1402 static int hf_s7comm_szl_0131_0010_ber_zus_1_2;
1403 static int hf_s7comm_szl_0131_0010_ber_zus_1_3;
1404 static int hf_s7comm_szl_0131_0010_ber_zus_1_4;
1405 static int hf_s7comm_szl_0131_0010_ber_zus_1_5;
1406 static int hf_s7comm_szl_0131_0010_ber_zus_1_6;
1407 static int hf_s7comm_szl_0131_0010_ber_zus_1_7;
1408 static int hf_s7comm_szl_0131_0010_ber_zus_2;
1409 static int hf_s7comm_szl_0131_0010_typ_zus_1;
1410 static int hf_s7comm_szl_0131_0010_typ_zus_1_0;
1411 static int hf_s7comm_szl_0131_0010_typ_zus_1_1;
1412 static int hf_s7comm_szl_0131_0010_typ_zus_1_2;
1413 static int hf_s7comm_szl_0131_0010_typ_zus_1_3;
1414 static int hf_s7comm_szl_0131_0010_typ_zus_1_4;
1415 static int hf_s7comm_szl_0131_0010_typ_zus_1_5;
1416 static int hf_s7comm_szl_0131_0010_typ_zus_1_6;
1417 static int hf_s7comm_szl_0131_0010_typ_zus_1_7;
1418 static int hf_s7comm_szl_0131_0010_typ_zus_2;
1419 static int hf_s7comm_szl_0131_0010_maxanz_arch;
1420 static int hf_s7comm_szl_0131_0010_res;
1422 static int ett_s7comm_szl_0131_0010_funk_1;
1423 static int * const s7comm_szl_0131_0010_funk_1_fields[] = {
1424 &hf_s7comm_szl_0131_0010_funk_1_0,
1425 &hf_s7comm_szl_0131_0010_funk_1_1,
1426 &hf_s7comm_szl_0131_0010_funk_1_2,
1427 &hf_s7comm_szl_0131_0010_funk_1_3,
1428 &hf_s7comm_szl_0131_0010_funk_1_4,
1429 &hf_s7comm_szl_0131_0010_funk_1_5,
1430 &hf_s7comm_szl_0131_0010_funk_1_6,
1431 &hf_s7comm_szl_0131_0010_funk_1_7,
1432 NULL
1434 static int ett_s7comm_szl_0131_0010_ber_meld_1;
1435 static int * const s7comm_szl_0131_0010_ber_meld_1_fields[] = {
1436 &hf_s7comm_szl_0131_0010_ber_meld_1_0,
1437 &hf_s7comm_szl_0131_0010_ber_meld_1_1,
1438 &hf_s7comm_szl_0131_0010_ber_meld_1_2,
1439 &hf_s7comm_szl_0131_0010_ber_meld_1_3,
1440 &hf_s7comm_szl_0131_0010_ber_meld_1_4,
1441 &hf_s7comm_szl_0131_0010_ber_meld_1_5,
1442 &hf_s7comm_szl_0131_0010_ber_meld_1_6,
1443 &hf_s7comm_szl_0131_0010_ber_meld_1_7,
1444 NULL
1446 static int ett_s7comm_szl_0131_0010_ber_zus_1;
1447 static int * const s7comm_szl_0131_0010_ber_zus_1_fields[] = {
1448 &hf_s7comm_szl_0131_0010_ber_zus_1_0,
1449 &hf_s7comm_szl_0131_0010_ber_zus_1_1,
1450 &hf_s7comm_szl_0131_0010_ber_zus_1_2,
1451 &hf_s7comm_szl_0131_0010_ber_zus_1_3,
1452 &hf_s7comm_szl_0131_0010_ber_zus_1_4,
1453 &hf_s7comm_szl_0131_0010_ber_zus_1_5,
1454 &hf_s7comm_szl_0131_0010_ber_zus_1_6,
1455 &hf_s7comm_szl_0131_0010_ber_zus_1_7,
1456 NULL
1458 static int ett_s7comm_szl_0131_0010_typ_zus_1;
1459 static int * const s7comm_szl_0131_0010_typ_zus_1_fields[] = {
1460 &hf_s7comm_szl_0131_0010_typ_zus_1_0,
1461 &hf_s7comm_szl_0131_0010_typ_zus_1_1,
1462 &hf_s7comm_szl_0131_0010_typ_zus_1_2,
1463 &hf_s7comm_szl_0131_0010_typ_zus_1_3,
1464 &hf_s7comm_szl_0131_0010_typ_zus_1_4,
1465 &hf_s7comm_szl_0131_0010_typ_zus_1_5,
1466 &hf_s7comm_szl_0131_0010_typ_zus_1_6,
1467 &hf_s7comm_szl_0131_0010_typ_zus_1_7,
1468 NULL
1471 static int hf_s7comm_szl_0132_0001_index;
1472 static int hf_s7comm_szl_0132_0001_res_pg;
1473 static int hf_s7comm_szl_0132_0001_res_os;
1474 static int hf_s7comm_szl_0132_0001_u_pg;
1475 static int hf_s7comm_szl_0132_0001_u_os;
1476 static int hf_s7comm_szl_0132_0001_proj;
1477 static int hf_s7comm_szl_0132_0001_auf;
1478 static int hf_s7comm_szl_0132_0001_free;
1479 static int hf_s7comm_szl_0132_0001_used;
1480 static int hf_s7comm_szl_0132_0001_last;
1481 static int hf_s7comm_szl_0132_0001_res;
1483 static int hf_s7comm_szl_0132_0002_index;
1484 static int hf_s7comm_szl_0132_0002_anz;
1485 static int hf_s7comm_szl_0132_0002_res;
1487 static int hf_s7comm_szl_0132_0004_index;
1488 static int hf_s7comm_szl_0132_0004_key;
1489 static int hf_s7comm_szl_0132_0004_param;
1490 static int hf_s7comm_szl_0132_0004_real;
1491 static int hf_s7comm_szl_0132_0004_bart_sch;
1493 static const value_string szl_bart_sch_names[] = {
1494 { 0, "undefined or cannot be ascertained" },
1495 { 1, "RUN" },
1496 { 2, "RUN_P" },
1497 { 3, "STOP" },
1498 { 4, "MRES" },
1499 { 0, NULL }
1501 static int hf_s7comm_szl_0132_0004_crst_wrst;
1502 static const value_string szl_crst_wrst_names[] = {
1503 { 0, "undefined, does not exist or cannot be ascertained" },
1504 { 1, "CRST" },
1505 { 2, "WRST" },
1506 { 0, NULL }
1508 static int hf_s7comm_szl_0132_0004_ken_f;
1509 static int hf_s7comm_szl_0132_0004_ken_rel;
1510 static int hf_s7comm_szl_0132_0004_ken_ver1_hw;
1511 static int hf_s7comm_szl_0132_0004_ken_ver2_hw;
1512 static int hf_s7comm_szl_0132_0004_ken_ver1_awp;
1513 static int hf_s7comm_szl_0132_0004_ken_ver2_awp;
1514 static int hf_s7comm_szl_0132_0004_res;
1516 static int hf_s7comm_szl_0132_0005_index;
1517 static int hf_s7comm_szl_0132_0005_erw;
1518 static int hf_s7comm_szl_0132_0005_send;
1519 static int hf_s7comm_szl_0132_0005_moeg;
1520 static int hf_s7comm_szl_0132_0005_ltmerz;
1521 static int hf_s7comm_szl_0132_0005_res;
1523 static const value_string szl_0132_0005_func_exist_names[] = {
1524 { 0x0, "No" },
1525 { 0x1, "Yes" },
1526 { 0, NULL }
1529 static int hf_s7comm_szl_0132_0006_index;
1530 static int hf_s7comm_szl_0132_0006_used_0;
1531 static int hf_s7comm_szl_0132_0006_used_1;
1532 static int hf_s7comm_szl_0132_0006_used_2;
1533 static int hf_s7comm_szl_0132_0006_used_3;
1534 static int hf_s7comm_szl_0132_0006_used_4;
1535 static int hf_s7comm_szl_0132_0006_used_5;
1536 static int hf_s7comm_szl_0132_0006_used_6;
1537 static int hf_s7comm_szl_0132_0006_used_7;
1538 static int hf_s7comm_szl_0132_0006_anz_schnell;
1539 static int hf_s7comm_szl_0132_0006_anz_inst;
1540 static int hf_s7comm_szl_0132_0006_anz_multicast;
1541 static int hf_s7comm_szl_0132_0006_res;
1543 static int hf_s7comm_szl_0132_0008_index;
1544 static int hf_s7comm_szl_0132_0008_zykl;
1545 static int hf_s7comm_szl_0132_0008_korr;
1546 static int hf_s7comm_szl_0132_0008_clock0;
1547 static int hf_s7comm_szl_0132_0008_clock1;
1548 static int hf_s7comm_szl_0132_0008_clock2;
1549 static int hf_s7comm_szl_0132_0008_clock3;
1550 static int hf_s7comm_szl_0132_0008_clock4;
1551 static int hf_s7comm_szl_0132_0008_clock5;
1552 static int hf_s7comm_szl_0132_0008_clock6;
1553 static int hf_s7comm_szl_0132_0008_clock7;
1554 static int hf_s7comm_szl_0132_0008_time;
1555 static int hf_s7comm_szl_0132_0008_res;
1557 static int hf_s7comm_szl_0132_000b_index;
1558 static int hf_s7comm_szl_0132_000b_bszl_0;
1559 static int hf_s7comm_szl_0132_000b_bszl_1;
1560 static int hf_s7comm_szl_0132_000b_bszu_0;
1561 static int hf_s7comm_szl_0132_000b_bszu_1;
1562 static int hf_s7comm_szl_0132_000b_clock0;
1563 static int hf_s7comm_szl_0132_000b_clock1;
1564 static int hf_s7comm_szl_0132_000b_clock2;
1565 static int hf_s7comm_szl_0132_000b_clock3;
1566 static int hf_s7comm_szl_0132_000b_clock4;
1567 static int hf_s7comm_szl_0132_000b_clock5;
1568 static int hf_s7comm_szl_0132_000b_clock6;
1569 static int hf_s7comm_szl_0132_000b_clock7;
1570 static int hf_s7comm_szl_0132_000b_res;
1572 static int hf_s7comm_szl_0132_000c_index;
1573 static int hf_s7comm_szl_0132_000c_bszl_0;
1574 static int hf_s7comm_szl_0132_000c_bszl_1;
1575 static int hf_s7comm_szl_0132_000c_bszu_0;
1576 static int hf_s7comm_szl_0132_000c_bszu_1;
1577 static int hf_s7comm_szl_0132_000c_clock8;
1578 static int hf_s7comm_szl_0132_000c_clock9;
1579 static int hf_s7comm_szl_0132_000c_clock10;
1580 static int hf_s7comm_szl_0132_000c_clock11;
1581 static int hf_s7comm_szl_0132_000c_clock12;
1582 static int hf_s7comm_szl_0132_000c_clock13;
1583 static int hf_s7comm_szl_0132_000c_clock14;
1584 static int hf_s7comm_szl_0132_000c_clock15;
1585 static int hf_s7comm_szl_0132_000c_res;
1587 static int hf_s7comm_szl_001c_000x_index;
1588 static int hf_s7comm_szl_001c_0001_name;
1589 static int hf_s7comm_szl_001c_0002_name;
1590 static int hf_s7comm_szl_001c_0003_tag;
1591 static int hf_s7comm_szl_001c_0004_copyright;
1592 static int hf_s7comm_szl_001c_0005_serialn;
1593 static int hf_s7comm_szl_001c_0007_cputypname;
1594 static int hf_s7comm_szl_001c_0008_snmcmmc;
1595 static int hf_s7comm_szl_001c_0009_manufacturer_id;
1596 static int hf_s7comm_szl_001c_0009_profile_id;
1597 static int hf_s7comm_szl_001c_0009_profile_spec_typ;
1598 static int hf_s7comm_szl_001c_000a_oem_copyright_string;
1599 static int hf_s7comm_szl_001c_000a_oem_id;
1600 static int hf_s7comm_szl_001c_000a_oem_add_id;
1601 static int hf_s7comm_szl_001c_000b_loc_id;
1602 static int hf_s7comm_szl_001c_000x_res;
1604 static int hf_s7comm_szl_0091_0000_adr1;
1605 static int hf_s7comm_szl_0091_0000_adr2;
1606 static int hf_s7comm_szl_0091_0000_logadr;
1607 static int hf_s7comm_szl_0091_0000_solltyp;
1608 static int hf_s7comm_szl_0091_0000_isttyp;
1609 static int hf_s7comm_szl_0091_0000_res1;
1610 static int hf_s7comm_szl_0091_0000_res1_0c_4c_4d;
1611 static int hf_s7comm_szl_0091_0000_res1_0d;
1612 static int hf_s7comm_szl_0091_0000_eastat;
1613 static int hf_s7comm_szl_0091_0000_eastat_0;
1614 static int hf_s7comm_szl_0091_0000_eastat_1;
1615 static int hf_s7comm_szl_0091_0000_eastat_2;
1616 static int hf_s7comm_szl_0091_0000_eastat_3;
1617 static int hf_s7comm_szl_0091_0000_eastat_4;
1618 static int hf_s7comm_szl_0091_0000_eastat_5;
1619 static int hf_s7comm_szl_0091_0000_eastat_6;
1620 static int hf_s7comm_szl_0091_0000_eastat_7;
1621 static int hf_s7comm_szl_0091_0000_eastat_dataid;
1622 static int hf_s7comm_szl_0091_0000_berbgbr;
1623 static int hf_s7comm_szl_0091_0000_berbgbr_0_2;
1624 static int hf_s7comm_szl_0091_0000_berbgbr_3;
1625 static int hf_s7comm_szl_0091_0000_berbgbr_areaid;
1626 static int hf_s7comm_szl_0091_0000_berbgbr_7;
1628 static const value_string szl_0091_0000_eastat_dataid_names[] = {
1629 { 0xb4, "Input" },
1630 { 0xb5, "Output" },
1631 { 0xff, "External DP interface" },
1632 { 0, NULL }
1634 static const value_string szl_0091_0000_berbgbr_areaid_names[] = {
1635 { 0, "S7-400" },
1636 { 1, "S7-300" },
1637 { 2, "ET area" },
1638 { 3, "P area" },
1639 { 4, "Q area" },
1640 { 5, "IM3 area" },
1641 { 6, "IM4 area" },
1642 { 0, NULL }
1644 static int ett_s7comm_szl_0091_0000_eastat;
1645 static int * const s7comm_szl_0091_0000_eastat_fields[] = {
1646 &hf_s7comm_szl_0091_0000_eastat_0,
1647 &hf_s7comm_szl_0091_0000_eastat_1,
1648 &hf_s7comm_szl_0091_0000_eastat_2,
1649 &hf_s7comm_szl_0091_0000_eastat_3,
1650 &hf_s7comm_szl_0091_0000_eastat_4,
1651 &hf_s7comm_szl_0091_0000_eastat_5,
1652 &hf_s7comm_szl_0091_0000_eastat_6,
1653 &hf_s7comm_szl_0091_0000_eastat_7,
1654 &hf_s7comm_szl_0091_0000_eastat_dataid,
1655 NULL
1657 static int ett_s7comm_szl_0091_0000_berbgbr;
1658 static int * const s7comm_szl_0091_0000_berbgbr_fields[] = {
1659 &hf_s7comm_szl_0091_0000_berbgbr_0_2,
1660 &hf_s7comm_szl_0091_0000_berbgbr_3,
1661 &hf_s7comm_szl_0091_0000_berbgbr_areaid,
1662 &hf_s7comm_szl_0091_0000_berbgbr_7,
1663 NULL
1666 static int ett_s7comm_szl_xx9x_station_info;
1667 static int hf_s7comm_szl_xx9x_station_info;
1669 static int hf_s7comm_szl_0092_0xxx_status_0;
1670 static int hf_s7comm_szl_0092_0xxx_status_1;
1671 static int hf_s7comm_szl_0092_0xxx_status_2;
1672 static int hf_s7comm_szl_0092_0xxx_status_3;
1673 static int hf_s7comm_szl_0092_0xxx_status_4;
1674 static int hf_s7comm_szl_0092_0xxx_status_5;
1675 static int hf_s7comm_szl_0092_0xxx_status_6;
1676 static int hf_s7comm_szl_0092_0xxx_status_7;
1677 static int hf_s7comm_szl_0092_0xxx_status_8;
1678 static int hf_s7comm_szl_0092_0xxx_status_9;
1679 static int hf_s7comm_szl_0092_0xxx_status_10;
1680 static int hf_s7comm_szl_0092_0xxx_status_11;
1681 static int hf_s7comm_szl_0092_0xxx_status_12;
1682 static int hf_s7comm_szl_0092_0xxx_status_13;
1683 static int hf_s7comm_szl_0092_0xxx_status_14;
1684 static int hf_s7comm_szl_0092_0xxx_status_15;
1686 static int hf_s7comm_szl_0094_xxxx_index;
1687 static int hf_s7comm_szl_0094_xxxx_status_0;
1688 static int hf_s7comm_szl_0094_xxxx_status_1_2047;
1690 static int hf_s7comm_szl_0096_xxxx_logadr_adr;
1691 static int hf_s7comm_szl_0096_xxxx_logadr_area;
1692 static const true_false_string tfs_szl_0096_xxx_logadr_area = {
1693 "Input",
1694 "Output"
1697 static int hf_s7comm_szl_0096_xxxx_system;
1698 static int hf_s7comm_szl_0096_xxxx_api;
1699 static int hf_s7comm_szl_0096_xxxx_station;
1700 static int hf_s7comm_szl_0096_xxxx_slot;
1701 static int hf_s7comm_szl_0096_xxxx_subslot;
1702 static int hf_s7comm_szl_0096_xxxx_offset;
1703 static int hf_s7comm_szl_0096_xxxx_solltyp1;
1704 static int hf_s7comm_szl_0096_xxxx_solltyp2;
1705 static int hf_s7comm_szl_0096_xxxx_solltyp3;
1706 static int hf_s7comm_szl_0096_xxxx_solltyp4_5;
1707 static int hf_s7comm_szl_0096_xxxx_solltyp6_7;
1708 static int hf_s7comm_szl_0096_xxxx_expactid;
1709 static int hf_s7comm_szl_0096_xxxx_reserve1;
1710 static int hf_s7comm_szl_0096_xxxx_eastat;
1711 static int hf_s7comm_szl_0096_xxxx_eastat_0;
1712 static int hf_s7comm_szl_0096_xxxx_eastat_1;
1713 static int hf_s7comm_szl_0096_xxxx_eastat_2;
1714 static int hf_s7comm_szl_0096_xxxx_eastat_3;
1715 static int hf_s7comm_szl_0096_xxxx_eastat_4;
1716 static int hf_s7comm_szl_0096_xxxx_eastat_5;
1717 static int hf_s7comm_szl_0096_xxxx_eastat_6;
1718 static int hf_s7comm_szl_0096_xxxx_eastat_7;
1719 static int hf_s7comm_szl_0096_xxxx_eastat_8;
1720 static int hf_s7comm_szl_0096_xxxx_eastat_9;
1721 static int ett_s7comm_szl_0096_xxxx_eastat;
1722 static int * const s7comm_szl_0096_xxxx_eastat_fields[] = {
1723 &hf_s7comm_szl_0096_xxxx_eastat_0,
1724 &hf_s7comm_szl_0096_xxxx_eastat_1,
1725 &hf_s7comm_szl_0096_xxxx_eastat_2,
1726 &hf_s7comm_szl_0096_xxxx_eastat_3,
1727 &hf_s7comm_szl_0096_xxxx_eastat_4,
1728 &hf_s7comm_szl_0096_xxxx_eastat_5,
1729 &hf_s7comm_szl_0096_xxxx_eastat_6,
1730 &hf_s7comm_szl_0096_xxxx_eastat_7,
1731 &hf_s7comm_szl_0096_xxxx_eastat_8,
1732 &hf_s7comm_szl_0096_xxxx_eastat_9,
1733 NULL
1735 static int hf_s7comm_szl_0096_xxxx_berbgbr;
1736 static int hf_s7comm_szl_0096_xxxx_berbgbr_0_2;
1737 static int hf_s7comm_szl_0096_xxxx_berbgbr_3;
1738 static int hf_s7comm_szl_0096_xxxx_berbgbr_areaid;
1739 static int hf_s7comm_szl_0096_xxxx_berbgbr_7;
1740 static int ett_s7comm_szl_0096_xxxx_berbgbr;
1741 static int * const s7comm_szl_0096_xxxx_berbgbr_fields[] = {
1742 &hf_s7comm_szl_0096_xxxx_berbgbr_0_2,
1743 &hf_s7comm_szl_0096_xxxx_berbgbr_3,
1744 &hf_s7comm_szl_0096_xxxx_berbgbr_areaid,
1745 &hf_s7comm_szl_0096_xxxx_berbgbr_7,
1746 NULL
1748 static int hf_s7comm_szl_0096_xxxx_reserve2;
1750 static int hf_s7comm_szl_0424_0000_ereig;
1751 static int hf_s7comm_szl_0424_0000_ae;
1752 static int hf_s7comm_szl_0424_0000_bzu_id;
1753 static int hf_s7comm_szl_0424_0000_bzu_id_req;
1754 static int hf_s7comm_szl_0424_0000_bzu_id_pre;
1755 static const value_string szl_0424_0000_bzu_id_names[] = {
1756 { 0x1, "STOP (update)" },
1757 { 0x2, "STOP (memory reset)" },
1758 { 0x3, "STOP (self initialization)" },
1759 { 0x4, "STOP (internal)" },
1760 { 0x5, "Startup (complete restart)" },
1761 { 0x7, "Restart" },
1762 { 0x8, "RUN" },
1763 { 0xa, "HOLD" },
1764 { 0xd, "DEFECT" },
1765 { 0, NULL }
1767 static int ett_s7comm_szl_0424_0000_bzu_id;
1768 static int * const s7comm_szl_0424_0000_bzu_id_fields[] = {
1769 &hf_s7comm_szl_0424_0000_bzu_id_req,
1770 &hf_s7comm_szl_0424_0000_bzu_id_pre,
1771 NULL
1773 static int hf_s7comm_szl_0424_0000_res;
1774 static int hf_s7comm_szl_0424_0000_anlinfo1;
1775 static int hf_s7comm_szl_0424_0000_anlinfo2;
1776 static const value_string szl_0424_0000_anlinfo2_names[] = {
1777 { 0x01, "Complete restart in multicomputing" },
1778 { 0x03, "Complete restart set at mode selector" },
1779 { 0x04, "Complete restart command via MPI" },
1780 { 0x0a, "Restart in multicomputing" },
1781 { 0x0b, "Restart set at mode selector" },
1782 { 0x0c, "Restart command via MPI" },
1783 { 0x10, "Automatic complete restart after battery-backed power on" },
1784 { 0x13, "Complete restart set at mode selector; last power on battery backed" },
1785 { 0x14, "Complete restart command via MPI; last power on battery backed" },
1786 { 0x20, "Automatic complete restart after non battery backed power on (with memory reset by system)" },
1787 { 0x23, "Complete restart set at mode selector; last power on unbattery backed" },
1788 { 0x24, "Complete restart command via MPI; last power on unbattery backed" },
1789 { 0xa0, "Automatic restart after battery backed power on according to parameter assignment" },
1790 { 0, NULL }
1792 static int hf_s7comm_szl_0424_0000_anlinfo3;
1793 static int hf_s7comm_szl_0424_0000_anlinfo4;
1794 static const value_string szl_0424_0000_anlinfo4_names[] = {
1795 { 0x00, "No startup type" },
1796 { 0x01, "Complete restart in multicomputing" },
1797 { 0x03, "Complete restart due to switch setting" },
1798 { 0x04, "Complete restart command via MPI" },
1799 { 0x0a, "Restart in multicomputing" },
1800 { 0x0b, "Restart set at mode selector" },
1801 { 0x0c, "Restart command via MPI" },
1802 { 0x10, "Automatic complete restart after battery-backed power on" },
1803 { 0x13, "Complete restart set at mode selector; last power on battery backed" },
1804 { 0x14, "Complete restart command via MPI; last power on battery backed" },
1805 { 0x20, "Automatic complete restart after non battery backed power on (with memory reset by system)" },
1806 { 0x23, "Complete restart set at mode selector; last power on unbattery backed" },
1807 { 0x24, "Complete restart command via MPI; last power on unbattery backed" },
1808 { 0xa0, "Automatic restart after battery backed power on according to parameter assignment" },
1809 { 0, NULL }
1811 static int hf_s7comm_szl_0424_0000_time;
1813 static int hf_s7comm_szl_xy74_0000_cpu_led_id;
1814 static int hf_s7comm_szl_xy74_0000_cpu_led_id_rackno;
1815 static int hf_s7comm_szl_xy74_0000_cpu_led_id_cputype;
1816 static int hf_s7comm_szl_xy74_0000_cpu_led_id_id;
1817 static int hf_s7comm_szl_xy74_0000_led_on;
1818 static const value_string szl_xy74_0000_led_on_names[] = {
1819 { 0x0, "Off" },
1820 { 0x1, "On" },
1821 { 0, NULL }
1824 static int hf_s7comm_szl_xy74_0000_led_blink;
1825 static const value_string szl_xy74_0000_led_blink_names[] = {
1826 { 0x0, "Not flashing" },
1827 { 0x1, "Flashing normally (2 Hz)" },
1828 { 0x2, "Flashing slowly (0.5 Hz)" },
1829 { 0, NULL }
1832 /*******************************************************************************************************
1834 * Get the textual description of the szl index. Returns NULL if not description available
1836 *******************************************************************************************************/
1837 static const char*
1838 s7comm_get_szl_id_index_description_text(uint16_t id, uint16_t idx)
1840 const char* str = NULL;
1841 switch (id) {
1842 case 0x0111:
1843 str = val_to_str_const(idx, szl_0111_index_names, "No description available");
1844 break;
1845 case 0x0112:
1846 str = val_to_str_const(idx, szl_0112_index_names, "No description available");
1847 break;
1848 case 0x0113:
1849 str = val_to_str_const(idx, szl_0113_index_names, "No description available");
1850 break;
1851 case 0x0114:
1852 str = val_to_str_const(idx, szl_0114_index_names, "No description available");
1853 break;
1854 case 0x0115:
1855 str = val_to_str_const(idx, szl_0115_index_names, "No description available");
1856 break;
1857 case 0x0116:
1858 str = val_to_str_const(idx, szl_0116_index_names, "No description available");
1859 break;
1860 case 0x0118:
1861 str = val_to_str_const(idx, szl_0118_index_names, "No description available");
1862 break;
1863 case 0x0119:
1864 str = val_to_str_const(idx, szl_0119_0174_ledid_index_names, "No description available");
1865 break;
1866 case 0x0121:
1867 str = val_to_str_const(idx, szl_0121_index_names, "No description available");
1868 break;
1869 case 0x0222:
1870 str = val_to_str_const(idx, szl_0222_index_names, "No description available");
1871 break;
1872 case 0x0524:
1873 str = val_to_str_const(idx, szl_0524_index_names, "No description available");
1874 break;
1875 case 0x0131:
1876 str = val_to_str_const(idx, szl_0131_index_names, "No description available");
1877 break;
1878 case 0x0132:
1879 str = val_to_str_const(idx, szl_0132_index_names, "No description available");
1880 break;
1881 case 0x0174:
1882 str = val_to_str_const(idx, szl_0119_0174_ledid_index_names, "No description available");
1883 break;
1884 case 0x011c:
1885 case 0x031c:
1886 str = val_to_str_const(idx, szl_xy1c_index_names, "No description available");
1887 break;
1889 return str;
1892 /*******************************************************************************************************
1893 *******************************************************************************************************
1895 * PDU Type: User Data -> Function group 4 -> SZL functions -> All known SZD-ID and Indices
1897 *******************************************************************************************************
1898 *******************************************************************************************************/
1900 /*******************************************************************************************************
1902 * SZL-ID: 0xxy00
1903 * Content:
1904 * If you read the partial lists with SZL-ID W#16#xy00, you obtain the
1905 * SZL-IDs supported by the module.
1907 * The SZL-ID of the partial list extract
1908 * W#16#0000H: all SZL partial lists of the module
1909 * W#16#0100H: a partial list with all partial list extracts
1910 * W#16#0200H: a partial list extract
1911 * W#16#0300H: possible indexes of a partial list extract
1912 * W#16#0F00H: only partial list header information
1914 *******************************************************************************************************/
1915 static void
1916 s7comm_szl_0000_0000_register(int proto)
1918 static hf_register_info hf[] = {
1919 { &hf_s7comm_szl_0000_0000_szl_id,
1920 { "SZL ID that exists", "s7comm.szl.0000.0000.szl_id", FT_UINT16, BASE_HEX | BASE_EXT_STRING, &szl_id_partlist_ex_names_ext, 0x0,
1921 NULL, HFILL }},
1922 { &hf_s7comm_szl_0000_0000_module_type_class,
1923 { "Module type class", "s7comm.szl.0000.0000.module_type_class", FT_UINT16, BASE_HEX, NULL, 0xf000,
1924 NULL, HFILL }},
1925 { &hf_s7comm_szl_0000_0000_partlist_extr_nr,
1926 { "Number of the SZL partial list extract", "s7comm.szl.0000.0000.partlist_extr_nr", FT_UINT16, BASE_HEX, NULL, 0x0f00,
1927 NULL, HFILL }},
1928 { &hf_s7comm_szl_0000_0000_partlist_nr,
1929 { "Number of the SZL partial list", "s7comm.szl.0000.0000.partlist_nr", FT_UINT16, BASE_HEX, NULL, 0x00ff,
1930 NULL, HFILL }}
1932 proto_register_field_array(proto, hf, array_length(hf));
1935 /*----------------------------------------------------------------------------------------------------*/
1936 static uint32_t
1937 s7comm_decode_szl_id_xy00(tvbuff_t *tvb,
1938 proto_tree *tree,
1939 uint16_t id,
1940 uint16_t idx,
1941 uint32_t offset)
1943 if (id == 0 && idx == 0) {
1944 proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_szl_id, tvb, offset, 2, ENC_BIG_ENDIAN);
1945 offset += 2;
1946 } else if (id == 0x0100) {
1947 proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_module_type_class, tvb, offset, 2, ENC_BIG_ENDIAN);
1948 proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_partlist_nr, tvb, offset, 2, ENC_BIG_ENDIAN);
1949 offset += 2;
1950 } else if (id == 0x0200 || id == 0x0300) {
1951 proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_module_type_class, tvb, offset, 2, ENC_BIG_ENDIAN);
1952 proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_partlist_extr_nr, tvb, offset, 2, ENC_BIG_ENDIAN);
1953 proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_partlist_nr, tvb, offset, 2, ENC_BIG_ENDIAN);
1954 offset += 2;
1955 } else {
1956 /* 0x0f00 / 0x000: Partial list header information (number of all SZL-IDs of the module */
1957 proto_tree_add_item(tree, hf_s7comm_szl_0000_0000_szl_id, tvb, offset, 2, ENC_BIG_ENDIAN);
1958 offset += 2;
1961 return offset;
1964 /*******************************************************************************************************
1966 * SZL-ID: 0x0013
1967 * Index: 0x0000
1968 * Content:
1969 * If you read the partial list with SZL-ID W#16#xy13, you obtain information
1970 * about the memory areas of the module.
1972 * The SZL-ID of the partial list extract
1973 * W#16#0013: data records of all memory areas
1974 * W#16#0113: data record for one memory area, You specify the memory area with the INDEX parameter.
1975 * W#16#0F13: only partial list header information
1977 *******************************************************************************************************/
1978 static void
1979 s7comm_szl_0013_0000_register(int proto)
1981 static hf_register_info hf[] = {
1982 { &hf_s7comm_szl_0013_0000_index,
1983 { "Index", "s7comm.szl.0013.0000.index", FT_UINT16, BASE_HEX, VALS(szl_0113_index_names), 0x0,
1984 "Index of an identification data record", HFILL }},
1985 { &hf_s7comm_szl_0013_0000_code,
1986 { "Code (Memory type)", "s7comm.szl.0013.0000.code", FT_UINT16, BASE_HEX, VALS(szl_memory_type_names), 0x0,
1987 NULL, HFILL }},
1988 { &hf_s7comm_szl_0013_0000_size,
1989 { "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,
1990 NULL, HFILL }},
1991 { &hf_s7comm_szl_0013_0000_mode,
1992 { "Mode (Logical mode of the memory)", "s7comm.szl.0013.0000.mode", FT_UINT32, BASE_DEC, NULL, 0x0,
1993 NULL, HFILL }},
1994 { &hf_s7comm_szl_0013_0000_mode_0,
1995 { "Volatile memory area", "s7comm.szl.0013.0000.mode.vol_mem", FT_BOOLEAN, 8, NULL, 0x01,
1996 "Bit 0: Volatile memory area", HFILL }},
1997 { &hf_s7comm_szl_0013_0000_mode_1,
1998 { "Non-volatile memory area", "s7comm.szl.0013.0000.mode.nvol_mem", FT_BOOLEAN, 8, NULL, 0x02,
1999 "Bit 1: Non-volatile memory area", HFILL }},
2000 { &hf_s7comm_szl_0013_0000_mode_2,
2001 { "Mixed memory area", "s7comm.szl.0013.0000.mode.mixed_mem", FT_BOOLEAN, 8, NULL, 0x04,
2002 "Bit 2: Mixed memory area", HFILL }},
2003 { &hf_s7comm_szl_0013_0000_mode_3,
2004 { "Code and data separate (for work memory)", "s7comm.szl.0013.0000.mode.cd_sep", FT_BOOLEAN, 8, NULL, 0x08,
2005 "Bit 3: Code and data separate (for work memory)", HFILL }},
2006 { &hf_s7comm_szl_0013_0000_mode_4,
2007 { "Code and data together (for work memory)", "s7comm.szl.0013.0000.mode.cd_tog", FT_BOOLEAN, 8, NULL, 0x10,
2008 "Bit 4: Code and data together (for work memory)", HFILL }},
2009 { &hf_s7comm_szl_0013_0000_granu,
2010 { "Granu", "s7comm.szl.0013.0000.granu", FT_UINT16, BASE_HEX, NULL, 0x0,
2011 "Granu (Always has the value 0)", HFILL }},
2012 { &hf_s7comm_szl_0013_0000_ber1,
2013 { "ber1 (Size of the volatile memory area in bytes)", "s7comm.szl.0013.0000.ber1", FT_UINT32, BASE_DEC, NULL, 0x0,
2014 NULL, HFILL }},
2015 { &hf_s7comm_szl_0013_0000_belegt1,
2016 { "belegt1 (Size of the volatile memory area being used)", "s7comm.szl.0013.0000.belegt1", FT_UINT32, BASE_DEC, NULL, 0x0,
2017 NULL, HFILL }},
2018 { &hf_s7comm_szl_0013_0000_block1,
2019 { "block1 (Largest free block in the volatile memory area)", "s7comm.szl.0013.0000.block1", FT_UINT32, BASE_DEC, NULL, 0x0,
2020 NULL, HFILL }},
2021 { &hf_s7comm_szl_0013_0000_ber2,
2022 { "ber2 (Size of the non-volatile memory area in bytes)", "s7comm.szl.0013.0000.ber2", FT_UINT32, BASE_DEC, NULL, 0x0,
2023 NULL, HFILL }},
2024 { &hf_s7comm_szl_0013_0000_belegt2,
2025 { "belegt2 (Size of the non-volatile memory area being used)", "s7comm.szl.0013.0000.belegt2", FT_UINT32, BASE_DEC, NULL, 0x0,
2026 NULL, HFILL }},
2027 { &hf_s7comm_szl_0013_0000_block2,
2028 { "block2 (Largest free block in the non-volatile memory area)", "s7comm.szl.0013.0000.block2", FT_UINT32, BASE_DEC, NULL, 0x0,
2029 NULL, HFILL }}
2031 proto_register_field_array(proto, hf, array_length(hf));
2034 /*----------------------------------------------------------------------------------------------------*/
2035 static uint32_t
2036 s7comm_decode_szl_id_0013_idx_0000(tvbuff_t *tvb,
2037 proto_tree *tree,
2038 uint32_t offset)
2040 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2041 offset += 2;
2042 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2043 offset += 2;
2044 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_size, tvb, offset, 4, ENC_BIG_ENDIAN);
2045 offset += 4;
2046 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode, tvb, offset, 2, ENC_BIG_ENDIAN);
2047 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_0, tvb, offset, 2, ENC_BIG_ENDIAN);
2048 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_1, tvb, offset, 2, ENC_BIG_ENDIAN);
2049 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_2, tvb, offset, 2, ENC_BIG_ENDIAN);
2050 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_3, tvb, offset, 2, ENC_BIG_ENDIAN);
2051 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_mode_4, tvb, offset, 2, ENC_BIG_ENDIAN);
2052 offset += 2;
2053 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_granu, tvb, offset, 2, ENC_BIG_ENDIAN);
2054 offset += 2;
2055 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_ber1, tvb, offset, 4, ENC_BIG_ENDIAN);
2056 offset += 4;
2057 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_belegt1, tvb, offset, 4, ENC_BIG_ENDIAN);
2058 offset += 4;
2059 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_block1, tvb, offset, 4, ENC_BIG_ENDIAN);
2060 offset += 4;
2061 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_ber2, tvb, offset, 4, ENC_BIG_ENDIAN);
2062 offset += 4;
2063 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_belegt2, tvb, offset, 4, ENC_BIG_ENDIAN);
2064 offset += 4;
2065 proto_tree_add_item(tree, hf_s7comm_szl_0013_0000_block2, tvb, offset, 4, ENC_BIG_ENDIAN);
2066 offset += 4;
2068 return offset;
2071 /*******************************************************************************************************
2073 * SZL-ID: 0xxy14
2074 * Index: 0x000x
2075 * Content:
2076 * If you read the system status list with SZL-ID W#16#xy14, you obtain
2077 * information about the system areas of the module.
2079 *******************************************************************************************************/
2080 static void
2081 s7comm_szl_xy14_000x_register(int proto)
2083 static hf_register_info hf[] = {
2084 { &hf_s7comm_szl_xy14_000x_index,
2085 { "Index", "s7comm.szl.xy14.000x.index", FT_UINT16, BASE_HEX, VALS(szl_0114_index_names), 0x0,
2086 "Index of the system area", HFILL }},
2087 { &hf_s7comm_szl_xy14_000x_code,
2088 { "Code (Memory type)", "s7comm.szl.xy14.000x.code", FT_UINT16, BASE_HEX, VALS(szl_memory_type_names), 0x0,
2089 NULL, HFILL }},
2090 { &hf_s7comm_szl_xy14_000x_quantity,
2091 { "Quantity (Number of elements of the system area)", "s7comm.szl.xy14.000x.quantity", FT_UINT16, BASE_DEC, NULL, 0x0,
2092 NULL, HFILL }},
2093 { &hf_s7comm_szl_xy14_000x_reman,
2094 { "Reman (Number of retentive elements)", "s7comm.szl.xy14.000x.reman", FT_UINT16, BASE_DEC, NULL, 0x0,
2095 NULL, HFILL }}
2097 proto_register_field_array(proto, hf, array_length(hf));
2100 /*----------------------------------------------------------------------------------------------------*/
2101 static uint32_t
2102 s7comm_decode_szl_id_xy14_idx_000x(tvbuff_t *tvb,
2103 proto_tree *tree,
2104 uint32_t offset)
2106 proto_tree_add_item(tree, hf_s7comm_szl_xy14_000x_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2107 offset += 2;
2108 proto_tree_add_item(tree, hf_s7comm_szl_xy14_000x_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2109 offset += 2;
2110 proto_tree_add_item(tree, hf_s7comm_szl_xy14_000x_quantity, tvb, offset, 2, ENC_BIG_ENDIAN);
2111 offset += 2;
2112 proto_tree_add_item(tree, hf_s7comm_szl_xy14_000x_reman, tvb, offset, 2, ENC_BIG_ENDIAN);
2113 offset += 2;
2115 return offset;
2118 /*******************************************************************************************************
2120 * SZL-ID: 0xxy15
2121 * Index: 0x000x
2122 * Content:
2123 * If you read the system status list with SZL-ID W#16#xy14, you obtain
2124 * the block types that exist on the module.
2126 *******************************************************************************************************/
2127 static void
2128 s7comm_szl_xy15_000x_register(int proto)
2130 static hf_register_info hf[] = {
2131 { &hf_s7comm_szl_xy15_000x_index,
2132 { "Index", "s7comm.szl.xy15.000x.index", FT_UINT16, BASE_HEX, VALS(szl_0115_index_names), 0x0,
2133 "Block type number", HFILL }},
2134 { &hf_s7comm_szl_xy15_000x_maxanz,
2135 { "MaxAnz (Maximum number of blocks of the type)", "s7comm.szl.xy15.000x.maxanz", FT_UINT16, BASE_DEC, NULL, 0x0,
2136 NULL, HFILL }},
2137 { &hf_s7comm_szl_xy15_000x_maxlng,
2138 { "MaxLng (Maximum total size of the object to be loaded in Kbytes)", "s7comm.szl.xy15.000x.maxlng", FT_UINT16, BASE_DEC, NULL, 0x0,
2139 NULL, HFILL }},
2140 { &hf_s7comm_szl_xy15_000x_maxabl,
2141 { "MaxAbl (Maximum length of the work memory part of a block in bytes)", "s7comm.szl.xy15.000x.maxabl", FT_UINT32, BASE_DEC, NULL, 0x0,
2142 NULL, HFILL }}
2144 proto_register_field_array(proto, hf, array_length(hf));
2147 /*----------------------------------------------------------------------------------------------------*/
2148 static uint32_t
2149 s7comm_decode_szl_id_xy15_idx_000x(tvbuff_t *tvb,
2150 proto_tree *tree,
2151 uint32_t offset)
2153 proto_tree_add_item(tree, hf_s7comm_szl_xy15_000x_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2154 offset += 2;
2155 proto_tree_add_item(tree, hf_s7comm_szl_xy15_000x_maxanz, tvb, offset, 2, ENC_BIG_ENDIAN);
2156 offset += 2;
2157 proto_tree_add_item(tree, hf_s7comm_szl_xy15_000x_maxlng, tvb, offset, 2, ENC_BIG_ENDIAN);
2158 offset += 2;
2159 proto_tree_add_item(tree, hf_s7comm_szl_xy15_000x_maxabl, tvb, offset, 4, ENC_BIG_ENDIAN);
2160 offset += 4;
2162 return offset;
2165 /*******************************************************************************************************
2167 * SZL-ID: 0xxy11
2168 * Index: 0x0001
2169 * Content:
2170 * If you read the system status list with SZL-ID W#16#xy11, you obtain the
2171 * module identification of the module.
2173 *******************************************************************************************************/
2174 static void
2175 s7comm_szl_xy11_0001_register(int proto)
2177 static hf_register_info hf[] = {
2178 { &hf_s7comm_szl_xy11_0001_index,
2179 { "Index", "s7comm.szl.xy11.0001.index", FT_UINT16, BASE_HEX, VALS(szl_0111_index_names), 0x0,
2180 "Index of an identification data record", HFILL }},
2181 { &hf_s7comm_szl_xy11_0001_mlfb,
2182 { "MlfB (Order number of the module)", "s7comm.szl.xy11.0001.anz", FT_STRING, BASE_NONE, NULL, 0x0,
2183 NULL, HFILL }},
2184 { &hf_s7comm_szl_xy11_0001_bgtyp,
2185 { "BGTyp (Module type ID)", "s7comm.szl.xy11.0001.bgtyp", FT_UINT16, BASE_HEX, NULL, 0x0,
2186 NULL, HFILL }},
2187 { &hf_s7comm_szl_xy11_0001_ausbg,
2188 { "Ausbg (Version of the module or release of the operating system)", "s7comm.szl.xy11.0001.ausbg", FT_UINT16, BASE_DEC, NULL, 0x0,
2189 NULL, HFILL }},
2190 { &hf_s7comm_szl_xy11_0001_ausbe,
2191 { "Ausbe (Release of the PG description file)", "s7comm.szl.xy11.0001.ausbe", FT_UINT16, BASE_DEC, NULL, 0x0,
2192 NULL, HFILL }}
2194 proto_register_field_array(proto, hf, array_length(hf));
2197 /*----------------------------------------------------------------------------------------------------*/
2198 static uint32_t
2199 s7comm_decode_szl_id_0111_idx_0001(tvbuff_t *tvb,
2200 proto_tree *tree,
2201 uint32_t offset)
2203 proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2204 offset += 2;
2205 proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_mlfb, tvb, offset, 20, ENC_ASCII);
2206 offset += 20;
2207 proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_bgtyp, tvb, offset, 2, ENC_BIG_ENDIAN);
2208 offset += 2;
2209 proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_ausbg, tvb, offset, 2, ENC_BIG_ENDIAN);
2210 offset += 2;
2211 proto_tree_add_item(tree, hf_s7comm_szl_xy11_0001_ausbe, tvb, offset, 2, ENC_BIG_ENDIAN);
2212 offset += 2;
2214 return offset;
2217 /*******************************************************************************************************
2219 * SZL-ID: 0xxy22
2220 * Index: 0x00xx
2221 * Content:
2222 * Contains information about the current status of interrupt
2223 * processing and interrupt generation in the module.
2225 *******************************************************************************************************/
2226 static void
2227 s7comm_szl_xy22_00xx_register(int proto)
2229 static hf_register_info hf[] = {
2230 { &hf_s7comm_szl_xy22_00xx_info,
2231 { "Start info for the given OB", "s7comm.szl.xy22.00xx.info", FT_BYTES, BASE_NONE, NULL, 0x0,
2232 NULL, HFILL }},
2233 { &hf_s7comm_szl_xy22_00xx_al1,
2234 { "al1 (Processing identifiers)", "s7comm.szl.xy22.00xx.al1", FT_UINT16, BASE_HEX, NULL, 0x0,
2235 NULL, HFILL }},
2236 { &hf_s7comm_szl_xy22_00xx_al1_0,
2237 { "Interrupt event is caused by parameters disabled", "s7comm.szl.xy22.00xx.al1.evpd", FT_BOOLEAN, 16, NULL, 0x0001,
2238 "Bit 0: Interrupt event is caused by parameters, 0=Enabled, 1=Disabled", HFILL }},
2239 { &hf_s7comm_szl_xy22_00xx_al1_1,
2240 { "Interrupt event as per SFC 39 locked", "s7comm.szl.xy22.00xx.al1.iel", FT_BOOLEAN, 16, NULL, 0x0002,
2241 "Bit 1: Interrupt event as per SFC 39, 0=Not locked, 1=Locked", HFILL }},
2242 { &hf_s7comm_szl_xy22_00xx_al1_2,
2243 { "Interrupt source is active", "s7comm.szl.xy22.00xx.al1.isia", FT_BOOLEAN, 16, NULL, 0x0004,
2244 "Bit 2: Interrupt source is active", HFILL }},
2245 { &hf_s7comm_szl_xy22_00xx_al1_4,
2246 { "Interrupt OB is loaded", "s7comm.szl.xy22.00xx.al1.ioil", FT_BOOLEAN, 16, NULL, 0x0010,
2247 "Bit 4: Interrupt OB, 0=Is not loaded, 1=Is loaded", HFILL }},
2248 { &hf_s7comm_szl_xy22_00xx_al1_5,
2249 { "Interrupt OB is locked by TIS", "s7comm.szl.xy22.00xx.al1.ioilbt", FT_BOOLEAN, 16, NULL, 0x0020,
2250 "Bit 5: Interrupt OB is by TIS, 1=Locked", HFILL }},
2251 { &hf_s7comm_szl_xy22_00xx_al1_6,
2252 { "Entry in diagnostic buffer locked", "s7comm.szl.xy22.00xx.al1.eidbl", FT_BOOLEAN, 16, NULL, 0x0040,
2253 "Bit 6: Entry in diagnostic buffer, 1=Locked", HFILL }},
2254 { &hf_s7comm_szl_xy22_00xx_al2,
2255 { "al2 (Reaction with not loaded/locked OB)", "s7comm.szl.xy22.00xx.al2", FT_UINT16, BASE_HEX, NULL, 0x0,
2256 NULL, HFILL }},
2257 { &hf_s7comm_szl_xy22_00xx_al2_0,
2258 { "Lock interrupt source", "s7comm.szl.xy22.00xx.al2.lis", FT_BOOLEAN, 16, NULL, 0x0001,
2259 "Bit 0: Lock interrupt source", HFILL }},
2260 { &hf_s7comm_szl_xy22_00xx_al2_1,
2261 { "Generate interrupt event error", "s7comm.szl.xy22.00xx.al2.giee", FT_BOOLEAN, 16, NULL, 0x0002,
2262 "Bit 1: Generate interrupt event error", HFILL }},
2263 { &hf_s7comm_szl_xy22_00xx_al2_2,
2264 { "CPU goes into STOP mode", "s7comm.szl.xy22.00xx.al2.gism", FT_BOOLEAN, 16, NULL, 0x0004,
2265 "Bit 2: CPU goes into STOP mode", HFILL }},
2266 { &hf_s7comm_szl_xy22_00xx_al2_3,
2267 { "Interrupt only discarded", "s7comm.szl.xy22.00xx.al2.iod", FT_BOOLEAN, 16, NULL, 0x0008,
2268 "Bit 3: Interrupt only discarded", HFILL }},
2269 { &hf_s7comm_szl_xy22_00xx_al3,
2270 { "al3 (Discarded by TIS functions)", "s7comm.szl.xy22.00xx.al3", FT_UINT32, BASE_HEX, NULL, 0x0,
2271 NULL, HFILL }}
2273 proto_register_field_array(proto, hf, array_length(hf));
2276 /*----------------------------------------------------------------------------------------------------*/
2277 static uint32_t
2278 s7comm_decode_szl_id_xy22_idx_00xx(tvbuff_t *tvb,
2279 proto_tree *tree,
2280 uint32_t offset)
2282 proto_tree_add_item(tree, hf_s7comm_szl_xy22_00xx_info, tvb, offset, 20, ENC_NA);
2283 offset += 20;
2284 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_xy22_00xx_al1,
2285 ett_s7comm_szl_xy22_00xx_al1, s7comm_szl_xy22_00xx_al1_fields, ENC_BIG_ENDIAN);
2286 offset += 2;
2287 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_xy22_00xx_al2,
2288 ett_s7comm_szl_xy22_00xx_al2, s7comm_szl_xy22_00xx_al2_fields, ENC_BIG_ENDIAN);
2289 offset += 2;
2290 proto_tree_add_item(tree, hf_s7comm_szl_xy22_00xx_al3, tvb, offset, 4, ENC_BIG_ENDIAN);
2291 offset += 4;
2293 return offset;
2296 /*******************************************************************************************************
2298 * SZL-ID: 0x0131
2299 * Index: 0x0001
2300 * Content:
2301 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0001
2302 * contains general data about the communication of a communication unit.
2304 *******************************************************************************************************/
2305 static void
2306 s7comm_szl_0131_0001_register(int proto)
2308 static hf_register_info hf[] = {
2309 { &hf_s7comm_szl_0131_0001_index,
2310 { "Index", "s7comm.szl.0131.0001.index", FT_UINT16, BASE_HEX, NULL, 0x0,
2311 "W#16#0001: Index for general communication data", HFILL }},
2312 { &hf_s7comm_szl_0131_0001_pdu,
2313 { "pdu (Maximum PDU size in bytes)", "s7comm.szl.0131.0001.pdu", FT_UINT16, BASE_DEC, NULL, 0x0,
2314 "Maximum PDU size in bytes", HFILL }},
2315 { &hf_s7comm_szl_0131_0001_anz,
2316 { "anz (Maximum number of communication connections)", "s7comm.szl.0131.0001.anz", FT_UINT16, BASE_DEC, NULL, 0x0,
2317 "Maximum number of communication connections", HFILL }},
2318 { &hf_s7comm_szl_0131_0001_mpi_bps,
2319 { "mpi_bps (Maximum data rate of the MPI in hexadecimal format)", "s7comm.szl.0131.0001.mpi_bps", FT_UINT32, BASE_HEX, NULL, 0x0,
2320 "Maximum data rate of the MPI in hexadecimal format, Example: 0x2DC6C corresponds to 187500 bps", HFILL }},
2321 { &hf_s7comm_szl_0131_0001_kbus_bps,
2322 { "mkbus_bps (Maximum data rate of the communication bus)", "s7comm.szl.0131.0001.kbus_bps", FT_UINT32, BASE_HEX, NULL, 0x0,
2323 "Maximum data rate of the communication bus", HFILL }},
2324 { &hf_s7comm_szl_0131_0001_res,
2325 { "res (Reserved)", "s7comm.szl.0131.0001.res", FT_BYTES, BASE_NONE, NULL, 0x0,
2326 "Reserved", HFILL }}
2328 proto_register_field_array(proto, hf, array_length(hf));
2331 /*----------------------------------------------------------------------------------------------------*/
2332 static uint32_t
2333 s7comm_decode_szl_id_0131_idx_0001(tvbuff_t *tvb,
2334 proto_tree *tree,
2335 uint32_t offset)
2337 proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2338 offset += 2;
2339 proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_pdu, tvb, offset, 2, ENC_BIG_ENDIAN);
2340 offset += 2;
2341 proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_anz, tvb, offset, 2, ENC_BIG_ENDIAN);
2342 offset += 2;
2343 proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_mpi_bps, tvb, offset, 4, ENC_BIG_ENDIAN);
2344 offset += 4;
2345 proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_kbus_bps, tvb, offset, 4, ENC_BIG_ENDIAN);
2346 offset += 4;
2347 proto_tree_add_item(tree, hf_s7comm_szl_0131_0001_res, tvb, offset, 26, ENC_NA);
2348 offset += 26;
2350 return offset;
2353 /*******************************************************************************************************
2355 * SZL-ID: 0x0131
2356 * Index: 0x0002
2357 * Content:
2358 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0002
2359 * contains information about the test and installation constants of the module.
2361 *******************************************************************************************************/
2362 static void
2363 s7comm_szl_0131_0002_register(int proto)
2365 static hf_register_info hf[] = {
2366 { &hf_s7comm_szl_0131_0002_index,
2367 { "Index", "s7comm.szl.0131.0002.index", FT_UINT16, BASE_HEX, NULL, 0x0,
2368 "W#16#0002: test and installation", HFILL }},
2369 { &hf_s7comm_szl_0131_0002_funkt_0,
2370 { "funkt_0", "s7comm.szl.0131.0002.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
2371 "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
2372 { &hf_s7comm_szl_0131_0002_funkt_0_0,
2373 { "Reserved", "s7comm.szl.0131.0002.funkt_0.bit0_res", FT_BOOLEAN, 8, NULL, 0x01,
2374 "Bit 0: Reserved", HFILL }},
2375 { &hf_s7comm_szl_0131_0002_funkt_0_1,
2376 { "Block status", "s7comm.szl.0131.0002.funkt_0.block_stat", FT_BOOLEAN, 8, NULL, 0x02,
2377 "Bit 1: Block status", HFILL }},
2378 { &hf_s7comm_szl_0131_0002_funkt_0_2,
2379 { "Variable status", "s7comm.szl.0131.0002.funkt_0.var_stat", FT_BOOLEAN, 8, NULL, 0x04,
2380 "Bit 2: Variable status", HFILL }},
2381 { &hf_s7comm_szl_0131_0002_funkt_0_3,
2382 { "Output ISTACK", "s7comm.szl.0131.0002.funkt_0.outp_istack", FT_BOOLEAN, 8, NULL, 0x08,
2383 "Bit 3: Output ISTACK", HFILL }},
2384 { &hf_s7comm_szl_0131_0002_funkt_0_4,
2385 { "Output BSTACK", "s7comm.szl.0131.0002.funkt_0.outp_bstack", FT_BOOLEAN, 8, NULL, 0x10,
2386 "Bit 4: Output BSTACK", HFILL }},
2387 { &hf_s7comm_szl_0131_0002_funkt_0_5,
2388 { "Output LSTACK", "s7comm.szl.0131.0002.funkt_0.outp_lstack", FT_BOOLEAN, 8, NULL, 0x20,
2389 "Bit 5: Output LSTACK", HFILL }},
2390 { &hf_s7comm_szl_0131_0002_funkt_0_6,
2391 { "Time measurement from ... to ...", "s7comm.szl.0131.0002.funkt_0.time_meas", FT_BOOLEAN, 8, NULL, 0x40,
2392 "Bit 6: Time measurement from ... to ...", HFILL }},
2393 { &hf_s7comm_szl_0131_0002_funkt_0_7,
2394 { "Force selection", "s7comm.szl.0131.0002.funkt_0.force_sel", FT_BOOLEAN, 8, NULL, 0x80,
2395 "Bit 7: Force selection", HFILL }},
2396 { &hf_s7comm_szl_0131_0002_funkt_1,
2397 { "funkt_1", "s7comm.szl.0131.0002.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
2398 "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
2399 { &hf_s7comm_szl_0131_0002_funkt_1_0,
2400 { "Modify variable", "s7comm.szl.0131.0002.funkt_1.mod_var", FT_BOOLEAN, 8, NULL, 0x01,
2401 "Bit 0: Modify variable", HFILL }},
2402 { &hf_s7comm_szl_0131_0002_funkt_1_1,
2403 { "Force", "s7comm.szl.0131.0002.funkt_1.force", FT_BOOLEAN, 8, NULL, 0x02,
2404 "Bit 1: Force", HFILL }},
2405 { &hf_s7comm_szl_0131_0002_funkt_1_2,
2406 { "Breakpoint", "s7comm.szl.0131.0002.funkt_1.breakp", FT_BOOLEAN, 8, NULL, 0x04,
2407 "Bit 2: Breakpoint", HFILL }},
2408 { &hf_s7comm_szl_0131_0002_funkt_1_3,
2409 { "Exit HOLD", "s7comm.szl.0131.0002.funkt_1.exit_hold", FT_BOOLEAN, 8, NULL, 0x08,
2410 "Bit 3: Exit HOLD", HFILL }},
2411 { &hf_s7comm_szl_0131_0002_funkt_1_4,
2412 { "Memory reset", "s7comm.szl.0131.0002.funkt_1.mem_res", FT_BOOLEAN, 8, NULL, 0x10,
2413 "Bit 4: Memory reset", HFILL }},
2414 { &hf_s7comm_szl_0131_0002_funkt_1_5,
2415 { "Disable job", "s7comm.szl.0131.0002.funkt_1.dis_job", FT_BOOLEAN, 8, NULL, 0x20,
2416 "Bit 5: Disable job", HFILL }},
2417 { &hf_s7comm_szl_0131_0002_funkt_1_6,
2418 { "Enable job", "s7comm.szl.0131.0002.funkt_1.en_job", FT_BOOLEAN, 8, NULL, 0x40,
2419 "Bit 6: Enable job", HFILL }},
2420 { &hf_s7comm_szl_0131_0002_funkt_1_7,
2421 { "Delete job", "s7comm.szl.0131.0002.funkt_1.del_job", FT_BOOLEAN, 8, NULL, 0x80,
2422 "Bit 7: Delete job", HFILL }},
2423 { &hf_s7comm_szl_0131_0002_funkt_2,
2424 { "funkt_2", "s7comm.szl.0131.0002.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
2425 "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
2426 { &hf_s7comm_szl_0131_0002_funkt_2_0,
2427 { "Read job list", "s7comm.szl.0131.0002.funkt_2.rd_job_list", FT_BOOLEAN, 8, NULL, 0x01,
2428 "Bit 0: Read job list", HFILL }},
2429 { &hf_s7comm_szl_0131_0002_funkt_2_1,
2430 { "Read job", "s7comm.szl.0131.0002.funkt_2.rd_job", FT_BOOLEAN, 8, NULL, 0x02,
2431 "Bit 1: Read job", HFILL }},
2432 { &hf_s7comm_szl_0131_0002_funkt_2_2,
2433 { "Replace job", "s7comm.szl.0131.0002.funkt_2.repl_job", FT_BOOLEAN, 8, NULL, 0x04,
2434 "Bit 2: Replace job", HFILL }},
2435 { &hf_s7comm_szl_0131_0002_funkt_2_3,
2436 { "Block status v2", "s7comm.szl.0131.0002.funkt_2.block_stat_v2", FT_BOOLEAN, 8, NULL, 0x08,
2437 "Bit 3: Block status v2", HFILL }},
2438 { &hf_s7comm_szl_0131_0002_funkt_2_4,
2439 { "Reserved", "s7comm.szl.0131.0002.funkt_2.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
2440 "Bit 4: Reserved", HFILL }},
2441 { &hf_s7comm_szl_0131_0002_funkt_2_5,
2442 { "Reserved", "s7comm.szl.0131.0002.funkt_2.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
2443 "Bit 5: Reserved", HFILL }},
2444 { &hf_s7comm_szl_0131_0002_funkt_2_6,
2445 { "Flash LED", "s7comm.szl.0131.0002.funkt_2.flash_led", FT_BOOLEAN, 8, NULL, 0x40,
2446 "Bit 6: Flash LED", HFILL }},
2447 { &hf_s7comm_szl_0131_0002_funkt_2_7,
2448 { "Reserved", "s7comm.szl.0131.0002.funkt_2.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
2449 "Bit 7: Reserved", HFILL }},
2450 { &hf_s7comm_szl_0131_0002_funkt_3,
2451 { "funkt_3 (Reserved)", "s7comm.szl.0131.0002.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
2452 "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
2453 { &hf_s7comm_szl_0131_0002_funkt_4,
2454 { "funkt_4 (Reserved)", "s7comm.szl.0131.0002.funkt_4", FT_UINT8, BASE_HEX, NULL, 0x0,
2455 "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
2456 { &hf_s7comm_szl_0131_0002_funkt_5,
2457 { "funkt_5 (Reserved)", "s7comm.szl.0131.0002.funkt_5", FT_UINT8, BASE_HEX, NULL, 0x0,
2458 "Permitted TIS (Test and Installation) functions (bit = 1: function exists)", HFILL }},
2459 { &hf_s7comm_szl_0131_0002_aseg,
2460 { "aseg", "s7comm.szl.0131.0002.aseg", FT_BYTES, BASE_NONE, NULL, 0x0,
2461 "aseg (Non-relevant system data)", HFILL }},
2462 { &hf_s7comm_szl_0131_0002_eseg,
2463 { "eseg", "s7comm.szl.0131.0002.eseg", FT_BYTES, BASE_NONE, NULL, 0x0,
2464 "eseg (Non-relevant system data)", HFILL }},
2465 { &hf_s7comm_szl_0131_0002_trgereig_0,
2466 { "trgereig_0 (Permitted trigger events)", "s7comm.szl.0131.0002.trgereig_0", FT_UINT8, BASE_HEX, NULL, 0x0,
2467 NULL, HFILL }},
2468 { &hf_s7comm_szl_0131_0002_trgereig_0_0,
2469 { "Immediately", "s7comm.szl.0131.0002.trgereig_0.immed", FT_BOOLEAN, 8, NULL, 0x01,
2470 "Bit 0: immediately", HFILL }},
2471 { &hf_s7comm_szl_0131_0002_trgereig_0_1,
2472 { "System trigger", "s7comm.szl.0131.0002.trgereig_0.sys_trig", FT_BOOLEAN, 8, NULL, 0x02,
2473 "Bit 1: System trigger", HFILL }},
2474 { &hf_s7comm_szl_0131_0002_trgereig_0_2,
2475 { "System checkpoint main cycle start", "s7comm.szl.0131.0002.trgereig_0.sys_cp_mcs", FT_BOOLEAN, 8, NULL, 0x04,
2476 "Bit 2: System checkpoint main cycle start", HFILL }},
2477 { &hf_s7comm_szl_0131_0002_trgereig_0_3,
2478 { "System checkpoint main cycle end", "s7comm.szl.0131.0002.trgereig_0.sys_cp_mce", FT_BOOLEAN, 8, NULL, 0x08,
2479 "Bit 3: System checkpoint main cycle end", HFILL }},
2480 { &hf_s7comm_szl_0131_0002_trgereig_0_4,
2481 { "Mode transition RUN-STOP", "s7comm.szl.0131.0002.trgereig_0.mtrans_rs", FT_BOOLEAN, 8, NULL, 0x10,
2482 "Bit 4: Mode transition RUN-STOP", HFILL }},
2483 { &hf_s7comm_szl_0131_0002_trgereig_0_5,
2484 { "After code address", "s7comm.szl.0131.0002.trgereig_0.acode_adr", FT_BOOLEAN, 8, NULL, 0x20,
2485 "Bit 5: After code address", HFILL }},
2486 { &hf_s7comm_szl_0131_0002_trgereig_0_6,
2487 { "Code address area", "s7comm.szl.0131.0002.trgereig_0.code_adr_a", FT_BOOLEAN, 8, NULL, 0x40,
2488 "Bit 6: Code address area", HFILL }},
2489 { &hf_s7comm_szl_0131_0002_trgereig_0_7,
2490 { "Data address", "s7comm.szl.0131.0002.trgereig_0.data_adr", FT_BOOLEAN, 8, NULL, 0x80,
2491 "Bit 7: Data Address", HFILL }},
2492 { &hf_s7comm_szl_0131_0002_trgereig_1,
2493 { "trgereig_1 (Permitted trigger events)", "s7comm.szl.0131.0002.trgereig_1", FT_UINT8, BASE_HEX, NULL, 0x0,
2494 NULL, HFILL }},
2495 { &hf_s7comm_szl_0131_0002_trgereig_1_0,
2496 { "Data address area", "s7comm.szl.0131.0002.trgereig_1.data_adr_a", FT_BOOLEAN, 8, NULL, 0x01,
2497 "Bit 0: Data address area", HFILL }},
2498 { &hf_s7comm_szl_0131_0002_trgereig_1_1,
2499 { "Local data address", "s7comm.szl.0131.0002.trgereig_1.loc_adr", FT_BOOLEAN, 8, NULL, 0x02,
2500 "Bit 1: Local data address", HFILL }},
2501 { &hf_s7comm_szl_0131_0002_trgereig_1_2,
2502 { "Local data address area", "s7comm.szl.0131.0002.trgereig_1.loc_adr_a", FT_BOOLEAN, 8, NULL, 0x04,
2503 "Bit 2: Local data address area", HFILL }},
2504 { &hf_s7comm_szl_0131_0002_trgereig_1_3,
2505 { "Range trigger", "s7comm.szl.0131.0002.trgereig_1.range_trig", FT_BOOLEAN, 8, NULL, 0x08,
2506 "Bit 3: Range trigger", HFILL }},
2507 { &hf_s7comm_szl_0131_0002_trgereig_1_4,
2508 { "Before code address", "s7comm.szl.0131.0002.trgereig_1.bcode_adr", FT_BOOLEAN, 8, NULL, 0x10,
2509 "Bit 4: Before code address", HFILL }},
2510 { &hf_s7comm_szl_0131_0002_trgereig_1_5,
2511 { "Reserved", "s7comm.szl.0131.0002.trgereig_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
2512 "Bit 5: Reserved", HFILL }},
2513 { &hf_s7comm_szl_0131_0002_trgereig_1_6,
2514 { "Reserved", "s7comm.szl.0131.0002.trgereig_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
2515 "Bit 6: Reserved", HFILL }},
2516 { &hf_s7comm_szl_0131_0002_trgereig_1_7,
2517 { "Reserved", "s7comm.szl.0131.0002.trgereig_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
2518 "Bit 7: Reserved", HFILL }},
2519 { &hf_s7comm_szl_0131_0002_trgereig_2,
2520 { "trgereig_2 (Permitted trigger events, reserved)", "s7comm.szl.0131.0002.trgereig_2", FT_UINT8, BASE_HEX, NULL, 0x0,
2521 NULL, HFILL }},
2522 { &hf_s7comm_szl_0131_0002_trgbed,
2523 { "trgbed (System data with no relevance)", "s7comm.szl.0131.0002.trgbed", FT_UINT8, BASE_HEX, NULL, 0x0,
2524 NULL, HFILL }},
2525 { &hf_s7comm_szl_0131_0002_pfad,
2526 { "pfad (System data with no relevance)", "s7comm.szl.0131.0002.pfad", FT_UINT8, BASE_DEC, NULL, 0x0,
2527 NULL, HFILL }},
2528 { &hf_s7comm_szl_0131_0002_tiefe,
2529 { "tiefe (System data with no relevance)", "s7comm.szl.0131.0002.tiefe", FT_UINT8, BASE_DEC, NULL, 0x0,
2530 NULL, HFILL }},
2531 { &hf_s7comm_szl_0131_0002_systrig,
2532 { "systrig (System data with no relevance)", "s7comm.szl.0131.0002.systrig", FT_UINT8, BASE_HEX, NULL, 0x0,
2533 NULL, HFILL }},
2534 { &hf_s7comm_szl_0131_0002_erg_par,
2535 { "erg par (System data with no relevance)", "s7comm.szl.0131.0002.erg_par", FT_UINT8, BASE_HEX, NULL, 0x0,
2536 NULL, HFILL }},
2537 { &hf_s7comm_szl_0131_0002_erg_pat_1,
2538 { "erg pat 1 (System data with no relevance)", "s7comm.szl.0131.0002.erg_pat_1", FT_UINT16, BASE_HEX, NULL, 0x0,
2539 NULL, HFILL }},
2540 { &hf_s7comm_szl_0131_0002_erg_pat_2,
2541 { "erg pat 2 (System data with no relevance)", "s7comm.szl.0131.0002.erg_pat_2", FT_UINT16, BASE_HEX, NULL, 0x0,
2542 NULL, HFILL }},
2543 { &hf_s7comm_szl_0131_0002_force,
2544 { "force (Number of modifiable Variables)", "s7comm.szl.0131.0002.force", FT_UINT16, BASE_DEC, NULL, 0x0,
2545 NULL, HFILL }},
2546 { &hf_s7comm_szl_0131_0002_time,
2547 { "time", "s7comm.szl.0131.0002.time", FT_UINT16, BASE_HEX, NULL, 0x0,
2548 "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 }},
2549 { &hf_s7comm_szl_0131_0002_res,
2550 { "res (Reserved)", "s7comm.szl.0131.0002.res", FT_UINT32, BASE_HEX, NULL, 0x0,
2551 NULL, HFILL }}
2553 proto_register_field_array(proto, hf, array_length(hf));
2556 /*----------------------------------------------------------------------------------------------------*/
2557 static uint32_t
2558 s7comm_decode_szl_id_0131_idx_0002(tvbuff_t *tvb,
2559 proto_tree *tree,
2560 uint32_t offset)
2562 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2563 offset += 2;
2564 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_funkt_0,
2565 ett_s7comm_szl_0131_0002_funkt_0, s7comm_szl_0131_0002_funkt_0_fields, ENC_BIG_ENDIAN);
2566 offset += 1;
2567 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_funkt_1,
2568 ett_s7comm_szl_0131_0002_funkt_1, s7comm_szl_0131_0002_funkt_1_fields, ENC_BIG_ENDIAN);
2569 offset += 1;
2570 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_funkt_2,
2571 ett_s7comm_szl_0131_0002_funkt_2, s7comm_szl_0131_0002_funkt_2_fields, ENC_BIG_ENDIAN);
2572 offset += 1;
2573 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_funkt_3, tvb, offset, 1, ENC_BIG_ENDIAN);
2574 offset += 1;
2575 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_funkt_4, tvb, offset, 1, ENC_BIG_ENDIAN);
2576 offset += 1;
2577 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_funkt_5, tvb, offset, 1, ENC_BIG_ENDIAN);
2578 offset += 1;
2579 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_aseg, tvb, offset, 6, ENC_NA);
2580 offset += 6;
2581 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_eseg, tvb, offset, 6, ENC_NA);
2582 offset += 6;
2583 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_trgereig_0,
2584 ett_s7comm_szl_0131_0002_trgereig_0, s7comm_szl_0131_0002_trgereig_0_fields, ENC_BIG_ENDIAN);
2585 offset += 1;
2586 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0002_trgereig_1,
2587 ett_s7comm_szl_0131_0002_trgereig_1, s7comm_szl_0131_0002_trgereig_1_fields, ENC_BIG_ENDIAN);
2588 offset += 1;
2589 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_trgereig_2, tvb, offset, 1, ENC_BIG_ENDIAN);
2590 offset += 1;
2591 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_trgbed, tvb, offset, 1, ENC_BIG_ENDIAN);
2592 offset += 1;
2593 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_pfad, tvb, offset, 1, ENC_BIG_ENDIAN);
2594 offset += 1;
2595 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_tiefe, tvb, offset, 1, ENC_BIG_ENDIAN);
2596 offset += 1;
2597 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_systrig, tvb, offset, 1, ENC_BIG_ENDIAN);
2598 offset += 1;
2599 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_erg_par, tvb, offset, 1, ENC_BIG_ENDIAN);
2600 offset += 1;
2601 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_erg_pat_1, tvb, offset, 2, ENC_BIG_ENDIAN);
2602 offset += 2;
2603 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_erg_pat_2, tvb, offset, 2, ENC_BIG_ENDIAN);
2604 offset += 2;
2605 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_force, tvb, offset, 2, ENC_BIG_ENDIAN);
2606 offset += 2;
2607 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_time, tvb, offset, 2, ENC_BIG_ENDIAN);
2608 offset += 2;
2609 proto_tree_add_item(tree, hf_s7comm_szl_0131_0002_res, tvb, offset, 4, ENC_BIG_ENDIAN);
2610 offset += 4;
2612 return offset;
2615 /*******************************************************************************************************
2617 * SZL-ID: 0x0131
2618 * Index: 0x0003
2619 * Content:
2620 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0003
2621 * contains information about the communication parameters of the module for
2622 * connection to a unit for operator interface functions.
2624 *******************************************************************************************************/
2625 static void
2626 s7comm_szl_0131_0003_register(int proto)
2628 static hf_register_info hf[] = {
2629 { &hf_s7comm_szl_0131_0003_index,
2630 { "Index", "s7comm.szl.0131.0003.index", FT_UINT16, BASE_HEX, NULL, 0x0,
2631 "W#16#0003: Index for operator interface functions", HFILL }},
2632 { &hf_s7comm_szl_0131_0003_funkt_0,
2633 { "funkt_0", "s7comm.szl.0131.0003.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
2634 "Bits indicating the available functions (bit = 1: function exists)", HFILL }},
2635 { &hf_s7comm_szl_0131_0003_funkt_0_0,
2636 { "Read once", "s7comm.szl.0131.0003.funkt_0.read_once", FT_BOOLEAN, 8, NULL, 0x01,
2637 "Bit 0: Read once", HFILL }},
2638 { &hf_s7comm_szl_0131_0003_funkt_0_1,
2639 { "Write once", "s7comm.szl.0131.0003.funkt_0.write_once", FT_BOOLEAN, 8, NULL, 0x02,
2640 "Bit 1: Write once", HFILL }},
2641 { &hf_s7comm_szl_0131_0003_funkt_0_2,
2642 { "Initialize cyclic reading (start implicitly)", "s7comm.szl.0131.0003.funkt_0.init_cycl_read_impl", FT_BOOLEAN, 8, NULL, 0x04,
2643 "Bit 2: Initialize cyclic reading (start implicitly)", HFILL }},
2644 { &hf_s7comm_szl_0131_0003_funkt_0_3,
2645 { "Initialize cyclic reading (start explicitly)", "s7comm.szl.0131.0003.funkt_0.init_cycl_read_expl", FT_BOOLEAN, 8, NULL, 0x08,
2646 "Bit 3: Initialize cyclic reading (start explicitly)", HFILL }},
2647 { &hf_s7comm_szl_0131_0003_funkt_0_4,
2648 { "Start cyclic reading", "s7comm.szl.0131.0003.funkt_0.start_cycl_read", FT_BOOLEAN, 8, NULL, 0x10,
2649 "Bit 4: Start cyclic reading", HFILL }},
2650 { &hf_s7comm_szl_0131_0003_funkt_0_5,
2651 { "Stop cyclic reading", "s7comm.szl.0131.0003.funkt_0.stop_cycl_read", FT_BOOLEAN, 8, NULL, 0x20,
2652 "Bit 5: Stop cyclic reading", HFILL }},
2653 { &hf_s7comm_szl_0131_0003_funkt_0_6,
2654 { "Clear cyclic reading", "s7comm.szl.0131.0002.funkt_0.clr_cycl_read", FT_BOOLEAN, 8, NULL, 0x40,
2655 "Bit 6: Clear cyclic reading", HFILL }},
2656 { &hf_s7comm_szl_0131_0003_funkt_0_7,
2657 { "Reserved", "s7comm.szl.0131.0002.funkt_0.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
2658 "Bit 7: Reserved", HFILL }},
2659 { &hf_s7comm_szl_0131_0003_funkt_1,
2660 { "funkt_1", "s7comm.szl.0131.0003.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
2661 "Bits indicating the available functions (bit = 1: function exists)", HFILL }},
2662 { &hf_s7comm_szl_0131_0003_funkt_1_0,
2663 { "Reserved", "s7comm.szl.0131.0003.funkt_1.bit0_res", FT_BOOLEAN, 8, NULL, 0x01,
2664 "Bit 0: Reserved", HFILL }},
2665 { &hf_s7comm_szl_0131_0003_funkt_1_1,
2666 { "Reserved", "s7comm.szl.0131.0003.funkt_1.bit1_res", FT_BOOLEAN, 8, NULL, 0x02,
2667 "Bit 1: Reserved", HFILL }},
2668 { &hf_s7comm_szl_0131_0003_funkt_1_2,
2669 { "Reserved", "s7comm.szl.0131.0003.funkt_1.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
2670 "Bit 2: Reserved", HFILL }},
2671 { &hf_s7comm_szl_0131_0003_funkt_1_3,
2672 { "Reserved", "s7comm.szl.0131.0003.funkt_1.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
2673 "Bit 3: Reserved", HFILL }},
2674 { &hf_s7comm_szl_0131_0003_funkt_1_4,
2675 { "Peripheral I/Os", "s7comm.szl.0131.0003.funkt_1.periph_io", FT_BOOLEAN, 8, NULL, 0x10,
2676 "Bit 4: Peripheral I/Os", HFILL }},
2677 { &hf_s7comm_szl_0131_0003_funkt_1_5,
2678 { "Inputs", "s7comm.szl.0131.0003.funkt_1.inputs", FT_BOOLEAN, 8, NULL, 0x20,
2679 "Bit 5: Inputs", HFILL }},
2680 { &hf_s7comm_szl_0131_0003_funkt_1_6,
2681 { "Outputs", "s7comm.szl.0131.0002.funkt_1.outputs", FT_BOOLEAN, 8, NULL, 0x40,
2682 "Bit 6: Outputs", HFILL }},
2683 { &hf_s7comm_szl_0131_0003_funkt_1_7,
2684 { "Bit memory", "s7comm.szl.0131.0002.funkt_1.bit_mem", FT_BOOLEAN, 8, NULL, 0x80,
2685 "Bit 7: Bit memory", HFILL }},
2686 { &hf_s7comm_szl_0131_0003_funkt_2,
2687 { "funkt_2", "s7comm.szl.0131.0003.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
2688 "Bits indicating the available functions (bit = 1: function exists)", HFILL }},
2689 { &hf_s7comm_szl_0131_0003_funkt_2_0,
2690 { "User DB", "s7comm.szl.0131.0003.funkt_2.user_db", FT_BOOLEAN, 8, NULL, 0x01,
2691 "Bit 0: User DB", HFILL }},
2692 { &hf_s7comm_szl_0131_0003_funkt_2_1,
2693 { "Data record", "s7comm.szl.0131.0003.funkt_2.data_rec", FT_BOOLEAN, 8, NULL, 0x02,
2694 "Bit 1: Data record", HFILL }},
2695 { &hf_s7comm_szl_0131_0003_funkt_2_2,
2696 { "Reserved", "s7comm.szl.0131.0003.funkt_2.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
2697 "Bit 2: Reserved", HFILL }},
2698 { &hf_s7comm_szl_0131_0003_funkt_2_3,
2699 { "Reserved", "s7comm.szl.0131.0003.funkt_2.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
2700 "Bit 3: Reserved", HFILL }},
2701 { &hf_s7comm_szl_0131_0003_funkt_2_4,
2702 { "Reserved", "s7comm.szl.0131.0003.funkt_2.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
2703 "Bit 4: Reserved", HFILL }},
2704 { &hf_s7comm_szl_0131_0003_funkt_2_5,
2705 { "Reserved", "s7comm.szl.0131.0003.funkt_2.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
2706 "Bit 5: Reserved", HFILL }},
2707 { &hf_s7comm_szl_0131_0003_funkt_2_6,
2708 { "Reserved", "s7comm.szl.0131.0002.funkt_2.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
2709 "Bit 6: Reserved", HFILL }},
2710 { &hf_s7comm_szl_0131_0003_funkt_2_7,
2711 { "S7 counter", "s7comm.szl.0131.0002.funkt_2.s7_counter", FT_BOOLEAN, 8, NULL, 0x80,
2712 "Bit 7: S7 counter", HFILL }},
2713 { &hf_s7comm_szl_0131_0003_funkt_3,
2714 { "funkt_3", "s7comm.szl.0131.0003.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
2715 "Bits indicating the available functions (bit = 1: function exists)", HFILL }},
2716 { &hf_s7comm_szl_0131_0003_funkt_3_0,
2717 { "S7 timer", "s7comm.szl.0131.0003.funkt_3.s7_timer", FT_BOOLEAN, 8, NULL, 0x01,
2718 "Bit 0: S7 timer", HFILL }},
2719 { &hf_s7comm_szl_0131_0003_funkt_3_1,
2720 { "IEC counter", "s7comm.szl.0131.0003.funkt_3.iec_counter", FT_BOOLEAN, 8, NULL, 0x02,
2721 "Bit 1: IEC counter", HFILL }},
2722 { &hf_s7comm_szl_0131_0003_funkt_3_2,
2723 { "IEC timer", "s7comm.szl.0131.0003.funkt_3.iec_timer", FT_BOOLEAN, 8, NULL, 0x04,
2724 "Bit 2: IEC timer", HFILL }},
2725 { &hf_s7comm_szl_0131_0003_funkt_3_3,
2726 { "High speed counter", "s7comm.szl.0131.0003.funkt_3.hs_counter", FT_BOOLEAN, 8, NULL, 0x08,
2727 "Bit 3: High speed counter", HFILL }},
2728 { &hf_s7comm_szl_0131_0003_funkt_3_4,
2729 { "Reserved", "s7comm.szl.0131.0003.funkt_3.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
2730 "Bit 4: Reserved", HFILL }},
2731 { &hf_s7comm_szl_0131_0003_funkt_3_5,
2732 { "Reserved", "s7comm.szl.0131.0003.funkt_3.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
2733 "Bit 5: Reserved", HFILL }},
2734 { &hf_s7comm_szl_0131_0003_funkt_3_6,
2735 { "Reserved", "s7comm.szl.0131.0002.funkt_3.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
2736 "Bit 6: Reserved", HFILL }},
2737 { &hf_s7comm_szl_0131_0003_funkt_3_7,
2738 { "Reserved", "s7comm.szl.0131.0002.funkt_3.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
2739 "Bit 7: Reserved", HFILL }},
2740 { &hf_s7comm_szl_0131_0003_data,
2741 { "data (Maximum size of consistently readable data)", "s7comm.szl.0131.0003.data", FT_UINT16, BASE_DEC, NULL, 0x0,
2742 NULL, HFILL }},
2743 { &hf_s7comm_szl_0131_0003_anz,
2744 { "anz (Maximum number of cyclic read jobs)", "s7comm.szl.0131.0003.anz", FT_UINT16, BASE_DEC, NULL, 0x0,
2745 NULL, HFILL }},
2746 { &hf_s7comm_szl_0131_0003_per_min,
2747 { "per min (Minimum period for cyclic read jobs (n x 100 ms))", "s7comm.szl.0131.0003.per_min", FT_UINT16, BASE_DEC, NULL, 0x0,
2748 NULL, HFILL }},
2749 { &hf_s7comm_szl_0131_0003_per_max,
2750 { "per max (Maximum period for cyclic read jobs (n x 100 ms))", "s7comm.szl.0131.0003.per_max", FT_UINT16, BASE_DEC, NULL, 0x0,
2751 NULL, HFILL }},
2752 { &hf_s7comm_szl_0131_0003_res,
2753 { "res (Reserved)", "s7comm.szl.0131.0003.res", FT_BYTES, BASE_NONE, NULL, 0x0,
2754 NULL, HFILL }}
2756 proto_register_field_array(proto, hf, array_length(hf));
2759 /*----------------------------------------------------------------------------------------------------*/
2760 static uint32_t
2761 s7comm_decode_szl_id_0131_idx_0003(tvbuff_t *tvb,
2762 proto_tree *tree,
2763 uint32_t offset)
2765 proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2766 offset += 2;
2767 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0003_funkt_0,
2768 ett_s7comm_szl_0131_0003_funkt_0, s7comm_szl_0131_0003_funkt_0_fields, ENC_BIG_ENDIAN);
2769 offset += 1;
2770 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0003_funkt_1,
2771 ett_s7comm_szl_0131_0003_funkt_1, s7comm_szl_0131_0003_funkt_1_fields, ENC_BIG_ENDIAN);
2772 offset += 1;
2773 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0003_funkt_2,
2774 ett_s7comm_szl_0131_0003_funkt_2, s7comm_szl_0131_0003_funkt_2_fields, ENC_BIG_ENDIAN);
2775 offset += 1;
2776 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0003_funkt_3,
2777 ett_s7comm_szl_0131_0003_funkt_3, s7comm_szl_0131_0003_funkt_3_fields, ENC_BIG_ENDIAN);
2778 offset += 1;
2779 proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_data, tvb, offset, 2, ENC_BIG_ENDIAN);
2780 offset += 2;
2781 proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_anz, tvb, offset, 2, ENC_BIG_ENDIAN);
2782 offset += 2;
2783 proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_per_min, tvb, offset, 2, ENC_BIG_ENDIAN);
2784 offset += 2;
2785 proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_per_max, tvb, offset, 2, ENC_BIG_ENDIAN);
2786 offset += 2;
2787 proto_tree_add_item(tree, hf_s7comm_szl_0131_0003_res, tvb, offset, 26, ENC_NA);
2788 offset += 26;
2790 return offset;
2793 /*******************************************************************************************************
2795 * SZL-ID: 0x0131
2796 * Index: 0x0004
2797 * Content:
2798 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0004
2799 * contains information about the object management system (OMS) of the
2800 * module.
2802 *******************************************************************************************************/
2803 static void
2804 s7comm_szl_0131_0004_register(int proto)
2806 static hf_register_info hf[] = {
2807 { &hf_s7comm_szl_0131_0004_index,
2808 { "Index", "s7comm.szl.0131.0004.index", FT_UINT16, BASE_HEX, NULL, 0x0,
2809 "W#16#0004 Index for OMS", HFILL }},
2810 { &hf_s7comm_szl_0131_0004_funkt_0,
2811 { "funkt_0", "s7comm.szl.0131.0004.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
2812 "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
2813 { &hf_s7comm_szl_0131_0004_funkt_0_0,
2814 { "Reserved", "s7comm.szl.0131.0004.funkt_0.bit0_res", FT_BOOLEAN, 8, NULL, 0x01,
2815 "Bit 0: Reserved", HFILL }},
2816 { &hf_s7comm_szl_0131_0004_funkt_0_1,
2817 { "Directory (hierarchy 1)", "s7comm.szl.0131.0004.funkt_0.dir_h1", FT_BOOLEAN, 8, NULL, 0x02,
2818 "Bit 1: Directory (hierarchy 1)", HFILL }},
2819 { &hf_s7comm_szl_0131_0004_funkt_0_2,
2820 { "Directory (hierarchy 2)", "s7comm.szl.0131.0004.funkt_0.dir_h2", FT_BOOLEAN, 8, NULL, 0x04,
2821 "Bit 2: Directory (hierarchy 2)", HFILL }},
2822 { &hf_s7comm_szl_0131_0004_funkt_0_3,
2823 { "Directory (hierarchy 3)", "s7comm.szl.0131.0004.funkt_0.dir_h3", FT_BOOLEAN, 8, NULL, 0x08,
2824 "Bit 3: Directory (hierarchy 3)", HFILL }},
2825 { &hf_s7comm_szl_0131_0004_funkt_0_4,
2826 { "Copy", "s7comm.szl.0131.0004.funkt_0.copy", FT_BOOLEAN, 8, NULL, 0x10,
2827 "Bit 4: Copy", HFILL }},
2828 { &hf_s7comm_szl_0131_0004_funkt_0_5,
2829 { "Chain (list)", "s7comm.szl.0131.0004.funkt_0.chain_list", FT_BOOLEAN, 8, NULL, 0x20,
2830 "Bit 5: Chain (list)", HFILL }},
2831 { &hf_s7comm_szl_0131_0004_funkt_0_6,
2832 { "Chain (all copied)", "s7comm.szl.0131.0004.funkt_0.chain_copied", FT_BOOLEAN, 8, NULL, 0x40,
2833 "Bit 6: Chain (all copied)", HFILL }},
2834 { &hf_s7comm_szl_0131_0004_funkt_0_7,
2835 { "Delete (list)", "s7comm.szl.0131.0004.funkt_0.delete_list", FT_BOOLEAN, 8, NULL, 0x80,
2836 "Bit 7: Delete (list)", HFILL }},
2837 { &hf_s7comm_szl_0131_0004_funkt_1,
2838 { "funkt_1", "s7comm.szl.0131.0004.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
2839 "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
2840 { &hf_s7comm_szl_0131_0004_funkt_1_0,
2841 { "Upload on PG", "s7comm.szl.0131.0004.funkt_1.upl_on_pg", FT_BOOLEAN, 8, NULL, 0x01,
2842 "Bit 0: Upload on PG", HFILL }},
2843 { &hf_s7comm_szl_0131_0004_funkt_1_1,
2844 { "Assign parameters when chaining", "s7comm.szl.0131.0004.funkt_1.asgn_w_chain", FT_BOOLEAN, 8, NULL, 0x02,
2845 "Bit 1: Assign parameters when chaining", HFILL }},
2846 { &hf_s7comm_szl_0131_0004_funkt_1_2,
2847 { "LOAD function when exchanging data with CFBs", "s7comm.szl.0131.0004.funkt_1.load_w_chg", FT_BOOLEAN, 8, NULL, 0x04,
2848 "Bit 2: LOAD function when exchanging data with CFBs", HFILL }},
2849 { &hf_s7comm_szl_0131_0004_funkt_1_3,
2850 { "Reserved", "s7comm.szl.0131.0004.funkt_1.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
2851 "Bit 3: Reserved", HFILL }},
2852 { &hf_s7comm_szl_0131_0004_funkt_1_4,
2853 { "Reserved", "s7comm.szl.0131.0004.funkt_1.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
2854 "Bit 4: Reserved", HFILL }},
2855 { &hf_s7comm_szl_0131_0004_funkt_1_5,
2856 { "Reserved", "s7comm.szl.0131.0004.funkt_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
2857 "Bit 5: Reserved", HFILL }},
2858 { &hf_s7comm_szl_0131_0004_funkt_1_6,
2859 { "Reserved", "s7comm.szl.0131.0004.funkt_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
2860 "Bit 6: Reserved", HFILL }},
2861 { &hf_s7comm_szl_0131_0004_funkt_1_7,
2862 { "Delete *.*", "s7comm.szl.0131.0004.funkt_1.delete_all", FT_BOOLEAN, 8, NULL, 0x80,
2863 "Bit 7: Delete *.*", HFILL }},
2864 { &hf_s7comm_szl_0131_0004_funkt_2,
2865 { "funkt_2", "s7comm.szl.0131.0004.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
2866 "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
2867 { &hf_s7comm_szl_0131_0004_funkt_2_0,
2868 { "Load user program (RAM)", "s7comm.szl.0131.0004.funkt_2.load_ram", FT_BOOLEAN, 8, NULL, 0x01,
2869 "Bit 0: Load user program (RAM)", HFILL }},
2870 { &hf_s7comm_szl_0131_0004_funkt_2_1,
2871 { "Load user program (EPROM)", "s7comm.szl.0131.0004.funkt_2.load_eprom", FT_BOOLEAN, 8, NULL, 0x02,
2872 "Bit 1: Load user program (EPROM)", HFILL }},
2873 { &hf_s7comm_szl_0131_0004_funkt_2_2,
2874 { "Save user program (RAM)", "s7comm.szl.0131.0004.funkt_2.save_ram", FT_BOOLEAN, 8, NULL, 0x04,
2875 "Bit 2: Save user program (RAM)", HFILL }},
2876 { &hf_s7comm_szl_0131_0004_funkt_2_3,
2877 { "Save user program (EPROM)", "s7comm.szl.0131.0004.funkt_2.save_eprom", FT_BOOLEAN, 8, NULL, 0x08,
2878 "Bit 3: Save user program (EPROM)", HFILL }},
2879 { &hf_s7comm_szl_0131_0004_funkt_2_4,
2880 { "Save user program (all)", "s7comm.szl.0131.0004.funkt_2.save_all", FT_BOOLEAN, 8, NULL, 0x10,
2881 "Bit 4: Save user program (all)", HFILL }},
2882 { &hf_s7comm_szl_0131_0004_funkt_2_5,
2883 { "Compress (external)", "s7comm.szl.0131.0004.funkt_2.compress", FT_BOOLEAN, 8, NULL, 0x20,
2884 "Bit 5: Compress (external)", HFILL }},
2885 { &hf_s7comm_szl_0131_0004_funkt_2_6,
2886 { "Firmware update (using communication)", "s7comm.szl.0131.0004.funkt_2.fw_update", FT_BOOLEAN, 8, NULL, 0x40,
2887 "Bit 6: Firmware update (using communication)", HFILL }},
2888 { &hf_s7comm_szl_0131_0004_funkt_2_7,
2889 { "Set RAM memory mode", "s7comm.szl.0131.0004.funkt_2.set_ram_mode", FT_BOOLEAN, 8, NULL, 0x80,
2890 "Bit 7: Set RAM memory mode", HFILL }},
2891 { &hf_s7comm_szl_0131_0004_funkt_3,
2892 { "funkt_3", "s7comm.szl.0131.0004.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
2893 "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
2894 { &hf_s7comm_szl_0131_0004_funkt_3_0,
2895 { "Set EPROM memory mode", "s7comm.szl.0131.0004.funkt_3.set_eprom_mode", FT_BOOLEAN, 8, NULL, 0x01,
2896 "Bit 0: Set EPROM memory mode", HFILL }},
2897 { &hf_s7comm_szl_0131_0004_funkt_3_1,
2898 { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit1_res", FT_BOOLEAN, 8, NULL, 0x02,
2899 "Bit 1: Reserved", HFILL }},
2900 { &hf_s7comm_szl_0131_0004_funkt_3_2,
2901 { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
2902 "Bit 2: Reserved", HFILL }},
2903 { &hf_s7comm_szl_0131_0004_funkt_3_3,
2904 { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
2905 "Bit 3: Reserved", HFILL }},
2906 { &hf_s7comm_szl_0131_0004_funkt_3_4,
2907 { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
2908 "Bit 4: Reserved", HFILL }},
2909 { &hf_s7comm_szl_0131_0004_funkt_3_5,
2910 { "Reserved", "s7comm.szl.0131.0004.funkt_3.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
2911 "Bit 5: Reserved", HFILL }},
2912 { &hf_s7comm_szl_0131_0004_funkt_3_6,
2913 { "Assign parameters to newly plugged in modules", "s7comm.szl.0131.0004.funkt_3.asgn_par_mod", FT_BOOLEAN, 8, NULL, 0x40,
2914 "Bit 6: Assign parameters to newly plugged in modules", HFILL }},
2915 { &hf_s7comm_szl_0131_0004_funkt_3_7,
2916 { "Assign parameters when evaluating memory card", "s7comm.szl.0131.0004.funkt_3.asgn_par_mc", FT_BOOLEAN, 8, NULL, 0x80,
2917 "Bit 7: Assign parameters when evaluating memory card", HFILL }},
2918 { &hf_s7comm_szl_0131_0004_funkt_4,
2919 { "funkt_4", "s7comm.szl.0131.0004.funkt_4", FT_UINT8, BASE_HEX, NULL, 0x0,
2920 "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
2921 { &hf_s7comm_szl_0131_0004_funkt_4_0,
2922 { "Assign parameters when loading user program", "s7comm.szl.0131.0004.funkt_4.asgn_par_lprog", FT_BOOLEAN, 8, NULL, 0x01,
2923 "Bit 0: Assign parameters when loading user program", HFILL }},
2924 { &hf_s7comm_szl_0131_0004_funkt_4_1,
2925 { "Assign parameters in complete restart", "s7comm.szl.0131.0004.funkt_4.asgn_par_cres", FT_BOOLEAN, 8, NULL, 0x02,
2926 "Bit 1: Assign parameters in complete restart", HFILL }},
2927 { &hf_s7comm_szl_0131_0004_funkt_4_2,
2928 { "Assign parameters in restart", "s7comm.szl.0131.0004.funkt_4.asgn_par_res", FT_BOOLEAN, 8, NULL, 0x04,
2929 "Bit 2: Assign parameters in restart", HFILL }},
2930 { &hf_s7comm_szl_0131_0004_funkt_4_3,
2931 { "Compress (SFC25 COMPRESS)", "s7comm.szl.0131.0004.funkt_4.compress", FT_BOOLEAN, 8, NULL, 0x08,
2932 "Bit 3: Compress (SFC25 COMPRESS)", HFILL }},
2933 { &hf_s7comm_szl_0131_0004_funkt_4_4,
2934 { "Evaluate memory card after switch setting", "s7comm.szl.0131.0004.funkt_4.ev_mc", FT_BOOLEAN, 8, NULL, 0x10,
2935 "Bit 4: Evaluate memory card after switch setting", HFILL }},
2936 { &hf_s7comm_szl_0131_0004_funkt_4_5,
2937 { "Firmware update using memory card", "s7comm.szl.0131.0004.funkt_4.fw_update_mc", FT_BOOLEAN, 8, NULL, 0x20,
2938 "Bit 5: Firmware update using memory card", HFILL }},
2939 { &hf_s7comm_szl_0131_0004_funkt_4_6,
2940 { "Reserved", "s7comm.szl.0131.0004.funkt_4.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
2941 "Bit 6: Reserved", HFILL }},
2942 { &hf_s7comm_szl_0131_0004_funkt_4_7,
2943 { "Reserved", "s7comm.szl.0131.0004.funkt_4.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
2944 "Bit 7: Reserved", HFILL }},
2945 { &hf_s7comm_szl_0131_0004_funkt_5,
2946 { "funkt_5 (Reserved)", "s7comm.szl.0131.0004.funkt_5", FT_UINT8, BASE_HEX, NULL, 0x0,
2947 "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
2948 { &hf_s7comm_szl_0131_0004_funkt_6,
2949 { "funkt_6 (Reserved)", "s7comm.szl.0131.0004.funkt_6", FT_UINT8, BASE_HEX, NULL, 0x0,
2950 "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
2951 { &hf_s7comm_szl_0131_0004_funkt_7,
2952 { "funkt_7 (Reserved)", "s7comm.szl.0131.0004.funkt_7", FT_UINT8, BASE_HEX, NULL, 0x0,
2953 "Available object management system functions: (Bit = 1: functions available on the CPU)", HFILL }},
2954 { &hf_s7comm_szl_0131_0004_kop,
2955 { "kop (Maximum number of copied blocks)", "s7comm.szl.0131.0004.kop", FT_UINT8, BASE_DEC, NULL, 0x0,
2956 NULL, HFILL }},
2957 { &hf_s7comm_szl_0131_0004_del,
2958 { "del (Maximum number of uninterruptable, deletable blocks)", "s7comm.szl.0131.0004.del", FT_UINT8, BASE_DEC, NULL, 0x0,
2959 NULL, HFILL }},
2960 { &hf_s7comm_szl_0131_0004_kett,
2961 { "kett (Maximum number of blocks chained in one job)", "s7comm.szl.0131.0004.kett", FT_UINT8, BASE_DEC, NULL, 0x0,
2962 NULL, HFILL }},
2963 { &hf_s7comm_szl_0131_0004_hoch,
2964 { "hoch (Maximum number of simultaneous upload procedures)", "s7comm.szl.0131.0004.hoch", FT_UINT8, BASE_DEC, NULL, 0x0,
2965 NULL, HFILL }},
2966 { &hf_s7comm_szl_0131_0004_ver,
2967 { "ver (Maximum size (in bytes) of shiftable blocks in RUN)", "s7comm.szl.0131.0004.ver", FT_UINT8, BASE_DEC, NULL, 0x0,
2968 "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 }},
2969 { &hf_s7comm_szl_0131_0004_res,
2970 { "res (Reserved)", "s7comm.szl.0131.0004.res", FT_BYTES, BASE_NONE, NULL, 0x0,
2971 NULL, HFILL }}
2973 proto_register_field_array(proto, hf, array_length(hf));
2976 /*----------------------------------------------------------------------------------------------------*/
2977 static uint32_t
2978 s7comm_decode_szl_id_0131_idx_0004(tvbuff_t *tvb,
2979 proto_tree *tree,
2980 uint32_t offset)
2982 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_index, tvb, offset, 2, ENC_BIG_ENDIAN);
2983 offset += 2;
2984 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_0,
2985 ett_s7comm_szl_0131_0004_funkt_0, s7comm_szl_0131_0004_funkt_0_fields, ENC_BIG_ENDIAN);
2986 offset += 1;
2987 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_1,
2988 ett_s7comm_szl_0131_0004_funkt_1, s7comm_szl_0131_0004_funkt_1_fields, ENC_BIG_ENDIAN);
2989 offset += 1;
2990 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_2,
2991 ett_s7comm_szl_0131_0004_funkt_2, s7comm_szl_0131_0004_funkt_2_fields, ENC_BIG_ENDIAN);
2992 offset += 1;
2993 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_3,
2994 ett_s7comm_szl_0131_0004_funkt_3, s7comm_szl_0131_0004_funkt_3_fields, ENC_BIG_ENDIAN);
2995 offset += 1;
2996 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0004_funkt_4,
2997 ett_s7comm_szl_0131_0004_funkt_4, s7comm_szl_0131_0004_funkt_4_fields, ENC_BIG_ENDIAN);
2998 offset += 1;
2999 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_funkt_5, tvb, offset, 1, ENC_BIG_ENDIAN);
3000 offset += 1;
3001 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_funkt_6, tvb, offset, 1, ENC_BIG_ENDIAN);
3002 offset += 1;
3003 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_funkt_7, tvb, offset, 1, ENC_BIG_ENDIAN);
3004 offset += 1;
3005 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_kop, tvb, offset, 1, ENC_BIG_ENDIAN);
3006 offset += 1;
3007 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_del, tvb, offset, 1, ENC_BIG_ENDIAN);
3008 offset += 1;
3009 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_kett, tvb, offset, 1, ENC_BIG_ENDIAN);
3010 offset += 1;
3011 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_hoch, tvb, offset, 1, ENC_BIG_ENDIAN);
3012 offset += 1;
3013 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_ver, tvb, offset, 1, ENC_BIG_ENDIAN);
3014 offset += 1;
3015 proto_tree_add_item(tree, hf_s7comm_szl_0131_0004_res, tvb, offset, 25, ENC_NA);
3016 offset += 25;
3018 return offset;
3021 /*******************************************************************************************************
3023 * SZL-ID: 0x0131
3024 * Index: 0x0005
3025 * Content:
3026 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0005
3027 * contains information about the diagnostic capabilities of the module.
3029 *******************************************************************************************************/
3030 static void
3031 s7comm_szl_0131_0005_register(int proto)
3033 static hf_register_info hf[] = {
3034 { &hf_s7comm_szl_0131_0005_index,
3035 { "Index", "s7comm.szl.0131.0005.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3036 "W#16#0005 Index for Diagnostics", HFILL }},
3037 { &hf_s7comm_szl_0131_0005_funkt_0,
3038 { "funkt_0 (Available diagnostic functions)", "s7comm.szl.0131.0005.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3039 "Available diagnostic functions: (Bit = 1: functions exists)", HFILL }},
3040 { &hf_s7comm_szl_0131_0005_funkt_0_0,
3041 { "Reserved", "s7comm.szl.0131.0005.funkt_0.bit0_res", FT_BOOLEAN, 8, NULL, 0x01,
3042 "Bit 0: Reserved", HFILL }},
3043 { &hf_s7comm_szl_0131_0005_funkt_0_1,
3044 { "Diagnostic buffer exists", "s7comm.szl.0131.0005.funkt_0.diag_buf", FT_BOOLEAN, 8, NULL, 0x02,
3045 "Bit 1: Diagnostic buffer exists", HFILL }},
3046 { &hf_s7comm_szl_0131_0005_funkt_0_2,
3047 { "Sending system diagnostic data possible", "s7comm.szl.0131.0005.funkt_0.sysdiag", FT_BOOLEAN, 8, NULL, 0x04,
3048 "Bit 2: Sending system diagnostic data possible", HFILL }},
3049 { &hf_s7comm_szl_0131_0005_funkt_0_3,
3050 { "Sending user-defined diagnostic messages possible", "s7comm.szl.0131.0005.funkt_0.userdiag", FT_BOOLEAN, 8, NULL, 0x08,
3051 "Bit 3: Sending user-defined diagnostic messages possible", HFILL }},
3052 { &hf_s7comm_szl_0131_0005_funkt_0_4,
3053 { "Sending VMD status possible", "s7comm.szl.0131.0005.funkt_0.vmdstat", FT_BOOLEAN, 8, NULL, 0x10,
3054 "Bit 4: Sending VMD status possible", HFILL }},
3055 { &hf_s7comm_szl_0131_0005_funkt_0_5,
3056 { "Evaluating diagnostic interrupts", "s7comm.szl.0131.0005.funkt_0.evaldiagint", FT_BOOLEAN, 8, NULL, 0x20,
3057 "Bit 5: Evaluating diagnostic interrupts", HFILL }},
3058 { &hf_s7comm_szl_0131_0005_funkt_0_6,
3059 { "Diagnostic interrupt exists on module", "s7comm.szl.0131.0005.funkt_0.diagint", FT_BOOLEAN, 8, NULL, 0x40,
3060 "Bit 6: Diagnostic interrupt exists on module", HFILL }},
3061 { &hf_s7comm_szl_0131_0005_funkt_0_7,
3062 { "Reserved", "s7comm.szl.0131.0005.funkt_0.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3063 "Bit 7: Reserved", HFILL }},
3064 { &hf_s7comm_szl_0131_0005_funkt_1,
3065 { "funkt_1 (Reserved)", "s7comm.szl.0131.0005.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3066 NULL, HFILL }},
3067 { &hf_s7comm_szl_0131_0005_funkt_2,
3068 { "funkt_2 (Reserved)", "s7comm.szl.0131.0005.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
3069 NULL, HFILL }},
3070 { &hf_s7comm_szl_0131_0005_funkt_3,
3071 { "funkt_3 (Reserved)", "s7comm.szl.0131.0005.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
3072 NULL, HFILL }},
3073 { &hf_s7comm_szl_0131_0005_funkt_4,
3074 { "funkt_4 (Reserved)", "s7comm.szl.0131.0005.funkt_4", FT_UINT8, BASE_HEX, NULL, 0x0,
3075 NULL, HFILL }},
3076 { &hf_s7comm_szl_0131_0005_funkt_5,
3077 { "funkt_5 (Reserved)", "s7comm.szl.0131.0005.funkt_5", FT_UINT8, BASE_HEX, NULL, 0x0,
3078 NULL, HFILL }},
3079 { &hf_s7comm_szl_0131_0005_funkt_6,
3080 { "funkt_6 (Reserved)", "s7comm.szl.0131.0005.funkt_6", FT_UINT8, BASE_HEX, NULL, 0x0,
3081 NULL, HFILL }},
3082 { &hf_s7comm_szl_0131_0005_funkt_7,
3083 { "funkt_7 (Reserved)", "s7comm.szl.0131.0005.funkt_7", FT_UINT8, BASE_HEX, NULL, 0x0,
3084 NULL, HFILL }},
3085 { &hf_s7comm_szl_0131_0005_anz_sen,
3086 { "anz_sen (Maximum number of diagnostic data sinks)", "s7comm.szl.0131.0005.anz_sen", FT_UINT16, BASE_DEC, NULL, 0x0,
3087 NULL, HFILL }},
3088 { &hf_s7comm_szl_0131_0005_anz_ein,
3089 { "anz_ein (Maximum number of entries in the diagnostic buffer)", "s7comm.szl.0131.0005.anz_ein", FT_UINT16, BASE_DEC, NULL, 0x0,
3090 NULL, HFILL }},
3091 { &hf_s7comm_szl_0131_0005_anz_mel,
3092 { "anz_mel (Maximum number of process control group messages)", "s7comm.szl.0131.0005.anz_mel", FT_UINT16, BASE_DEC, NULL, 0x0,
3093 NULL, HFILL }},
3094 { &hf_s7comm_szl_0131_0005_res,
3095 { "res (Reserved)", "s7comm.szl.0131.0005.res", FT_BYTES, BASE_NONE, NULL, 0x0,
3096 NULL, HFILL }}
3098 proto_register_field_array(proto, hf, array_length(hf));
3101 /*----------------------------------------------------------------------------------------------------*/
3102 static uint32_t
3103 s7comm_decode_szl_id_0131_idx_0005(tvbuff_t *tvb,
3104 proto_tree *tree,
3105 uint32_t offset)
3107 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3108 offset += 2;
3109 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0005_funkt_0,
3110 ett_s7comm_szl_0131_0005_funkt_0, s7comm_szl_0131_0005_funkt_0_fields, ENC_BIG_ENDIAN);
3111 offset += 1;
3112 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_1, tvb, offset, 1, ENC_BIG_ENDIAN);
3113 offset += 1;
3114 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_2, tvb, offset, 1, ENC_BIG_ENDIAN);
3115 offset += 1;
3116 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_3, tvb, offset, 1, ENC_BIG_ENDIAN);
3117 offset += 1;
3118 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_4, tvb, offset, 1, ENC_BIG_ENDIAN);
3119 offset += 1;
3120 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_5, tvb, offset, 1, ENC_BIG_ENDIAN);
3121 offset += 1;
3122 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_6, tvb, offset, 1, ENC_BIG_ENDIAN);
3123 offset += 1;
3124 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_funkt_7, tvb, offset, 1, ENC_BIG_ENDIAN);
3125 offset += 1;
3126 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_anz_sen, tvb, offset, 2, ENC_BIG_ENDIAN);
3127 offset += 2;
3128 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_anz_ein, tvb, offset, 2, ENC_BIG_ENDIAN);
3129 offset += 2;
3130 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_anz_mel, tvb, offset, 2, ENC_BIG_ENDIAN);
3131 offset += 2;
3132 proto_tree_add_item(tree, hf_s7comm_szl_0131_0005_res, tvb, offset, 24, ENC_NA);
3133 offset += 24;
3135 return offset;
3138 /*******************************************************************************************************
3140 * SZL-ID: 0x0131
3141 * Index: 0x0006
3142 * Content:
3143 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0006
3144 * contains information about the functions available for data exchange with
3145 * communication SFBs for configured connections on the module.
3147 *******************************************************************************************************/
3148 static void
3149 s7comm_szl_0131_0006_register(int proto)
3151 static hf_register_info hf[] = {
3152 { &hf_s7comm_szl_0131_0006_index,
3153 { "Index", "s7comm.szl.0131.0006.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3154 "W#16#0006 Data exchange with communication SFBs for configured connections", HFILL }},
3155 { &hf_s7comm_szl_0131_0006_funkt_0,
3156 { "funkt_0", "s7comm.szl.0131.0006.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3157 "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
3158 { &hf_s7comm_szl_0131_0006_funkt_0_0,
3159 { "Bit 0: USEND", "s7comm.szl.0131.0006.funkt_0.usend", FT_BOOLEAN, 8, NULL, 0x01,
3160 NULL, HFILL }},
3161 { &hf_s7comm_szl_0131_0006_funkt_0_1,
3162 { "Bit 1: URCV", "s7comm.szl.0131.0006.funkt_0.urcv", FT_BOOLEAN, 8, NULL, 0x02,
3163 NULL, HFILL }},
3164 { &hf_s7comm_szl_0131_0006_funkt_0_2,
3165 { "Bit 2: SEND", "s7comm.szl.0131.0006.funkt_0.send", FT_BOOLEAN, 8, NULL, 0x04,
3166 NULL, HFILL }},
3167 { &hf_s7comm_szl_0131_0006_funkt_0_3,
3168 { "Bit 3: RCV", "s7comm.szl.0131.0006.funkt_0.rcv", FT_BOOLEAN, 8, NULL, 0x08,
3169 NULL, HFILL }},
3170 { &hf_s7comm_szl_0131_0006_funkt_0_4,
3171 { "Bit 4: BSEND", "s7comm.szl.0131.0006.funkt_0.bsend", FT_BOOLEAN, 8, NULL, 0x10,
3172 NULL, HFILL }},
3173 { &hf_s7comm_szl_0131_0006_funkt_0_5,
3174 { "Bit 5: BRCV", "s7comm.szl.0131.0006.funkt_0.brcv", FT_BOOLEAN, 8, NULL, 0x20,
3175 NULL, HFILL }},
3176 { &hf_s7comm_szl_0131_0006_funkt_0_6,
3177 { "Bit 6: GET", "s7comm.szl.0131.0006.funkt_0.get", FT_BOOLEAN, 8, NULL, 0x40,
3178 NULL, HFILL }},
3179 { &hf_s7comm_szl_0131_0006_funkt_0_7,
3180 { "Bit 7: PUT", "s7comm.szl.0131.0006.funkt_0.put", FT_BOOLEAN, 8, NULL, 0x80,
3181 NULL, HFILL }},
3182 { &hf_s7comm_szl_0131_0006_funkt_1,
3183 { "funkt_1", "s7comm.szl.0131.0006.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3184 "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
3185 { &hf_s7comm_szl_0131_0006_funkt_1_0,
3186 { "Bit 0: PRINT", "s7comm.szl.0131.0006.funkt_1.print", FT_BOOLEAN, 8, NULL, 0x01,
3187 NULL, HFILL }},
3188 { &hf_s7comm_szl_0131_0006_funkt_1_1,
3189 { "Bit 1: ABORT", "s7comm.szl.0131.0006.funkt_1.abort", FT_BOOLEAN, 8, NULL, 0x02,
3190 NULL, HFILL }},
3191 { &hf_s7comm_szl_0131_0006_funkt_1_2,
3192 { "Bit 2: INITIATE", "s7comm.szl.0131.0006.funkt_1.initiate", FT_BOOLEAN, 8, NULL, 0x04,
3193 NULL, HFILL }},
3194 { &hf_s7comm_szl_0131_0006_funkt_1_3,
3195 { "Bit 3: START", "s7comm.szl.0131.0006.funkt_1.start", FT_BOOLEAN, 8, NULL, 0x08,
3196 NULL, HFILL }},
3197 { &hf_s7comm_szl_0131_0006_funkt_1_4,
3198 { "Bit 4: STOP", "s7comm.szl.0131.0006.funkt_1.stop", FT_BOOLEAN, 8, NULL, 0x10,
3199 NULL, HFILL }},
3200 { &hf_s7comm_szl_0131_0006_funkt_1_5,
3201 { "Bit 5: RESUME", "s7comm.szl.0131.0006.funkt_1.resume", FT_BOOLEAN, 8, NULL, 0x20,
3202 NULL, HFILL }},
3203 { &hf_s7comm_szl_0131_0006_funkt_1_6,
3204 { "Bit 6: STATUS", "s7comm.szl.0131.0006.funkt_1.status", FT_BOOLEAN, 8, NULL, 0x40,
3205 NULL, HFILL }},
3206 { &hf_s7comm_szl_0131_0006_funkt_1_7,
3207 { "Bit 7: USTATUS", "s7comm.szl.0131.0006.funkt_1.ustatus", FT_BOOLEAN, 8, NULL, 0x80,
3208 NULL, HFILL }},
3209 { &hf_s7comm_szl_0131_0006_funkt_2,
3210 { "funkt_2", "s7comm.szl.0131.0006.funkt_2", FT_UINT8, BASE_HEX, NULL, 0x0,
3211 "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
3212 { &hf_s7comm_szl_0131_0006_funkt_2_0,
3213 { "Bit 0: PI", "s7comm.szl.0131.0006.funkt_2.pi", FT_BOOLEAN, 8, NULL, 0x01,
3214 NULL, HFILL }},
3215 { &hf_s7comm_szl_0131_0006_funkt_2_1,
3216 { "Bit 1: READ", "s7comm.szl.0131.0006.funkt_2.read", FT_BOOLEAN, 8, NULL, 0x02,
3217 NULL, HFILL }},
3218 { &hf_s7comm_szl_0131_0006_funkt_2_2,
3219 { "Bit 2: WRITE", "s7comm.szl.0131.0006.funkt_2.write", FT_BOOLEAN, 8, NULL, 0x04,
3220 NULL, HFILL }},
3221 { &hf_s7comm_szl_0131_0006_funkt_2_3,
3222 { "Bit 3: LOAD", "s7comm.szl.0131.0006.funkt_2.load", FT_BOOLEAN, 8, NULL, 0x08,
3223 NULL, HFILL }},
3224 { &hf_s7comm_szl_0131_0006_funkt_2_4,
3225 { "Bit 4: LOAD_ME", "s7comm.szl.0131.0006.funkt_2.load_me", FT_BOOLEAN, 8, NULL, 0x10,
3226 NULL, HFILL }},
3227 { &hf_s7comm_szl_0131_0006_funkt_2_5,
3228 { "Bit 5: ALARM", "s7comm.szl.0131.0006.funkt_2.alarm", FT_BOOLEAN, 8, NULL, 0x20,
3229 NULL, HFILL }},
3230 { &hf_s7comm_szl_0131_0006_funkt_2_6,
3231 { "Bit 6: ALARM_8", "s7comm.szl.0131.0006.funkt_2.alarm_8", FT_BOOLEAN, 8, NULL, 0x40,
3232 NULL, HFILL }},
3233 { &hf_s7comm_szl_0131_0006_funkt_2_7,
3234 { "Bit 7: ALARM_8P", "s7comm.szl.0131.0006.funkt_2.alarm_8p", FT_BOOLEAN, 8, NULL, 0x80,
3235 NULL, HFILL }},
3236 { &hf_s7comm_szl_0131_0006_funkt_3,
3237 { "funkt_3", "s7comm.szl.0131.0006.funkt_3", FT_UINT8, BASE_HEX, NULL, 0x0,
3238 "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
3239 { &hf_s7comm_szl_0131_0006_funkt_3_0,
3240 { "Bit 0: NOTIFY", "s7comm.szl.0131.0006.funkt_3.notify", FT_BOOLEAN, 8, NULL, 0x01,
3241 NULL, HFILL }},
3242 { &hf_s7comm_szl_0131_0006_funkt_3_1,
3243 { "Bit 1: AR_SEND", "s7comm.szl.0131.0006.funkt_3.ar_send", FT_BOOLEAN, 8, NULL, 0x02,
3244 NULL, HFILL }},
3245 { &hf_s7comm_szl_0131_0006_funkt_3_2,
3246 { "Bit 2: Reserved", "s7comm.szl.0131.0006.funkt_3.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
3247 NULL, HFILL }},
3248 { &hf_s7comm_szl_0131_0006_funkt_3_3,
3249 { "Bit 3: Reserved", "s7comm.szl.0131.0006.funkt_3.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
3250 NULL, HFILL }},
3251 { &hf_s7comm_szl_0131_0006_funkt_3_4,
3252 { "Bit 4: Reserved", "s7comm.szl.0131.0006.funkt_3.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
3253 NULL, HFILL }},
3254 { &hf_s7comm_szl_0131_0006_funkt_3_5,
3255 { "Bit 5: Reserved", "s7comm.szl.0131.0006.funkt_3.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3256 NULL, HFILL }},
3257 { &hf_s7comm_szl_0131_0006_funkt_3_6,
3258 { "Bit 6: Reserved", "s7comm.szl.0131.0006.funkt_3.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3259 NULL, HFILL }},
3260 { &hf_s7comm_szl_0131_0006_funkt_3_7,
3261 { "Bit 7: Reserved", "s7comm.szl.0131.0006.funkt_3.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3262 NULL, HFILL }},
3263 { &hf_s7comm_szl_0131_0006_funkt_4,
3264 { "funkt_4", "s7comm.szl.0131.0006.funkt_4", FT_UINT8, BASE_HEX, NULL, 0x0,
3265 "Reserved", HFILL }},
3266 { &hf_s7comm_szl_0131_0006_funkt_5,
3267 { "funkt_5", "s7comm.szl.0131.0006.funkt_5", FT_UINT8, BASE_HEX, NULL, 0x0,
3268 "Reserved", HFILL }},
3269 { &hf_s7comm_szl_0131_0006_funkt_6,
3270 { "funkt_6", "s7comm.szl.0131.0006.funkt_6", FT_UINT8, BASE_HEX, NULL, 0x0,
3271 "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
3272 { &hf_s7comm_szl_0131_0006_funkt_6_0,
3273 { "Bit 0: X_SEND", "s7comm.szl.0131.0006.funkt_6.x_send", FT_BOOLEAN, 8, NULL, 0x01,
3274 NULL, HFILL }},
3275 { &hf_s7comm_szl_0131_0006_funkt_6_1,
3276 { "Bit 1: X_RCV", "s7comm.szl.0131.0006.funkt_6.x_rcv", FT_BOOLEAN, 8, NULL, 0x02,
3277 NULL, HFILL }},
3278 { &hf_s7comm_szl_0131_0006_funkt_6_2,
3279 { "Bit 2: X_GET", "s7comm.szl.0131.0006.funkt_6.x_get", FT_BOOLEAN, 8, NULL, 0x04,
3280 NULL, HFILL }},
3281 { &hf_s7comm_szl_0131_0006_funkt_6_3,
3282 { "Bit 3: X_PUT", "s7comm.szl.0131.0006.funkt_6.x_put", FT_BOOLEAN, 8, NULL, 0x08,
3283 NULL, HFILL }},
3284 { &hf_s7comm_szl_0131_0006_funkt_6_4,
3285 { "Bit 4: X_ABORT", "s7comm.szl.0131.0006.funkt_6.x_abort", FT_BOOLEAN, 8, NULL, 0x10,
3286 NULL, HFILL }},
3287 { &hf_s7comm_szl_0131_0006_funkt_6_5,
3288 { "Bit 5: I_GET", "s7comm.szl.0131.0006.funkt_6.i_get", FT_BOOLEAN, 8, NULL, 0x20,
3289 NULL, HFILL }},
3290 { &hf_s7comm_szl_0131_0006_funkt_6_6,
3291 { "Bit 6: I_PUT", "s7comm.szl.0131.0006.funkt_6.i_put", FT_BOOLEAN, 8, NULL, 0x40,
3292 NULL, HFILL }},
3293 { &hf_s7comm_szl_0131_0006_funkt_6_7,
3294 { "Bit 7: I_ABORT", "s7comm.szl.0131.0006.funkt_6.i_abort", FT_BOOLEAN, 8, NULL, 0x80,
3295 NULL, HFILL }},
3296 { &hf_s7comm_szl_0131_0006_funkt_7,
3297 { "funkt_7", "s7comm.szl.0131.0006.funkt_7", FT_UINT8, BASE_HEX, NULL, 0x0,
3298 "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
3299 { &hf_s7comm_szl_0131_0006_funkt_7_0,
3300 { "Bit 0: SCAN_SND", "s7comm.szl.0131.0006.funkt_7.scan_snd", FT_BOOLEAN, 8, NULL, 0x01,
3301 NULL, HFILL }},
3302 { &hf_s7comm_szl_0131_0006_funkt_7_1,
3303 { "Bit 1: ALARM_SQ", "s7comm.szl.0131.0006.funkt_7.alarm_sq", FT_BOOLEAN, 8, NULL, 0x02,
3304 NULL, HFILL }},
3305 { &hf_s7comm_szl_0131_0006_funkt_7_2,
3306 { "Bit 2: ALARM_S", "s7comm.szl.0131.0006.funkt_7.alarm_s", FT_BOOLEAN, 8, NULL, 0x04,
3307 NULL, HFILL }},
3308 { &hf_s7comm_szl_0131_0006_funkt_7_3,
3309 { "Bit 3: ALARM_SC", "s7comm.szl.0131.0006.funkt_7.alarm_sc", FT_BOOLEAN, 8, NULL, 0x08,
3310 NULL, HFILL }},
3311 { &hf_s7comm_szl_0131_0006_funkt_7_4,
3312 { "Bit 4: EN_MSG", "s7comm.szl.0131.0006.funkt_7.en_msg", FT_BOOLEAN, 8, NULL, 0x10,
3313 NULL, HFILL }},
3314 { &hf_s7comm_szl_0131_0006_funkt_7_5,
3315 { "Bit 5: DIS_MSG", "s7comm.szl.0131.0006.funkt_7.dis_msg", FT_BOOLEAN, 8, NULL, 0x20,
3316 NULL, HFILL }},
3317 { &hf_s7comm_szl_0131_0006_funkt_7_6,
3318 { "Bit 6: CONTROL", "s7comm.szl.0131.0006.funkt_7.control", FT_BOOLEAN, 8, NULL, 0x40,
3319 NULL, HFILL }},
3320 { &hf_s7comm_szl_0131_0006_funkt_7_7,
3321 { "Bit 7: Reserved", "s7comm.szl.0131.0006.funkt_7.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3322 NULL, HFILL }},
3323 { &hf_s7comm_szl_0131_0006_schnell,
3324 { "schnell (Fast reaction yes/no)", "s7comm.szl.0131.0006.schnell", FT_UINT8, BASE_HEX, NULL, 0x0,
3325 NULL, HFILL }},
3326 { &hf_s7comm_szl_0131_0006_zugtyp_0,
3327 { "zugtyp_0", "s7comm.szl.0131.0006.zugtyp_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3328 "zugtyp_0 (Permitted module types for fast reaction)", HFILL }},
3329 { &hf_s7comm_szl_0131_0006_zugtyp_0_0,
3330 { "Bit 0: USEND", "s7comm.szl.0131.0006.zugtyp_0.usend", FT_BOOLEAN, 8, NULL, 0x01,
3331 NULL, HFILL }},
3332 { &hf_s7comm_szl_0131_0006_zugtyp_0_1,
3333 { "Bit 1: URCV", "s7comm.szl.0131.0006.zugtyp_0.urcv", FT_BOOLEAN, 8, NULL, 0x02,
3334 NULL, HFILL }},
3335 { &hf_s7comm_szl_0131_0006_zugtyp_0_2,
3336 { "Bit 2: SEND", "s7comm.szl.0131.0006.zugtyp_0.send", FT_BOOLEAN, 8, NULL, 0x04,
3337 NULL, HFILL }},
3338 { &hf_s7comm_szl_0131_0006_zugtyp_0_3,
3339 { "Bit 3: RCV", "s7comm.szl.0131.0006.zugtyp_0.rcv", FT_BOOLEAN, 8, NULL, 0x08,
3340 NULL, HFILL }},
3341 { &hf_s7comm_szl_0131_0006_zugtyp_0_4,
3342 { "Bit 4: BSEND", "s7comm.szl.0131.0006.zugtyp_0.bsend", FT_BOOLEAN, 8, NULL, 0x10,
3343 NULL, HFILL }},
3344 { &hf_s7comm_szl_0131_0006_zugtyp_0_5,
3345 { "Bit 5: BRCV", "s7comm.szl.0131.0006.zugtyp_0.brcv", FT_BOOLEAN, 8, NULL, 0x20,
3346 NULL, HFILL }},
3347 { &hf_s7comm_szl_0131_0006_zugtyp_0_6,
3348 { "Bit 6: GET", "s7comm.szl.0131.0006.zugtyp_0.get", FT_BOOLEAN, 8, NULL, 0x40,
3349 NULL, HFILL }},
3350 { &hf_s7comm_szl_0131_0006_zugtyp_0_7,
3351 { "Bit 7: PUT", "s7comm.szl.0131.0006.zugtyp_0.put", FT_BOOLEAN, 8, NULL, 0x80,
3352 NULL, HFILL }},
3353 { &hf_s7comm_szl_0131_0006_zugtyp_1,
3354 { "zugtyp_1", "s7comm.szl.0131.0006.zugtyp_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3355 "zugtyp_1 (Permitted module types for fast reaction)", HFILL }},
3356 { &hf_s7comm_szl_0131_0006_zugtyp_1_0,
3357 { "Bit 0: PRINT", "s7comm.szl.0131.0006.zugtyp_1.print", FT_BOOLEAN, 8, NULL, 0x01,
3358 NULL, HFILL }},
3359 { &hf_s7comm_szl_0131_0006_zugtyp_1_1,
3360 { "Bit 1: ABORT", "s7comm.szl.0131.0006.zugtyp_1abort", FT_BOOLEAN, 8, NULL, 0x02,
3361 NULL, HFILL }},
3362 { &hf_s7comm_szl_0131_0006_zugtyp_1_2,
3363 { "Bit 2: INITIATE", "s7comm.szl.0131.0006.zugtyp_1.initiate", FT_BOOLEAN, 8, NULL, 0x04,
3364 NULL, HFILL }},
3365 { &hf_s7comm_szl_0131_0006_zugtyp_1_3,
3366 { "Bit 3: START", "s7comm.szl.0131.0006.zugtyp_1.start", FT_BOOLEAN, 8, NULL, 0x08,
3367 NULL, HFILL }},
3368 { &hf_s7comm_szl_0131_0006_zugtyp_1_4,
3369 { "Bit 4: STOP", "s7comm.szl.0131.0006.zugtyp_1.stop", FT_BOOLEAN, 8, NULL, 0x10,
3370 NULL, HFILL }},
3371 { &hf_s7comm_szl_0131_0006_zugtyp_1_5,
3372 { "Bit 5: RESUME", "s7comm.szl.0131.0006.zugtyp_1.resume", FT_BOOLEAN, 8, NULL, 0x20,
3373 NULL, HFILL }},
3374 { &hf_s7comm_szl_0131_0006_zugtyp_1_6,
3375 { "Bit 6: STATUS", "s7comm.szl.0131.0006.zugtyp_1.status", FT_BOOLEAN, 8, NULL, 0x40,
3376 NULL, HFILL }},
3377 { &hf_s7comm_szl_0131_0006_zugtyp_1_7,
3378 { "Bit 7: USTATUS", "s7comm.szl.0131.0006.zugtyp_1.ustatus", FT_BOOLEAN, 8, NULL, 0x80,
3379 NULL, HFILL }},
3380 { &hf_s7comm_szl_0131_0006_zugtyp_2,
3381 { "zugtyp_2", "s7comm.szl.0131.0006.zugtyp_2", FT_UINT8, BASE_HEX, NULL, 0x0,
3382 "zugtyp_2 (Permitted module types for fast reaction)", HFILL }},
3383 { &hf_s7comm_szl_0131_0006_zugtyp_2_0,
3384 { "Bit 0: PI", "s7comm.szl.0131.0006.zugtyp_2.pi", FT_BOOLEAN, 8, NULL, 0x01,
3385 NULL, HFILL }},
3386 { &hf_s7comm_szl_0131_0006_zugtyp_2_1,
3387 { "Bit 1: READ", "s7comm.szl.0131.0006.zugtyp_2.read", FT_BOOLEAN, 8, NULL, 0x02,
3388 NULL, HFILL }},
3389 { &hf_s7comm_szl_0131_0006_zugtyp_2_2,
3390 { "Bit 2: WRITE", "s7comm.szl.0131.0006.zugtyp_2.write", FT_BOOLEAN, 8, NULL, 0x04,
3391 NULL, HFILL }},
3392 { &hf_s7comm_szl_0131_0006_zugtyp_2_3,
3393 { "Bit 3: LOAD", "s7comm.szl.0131.0006.zugtyp_2.load", FT_BOOLEAN, 8, NULL, 0x08,
3394 NULL, HFILL }},
3395 { &hf_s7comm_szl_0131_0006_zugtyp_2_4,
3396 { "Bit 4: LOAD_ME", "s7comm.szl.0131.0006.zugtyp_2.load_me", FT_BOOLEAN, 8, NULL, 0x10,
3397 NULL, HFILL }},
3398 { &hf_s7comm_szl_0131_0006_zugtyp_2_5,
3399 { "Bit 5: ALARM", "s7comm.szl.0131.0006.zugtyp_2.alarm", FT_BOOLEAN, 8, NULL, 0x20,
3400 NULL, HFILL }},
3401 { &hf_s7comm_szl_0131_0006_zugtyp_2_6,
3402 { "Bit 6: ALARM_8", "s7comm.szl.0131.0006.zugtyp_2.alarm_8", FT_BOOLEAN, 8, NULL, 0x40,
3403 NULL, HFILL }},
3404 { &hf_s7comm_szl_0131_0006_zugtyp_2_7,
3405 { "Bit 7: ALARM_8P", "s7comm.szl.0131.0006.zugtyp_2.alarm_8p", FT_BOOLEAN, 8, NULL, 0x80,
3406 NULL, HFILL }},
3407 { &hf_s7comm_szl_0131_0006_zugtyp_3,
3408 { "zugtyp_3", "s7comm.szl.0131.0006.zugtyp_3", FT_UINT8, BASE_HEX, NULL, 0x0,
3409 "zugtyp_3 (Permitted module types for fast reaction)", HFILL }},
3410 { &hf_s7comm_szl_0131_0006_zugtyp_3_0,
3411 { "Bit 0: NOTIFY", "s7comm.szl.0131.0006.zugtyp_3.notify", FT_BOOLEAN, 8, NULL, 0x01,
3412 NULL, HFILL }},
3413 { &hf_s7comm_szl_0131_0006_zugtyp_3_1,
3414 { "Bit 1: AR_SEND", "s7comm.szl.0131.0006.zugtyp_3.ar_send", FT_BOOLEAN, 8, NULL, 0x02,
3415 NULL, HFILL }},
3416 { &hf_s7comm_szl_0131_0006_zugtyp_3_2,
3417 { "Bit 2: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit2_res", FT_BOOLEAN, 8, NULL, 0x04,
3418 NULL, HFILL }},
3419 { &hf_s7comm_szl_0131_0006_zugtyp_3_3,
3420 { "Bit 3: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
3421 NULL, HFILL }},
3422 { &hf_s7comm_szl_0131_0006_zugtyp_3_4,
3423 { "Bit 4: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
3424 NULL, HFILL }},
3425 { &hf_s7comm_szl_0131_0006_zugtyp_3_5,
3426 { "Bit 5: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3427 NULL, HFILL }},
3428 { &hf_s7comm_szl_0131_0006_zugtyp_3_6,
3429 { "Bit 6: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3430 NULL, HFILL }},
3431 { &hf_s7comm_szl_0131_0006_zugtyp_3_7,
3432 { "Bit 7: Reserved", "s7comm.szl.0131.0006.zugtyp_3.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3433 NULL, HFILL }},
3434 { &hf_s7comm_szl_0131_0006_zugtyp_4,
3435 { "zugtyp_4", "s7comm.szl.0131.0006.zugtyp_4", FT_UINT8, BASE_HEX, NULL, 0x0,
3436 "zugtyp_4 (Permitted module types for fast reaction)", HFILL }},
3437 { &hf_s7comm_szl_0131_0006_zugtyp_5,
3438 { "zugtyp_5", "s7comm.szl.0131.0006.zugtyp_5", FT_UINT8, BASE_HEX, NULL, 0x0,
3439 "zugtyp_5 (Permitted module types for fast reaction)", HFILL }},
3440 { &hf_s7comm_szl_0131_0006_zugtyp_6,
3441 { "zugtyp_6", "s7comm.szl.0131.0006.zugtyp_6", FT_UINT8, BASE_HEX, NULL, 0x0,
3442 "zugtyp_6 (Permitted module types for fast reaction)", HFILL }},
3443 { &hf_s7comm_szl_0131_0006_zugtyp_6_0,
3444 { "Bit 0: X_SEND", "s7comm.szl.0131.0006.zugtyp_6.x_send", FT_BOOLEAN, 8, NULL, 0x01,
3445 NULL, HFILL }},
3446 { &hf_s7comm_szl_0131_0006_zugtyp_6_1,
3447 { "Bit 1: X_RCV", "s7comm.szl.0131.0006.zugtyp_6.x_rcv", FT_BOOLEAN, 8, NULL, 0x02,
3448 NULL, HFILL }},
3449 { &hf_s7comm_szl_0131_0006_zugtyp_6_2,
3450 { "Bit 2: X_GET", "s7comm.szl.0131.0006.zugtyp_6.x_get", FT_BOOLEAN, 8, NULL, 0x04,
3451 NULL, HFILL }},
3452 { &hf_s7comm_szl_0131_0006_zugtyp_6_3,
3453 { "Bit 3: X_PUT", "s7comm.szl.0131.0006.zugtyp_6.x_put", FT_BOOLEAN, 8, NULL, 0x08,
3454 NULL, HFILL }},
3455 { &hf_s7comm_szl_0131_0006_zugtyp_6_4,
3456 { "Bit 4: X_ABORT", "s7comm.szl.0131.0006.zugtyp_6.x_abort", FT_BOOLEAN, 8, NULL, 0x10,
3457 NULL, HFILL }},
3458 { &hf_s7comm_szl_0131_0006_zugtyp_6_5,
3459 { "Bit 5: I_GET", "s7comm.szl.0131.0006.zugtyp_6.i_get", FT_BOOLEAN, 8, NULL, 0x20,
3460 NULL, HFILL }},
3461 { &hf_s7comm_szl_0131_0006_zugtyp_6_6,
3462 { "Bit 6: I_PUT", "s7comm.szl.0131.0006.zugtyp_6.i_put", FT_BOOLEAN, 8, NULL, 0x40,
3463 NULL, HFILL }},
3464 { &hf_s7comm_szl_0131_0006_zugtyp_6_7,
3465 { "Bit 7: I_ABORT", "s7comm.szl.0131.0006.zugtyp_6.i_abort", FT_BOOLEAN, 8, NULL, 0x80,
3466 NULL, HFILL }},
3467 { &hf_s7comm_szl_0131_0006_zugtyp_7,
3468 { "zugtyp_7", "s7comm.szl.0131.0006.zugtyp_7", FT_UINT8, BASE_HEX, NULL, 0x0,
3469 "zugtyp_7 (Permitted module types for fast reaction)", HFILL }},
3470 { &hf_s7comm_szl_0131_0006_zugtyp_7_0,
3471 { "Bit 0: SCAN_SND", "s7comm.szl.0131.0006.zugtyp_7.scan_snd", FT_BOOLEAN, 8, NULL, 0x01,
3472 NULL, HFILL }},
3473 { &hf_s7comm_szl_0131_0006_zugtyp_7_1,
3474 { "Bit 1: ALARM_SQ", "s7comm.szl.0131.0006.zugtyp_7.alarm_sq", FT_BOOLEAN, 8, NULL, 0x02,
3475 NULL, HFILL }},
3476 { &hf_s7comm_szl_0131_0006_zugtyp_7_2,
3477 { "Bit 2: ALARM_S", "s7comm.szl.0131.0006.zugtyp_7.alarm_s", FT_BOOLEAN, 8, NULL, 0x04,
3478 NULL, HFILL }},
3479 { &hf_s7comm_szl_0131_0006_zugtyp_7_3,
3480 { "Bit 3: ALARM_SC", "s7comm.szl.0131.0006.zugtyp_7.alarm_sc", FT_BOOLEAN, 8, NULL, 0x08,
3481 NULL, HFILL }},
3482 { &hf_s7comm_szl_0131_0006_zugtyp_7_4,
3483 { "Bit 4: EN_MSG", "s7comm.szl.0131.0006.zugtyp_7.en_msg", FT_BOOLEAN, 8, NULL, 0x10,
3484 NULL, HFILL }},
3485 { &hf_s7comm_szl_0131_0006_zugtyp_7_5,
3486 { "Bit 5: DIS_MSG", "s7comm.szl.0131.0006.zugtyp_7.dis_msg", FT_BOOLEAN, 8, NULL, 0x20,
3487 NULL, HFILL }},
3488 { &hf_s7comm_szl_0131_0006_zugtyp_7_6,
3489 { "Bit 6: CONTROL", "s7comm.szl.0131.0006.zugtyp_7.control", FT_BOOLEAN, 8, NULL, 0x40,
3490 NULL, HFILL }},
3491 { &hf_s7comm_szl_0131_0006_zugtyp_7_7,
3492 { "Bit 7: Reserved", "s7comm.szl.0131.0006.zugtyp_7.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3493 NULL, HFILL }},
3494 { &hf_s7comm_szl_0131_0006_res1,
3495 { "res1 (Reserved)", "s7comm.szl.0131.0006.res1", FT_BYTES, BASE_NONE, NULL, 0x0,
3496 NULL, HFILL }},
3497 { &hf_s7comm_szl_0131_0006_max_sd_empf,
3498 { "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,
3499 NULL, HFILL }},
3500 { &hf_s7comm_szl_0131_0006_max_sd_al8p,
3501 { "max_sd_al8p (Maximum number of send parameters for ALARM_8P)", "s7comm.szl.0131.0006.max_sd_al8p", FT_UINT16, BASE_DEC, NULL, 0x0,
3502 NULL, HFILL }},
3503 { &hf_s7comm_szl_0131_0006_max_inst,
3504 { "max_inst (Maximum number of instances for communication SFBs for configured connections)", "s7comm.szl.0131.0006.max_inst", FT_UINT16, BASE_DEC, NULL, 0x0,
3505 NULL, HFILL }},
3506 { &hf_s7comm_szl_0131_0006_res2,
3507 { "res2 (Reserved)", "s7comm.szl.0131.0006.res2", FT_BYTES, BASE_NONE, NULL, 0x0,
3508 NULL, HFILL }},
3509 { &hf_s7comm_szl_0131_0006_verb_proj,
3510 { "verb_proj (Connection configured (yes=1) possible)", "s7comm.szl.0131.0006.verb_proj", FT_UINT8, BASE_HEX, NULL, 0x0,
3511 NULL, HFILL }},
3512 { &hf_s7comm_szl_0131_0006_verb_prog,
3513 { "verb_prog (Connection programmed (yes=1) possible)", "s7comm.szl.0131.0006.verb_prog", FT_UINT8, BASE_HEX, NULL, 0x0,
3514 NULL, HFILL }},
3515 { &hf_s7comm_szl_0131_0006_res3,
3516 { "res3 (Reserved)", "s7comm.szl.0131.0006.res3", FT_BYTES, BASE_NONE, NULL, 0x0,
3517 NULL, HFILL }}
3519 proto_register_field_array(proto, hf, array_length(hf));
3522 /*----------------------------------------------------------------------------------------------------*/
3523 static uint32_t
3524 s7comm_decode_szl_id_0131_idx_0006(tvbuff_t *tvb,
3525 proto_tree *tree,
3526 uint32_t offset)
3528 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3529 offset += 2;
3530 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_0,
3531 ett_s7comm_szl_0131_0006_funkt_0, s7comm_szl_0131_0006_funkt_0_fields, ENC_BIG_ENDIAN);
3532 offset += 1;
3533 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_1,
3534 ett_s7comm_szl_0131_0006_funkt_1, s7comm_szl_0131_0006_funkt_1_fields, ENC_BIG_ENDIAN);
3535 offset += 1;
3536 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_2,
3537 ett_s7comm_szl_0131_0006_funkt_2, s7comm_szl_0131_0006_funkt_2_fields, ENC_BIG_ENDIAN);
3538 offset += 1;
3539 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_3,
3540 ett_s7comm_szl_0131_0006_funkt_3, s7comm_szl_0131_0006_funkt_3_fields, ENC_BIG_ENDIAN);
3541 offset += 1;
3542 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_4, tvb, offset, 1, ENC_BIG_ENDIAN);
3543 offset += 1;
3544 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_5, tvb, offset, 1, ENC_BIG_ENDIAN);
3545 offset += 1;
3546 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_6,
3547 ett_s7comm_szl_0131_0006_funkt_6, s7comm_szl_0131_0006_funkt_6_fields, ENC_BIG_ENDIAN);
3548 offset += 1;
3549 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_funkt_7,
3550 ett_s7comm_szl_0131_0006_funkt_7, s7comm_szl_0131_0006_funkt_7_fields, ENC_BIG_ENDIAN);
3551 offset += 1;
3552 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_schnell, tvb, offset, 1, ENC_BIG_ENDIAN);
3553 offset += 1;
3554 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_0,
3555 ett_s7comm_szl_0131_0006_zugtyp_0, s7comm_szl_0131_0006_zugtyp_0_fields, ENC_BIG_ENDIAN);
3556 offset += 1;
3557 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_1,
3558 ett_s7comm_szl_0131_0006_zugtyp_1, s7comm_szl_0131_0006_zugtyp_1_fields, ENC_BIG_ENDIAN);
3559 offset += 1;
3560 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_2,
3561 ett_s7comm_szl_0131_0006_zugtyp_2, s7comm_szl_0131_0006_zugtyp_2_fields, ENC_BIG_ENDIAN);
3562 offset += 1;
3563 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_3,
3564 ett_s7comm_szl_0131_0006_zugtyp_3, s7comm_szl_0131_0006_zugtyp_3_fields, ENC_BIG_ENDIAN);
3565 offset += 1;
3566 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_zugtyp_4, tvb, offset, 1, ENC_BIG_ENDIAN);
3567 offset += 1;
3568 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_zugtyp_5, tvb, offset, 1, ENC_BIG_ENDIAN);
3569 offset += 1;
3570 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_6,
3571 ett_s7comm_szl_0131_0006_zugtyp_6, s7comm_szl_0131_0006_zugtyp_6_fields, ENC_BIG_ENDIAN);
3572 offset += 1;
3573 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0006_zugtyp_7,
3574 ett_s7comm_szl_0131_0006_zugtyp_7, s7comm_szl_0131_0006_zugtyp_7_fields, ENC_BIG_ENDIAN);
3575 offset += 1;
3576 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_res1, tvb, offset, 1, ENC_NA);
3577 offset += 1;
3578 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_max_sd_empf, tvb, offset, 2, ENC_BIG_ENDIAN);
3579 offset += 2;
3580 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_max_sd_al8p, tvb, offset, 2, ENC_BIG_ENDIAN);
3581 offset += 2;
3582 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_max_inst, tvb, offset, 2, ENC_BIG_ENDIAN);
3583 offset += 2;
3584 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_res2, tvb, offset, 2, ENC_NA);
3585 offset += 2;
3586 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_verb_proj, tvb, offset, 1, ENC_BIG_ENDIAN);
3587 offset += 1;
3588 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_verb_prog, tvb, offset, 1, ENC_BIG_ENDIAN);
3589 offset += 1;
3590 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_res3, tvb, offset, 10, ENC_NA);
3591 offset += 10;
3593 return offset;
3596 /*******************************************************************************************************
3598 * SZL-ID: 0x0131
3599 * Index: 0x0007
3600 * Content:
3601 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0007
3602 * contains information about the functions available for global data
3603 * communication on the module.
3605 *******************************************************************************************************/
3606 static void
3607 s7comm_szl_0131_0007_register(int proto)
3609 static hf_register_info hf[] = {
3610 { &hf_s7comm_szl_0131_0007_index,
3611 { "Index", "s7comm.szl.0131.0007.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3612 "W#16#0007 Global data communication", HFILL }},
3613 { &hf_s7comm_szl_0131_0007_funkt_0,
3614 { "funkt_0 (Available GD functions)", "s7comm.szl.0131.0007.funkt_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3615 NULL, HFILL }},
3616 { &hf_s7comm_szl_0131_0007_funkt_0_0,
3617 { "Cyclic", "s7comm.szl.0131.0007.funkt_0.cyclic", FT_BOOLEAN, 8, NULL, 0x01,
3618 "Bit 0: Cyclic", HFILL }},
3619 { &hf_s7comm_szl_0131_0007_funkt_0_1,
3620 { "GD_SND", "s7comm.szl.0131.0007.funkt_0.gd_snd", FT_BOOLEAN, 8, NULL, 0x02,
3621 "Bit 1: GD_SND", HFILL }},
3622 { &hf_s7comm_szl_0131_0007_funkt_0_2,
3623 { "GD_RCV", "s7comm.szl.0131.0007.funkt_0.gd_rcv", FT_BOOLEAN, 8, NULL, 0x04,
3624 "Bit 2: GD_RCV", HFILL }},
3625 { &hf_s7comm_szl_0131_0007_funkt_0_3,
3626 { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit3_res", FT_BOOLEAN, 8, NULL, 0x08,
3627 "Bit 3: Reserved", HFILL }},
3628 { &hf_s7comm_szl_0131_0007_funkt_0_4,
3629 { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
3630 "Bit 4: Reserved", HFILL }},
3631 { &hf_s7comm_szl_0131_0007_funkt_0_5,
3632 { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
3633 "Bit 5: Reserved", HFILL }},
3634 { &hf_s7comm_szl_0131_0007_funkt_0_6,
3635 { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3636 "Bit 6: Reserved", HFILL }},
3637 { &hf_s7comm_szl_0131_0007_funkt_0_7,
3638 { "Reserved", "s7comm.szl.0131.0007.funkt_0.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3639 "Bit 7: Reserved", HFILL }},
3640 { &hf_s7comm_szl_0131_0007_funkt_1,
3641 { "funkt_1 (Reserved)", "s7comm.szl.0131.0007.funkt_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3642 NULL, HFILL }},
3643 { &hf_s7comm_szl_0131_0007_obj_0,
3644 { "obj_0 (Addressable objects)", "s7comm.szl.0131.0007.obj_0", FT_UINT8, BASE_HEX, NULL, 0x0,
3645 NULL, HFILL }},
3646 { &hf_s7comm_szl_0131_0007_obj_0_0,
3647 { "M", "s7comm.szl.0131.0007.obj_0.m", FT_BOOLEAN, 8, NULL, 0x01,
3648 "Bit 0: M", HFILL }},
3649 { &hf_s7comm_szl_0131_0007_obj_0_1,
3650 { "PII", "s7comm.szl.0131.0007.obj_0.pii", FT_BOOLEAN, 8, NULL, 0x02,
3651 "Bit 1: PII", HFILL }},
3652 { &hf_s7comm_szl_0131_0007_obj_0_2,
3653 { "PIQ", "s7comm.szl.0131.0007.obj_0.piq", FT_BOOLEAN, 8, NULL, 0x04,
3654 "Bit 2: PIQ", HFILL }},
3655 { &hf_s7comm_szl_0131_0007_obj_0_3,
3656 { "T", "s7comm.szl.0131.0007.obj_0.t", FT_BOOLEAN, 8, NULL, 0x08,
3657 "Bit 3: T", HFILL }},
3658 { &hf_s7comm_szl_0131_0007_obj_0_4,
3659 { "C", "s7comm.szl.0131.0007.obj_0.c", FT_BOOLEAN, 8, NULL, 0x10,
3660 "Bit 4: C", HFILL }},
3661 { &hf_s7comm_szl_0131_0007_obj_0_5,
3662 { "DB", "s7comm.szl.0131.0007.obj_0.db", FT_BOOLEAN, 8, NULL, 0x20,
3663 "Bit 5: DB", HFILL }},
3664 { &hf_s7comm_szl_0131_0007_obj_0_6,
3665 { "Reserved", "s7comm.szl.0131.0007.obj_0.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
3666 "Bit 6: Reserved", HFILL }},
3667 { &hf_s7comm_szl_0131_0007_obj_0_7,
3668 { "Reserved", "s7comm.szl.0131.0007.obj_0.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
3669 "Bit 7: Reserved", HFILL }},
3670 { &hf_s7comm_szl_0131_0007_obj_1,
3671 { "obj_1 (Reserved)", "s7comm.szl.0131.0007.obj_1", FT_UINT8, BASE_HEX, NULL, 0x0,
3672 NULL, HFILL }},
3673 { &hf_s7comm_szl_0131_0007_kons,
3674 { "kons (Consistent length in bytes)", "s7comm.szl.0131.0007.kons", FT_UINT8, BASE_DEC, NULL, 0x0,
3675 NULL, HFILL }},
3676 { &hf_s7comm_szl_0131_0007_sen,
3677 { "sen (Minimum scan rate for sending)", "s7comm.szl.0131.0007.sen", FT_UINT8, BASE_DEC, NULL, 0x0,
3678 NULL, HFILL }},
3679 { &hf_s7comm_szl_0131_0007_rec,
3680 { "rec (Minimum scan rate for receiving)", "s7comm.szl.0131.0007.rec", FT_UINT8, BASE_DEC, NULL, 0x0,
3681 NULL, HFILL }},
3682 { &hf_s7comm_szl_0131_0007_time,
3683 { "time (Time monitoring when receiving yes/no)", "s7comm.szl.0131.0007.time", FT_UINT8, BASE_DEC, NULL, 0x0,
3684 NULL, HFILL }},
3685 { &hf_s7comm_szl_0131_0007_proj,
3686 { "proj (Re-configuration possible in RUN yes/no)", "s7comm.szl.0131.0007.proj", FT_UINT8, BASE_DEC, NULL, 0x0,
3687 NULL, HFILL }},
3688 { &hf_s7comm_szl_0131_0007_alarm,
3689 { "alarm (Communication interrupt yes/no)", "s7comm.szl.0131.0007.alarm", FT_UINT8, BASE_DEC, NULL, 0x0,
3690 NULL, HFILL }},
3691 { &hf_s7comm_szl_0131_0007_mode,
3692 { "mode", "s7comm.szl.0131.0007.mode", FT_UINT8, BASE_HEX, NULL, 0x0,
3693 "mode: Party line/MPI, communication bus", HFILL }},
3694 { &hf_s7comm_szl_0131_0007_mode_0,
3695 { "Party line/MPI", "s7comm.szl.0131.0007.mode.pl_mpi", FT_BOOLEAN, 8, NULL, 0x01,
3696 "Bit 0: Party line/MPI", HFILL }},
3697 { &hf_s7comm_szl_0131_0007_mode_1,
3698 { "Communication bus", "s7comm.szl.0131.0007.mode.comm_bus", FT_BOOLEAN, 8, NULL, 0x02,
3699 "Bit 1: Communication bus", HFILL }},
3700 { &hf_s7comm_szl_0131_0007_kreis,
3701 { "kreis (Maximum number of GD groups of the CPU)", "s7comm.szl.0131.0007.kreis", FT_UINT8, BASE_DEC, NULL, 0x0,
3702 NULL, HFILL }},
3703 { &hf_s7comm_szl_0131_0007_sk_1,
3704 { "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,
3705 NULL, HFILL }},
3706 { &hf_s7comm_szl_0131_0007_sk_2,
3707 { "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,
3708 NULL, HFILL }},
3709 { &hf_s7comm_szl_0131_0007_ek_1,
3710 { "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,
3711 NULL, HFILL }},
3712 { &hf_s7comm_szl_0131_0007_ek_2,
3713 { "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,
3714 NULL, HFILL }},
3715 { &hf_s7comm_szl_0131_0007_len_1,
3716 { "len_1 (Maximum length of a GD packet)", "s7comm.szl.0131.0007.len_1", FT_UINT8, BASE_DEC, NULL, 0x0,
3717 NULL, HFILL }},
3718 { &hf_s7comm_szl_0131_0007_len_2,
3719 { "len_2 (Maximum length of a GD packet header)", "s7comm.szl.0131.0007.len_2", FT_UINT8, BASE_DEC, NULL, 0x0,
3720 NULL, HFILL }},
3721 { &hf_s7comm_szl_0131_0007_len_3,
3722 { "len_3 (Length of the object description header)", "s7comm.szl.0131.0007.len_3", FT_UINT8, BASE_DEC, NULL, 0x0,
3723 NULL, HFILL }},
3724 { &hf_s7comm_szl_0131_0007_res,
3725 { "res (Reserved)", "s7comm.szl.0131.0007.res", FT_BYTES, BASE_NONE, NULL, 0x0,
3726 NULL, HFILL }}
3728 proto_register_field_array(proto, hf, array_length(hf));
3731 /*----------------------------------------------------------------------------------------------------*/
3732 static uint32_t
3733 s7comm_decode_szl_id_0131_idx_0007(tvbuff_t *tvb,
3734 proto_tree *tree,
3735 uint32_t offset)
3737 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3738 offset += 2;
3739 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0007_funkt_0,
3740 ett_s7comm_szl_0131_0007_funkt_0, s7comm_szl_0131_0007_funkt_0_fields, ENC_BIG_ENDIAN);
3741 offset += 1;
3742 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_funkt_1, tvb, offset, 1, ENC_BIG_ENDIAN);
3743 offset += 1;
3744 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0007_obj_0,
3745 ett_s7comm_szl_0131_0007_obj_0, s7comm_szl_0131_0007_obj_0_fields, ENC_BIG_ENDIAN);
3746 offset += 1;
3747 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_obj_1, tvb, offset, 1, ENC_BIG_ENDIAN);
3748 offset += 1;
3749 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_kons, tvb, offset, 1, ENC_BIG_ENDIAN);
3750 offset += 1;
3751 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_sen, tvb, offset, 1, ENC_BIG_ENDIAN);
3752 offset += 1;
3753 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_rec, tvb, offset, 1, ENC_BIG_ENDIAN);
3754 offset += 1;
3755 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_time, tvb, offset, 1, ENC_BIG_ENDIAN);
3756 offset += 1;
3757 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_proj, tvb, offset, 1, ENC_BIG_ENDIAN);
3758 offset += 1;
3759 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_alarm, tvb, offset, 1, ENC_BIG_ENDIAN);
3760 offset += 1;
3761 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0007_mode,
3762 ett_s7comm_szl_0131_0007_mode, s7comm_szl_0131_0007_mode_fields, ENC_BIG_ENDIAN);
3763 offset += 1;
3764 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_kreis, tvb, offset, 1, ENC_BIG_ENDIAN);
3765 offset += 1;
3766 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_sk_1, tvb, offset, 1, ENC_BIG_ENDIAN);
3767 offset += 1;
3768 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_sk_2, tvb, offset, 1, ENC_BIG_ENDIAN);
3769 offset += 1;
3770 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_ek_1, tvb, offset, 1, ENC_BIG_ENDIAN);
3771 offset += 1;
3772 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_ek_2, tvb, offset, 1, ENC_BIG_ENDIAN);
3773 offset += 1;
3774 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_len_1, tvb, offset, 1, ENC_BIG_ENDIAN);
3775 offset += 1;
3776 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_len_2, tvb, offset, 1, ENC_BIG_ENDIAN);
3777 offset += 1;
3778 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_len_3, tvb, offset, 1, ENC_BIG_ENDIAN);
3779 offset += 1;
3780 proto_tree_add_item(tree, hf_s7comm_szl_0131_0007_res, tvb, offset, 19, ENC_NA);
3781 offset += 19;
3783 return offset;
3786 /*******************************************************************************************************
3788 * SZL-ID: 0x0131
3789 * Index: 0x0008
3790 * Content:
3791 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0008
3792 * contains information about the time required for test and installation
3793 * functions.
3795 *******************************************************************************************************/
3796 static void
3797 s7comm_szl_0131_0008_register(int proto)
3799 static hf_register_info hf[] = {
3800 { &hf_s7comm_szl_0131_0008_index,
3801 { "Index", "s7comm.szl.0131.0008.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3802 "W#16#0008 Test and installation function time information", HFILL }},
3803 /* Time format:
3804 * - Bit 0 to bit 11 contains the time value
3805 * - Bit 12 to bit 15 contains the time base: 0=10e-10 sec, 1=10e-9 sec, 0xa = 10e0 sec, 0xf=10e5 sec
3807 { &hf_s7comm_szl_0131_0008_last_1,
3808 { "last_1 (Basic overhead for status block) time value", "s7comm.szl.0131.0008.last_1", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3809 NULL, HFILL }},
3810 { &hf_s7comm_szl_0131_0008_last_1_tb,
3811 { "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,
3812 NULL, HFILL }},
3813 { &hf_s7comm_szl_0131_0008_last_2,
3814 { "last_2 (Basic overhead for monitor variables) time value", "s7comm.szl.0131.0008.last_2", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3815 NULL, HFILL }},
3816 { &hf_s7comm_szl_0131_0008_last_2_tb,
3817 { "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,
3818 NULL, HFILL }},
3819 { &hf_s7comm_szl_0131_0008_last_3,
3820 { "last_3 (Basic overhead for modify variables) time value", "s7comm.szl.0131.0008.last_3", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3821 NULL, HFILL }},
3822 { &hf_s7comm_szl_0131_0008_last_3_tb,
3823 { "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,
3824 NULL, HFILL }},
3825 { &hf_s7comm_szl_0131_0008_merker,
3826 { "merker (Time for one variable address 'memory bit') time value", "s7comm.szl.0131.0008.merker", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3827 NULL, HFILL }},
3828 { &hf_s7comm_szl_0131_0008_merker_tb,
3829 { "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,
3830 NULL, HFILL }},
3831 { &hf_s7comm_szl_0131_0008_ea,
3832 { "ea (Time for one variable address 'input' or 'output') time value", "s7comm.szl.0131.0008.ea", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3833 NULL, HFILL }},
3834 { &hf_s7comm_szl_0131_0008_ea_tb,
3835 { "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,
3836 NULL, HFILL }},
3837 { &hf_s7comm_szl_0131_0008_tz,
3838 { "tz (Time for one variable address 'timer' or 'counter') time value", "s7comm.szl.0131.0008.tz", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3839 NULL, HFILL }},
3840 { &hf_s7comm_szl_0131_0008_tz_tb,
3841 { "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,
3842 NULL, HFILL }},
3843 { &hf_s7comm_szl_0131_0008_db,
3844 { "db (Time for one variable address 'data block DB') time value", "s7comm.szl.0131.0008.db", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3845 NULL, HFILL }},
3846 { &hf_s7comm_szl_0131_0008_db_tb,
3847 { "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,
3848 NULL, HFILL }},
3849 { &hf_s7comm_szl_0131_0008_ld,
3850 { "ld (Time for one variable address 'ADB' or 'local data') time value", "s7comm.szl.0131.0008.ld", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3851 NULL, HFILL }},
3852 { &hf_s7comm_szl_0131_0008_ld_tb,
3853 { "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,
3854 NULL, HFILL }},
3855 { &hf_s7comm_szl_0131_0008_reg,
3856 { "reg (Time for one variable address 'register') time value", "s7comm.szl.0131.0008.reg", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3857 NULL, HFILL }},
3858 { &hf_s7comm_szl_0131_0008_reg_tb,
3859 { "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,
3860 NULL, HFILL }},
3861 { &hf_s7comm_szl_0131_0008_ba_stali1,
3862 { "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,
3863 NULL, HFILL }},
3864 { &hf_s7comm_szl_0131_0008_ba_stali1_tb,
3865 { "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,
3866 NULL, HFILL }},
3867 { &hf_s7comm_szl_0131_0008_ba_stali2,
3868 { "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,
3869 NULL, HFILL }},
3870 { &hf_s7comm_szl_0131_0008_ba_stali2_tb,
3871 { "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,
3872 NULL, HFILL }},
3873 { &hf_s7comm_szl_0131_0008_ba_stali3,
3874 { "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,
3875 NULL, HFILL }},
3876 { &hf_s7comm_szl_0131_0008_ba_stali3_tb,
3877 { "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,
3878 NULL, HFILL }},
3879 { &hf_s7comm_szl_0131_0008_akku,
3880 { "akku (Accumulators added to basic time when ACCU 1, 2 addressed) time value", "s7comm.szl.0131.0008.akku", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3881 NULL, HFILL }},
3882 { &hf_s7comm_szl_0131_0008_akku_tb,
3883 { "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,
3884 NULL, HFILL }},
3885 { &hf_s7comm_szl_0131_0008_address,
3886 { "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,
3887 NULL, HFILL }},
3888 { &hf_s7comm_szl_0131_0008_address_tb,
3889 { "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,
3890 NULL, HFILL }},
3891 { &hf_s7comm_szl_0131_0008_dbreg,
3892 { "dbreg (DB register added to basic time when DB register addressed) time value", "s7comm.szl.0131.0008.dbreg", FT_UINT16, BASE_DEC, NULL, 0x0fff,
3893 NULL, HFILL }},
3894 { &hf_s7comm_szl_0131_0008_dbreg_tb,
3895 { "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,
3896 NULL, HFILL }},
3897 { &hf_s7comm_szl_0131_0008_res,
3898 { "res (Reserved)", "s7comm.szl.0131.0008.res", FT_BYTES, BASE_NONE, NULL, 0x0,
3899 NULL, HFILL }}
3901 proto_register_field_array(proto, hf, array_length(hf));
3904 /*----------------------------------------------------------------------------------------------------*/
3905 static uint32_t
3906 s7comm_decode_szl_id_0131_idx_0008(tvbuff_t *tvb,
3907 proto_tree *tree,
3908 uint32_t offset)
3910 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_index, tvb, offset, 2, ENC_BIG_ENDIAN);
3911 offset += 2;
3912 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_1, tvb, offset, 2, ENC_BIG_ENDIAN);
3913 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_1_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3914 offset += 2;
3915 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_2, tvb, offset, 2, ENC_BIG_ENDIAN);
3916 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_2_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3917 offset += 2;
3918 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_3, tvb, offset, 2, ENC_BIG_ENDIAN);
3919 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_last_3_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3920 offset += 2;
3921 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_merker, tvb, offset, 2, ENC_BIG_ENDIAN);
3922 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_merker_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3923 offset += 2;
3924 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ea, tvb, offset, 2, ENC_BIG_ENDIAN);
3925 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ea_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3926 offset += 2;
3927 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_tz, tvb, offset, 2, ENC_BIG_ENDIAN);
3928 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_tz_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3929 offset += 2;
3930 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_db, tvb, offset, 2, ENC_BIG_ENDIAN);
3931 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_db_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3932 offset += 2;
3933 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ld, tvb, offset, 2, ENC_BIG_ENDIAN);
3934 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ld_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3935 offset += 2;
3936 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_reg, tvb, offset, 2, ENC_BIG_ENDIAN);
3937 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_reg_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3938 offset += 2;
3939 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali1, tvb, offset, 2, ENC_BIG_ENDIAN);
3940 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali1_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3941 offset += 2;
3942 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali2, tvb, offset, 2, ENC_BIG_ENDIAN);
3943 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali2_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3944 offset += 2;
3945 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali3, tvb, offset, 2, ENC_BIG_ENDIAN);
3946 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_ba_stali3_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3947 offset += 2;
3948 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_akku, tvb, offset, 2, ENC_BIG_ENDIAN);
3949 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_akku_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3950 offset += 2;
3951 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_address, tvb, offset, 2, ENC_BIG_ENDIAN);
3952 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_address_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3953 offset += 2;
3954 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_dbreg, tvb, offset, 2, ENC_BIG_ENDIAN);
3955 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_dbreg_tb, tvb, offset, 2, ENC_BIG_ENDIAN);
3956 offset += 2;
3957 proto_tree_add_item(tree, hf_s7comm_szl_0131_0008_res, tvb, offset, 8, ENC_NA);
3958 offset += 8;
3960 return offset;
3963 /*******************************************************************************************************
3965 * SZL-ID: 0x0131
3966 * Index: 0x0009
3967 * Content:
3968 * The partial list extract with SZL-ID W#16#0131 and the index W#16#0009
3969 * contains time-of-day capability parameters.
3971 *******************************************************************************************************/
3972 static void
3973 s7comm_szl_0131_0009_register(int proto)
3975 static hf_register_info hf[] = {
3976 { &hf_s7comm_szl_0131_0009_index,
3977 { "Index", "s7comm.szl.0131.0009.index", FT_UINT16, BASE_HEX, NULL, 0x0,
3978 "W#16#0009 Time-of-day capability", HFILL }},
3979 { &hf_s7comm_szl_0131_0009_sync_k,
3980 { "sync_k (Time synchronization C bus)", "s7comm.szl.0131.0009.sync_k", FT_UINT8, BASE_HEX, NULL, 0x0,
3981 NULL, HFILL }},
3982 { &hf_s7comm_szl_0131_0009_sync_k_0,
3983 { "Time-of-day synchronization neutral", "s7comm.szl.0131.0009.sync_k.neutral", FT_BOOLEAN, 8, NULL, 0x01,
3984 "Bit 0: Time-of-day synchronization neutral", HFILL }},
3985 { &hf_s7comm_szl_0131_0009_sync_k_1,
3986 { "Capable of being slave for time-of-day synchronization", "s7comm.szl.0131.0009.sync_k.slave", FT_BOOLEAN, 8, NULL, 0x02,
3987 "Bit 1: Capable of being slave for time-of-day synchronization", HFILL }},
3988 { &hf_s7comm_szl_0131_0009_sync_k_2,
3989 { "Capable of being master for time-of-day synchronization", "s7comm.szl.0131.0009.sync_k.master", FT_BOOLEAN, 8, NULL, 0x04,
3990 "Bit 2: Capable of being master for time-of-day synchronization", HFILL }},
3991 { &hf_s7comm_szl_0131_0009_sync_mpi,
3992 { "sync_mpi (Time synchronization via MPI)", "s7comm.szl.0131.0009.sync_mpi", FT_UINT8, BASE_HEX, NULL, 0x0,
3993 NULL, HFILL }},
3994 { &hf_s7comm_szl_0131_0009_sync_mpi_0,
3995 { "Time-of-day synchronization neutral", "s7comm.szl.0131.0009.sync_mpi.neutral", FT_BOOLEAN, 8, NULL, 0x01,
3996 "Bit 0: Time-of-day synchronization neutral", HFILL }},
3997 { &hf_s7comm_szl_0131_0009_sync_mpi_1,
3998 { "Capable of being slave for time-of-day synchronization", "s7comm.szl.0131.0009.sync_mpi.slave", FT_BOOLEAN, 8, NULL, 0x02,
3999 "Bit 1: Capable of being slave for time-of-day synchronization", HFILL }},
4000 { &hf_s7comm_szl_0131_0009_sync_mpi_2,
4001 { "Capable of being master for time-of-day synchronization", "s7comm.szl.0131.0009.sync_mpi.master", FT_BOOLEAN, 8, NULL, 0x04,
4002 "Bit 2: Capable of being master for time-of-day synchronization", HFILL }},
4003 { &hf_s7comm_szl_0131_0009_sync_mfi,
4004 { "sync_k (Time synchronization via MFI)", "s7comm.szl.0131.0009.sync_mfi", FT_UINT8, BASE_HEX, NULL, 0x0,
4005 NULL, HFILL }},
4006 { &hf_s7comm_szl_0131_0009_sync_mfi_0,
4007 { "Time-of-day synchronization neutral", "s7comm.szl.0131.0009.sync_mfi.neutral", FT_BOOLEAN, 8, NULL, 0x01,
4008 "Bit 0: Time-of-day synchronization neutral", HFILL }},
4009 { &hf_s7comm_szl_0131_0009_sync_mfi_1,
4010 { "Capable of being slave for time-of-day synchronization", "s7comm.szl.0131.0009.sync_mfi.slave", FT_BOOLEAN, 8, NULL, 0x02,
4011 "Bit 1: Capable of being slave for time-of-day synchronization", HFILL }},
4012 { &hf_s7comm_szl_0131_0009_sync_mfi_2,
4013 { "Capable of being master for time-of-day synchronization", "s7comm.szl.0131.0009.sync_mfi.master", FT_BOOLEAN, 8, NULL, 0x04,
4014 "Bit 2: Capable of being master for time-of-day synchronization", HFILL }},
4015 { &hf_s7comm_szl_0131_0009_res1,
4016 { "res1 (Reserved)", "s7comm.szl.0131.0009.res1", FT_UINT8, BASE_HEX, NULL, 0x0,
4017 NULL, HFILL }},
4018 { &hf_s7comm_szl_0131_0009_abw_puf,
4019 { "abw_puf (Clock deviation in ms/day when backed up)", "s7comm.szl.0131.0009.abw_puf", FT_UINT16, BASE_DEC, NULL, 0x0,
4020 NULL, HFILL }},
4021 { &hf_s7comm_szl_0131_0009_abw_5v,
4022 { "abw_5v (Clock deviation in ms/day in 5V operation)", "s7comm.szl.0131.0009.abw_5v", FT_UINT16, BASE_DEC, NULL, 0x0,
4023 NULL, HFILL }},
4024 { &hf_s7comm_szl_0131_0009_anz_bsz,
4025 { "anz_bsz (Number of run-time meters)", "s7comm.szl.0131.0009.anz_bsz", FT_UINT16, BASE_DEC, NULL, 0x0,
4026 NULL, HFILL }},
4027 { &hf_s7comm_szl_0131_0009_res2,
4028 { "res2 (Reserved)", "s7comm.szl.0131.0009.res2", FT_BYTES, BASE_NONE, NULL, 0x0,
4029 NULL, HFILL }}
4031 proto_register_field_array(proto, hf, array_length(hf));
4034 /*----------------------------------------------------------------------------------------------------*/
4035 static uint32_t
4036 s7comm_decode_szl_id_0131_idx_0009(tvbuff_t *tvb,
4037 proto_tree *tree,
4038 uint32_t offset)
4040 proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4041 offset += 2;
4042 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0009_sync_k,
4043 ett_s7comm_szl_0131_0009_sync_k, s7comm_szl_0131_0009_sync_k_fields, ENC_BIG_ENDIAN);
4044 offset += 1;
4045 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0009_sync_mpi,
4046 ett_s7comm_szl_0131_0009_sync_mpi, s7comm_szl_0131_0009_sync_mpi_fields, ENC_BIG_ENDIAN);
4047 offset += 1;
4048 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0009_sync_mfi,
4049 ett_s7comm_szl_0131_0009_sync_mfi, s7comm_szl_0131_0009_sync_mfi_fields, ENC_BIG_ENDIAN);
4050 offset += 1;
4051 proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_res1, tvb, offset, 1, ENC_BIG_ENDIAN);
4052 offset += 1;
4053 proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_abw_puf, tvb, offset, 2, ENC_BIG_ENDIAN);
4054 offset += 2;
4055 proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_abw_5v, tvb, offset, 2, ENC_BIG_ENDIAN);
4056 offset += 2;
4057 proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_anz_bsz, tvb, offset, 2, ENC_BIG_ENDIAN);
4058 offset += 2;
4059 proto_tree_add_item(tree, hf_s7comm_szl_0131_0009_res2, tvb, offset, 28, ENC_NA);
4060 offset += 28;
4062 return offset;
4065 /*******************************************************************************************************
4067 * SZL-ID: 0x0131
4068 * Index: 0x0010
4069 * Content:
4070 * The partial list extract with SZL-ID W#16#0131 and index W#16#0010
4071 * contains message parameters.
4073 *******************************************************************************************************/
4074 static void
4075 s7comm_szl_0131_0010_register(int proto)
4077 static hf_register_info hf[] = {
4078 { &hf_s7comm_szl_0131_0010_index,
4079 { "Index", "s7comm.szl.0131.0010.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4080 "W#16#0010 Message parameter", HFILL }},
4081 { &hf_s7comm_szl_0131_0010_funk_1,
4082 { "funk_1", "s7comm.szl.0131.0010.funk_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4083 "Block types available for data exchange with communication SFBs for configured connections", HFILL }},
4084 { &hf_s7comm_szl_0131_0010_funk_1_0,
4085 { "Bit 0: Group status messages exist", "s7comm.szl.0131.0010.funk_1.grp_status_msg", FT_BOOLEAN, 8, NULL, 0x01,
4086 NULL, HFILL }},
4087 { &hf_s7comm_szl_0131_0010_funk_1_1,
4088 { "Bit 1: Scan possible", "s7comm.szl.0131.0010.funk_1.scan_possible", FT_BOOLEAN, 8, NULL, 0x02,
4089 NULL, HFILL }},
4090 { &hf_s7comm_szl_0131_0010_funk_1_2,
4091 { "Bit 2: NOTIFY, ALARM, ALARM_8P, ALARM_8, (multicast) possible", "s7comm.szl.0131.0010.funk_1.notify_alarm", FT_BOOLEAN, 8, NULL, 0x04,
4092 NULL, HFILL }},
4093 { &hf_s7comm_szl_0131_0010_funk_1_3,
4094 { "Bit 3: Sending archive data possible", "s7comm.szl.0131.0010.funk_1.send_arc", FT_BOOLEAN, 8, NULL, 0x08,
4095 NULL, HFILL }},
4096 { &hf_s7comm_szl_0131_0010_funk_1_4,
4097 { "Bit 4: Reserved", "s7comm.szl.0131.0010.funk_1.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
4098 NULL, HFILL }},
4099 { &hf_s7comm_szl_0131_0010_funk_1_5,
4100 { "Bit 5: Reserved", "s7comm.szl.0131.0010.funk_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
4101 NULL, HFILL }},
4102 { &hf_s7comm_szl_0131_0010_funk_1_6,
4103 { "Bit 6: Reserved", "s7comm.szl.0131.0010.funk_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
4104 NULL, HFILL }},
4105 { &hf_s7comm_szl_0131_0010_funk_1_7,
4106 { "Bit 7: Reserved", "s7comm.szl.0131.0010.funk_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4107 NULL, HFILL }},
4108 { &hf_s7comm_szl_0131_0010_funk_2,
4109 { "funk_2", "s7comm.szl.0131.0010.funk_2", FT_UINT8, BASE_HEX, NULL, 0x0,
4110 "Reserved", HFILL }},
4111 { &hf_s7comm_szl_0131_0010_ber_meld_1,
4112 { "ber_meld_1", "s7comm.szl.0131.0010.ber_meld_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4113 "Permitted address areas for messages (SCAN)", HFILL }},
4114 { &hf_s7comm_szl_0131_0010_ber_meld_1_0,
4115 { "Bit 0: PII", "s7comm.szl.0131.0010.ber_meld_1.pii", FT_BOOLEAN, 8, NULL, 0x01,
4116 NULL, HFILL }},
4117 { &hf_s7comm_szl_0131_0010_ber_meld_1_1,
4118 { "Bit 1: PIQ", "s7comm.szl.0131.0010.ber_meld_1.piq", FT_BOOLEAN, 8, NULL, 0x02,
4119 NULL, HFILL }},
4120 { &hf_s7comm_szl_0131_0010_ber_meld_1_2,
4121 { "Bit 2: M", "s7comm.szl.0131.0010.ber_meld_1.m", FT_BOOLEAN, 8, NULL, 0x04,
4122 NULL, HFILL }},
4123 { &hf_s7comm_szl_0131_0010_ber_meld_1_3,
4124 { "Bit 3: DB", "s7comm.szl.0131.0010.ber_meld_1.db", FT_BOOLEAN, 8, NULL, 0x08,
4125 NULL, HFILL }},
4126 { &hf_s7comm_szl_0131_0010_ber_meld_1_4,
4127 { "Bit 4: Reserved", "s7comm.szl.0131.0010.ber_meld_1.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
4128 NULL, HFILL }},
4129 { &hf_s7comm_szl_0131_0010_ber_meld_1_5,
4130 { "Bit 5: Reserved", "s7comm.szl.0131.0010.ber_meld_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
4131 NULL, HFILL }},
4132 { &hf_s7comm_szl_0131_0010_ber_meld_1_6,
4133 { "Bit 6: Reserved", "s7comm.szl.0131.0010.ber_meld_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
4134 NULL, HFILL }},
4135 { &hf_s7comm_szl_0131_0010_ber_meld_1_7,
4136 { "Bit 7: Reserved", "s7comm.szl.0131.0010.ber_meld_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4137 NULL, HFILL }},
4138 { &hf_s7comm_szl_0131_0010_ber_meld_2,
4139 { "ber_meld_2", "s7comm.szl.0131.0010.ber_meld_2", FT_UINT8, BASE_HEX, NULL, 0x0,
4140 "Reserved", HFILL }},
4141 { &hf_s7comm_szl_0131_0010_ber_zus_1,
4142 { "ber_zus_1", "s7comm.szl.0131.0010.ber_zus_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4143 "Permitted address areas for messages (SCAN)", HFILL }},
4144 { &hf_s7comm_szl_0131_0010_ber_zus_1_0,
4145 { "Bit 0: PII", "s7comm.szl.0131.0010.ber_zus_1.pii", FT_BOOLEAN, 8, NULL, 0x01,
4146 NULL, HFILL }},
4147 { &hf_s7comm_szl_0131_0010_ber_zus_1_1,
4148 { "Bit 1: PIQ", "s7comm.szl.0131.0010.ber_zus_1.piq", FT_BOOLEAN, 8, NULL, 0x02,
4149 NULL, HFILL }},
4150 { &hf_s7comm_szl_0131_0010_ber_zus_1_2,
4151 { "Bit 2: M", "s7comm.szl.0131.0010.ber_zus_1.m", FT_BOOLEAN, 8, NULL, 0x04,
4152 NULL, HFILL }},
4153 { &hf_s7comm_szl_0131_0010_ber_zus_1_3,
4154 { "Bit 3: DB", "s7comm.szl.0131.0010.ber_zus_1.db", FT_BOOLEAN, 8, NULL, 0x08,
4155 NULL, HFILL }},
4156 { &hf_s7comm_szl_0131_0010_ber_zus_1_4,
4157 { "Bit 4: Reserved", "s7comm.szl.0131.0010.ber_zus_1.bit4_res", FT_BOOLEAN, 8, NULL, 0x10,
4158 NULL, HFILL }},
4159 { &hf_s7comm_szl_0131_0010_ber_zus_1_5,
4160 { "Bit 5: Reserved", "s7comm.szl.0131.0010.ber_zus_1.bit5_res", FT_BOOLEAN, 8, NULL, 0x20,
4161 NULL, HFILL }},
4162 { &hf_s7comm_szl_0131_0010_ber_zus_1_6,
4163 { "Bit 6: Reserved", "s7comm.szl.0131.0010.ber_zus_1.bit6_res", FT_BOOLEAN, 8, NULL, 0x40,
4164 NULL, HFILL }},
4165 { &hf_s7comm_szl_0131_0010_ber_zus_1_7,
4166 { "Bit 7: Reserved", "s7comm.szl.0131.0010.ber_zus_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4167 NULL, HFILL }},
4168 { &hf_s7comm_szl_0131_0010_ber_zus_2,
4169 { "ber_zus_2", "s7comm.szl.0131.0010.ber_zus_2", FT_UINT8, BASE_HEX, NULL, 0x0,
4170 "Reserved", HFILL }},
4171 { &hf_s7comm_szl_0131_0010_typ_zus_1,
4172 { "typ_zus_1", "s7comm.szl.0131.0010.typ_zus_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4173 "Permitted data types for additional values (SCAN)", HFILL }},
4174 { &hf_s7comm_szl_0131_0010_typ_zus_1_0,
4175 { "Bit 0: Bit", "s7comm.szl.0131.0010.typ_zus_1.bit", FT_BOOLEAN, 8, NULL, 0x01,
4176 NULL, HFILL }},
4177 { &hf_s7comm_szl_0131_0010_typ_zus_1_1,
4178 { "Bit 1: Byte", "s7comm.szl.0131.0010.typ_zus_1.byte", FT_BOOLEAN, 8, NULL, 0x02,
4179 NULL, HFILL }},
4180 { &hf_s7comm_szl_0131_0010_typ_zus_1_2,
4181 { "Bit 2: Word", "s7comm.szl.0131.0010.typ_zus_1.word", FT_BOOLEAN, 8, NULL, 0x04,
4182 NULL, HFILL }},
4183 { &hf_s7comm_szl_0131_0010_typ_zus_1_3,
4184 { "Bit 3: DWord", "s7comm.szl.0131.0010.typ_zus_1.dword", FT_BOOLEAN, 8, NULL, 0x08,
4185 NULL, HFILL }},
4186 { &hf_s7comm_szl_0131_0010_typ_zus_1_4,
4187 { "Bit 4: Timer", "s7comm.szl.0131.0010.typ_zus_1.timer", FT_BOOLEAN, 8, NULL, 0x10,
4188 NULL, HFILL }},
4189 { &hf_s7comm_szl_0131_0010_typ_zus_1_5,
4190 { "Bit 5: Counter", "s7comm.szl.0131.0010.typ_zus_1.counter", FT_BOOLEAN, 8, NULL, 0x20,
4191 NULL, HFILL }},
4192 { &hf_s7comm_szl_0131_0010_typ_zus_1_6,
4193 { "Bit 6: Array of char[16]", "s7comm.szl.0131.0010.typ_zus_1.array_char", FT_BOOLEAN, 8, NULL, 0x40,
4194 NULL, HFILL }},
4195 { &hf_s7comm_szl_0131_0010_typ_zus_1_7,
4196 { "Bit 7: Reserved", "s7comm.szl.0131.0010.typ_zus_1.bit7_res", FT_BOOLEAN, 8, NULL, 0x80,
4197 NULL, HFILL }},
4198 { &hf_s7comm_szl_0131_0010_typ_zus_2,
4199 { "typ_zus_2", "s7comm.szl.0131.0010.typ_zus_2", FT_UINT8, BASE_HEX, NULL, 0x0,
4200 "Reserved", HFILL }},
4201 { &hf_s7comm_szl_0131_0010_maxanz_arch,
4202 { "maxanz_arch (Maximum number of archives for 'Send Archive')", "s7comm.szl.0132.0010.maxanz_arch", FT_UINT16, BASE_DEC, NULL, 0x0,
4203 NULL, HFILL }},
4204 { &hf_s7comm_szl_0131_0010_res,
4205 { "res (Reserved)", "s7comm.szl.0131.0010.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4206 NULL, HFILL }}
4208 proto_register_field_array(proto, hf, array_length(hf));
4211 /*----------------------------------------------------------------------------------------------------*/
4212 static uint32_t
4213 s7comm_decode_szl_id_0131_idx_0010(tvbuff_t *tvb,
4214 proto_tree *tree,
4215 uint32_t offset)
4217 proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4218 offset += 2;
4219 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0010_funk_1,
4220 ett_s7comm_szl_0131_0010_funk_1, s7comm_szl_0131_0010_funk_1_fields, ENC_BIG_ENDIAN);
4221 offset += 1;
4222 proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_funk_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4223 offset += 1;
4224 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0010_ber_meld_1,
4225 ett_s7comm_szl_0131_0010_ber_meld_1, s7comm_szl_0131_0010_ber_meld_1_fields, ENC_BIG_ENDIAN);
4226 offset += 1;
4227 proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_ber_meld_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4228 offset += 1;
4229 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0010_ber_zus_1,
4230 ett_s7comm_szl_0131_0010_ber_zus_1, s7comm_szl_0131_0010_ber_zus_1_fields, ENC_BIG_ENDIAN);
4231 offset += 1;
4232 proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_ber_zus_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4233 offset += 1;
4234 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0131_0010_typ_zus_1,
4235 ett_s7comm_szl_0131_0010_typ_zus_1, s7comm_szl_0131_0010_typ_zus_1_fields, ENC_BIG_ENDIAN);
4236 offset += 1;
4237 proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_typ_zus_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4238 offset += 1;
4239 proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_maxanz_arch, tvb, offset, 2, ENC_BIG_ENDIAN);
4240 offset += 2;
4241 proto_tree_add_item(tree, hf_s7comm_szl_0131_0010_res, tvb, offset, 28, ENC_NA);
4242 offset += 28;
4244 return offset;
4247 /*******************************************************************************************************
4249 * SZL-ID: 0x0132
4250 * Index: 0x0001
4251 * Content:
4252 * The partial list extract with SZL-ID W#16#0132 and index W#16#0001
4253 * contains general communication status data.
4255 *******************************************************************************************************/
4256 static void
4257 s7comm_szl_0132_0001_register(int proto)
4259 static hf_register_info hf[] = {
4260 { &hf_s7comm_szl_0132_0001_index,
4261 { "Index", "s7comm.szl.0132.0001.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4262 "W#16#0001: General status data for communication", HFILL }},
4263 { &hf_s7comm_szl_0132_0001_res_pg,
4264 { "res pg (Guaranteed number of PG connections)", "s7comm.szl.0132.0001.res_pg", FT_UINT16, BASE_DEC, NULL, 0x0,
4265 NULL, HFILL }},
4266 { &hf_s7comm_szl_0132_0001_res_os,
4267 { "res os (Guaranteed number of OS connections)", "s7comm.szl.0132.0001.res_os", FT_UINT16, BASE_DEC, NULL, 0x0,
4268 NULL, HFILL }},
4269 { &hf_s7comm_szl_0132_0001_u_pg,
4270 { "u pg (Current number of PG connections)", "s7comm.szl.0132.0001.u_pg", FT_UINT16, BASE_DEC, NULL, 0x0,
4271 NULL, HFILL }},
4272 { &hf_s7comm_szl_0132_0001_u_os,
4273 { "u os (Current number of OS connections)", "s7comm.szl.0132.0001.u_os", FT_UINT16, BASE_DEC, NULL, 0x0,
4274 NULL, HFILL }},
4275 { &hf_s7comm_szl_0132_0001_proj,
4276 { "proj (Current number of configured connections)", "s7comm.szl.0132.0001.proj", FT_UINT16, BASE_DEC, NULL, 0x0,
4277 NULL, HFILL }},
4278 { &hf_s7comm_szl_0132_0001_auf,
4279 { "auf (Current number of connections established by proj)", "s7comm.szl.0132.0001.auf", FT_UINT16, BASE_DEC, NULL, 0x0,
4280 NULL, HFILL }},
4281 { &hf_s7comm_szl_0132_0001_free,
4282 { "free (Number of free connections)", "s7comm.szl.0132.0001.free", FT_UINT16, BASE_DEC, NULL, 0x0,
4283 NULL, HFILL }},
4284 { &hf_s7comm_szl_0132_0001_used,
4285 { "used (Number of free connections used)", "s7comm.szl.0132.0001.used", FT_UINT16, BASE_DEC, NULL, 0x0,
4286 NULL, HFILL }},
4287 { &hf_s7comm_szl_0132_0001_last,
4288 { "last (Maximum selected communication load of the CPU in %)", "s7comm.szl.0132.0001.last", FT_UINT16, BASE_DEC, NULL, 0x0,
4289 NULL, HFILL }},
4290 { &hf_s7comm_szl_0132_0001_res,
4291 { "res (Reserved)", "s7comm.szl.0132.0001.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4292 NULL, HFILL }}
4294 proto_register_field_array(proto, hf, array_length(hf));
4297 /*----------------------------------------------------------------------------------------------------*/
4298 static uint32_t
4299 s7comm_decode_szl_id_0132_idx_0001(tvbuff_t *tvb,
4300 proto_tree *tree,
4301 uint32_t offset)
4303 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4304 offset += 2;
4305 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_res_pg, tvb, offset, 2, ENC_BIG_ENDIAN);
4306 offset += 2;
4307 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_res_os, tvb, offset, 2, ENC_BIG_ENDIAN);
4308 offset += 2;
4309 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_u_pg, tvb, offset, 2, ENC_BIG_ENDIAN);
4310 offset += 2;
4311 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_u_os, tvb, offset, 2, ENC_BIG_ENDIAN);
4312 offset += 2;
4313 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_proj, tvb, offset, 2, ENC_BIG_ENDIAN);
4314 offset += 2;
4315 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_auf, tvb, offset, 2, ENC_BIG_ENDIAN);
4316 offset += 2;
4317 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_free, tvb, offset, 2, ENC_BIG_ENDIAN);
4318 offset += 2;
4319 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_used, tvb, offset, 2, ENC_BIG_ENDIAN);
4320 offset += 2;
4321 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_last, tvb, offset, 2, ENC_BIG_ENDIAN);
4322 offset += 2;
4323 proto_tree_add_item(tree, hf_s7comm_szl_0132_0001_res, tvb, offset, 20, ENC_NA);
4324 offset += 20;
4326 return offset;
4329 /*******************************************************************************************************
4331 * SZL-ID: 0x0132
4332 * Index: 0x0002
4333 * Content:
4334 * The partial list extract with SZL-ID W#16#0132 and the index W#16#0002
4335 * contains information about the test and installation function status of the module.
4337 *******************************************************************************************************/
4338 static void
4339 s7comm_szl_0132_0002_register(int proto)
4341 static hf_register_info hf[] = {
4342 { &hf_s7comm_szl_0132_0002_index,
4343 { "Index", "s7comm.szl.0132.0002.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4344 "W#16#0002: Test and installation status", HFILL }},
4345 { &hf_s7comm_szl_0132_0002_anz,
4346 { "anz (Number of initialized test and installation jobs)", "s7comm.szl.0132.0002.anz", FT_UINT16, BASE_DEC, NULL, 0x0,
4347 NULL, HFILL }},
4348 { &hf_s7comm_szl_0132_0002_res,
4349 { "res (Reserved)", "s7comm.szl.0132.0002.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4350 NULL, HFILL }}
4352 proto_register_field_array(proto, hf, array_length(hf));
4355 /*----------------------------------------------------------------------------------------------------*/
4356 static uint32_t
4357 s7comm_decode_szl_id_0132_idx_0002(tvbuff_t *tvb,
4358 proto_tree *tree,
4359 uint32_t offset)
4361 proto_tree_add_item(tree, hf_s7comm_szl_0132_0002_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4362 offset += 2;
4363 proto_tree_add_item(tree, hf_s7comm_szl_0132_0002_anz, tvb, offset, 2, ENC_BIG_ENDIAN);
4364 offset += 2;
4365 proto_tree_add_item(tree, hf_s7comm_szl_0132_0002_res, tvb, offset, 36, ENC_NA);
4366 offset += 36;
4368 return offset;
4371 /*******************************************************************************************************
4373 * SZL-ID: 0x0132
4374 * Index: 0x0004
4375 * Content:
4376 * The partial list extract with SZL-ID W#16#0132 and the index W#16#0004
4377 * contains information about the protection level of the module.
4379 *******************************************************************************************************/
4380 static void
4381 s7comm_szl_0132_0004_register(int proto)
4383 static hf_register_info hf[] = {
4384 { &hf_s7comm_szl_0132_0004_index,
4385 { "Index", "s7comm.szl.0132.0004.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4386 "W#16#0004 Protection status data", HFILL }},
4387 { &hf_s7comm_szl_0132_0004_key,
4388 { "key (Protection level for the key switch, possible values: 1,2 or 3)", "s7comm.szl.0132.0004.key", FT_UINT16, BASE_DEC, NULL, 0x0,
4389 NULL, HFILL }},
4390 { &hf_s7comm_szl_0132_0004_param,
4391 { "param (Assigned protection level, possible values: 0, 1, 2 or 3)", "s7comm.szl.0132.0004.param", FT_UINT16, BASE_DEC, NULL, 0x0,
4392 "param (Assigned protection level (possible values: 0, 1, 2 or 3;0 means: no password assigned, assigned protection level is not valid)", HFILL }},
4393 { &hf_s7comm_szl_0132_0004_real,
4394 { "real (Valid protection level of the CPU, possible values: 1, 2 or 3)", "s7comm.szl.0132.0004.real", FT_UINT16, BASE_DEC, NULL, 0x0,
4395 NULL, HFILL }},
4396 { &hf_s7comm_szl_0132_0004_bart_sch,
4397 { "bart_sch (Position of the mode switch)", "s7comm.szl.0132.0004.bart_sch", FT_UINT16, BASE_DEC, VALS(szl_bart_sch_names), 0x0,
4398 NULL, HFILL }},
4399 { &hf_s7comm_szl_0132_0004_crst_wrst,
4400 { "crst_wrst (Setting of the CRST/WRST switch)", "s7comm.szl.0132.0004.crst_wrst", FT_UINT16, BASE_DEC, VALS(szl_crst_wrst_names), 0x0,
4401 NULL, HFILL }},
4402 { &hf_s7comm_szl_0132_0004_ken_f,
4403 { "ken_f (Reserved)", "s7comm.szl.0132.0004.ken_f", FT_UINT16, BASE_HEX, NULL, 0x0,
4404 NULL, HFILL }},
4405 { &hf_s7comm_szl_0132_0004_ken_rel,
4406 { "ken_rel (ID for valid version identifications/checksums)", "s7comm.szl.0132.0004.ken_rel", FT_UINT16, BASE_HEX, NULL, 0x0,
4407 "ken_rel (ID for valid version identifications/checksums) 0=invalid", HFILL }},
4408 { &hf_s7comm_szl_0132_0004_ken_ver1_hw,
4409 { "ken_ver1_hw (Version ID/checksum 1 of the hardware configuration)", "s7comm.szl.0132.0004.ken_ver1_hw", FT_UINT16, BASE_HEX, NULL, 0x0,
4410 "ken_ver1_hw: Version ID/checksum 1 of the hardware configuration: XOR over the length of all SDBs", HFILL }},
4411 { &hf_s7comm_szl_0132_0004_ken_ver2_hw,
4412 { "ken_ver2_hw (Version ID/checksum 2 of the hardware configuration)", "s7comm.szl.0132.0004.ken_ver2_hw", FT_UINT16, BASE_HEX, NULL, 0x0,
4413 "ken_ver2_hw: Version ID/checksum 2 of the hardware configuration: XOR over the checksums of all SDBs", HFILL }},
4414 { &hf_s7comm_szl_0132_0004_ken_ver1_awp,
4415 { "ken_ver1_awp (Version ID/checksum 1 of the user program)", "s7comm.szl.0132.0004.ken_ver1_awp", FT_UINT16, BASE_HEX, NULL, 0x0,
4416 "ken_ver1_awp: Version ID/checksum 1 of the user program): XOR over the length of all OBs, DBs, FBs, FCs", HFILL }},
4417 { &hf_s7comm_szl_0132_0004_ken_ver2_awp,
4418 { "ken_ver2_awp (Version ID/checksum 2 of the user program)", "s7comm.szl.0132.0004.ken_ver2_awp", FT_UINT16, BASE_HEX, NULL, 0x0,
4419 "ken_ver2_awp: Version ID/checksum 2 of the user program): XOR over the checksums of all OBs, DBs, FBs, FCs", HFILL }},
4420 { &hf_s7comm_szl_0132_0004_res,
4421 { "res (Reserved)", "s7comm.szl.0132.0004.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4422 NULL, HFILL }}
4424 proto_register_field_array(proto, hf, array_length(hf));
4427 /*----------------------------------------------------------------------------------------------------*/
4428 static uint32_t
4429 s7comm_decode_szl_id_0132_idx_0004(tvbuff_t *tvb,
4430 proto_tree *tree,
4431 uint32_t offset)
4433 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4434 offset += 2;
4435 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_key, tvb, offset, 2, ENC_BIG_ENDIAN);
4436 offset += 2;
4437 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_param, tvb, offset, 2, ENC_BIG_ENDIAN);
4438 offset += 2;
4439 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_real, tvb, offset, 2, ENC_BIG_ENDIAN);
4440 offset += 2;
4441 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_bart_sch, tvb, offset, 2, ENC_BIG_ENDIAN);
4442 offset += 2;
4443 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_crst_wrst, tvb, offset, 2, ENC_BIG_ENDIAN);
4444 offset += 2;
4445 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_f, tvb, offset, 2, ENC_BIG_ENDIAN);
4446 offset += 2;
4447 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_rel, tvb, offset, 2, ENC_BIG_ENDIAN);
4448 offset += 2;
4449 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_ver1_hw, tvb, offset, 2, ENC_LITTLE_ENDIAN);
4450 offset += 2;
4451 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_ver2_hw, tvb, offset, 2, ENC_LITTLE_ENDIAN);
4452 offset += 2;
4453 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_ver1_awp, tvb, offset, 2, ENC_LITTLE_ENDIAN);
4454 offset += 2;
4455 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_ken_ver2_awp, tvb, offset, 2, ENC_LITTLE_ENDIAN);
4456 offset += 2;
4457 proto_tree_add_item(tree, hf_s7comm_szl_0132_0004_res, tvb, offset, 16, ENC_NA);
4458 offset += 16;
4460 return offset;
4463 /*******************************************************************************************************
4465 * SZL-ID: 0x0132
4466 * Index: 0x0005
4467 * Content:
4468 * The partial list extract with SZL-ID W#16#0132 and index W#16#0005
4469 * contains information about the status of the diagnostics on the module.
4471 *******************************************************************************************************/
4472 static void
4473 s7comm_szl_0132_0005_register(int proto)
4475 static hf_register_info hf[] = {
4476 { &hf_s7comm_szl_0132_0005_index,
4477 { "Index", "s7comm.szl.0132.0005.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4478 "W#16#0005: Diagnostics", HFILL }},
4479 { &hf_s7comm_szl_0132_0005_erw,
4480 { "erw (Extended functions)", "s7comm.szl.0132.0005.erw", FT_UINT16, BASE_DEC, VALS(szl_0132_0005_func_exist_names), 0x0,
4481 NULL, HFILL }},
4482 { &hf_s7comm_szl_0132_0005_send,
4483 { "send (Automatic sending)", "s7comm.szl.0132.0005.send", FT_UINT16, BASE_DEC, VALS(szl_0132_0005_func_exist_names), 0x0,
4484 NULL, HFILL }},
4485 { &hf_s7comm_szl_0132_0005_moeg,
4486 { "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,
4487 NULL, HFILL }},
4488 { &hf_s7comm_szl_0132_0005_ltmerz,
4489 { "ltmerz (Generation of status message active)", "s7comm.szl.0132.0005.ltmerz", FT_UINT16, BASE_DEC, VALS(szl_0132_0005_func_exist_names), 0x0,
4490 NULL, HFILL }},
4491 { &hf_s7comm_szl_0132_0005_res,
4492 { "res (Reserved)", "s7comm.szl.0132.0005.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4493 NULL, HFILL }}
4495 proto_register_field_array(proto, hf, array_length(hf));
4498 /*----------------------------------------------------------------------------------------------------*/
4499 static uint32_t
4500 s7comm_decode_szl_id_0132_idx_0005(tvbuff_t *tvb,
4501 proto_tree *tree,
4502 uint32_t offset)
4504 proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4505 offset += 2;
4506 proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_erw, tvb, offset, 2, ENC_BIG_ENDIAN);
4507 offset += 2;
4508 proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_send, tvb, offset, 2, ENC_BIG_ENDIAN);
4509 offset += 2;
4510 proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_moeg, tvb, offset, 2, ENC_BIG_ENDIAN);
4511 offset += 2;
4512 proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_ltmerz, tvb, offset, 2, ENC_BIG_ENDIAN);
4513 offset += 2;
4514 proto_tree_add_item(tree, hf_s7comm_szl_0132_0005_res, tvb, offset, 30, ENC_NA);
4515 offset += 30;
4517 return offset;
4520 /*******************************************************************************************************
4522 * SZL-ID: 0x0132
4523 * Index: 0x0006
4524 * Content:
4525 * The partial list extract with SZL-ID W#16#0132 and index W#16#0006
4526 * contains status data about data exchange with communication SFBs for
4527 * configured connections.
4529 *******************************************************************************************************/
4530 static void
4531 s7comm_szl_0132_0006_register(int proto)
4533 static hf_register_info hf[] = {
4534 { &hf_s7comm_szl_0132_0006_index,
4535 { "Index", "s7comm.szl.0132.0006.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4536 "W#16#0006: Data exchange with communication SFBs for configured connections", HFILL }},
4537 { &hf_s7comm_szl_0132_0006_used_0,
4538 { "used_0 (Blocks used)", "s7comm.szl.0132.0006.used_0", FT_BYTES, BASE_NONE, NULL, 0x0,
4539 NULL, HFILL }},
4540 { &hf_s7comm_szl_0132_0006_used_1,
4541 { "used_1 (Blocks used)", "s7comm.szl.0132.0006.used_1", FT_BYTES, BASE_NONE, NULL, 0x0,
4542 NULL, HFILL }},
4543 { &hf_s7comm_szl_0132_0006_used_2,
4544 { "used_2 (Blocks used)", "s7comm.szl.0132.0006.used_2", FT_BYTES, BASE_NONE, NULL, 0x0,
4545 NULL, HFILL }},
4546 { &hf_s7comm_szl_0132_0006_used_3,
4547 { "used_3 (Blocks used)", "s7comm.szl.0132.0006.used_3", FT_BYTES, BASE_NONE, NULL, 0x0,
4548 NULL, HFILL }},
4549 { &hf_s7comm_szl_0132_0006_used_4,
4550 { "used_4 (Blocks used)", "s7comm.szl.0132.0006.used_4", FT_BYTES, BASE_NONE, NULL, 0x0,
4551 NULL, HFILL }},
4552 { &hf_s7comm_szl_0132_0006_used_5,
4553 { "used_5 (Blocks used)", "s7comm.szl.0132.0006.used_5", FT_BYTES, BASE_NONE, NULL, 0x0,
4554 NULL, HFILL }},
4555 { &hf_s7comm_szl_0132_0006_used_6,
4556 { "used_6 (Blocks used)", "s7comm.szl.0132.0006.used_6", FT_BYTES, BASE_NONE, NULL, 0x0,
4557 NULL, HFILL }},
4558 { &hf_s7comm_szl_0132_0006_used_7,
4559 { "used_7 (Blocks used)", "s7comm.szl.0132.0006.used_7", FT_BYTES, BASE_NONE, NULL, 0x0,
4560 NULL, HFILL }},
4561 { &hf_s7comm_szl_0132_0006_anz_schnell,
4562 { "anz_schnell (Reserved)", "s7comm.szl.0132.0006.anz_schnell", FT_UINT16, BASE_DEC, NULL, 0x0,
4563 NULL, HFILL }},
4564 { &hf_s7comm_szl_0132_0006_anz_inst,
4565 { "anz_inst (Number of loaded SFB instances)", "s7comm.szl.0132.0006.anz_inst", FT_UINT16, BASE_DEC, NULL, 0x0,
4566 NULL, HFILL }},
4567 { &hf_s7comm_szl_0132_0006_anz_multicast,
4568 { "anz_multicast (Number of blocks used for multicast)", "s7comm.szl.0132.0006.anz_multicast", FT_UINT16, BASE_DEC, NULL, 0x0,
4569 NULL, HFILL }},
4570 { &hf_s7comm_szl_0132_0006_res,
4571 { "res (Reserved)", "s7comm.szl.0132.0006.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4572 NULL, HFILL }}
4574 proto_register_field_array(proto, hf, array_length(hf));
4577 /*----------------------------------------------------------------------------------------------------*/
4578 static uint32_t
4579 s7comm_decode_szl_id_0132_idx_0006(tvbuff_t *tvb,
4580 proto_tree *tree,
4581 uint32_t offset)
4583 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4584 offset += 2;
4585 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_0, tvb, offset, 1, ENC_NA);
4586 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4587 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4588 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4589 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_3, tvb, offset, 1, ENC_BIG_ENDIAN);
4590 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4591 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4592 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_6, tvb, offset, 1, ENC_BIG_ENDIAN);
4593 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_0_7, tvb, offset, 1, ENC_BIG_ENDIAN);
4594 offset += 1;
4595 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_1, tvb, offset, 1, ENC_NA);
4596 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4597 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4598 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4599 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_3, tvb, offset, 1, ENC_BIG_ENDIAN);
4600 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4601 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4602 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_6, tvb, offset, 1, ENC_BIG_ENDIAN);
4603 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_1_7, tvb, offset, 1, ENC_BIG_ENDIAN);
4604 offset += 1;
4605 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_2, tvb, offset, 1, ENC_NA);
4606 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4607 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4608 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4609 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_3, tvb, offset, 1, ENC_BIG_ENDIAN);
4610 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4611 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4612 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_6, tvb, offset, 1, ENC_BIG_ENDIAN);
4613 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_2_7, tvb, offset, 1, ENC_BIG_ENDIAN);
4614 offset += 1;
4615 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_3, tvb, offset, 1, ENC_NA);
4616 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4617 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4618 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4619 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_3, tvb, offset, 1, ENC_BIG_ENDIAN);
4620 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4621 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4622 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_6, tvb, offset, 1, ENC_BIG_ENDIAN);
4623 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_3_7, tvb, offset, 1, ENC_BIG_ENDIAN);
4624 offset += 1;
4625 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_4, tvb, offset, 1, ENC_NA);
4626 offset += 1;
4627 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_5, tvb, offset, 1, ENC_NA);
4628 offset += 1;
4629 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_6, tvb, offset, 1, ENC_NA);
4630 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4631 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4632 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4633 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_3, tvb, offset, 1, ENC_BIG_ENDIAN);
4634 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4635 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4636 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_6, tvb, offset, 1, ENC_BIG_ENDIAN);
4637 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_6_7, tvb, offset, 1, ENC_BIG_ENDIAN);
4638 offset += 1;
4639 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_used_7, tvb, offset, 1, ENC_NA);
4640 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4641 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4642 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_2, tvb, offset, 1, ENC_BIG_ENDIAN);
4643 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_3, tvb, offset, 1, ENC_BIG_ENDIAN);
4644 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_4, tvb, offset, 1, ENC_BIG_ENDIAN);
4645 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_5, tvb, offset, 1, ENC_BIG_ENDIAN);
4646 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_6, tvb, offset, 1, ENC_BIG_ENDIAN);
4647 proto_tree_add_item(tree, hf_s7comm_szl_0131_0006_funkt_7_7, tvb, offset, 1, ENC_BIG_ENDIAN);
4648 offset += 1;
4649 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_anz_schnell, tvb, offset, 1, ENC_BIG_ENDIAN);
4650 offset += 1;
4651 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_anz_inst, tvb, offset, 2, ENC_BIG_ENDIAN);
4652 offset += 2;
4653 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_anz_multicast, tvb, offset, 2, ENC_BIG_ENDIAN);
4654 offset += 2;
4655 proto_tree_add_item(tree, hf_s7comm_szl_0132_0006_res, tvb, offset, 25, ENC_NA);
4656 offset += 25;
4658 return offset;
4661 /*******************************************************************************************************
4663 * SZL-ID: 0x0132
4664 * Index: 0x0008
4665 * Content:
4666 * The partial list extract with SZL-ID W#16#0132 and index W#16#0008
4667 * contains information on the status of the modules time system.
4669 *******************************************************************************************************/
4670 static void
4671 s7comm_szl_0132_0008_register(int proto)
4673 static hf_register_info hf[] = {
4674 { &hf_s7comm_szl_0132_0008_index,
4675 { "Index", "s7comm.szl.0132.0008.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4676 "W#16#0008: Time system status", HFILL }},
4677 { &hf_s7comm_szl_0132_0008_zykl,
4678 { "zykl (Cycle time of the synchronization frames)", "s7comm.szl.0132.0008.zykl", FT_UINT16, BASE_DEC, NULL, 0x0,
4679 NULL, HFILL }},
4680 { &hf_s7comm_szl_0132_0008_korr,
4681 { "korr (Correction factor for time-of-day)", "s7comm.szl.0132.0008.korr", FT_UINT16, BASE_DEC, NULL, 0x0,
4682 NULL, HFILL }},
4683 { &hf_s7comm_szl_0132_0008_clock0,
4684 { "clock 0 (Run-time meter 0: Time in hours)", "s7comm.szl.0132.0008.clock0", FT_UINT16, BASE_DEC, NULL, 0x0,
4685 NULL, HFILL }},
4686 { &hf_s7comm_szl_0132_0008_clock1,
4687 { "clock 1 (Run-time meter 1: Time in hours)", "s7comm.szl.0132.0008.clock1", FT_UINT16, BASE_DEC, NULL, 0x0,
4688 NULL, HFILL }},
4689 { &hf_s7comm_szl_0132_0008_clock2,
4690 { "clock 2 (Run-time meter 2: Time in hours)", "s7comm.szl.0132.0008.clock2", FT_UINT16, BASE_DEC, NULL, 0x0,
4691 NULL, HFILL }},
4692 { &hf_s7comm_szl_0132_0008_clock3,
4693 { "clock 3 (Run-time meter 3: Time in hours)", "s7comm.szl.0132.0008.clock3", FT_UINT16, BASE_DEC, NULL, 0x0,
4694 NULL, HFILL }},
4695 { &hf_s7comm_szl_0132_0008_clock4,
4696 { "clock 4 (Run-time meter 4: Time in hours)", "s7comm.szl.0132.0008.clock4", FT_UINT16, BASE_DEC, NULL, 0x0,
4697 NULL, HFILL }},
4698 { &hf_s7comm_szl_0132_0008_clock5,
4699 { "clock 5 (Run-time meter 5: Time in hours)", "s7comm.szl.0132.0008.clock5", FT_UINT16, BASE_DEC, NULL, 0x0,
4700 NULL, HFILL }},
4701 { &hf_s7comm_szl_0132_0008_clock6,
4702 { "clock 6 (Run-time meter 6: Time in hours)", "s7comm.szl.0132.0008.clock6", FT_UINT16, BASE_DEC, NULL, 0x0,
4703 NULL, HFILL }},
4704 { &hf_s7comm_szl_0132_0008_clock7,
4705 { "clock 7 (Run-time meter 7: Time in hours)", "s7comm.szl.0132.0008.clock7", FT_UINT16, BASE_DEC, NULL, 0x0,
4706 NULL, HFILL }},
4707 { &hf_s7comm_szl_0132_0008_time,
4708 { "time (Current date and time)", "s7comm.szl.0132.0008.time", FT_BYTES, BASE_NONE, NULL, 0x0,
4709 "time (Current date and time) format: date_and_time", HFILL }},
4710 { &hf_s7comm_szl_0132_0008_res,
4711 { "res (Reserved)", "s7comm.szl.0132.0008.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4712 NULL, HFILL }}
4714 proto_register_field_array(proto, hf, array_length(hf));
4717 /*----------------------------------------------------------------------------------------------------*/
4718 static uint32_t
4719 s7comm_decode_szl_id_0132_idx_0008(tvbuff_t *tvb,
4720 proto_tree *tree,
4721 uint32_t offset)
4723 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4724 offset += 2;
4725 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_zykl, tvb, offset, 2, ENC_BIG_ENDIAN);
4726 offset += 2;
4727 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_korr, tvb, offset, 2, ENC_BIG_ENDIAN);
4728 offset += 2;
4729 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock0, tvb, offset, 2, ENC_BIG_ENDIAN);
4730 offset += 2;
4731 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock1, tvb, offset, 2, ENC_BIG_ENDIAN);
4732 offset += 2;
4733 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock2, tvb, offset, 2, ENC_BIG_ENDIAN);
4734 offset += 2;
4735 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock3, tvb, offset, 2, ENC_BIG_ENDIAN);
4736 offset += 2;
4737 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock4, tvb, offset, 2, ENC_BIG_ENDIAN);
4738 offset += 2;
4739 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock5, tvb, offset, 2, ENC_BIG_ENDIAN);
4740 offset += 2;
4741 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock6, tvb, offset, 2, ENC_BIG_ENDIAN);
4742 offset += 2;
4743 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_clock7, tvb, offset, 2, ENC_BIG_ENDIAN);
4744 offset += 2;
4745 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_time, tvb, offset, 8, ENC_NA);
4746 offset += 8;
4747 proto_tree_add_item(tree, hf_s7comm_szl_0132_0008_res, tvb, offset, 10, ENC_NA);
4748 offset += 10;
4750 return offset;
4753 /*******************************************************************************************************
4755 * SZL-ID: 0x0132
4756 * Index: 0x000b
4757 * Content:
4758 * The partial list extract with SZL-ID W#16#0132 and index W#16#000B
4759 * contains information about the status of the 32-bit run-time meters 0..7 of the module.
4761 *******************************************************************************************************/
4762 static void
4763 s7comm_szl_0132_000b_register(int proto)
4765 static hf_register_info hf[] = {
4766 { &hf_s7comm_szl_0132_000b_index,
4767 { "Index", "s7comm.szl.0132.000b.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4768 "W#16#000B: Time system status", HFILL }},
4769 { &hf_s7comm_szl_0132_000b_bszl_0,
4770 { "bszl_0 (Status of run-time meter)", "s7comm.szl.0132.000b.bszl_0", FT_UINT8, BASE_HEX, NULL, 0x0,
4771 "bszl_0 (Status of run-time meter): Bit = 1: run-time meter is busy" , HFILL }},
4772 { &hf_s7comm_szl_0132_000b_bszl_1,
4773 { "bszl_1 (Reserved)", "s7comm.szl.0132.000b.bszl_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4774 NULL, HFILL }},
4775 { &hf_s7comm_szl_0132_000b_bszu_0,
4776 { "bszu_0 (Overflow of run-time meter)", "s7comm.szl.0132.000b.bszu_0", FT_UINT8, BASE_HEX, NULL, 0x0,
4777 "bszu_0 (Overflow of run-time meter): Bit = 1: overflow", HFILL }},
4778 { &hf_s7comm_szl_0132_000b_bszu_1,
4779 { "bszu_1 (Reserved)", "s7comm.szl.0132.000b.bszu_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4780 NULL, HFILL }},
4781 { &hf_s7comm_szl_0132_000b_clock0,
4782 { "clock 0 (Run-time meter 0: Time in hours)", "s7comm.szl.0132.000b.clock0", FT_UINT32, BASE_DEC, NULL, 0x0,
4783 NULL, HFILL }},
4784 { &hf_s7comm_szl_0132_000b_clock1,
4785 { "clock 1 (Run-time meter 1: Time in hours)", "s7comm.szl.0132.000b.clock1", FT_UINT32, BASE_DEC, NULL, 0x0,
4786 NULL, HFILL }},
4787 { &hf_s7comm_szl_0132_000b_clock2,
4788 { "clock 2 (Run-time meter 2: Time in hours)", "s7comm.szl.0132.000b.clock2", FT_UINT32, BASE_DEC, NULL, 0x0,
4789 NULL, HFILL }},
4790 { &hf_s7comm_szl_0132_000b_clock3,
4791 { "clock 3 (Run-time meter 3: Time in hours)", "s7comm.szl.0132.000b.clock3", FT_UINT32, BASE_DEC, NULL, 0x0,
4792 NULL, HFILL }},
4793 { &hf_s7comm_szl_0132_000b_clock4,
4794 { "clock 4 (Run-time meter 4: Time in hours)", "s7comm.szl.0132.000b.clock4", FT_UINT32, BASE_DEC, NULL, 0x0,
4795 NULL, HFILL }},
4796 { &hf_s7comm_szl_0132_000b_clock5,
4797 { "clock 5 (Run-time meter 5: Time in hours)", "s7comm.szl.0132.000b.clock5", FT_UINT32, BASE_DEC, NULL, 0x0,
4798 NULL, HFILL }},
4799 { &hf_s7comm_szl_0132_000b_clock6,
4800 { "clock 6 (Run-time meter 6: Time in hours)", "s7comm.szl.0132.000b.clock6", FT_UINT32, BASE_DEC, NULL, 0x0,
4801 NULL, HFILL }},
4802 { &hf_s7comm_szl_0132_000b_clock7,
4803 { "clock 7 (Run-time meter 7: Time in hours)", "s7comm.szl.0132.000b.clock7", FT_UINT32, BASE_DEC, NULL, 0x0,
4804 NULL, HFILL }},
4805 { &hf_s7comm_szl_0132_000b_res,
4806 { "res (Reserved)", "s7comm.szl.0132.000b.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4807 NULL, HFILL }}
4809 proto_register_field_array(proto, hf, array_length(hf));
4811 /*----------------------------------------------------------------------------------------------------*/
4812 static uint32_t
4813 s7comm_decode_szl_id_0132_idx_000b(tvbuff_t *tvb,
4814 proto_tree *tree,
4815 uint32_t offset)
4817 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4818 offset += 2;
4819 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_bszl_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4820 offset += 1;
4821 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_bszl_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4822 offset += 1;
4823 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_bszu_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4824 offset += 1;
4825 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_bszu_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4826 offset += 1;
4827 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock0, tvb, offset, 4, ENC_BIG_ENDIAN);
4828 offset += 4;
4829 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock1, tvb, offset, 4, ENC_BIG_ENDIAN);
4830 offset += 4;
4831 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock2, tvb, offset, 4, ENC_BIG_ENDIAN);
4832 offset += 4;
4833 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock3, tvb, offset, 4, ENC_BIG_ENDIAN);
4834 offset += 4;
4835 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock4, tvb, offset, 4, ENC_BIG_ENDIAN);
4836 offset += 4;
4837 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock5, tvb, offset, 4, ENC_BIG_ENDIAN);
4838 offset += 4;
4839 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock6, tvb, offset, 4, ENC_BIG_ENDIAN);
4840 offset += 4;
4841 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_clock7, tvb, offset, 4, ENC_BIG_ENDIAN);
4842 offset += 4;
4843 proto_tree_add_item(tree, hf_s7comm_szl_0132_000b_res, tvb, offset, 2, ENC_NA);
4844 offset += 2;
4846 return offset;
4849 /*******************************************************************************************************
4851 * SZL-ID: 0x0132
4852 * Index: 0x000c
4853 * Content:
4854 * The partial list extract with SZL-ID W#16#0132 and index W#16#000C
4855 * contains information about the status of the 32-bit run-time meters 8..15 of the module.
4857 *******************************************************************************************************/
4858 static void
4859 s7comm_szl_0132_000c_register(int proto)
4861 static hf_register_info hf[] = {
4862 { &hf_s7comm_szl_0132_000c_index,
4863 { "Index", "s7comm.szl.0132.000c.index", FT_UINT16, BASE_HEX, NULL, 0x0,
4864 "W#16#000C: Time system status", HFILL }},
4865 { &hf_s7comm_szl_0132_000c_bszl_0,
4866 { "bszl_0 (Status of run-time meter)", "s7comm.szl.0132.000c.bszl_0", FT_UINT8, BASE_HEX, NULL, 0x0,
4867 "bszl_0 (Status of run-time meter): Bit = 1: run-time meter is busy" , HFILL }},
4868 { &hf_s7comm_szl_0132_000c_bszl_1,
4869 { "bszl_1 (Reserved)", "s7comm.szl.0132.000c.bszl_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4870 NULL, HFILL }},
4871 { &hf_s7comm_szl_0132_000c_bszu_0,
4872 { "bszu_0 (Overflow of run-time meter)", "s7comm.szl.0132.000c.bszu_0", FT_UINT8, BASE_HEX, NULL, 0x0,
4873 "bszu_0 (Overflow of run-time meter): Bit = 1: overflow", HFILL }},
4874 { &hf_s7comm_szl_0132_000c_bszu_1,
4875 { "bszu_1 (Reserved)", "s7comm.szl.0132.000c.bszu_1", FT_UINT8, BASE_HEX, NULL, 0x0,
4876 NULL, HFILL }},
4877 { &hf_s7comm_szl_0132_000c_clock8,
4878 { "clock 8 (Run-time meter 8: Time in hours)", "s7comm.szl.0132.000c.clock8", FT_UINT32, BASE_DEC, NULL, 0x0,
4879 NULL, HFILL }},
4880 { &hf_s7comm_szl_0132_000c_clock9,
4881 { "clock 9 (Run-time meter 9: Time in hours)", "s7comm.szl.0132.000c.clock9", FT_UINT32, BASE_DEC, NULL, 0x0,
4882 NULL, HFILL }},
4883 { &hf_s7comm_szl_0132_000c_clock10,
4884 { "clock 10 (Run-time meter 10: Time in hours)", "s7comm.szl.0132.000c.clock10", FT_UINT32, BASE_DEC, NULL, 0x0,
4885 NULL, HFILL }},
4886 { &hf_s7comm_szl_0132_000c_clock11,
4887 { "clock 11 (Run-time meter 11: Time in hours)", "s7comm.szl.0132.000c.clock11", FT_UINT32, BASE_DEC, NULL, 0x0,
4888 NULL, HFILL }},
4889 { &hf_s7comm_szl_0132_000c_clock12,
4890 { "clock 12 (Run-time meter 12: Time in hours)", "s7comm.szl.0132.000c.clock12", FT_UINT32, BASE_DEC, NULL, 0x0,
4891 NULL, HFILL }},
4892 { &hf_s7comm_szl_0132_000c_clock13,
4893 { "clock 13 (Run-time meter 13: Time in hours)", "s7comm.szl.0132.000c.clock13", FT_UINT32, BASE_DEC, NULL, 0x0,
4894 NULL, HFILL }},
4895 { &hf_s7comm_szl_0132_000c_clock14,
4896 { "clock 14 (Run-time meter 14: Time in hours)", "s7comm.szl.0132.000c.clock14", FT_UINT32, BASE_DEC, NULL, 0x0,
4897 NULL, HFILL }},
4898 { &hf_s7comm_szl_0132_000c_clock15,
4899 { "clock 15 (Run-time meter 15: Time in hours)", "s7comm.szl.0132.000c.clock15", FT_UINT32, BASE_DEC, NULL, 0x0,
4900 NULL, HFILL }},
4901 { &hf_s7comm_szl_0132_000c_res,
4902 { "res (Reserved)", "s7comm.szl.0132.000c.res", FT_BYTES, BASE_NONE, NULL, 0x0,
4903 NULL, HFILL }}
4905 proto_register_field_array(proto, hf, array_length(hf));
4908 /*----------------------------------------------------------------------------------------------------*/
4909 static uint32_t
4910 s7comm_decode_szl_id_0132_idx_000c(tvbuff_t *tvb,
4911 proto_tree *tree,
4912 uint32_t offset)
4914 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_index, tvb, offset, 2, ENC_BIG_ENDIAN);
4915 offset += 2;
4916 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_bszl_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4917 offset += 1;
4918 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_bszl_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4919 offset += 1;
4920 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_bszu_0, tvb, offset, 1, ENC_BIG_ENDIAN);
4921 offset += 1;
4922 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_bszu_1, tvb, offset, 1, ENC_BIG_ENDIAN);
4923 offset += 1;
4924 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock8, tvb, offset, 4, ENC_BIG_ENDIAN);
4925 offset += 4;
4926 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock9, tvb, offset, 4, ENC_BIG_ENDIAN);
4927 offset += 4;
4928 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock10, tvb, offset, 4, ENC_BIG_ENDIAN);
4929 offset += 4;
4930 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock11, tvb, offset, 4, ENC_BIG_ENDIAN);
4931 offset += 4;
4932 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock12, tvb, offset, 4, ENC_BIG_ENDIAN);
4933 offset += 4;
4934 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock13, tvb, offset, 4, ENC_BIG_ENDIAN);
4935 offset += 4;
4936 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock14, tvb, offset, 4, ENC_BIG_ENDIAN);
4937 offset += 4;
4938 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_clock15, tvb, offset, 4, ENC_BIG_ENDIAN);
4939 offset += 4;
4940 proto_tree_add_item(tree, hf_s7comm_szl_0132_000c_res, tvb, offset, 2, ENC_NA);
4941 offset += 2;
4943 return offset;
4946 /*******************************************************************************************************
4948 * SZL-ID: 0xxy74
4949 * Index: 0x0000
4950 * Content:
4951 * If you read the partial list SSL-ID W#16#xy74, with standard CPUs (if present) and
4952 * with the H CPUs, you obtain the status of the module LEDs.
4954 *******************************************************************************************************/
4955 static void
4956 s7comm_szl_xy74_0000_register(int proto)
4958 static hf_register_info hf[] = {
4959 { &hf_s7comm_szl_xy74_0000_cpu_led_id,
4960 { "cpu_led_id", "s7comm.szl.xy74.0000.cpu_led_id", FT_UINT16, BASE_HEX, NULL, 0x0,
4961 NULL, HFILL }},
4962 { &hf_s7comm_szl_xy74_0000_cpu_led_id_rackno,
4963 { "Bits 0, 1, 2: Rack number", "s7comm.szl.xy74.0000.cpu_led_id.rackno", FT_UINT16, BASE_DEC, NULL, 0x0700,
4964 NULL, HFILL }},
4965 { &hf_s7comm_szl_xy74_0000_cpu_led_id_cputype,
4966 { "Bit 3: CPU Type (0=Standby, 1=Master)", "s7comm.szl.xy74.0000.cpu_led_id.cputype", FT_UINT16, BASE_DEC, NULL, 0x0800,
4967 NULL, HFILL }},
4968 { &hf_s7comm_szl_xy74_0000_cpu_led_id_id,
4969 { "Byte 1: LED ID", "s7comm.szl.xy74.0000.cpu_led_id.id", FT_UINT16, BASE_DEC, VALS(szl_0119_0174_ledid_index_names), 0x00ff,
4970 NULL, HFILL }},
4971 { &hf_s7comm_szl_xy74_0000_led_on,
4972 { "Status of the LED", "s7comm.szl.xy74.0000.led_on", FT_UINT8, BASE_DEC, VALS(szl_xy74_0000_led_on_names), 0x00,
4973 NULL, HFILL }},
4974 { &hf_s7comm_szl_xy74_0000_led_blink,
4975 { "Flashing status of the LED", "s7comm.szl.xy74.0000.led_blink", FT_UINT8, BASE_DEC, VALS(szl_xy74_0000_led_blink_names), 0x00,
4976 NULL, HFILL }}
4978 proto_register_field_array(proto, hf, array_length(hf));
4981 /*----------------------------------------------------------------------------------------------------*/
4982 static uint32_t
4983 s7comm_decode_szl_id_xy74_idx_0000(tvbuff_t *tvb,
4984 proto_tree *tree,
4985 uint32_t offset)
4987 proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_cpu_led_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4988 proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_cpu_led_id_rackno, tvb, offset, 2, ENC_BIG_ENDIAN);
4989 proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_cpu_led_id_cputype, tvb, offset, 2, ENC_BIG_ENDIAN);
4990 proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_cpu_led_id_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4991 offset += 2;
4992 proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_led_on, tvb, offset, 1, ENC_BIG_ENDIAN);
4993 offset += 1;
4994 proto_tree_add_item(tree, hf_s7comm_szl_xy74_0000_led_blink, tvb, offset, 1, ENC_BIG_ENDIAN);
4995 offset += 1;
4997 return offset;
5000 /*******************************************************************************************************
5002 * SZL-ID: 0xxy1c
5003 * Index: 0x000x
5004 * Content:
5005 * If you read the partial list SSL-ID W#16#xy1c, you obtain the CPU or PLC identification.
5007 *******************************************************************************************************/
5008 static void
5009 s7comm_szl_xy1c_000x_register(int proto)
5011 static hf_register_info hf[] = {
5012 { &hf_s7comm_szl_001c_000x_index,
5013 { "Index", "s7comm.szl.001c.000x.index", FT_UINT16, BASE_HEX, VALS(szl_xy1c_index_names), 0x0,
5014 NULL, HFILL }},
5015 { &hf_s7comm_szl_001c_000x_res,
5016 { "Reserved", "s7comm.szl.001c.000x.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5017 NULL, HFILL }},
5018 { &hf_s7comm_szl_001c_0001_name,
5019 { "Name (Name of the PLC)", "s7comm.szl.001c.0001.name", FT_STRING, BASE_NONE, NULL, 0x0,
5020 NULL, HFILL }},
5021 { &hf_s7comm_szl_001c_0002_name,
5022 { "Name (Name of the module)", "s7comm.szl.001c.0002.name", FT_STRING, BASE_NONE, NULL, 0x0,
5023 NULL, HFILL }},
5024 { &hf_s7comm_szl_001c_0003_tag,
5025 { "Tag (Plant identification of the module)", "s7comm.szl.001c.0003.tag", FT_STRING, BASE_NONE, NULL, 0x0,
5026 NULL, HFILL }},
5027 { &hf_s7comm_szl_001c_0004_copyright,
5028 { "Copyright", "s7comm.szl.001c.0004.copyright", FT_STRING, BASE_NONE, NULL, 0x0,
5029 NULL, HFILL }},
5030 { &hf_s7comm_szl_001c_0005_serialn,
5031 { "Serialn (Serialnumber of the module)", "s7comm.szl.001c.0005.serialn", FT_STRING, BASE_NONE, NULL, 0x0,
5032 NULL, HFILL }},
5033 { &hf_s7comm_szl_001c_0007_cputypname,
5034 { "Cputypname (Module type namee)", "s7comm.szl.001c.0007.cputypname", FT_STRING, BASE_NONE, NULL, 0x0,
5035 NULL, HFILL }},
5036 { &hf_s7comm_szl_001c_0008_snmcmmc,
5037 { "Sn_mc/mmc (Serial number of the Memory Card/Micro Memory Card)", "s7comm.szl.001c.0008.snmcmmc", FT_STRING, BASE_NONE, NULL, 0x0,
5038 NULL, HFILL }},
5039 { &hf_s7comm_szl_001c_0009_manufacturer_id,
5040 { "Manufacturer_id", "s7comm.szl.001c.0009.manufacturer_id", FT_UINT16, BASE_HEX, NULL, 0x0,
5041 "Manufacturer_id (PROFIBUS / PROFINET Identification & Maintenance)", HFILL }},
5042 { &hf_s7comm_szl_001c_0009_profile_id,
5043 { "Profile_id", "s7comm.szl.001c.0009.profile_id", FT_UINT16, BASE_HEX, NULL, 0x0,
5044 "Profile_id (PROFIBUS / PROFINET Identification & Maintenance)", HFILL }},
5045 { &hf_s7comm_szl_001c_0009_profile_spec_typ,
5046 { "Profile_spec_typ", "s7comm.szl.001c.0009.profile_spec_typ", FT_UINT16, BASE_HEX, NULL, 0x0,
5047 "Profile_spec_typ (PROFIBUS / PROFINET Identification & Maintenance)", HFILL }},
5048 { &hf_s7comm_szl_001c_000a_oem_copyright_string,
5049 { "Oem_copyright_string (OEM Copyright ID)", "s7comm.szl.001c.000a.oem_copyright_string", FT_STRING, BASE_NONE, NULL, 0x0,
5050 NULL, HFILL }},
5051 { &hf_s7comm_szl_001c_000a_oem_id,
5052 { "Oem_id (OEM ID)", "s7comm.szl.001c.000a.oem_id", FT_UINT16, BASE_HEX, NULL, 0x0,
5053 NULL, HFILL }},
5054 { &hf_s7comm_szl_001c_000a_oem_add_id,
5055 { "Oem_add_id (OEM additional ID)", "s7comm.szl.001c.000a.oem_add_id", FT_UINT32, BASE_HEX, NULL, 0x0,
5056 NULL, HFILL }},
5057 { &hf_s7comm_szl_001c_000b_loc_id,
5058 { "Loc_id (Location designation)", "s7comm.szl.001c.000b.loc_id", FT_STRING, BASE_NONE, NULL, 0x0,
5059 NULL, HFILL }}
5061 proto_register_field_array(proto, hf, array_length(hf));
5064 /*----------------------------------------------------------------------------------------------------*/
5065 static uint32_t
5066 s7comm_decode_szl_id_xy1c_idx_000x(tvbuff_t *tvb,
5067 proto_tree *tree,
5068 uint32_t offset)
5070 uint32_t idx;
5071 proto_tree_add_item_ret_uint(tree, hf_s7comm_szl_001c_000x_index, tvb, offset, 2, ENC_BIG_ENDIAN, &idx);
5072 offset += 2;
5073 /* For redundant H-CPUs there may be some upper bits set to identify the CPU */
5074 switch (idx & 0x000f) {
5075 case 0x0001:
5076 proto_tree_add_item(tree, hf_s7comm_szl_001c_0001_name, tvb, offset, 24, ENC_ASCII);
5077 offset += 24;
5078 proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 8, ENC_NA);
5079 offset += 8;
5080 break;
5081 case 0x0002:
5082 proto_tree_add_item(tree, hf_s7comm_szl_001c_0002_name, tvb, offset, 24, ENC_ASCII);
5083 offset += 24;
5084 proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 8, ENC_NA);
5085 offset += 8;
5086 break;
5087 case 0x0003:
5088 proto_tree_add_item(tree, hf_s7comm_szl_001c_0003_tag, tvb, offset, 32, ENC_ASCII);
5089 offset += 32;
5090 break;
5091 case 0x0004:
5092 proto_tree_add_item(tree, hf_s7comm_szl_001c_0004_copyright, tvb, offset, 26, ENC_ASCII);
5093 offset += 26;
5094 proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 6, ENC_NA);
5095 offset += 6;
5096 break;
5097 case 0x0005:
5098 proto_tree_add_item(tree, hf_s7comm_szl_001c_0005_serialn, tvb, offset, 24, ENC_ASCII);
5099 offset += 24;
5100 proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 8, ENC_NA);
5101 offset += 8;
5102 break;
5103 case 0x0007:
5104 proto_tree_add_item(tree, hf_s7comm_szl_001c_0007_cputypname, tvb, offset, 32, ENC_ASCII);
5105 offset += 32;
5106 break;
5107 case 0x0008:
5108 proto_tree_add_item(tree, hf_s7comm_szl_001c_0008_snmcmmc, tvb, offset, 32, ENC_ASCII);
5109 offset += 32;
5110 break;
5111 case 0x0009:
5112 proto_tree_add_item(tree, hf_s7comm_szl_001c_0009_manufacturer_id, tvb, offset, 2, ENC_BIG_ENDIAN);
5113 offset += 2;
5114 proto_tree_add_item(tree, hf_s7comm_szl_001c_0009_profile_id, tvb, offset, 2, ENC_BIG_ENDIAN);
5115 offset += 2;
5116 proto_tree_add_item(tree, hf_s7comm_szl_001c_0009_profile_spec_typ, tvb, offset, 2, ENC_BIG_ENDIAN);
5117 offset += 2;
5118 proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 26, ENC_NA);
5119 offset += 26;
5120 break;
5121 case 0x000a:
5122 proto_tree_add_item(tree, hf_s7comm_szl_001c_000a_oem_copyright_string, tvb, offset, 26, ENC_ASCII);
5123 offset += 26;
5124 proto_tree_add_item(tree, hf_s7comm_szl_001c_000a_oem_id, tvb, offset, 2, ENC_BIG_ENDIAN);
5125 offset += 2;
5126 proto_tree_add_item(tree, hf_s7comm_szl_001c_000a_oem_add_id, tvb, offset, 4, ENC_BIG_ENDIAN);
5127 offset += 4;
5128 break;
5129 case 0x000b:
5130 proto_tree_add_item(tree, hf_s7comm_szl_001c_000b_loc_id, tvb, offset, 32, ENC_ASCII);
5131 offset += 32;
5132 break;
5133 default:
5134 proto_tree_add_item(tree, hf_s7comm_szl_001c_000x_res, tvb, offset, 32, ENC_NA);
5135 offset += 32;
5136 break;
5138 return offset;
5141 /*******************************************************************************************************
5143 * SZL-ID: 0xxy91
5144 * Index: 0x0000
5145 * Content:
5146 * If you read the partial list SSL-ID W#16#xy91, you obtain the status information of modules assigned
5147 * to the CPU.
5149 *******************************************************************************************************/
5150 static void
5151 s7comm_szl_xy91_0000_register(int proto)
5153 static hf_register_info hf[] = {
5154 { &hf_s7comm_szl_0091_0000_adr1,
5155 { "Adr1", "s7comm.szl.0091.0000.adr1", FT_UINT16, BASE_HEX, NULL, 0x0,
5156 NULL, HFILL }},
5157 { &hf_s7comm_szl_0091_0000_adr2,
5158 { "Adr2", "s7comm.szl.0091.0000.adr2", FT_UINT16, BASE_HEX, NULL, 0x0,
5159 NULL, HFILL }},
5160 { &hf_s7comm_szl_0091_0000_logadr,
5161 { "Logadr", "s7comm.szl.0091.0000.logadr", FT_UINT16, BASE_DEC, NULL, 0x0,
5162 "Logadr (First assigned logical I/O address (base address))", HFILL }},
5163 { &hf_s7comm_szl_0091_0000_solltyp,
5164 { "Expected type", "s7comm.szl.0091.0000.exptype", FT_UINT16, BASE_HEX, NULL, 0x0,
5165 "Solltyp (PROFINET IO: expected (configured) type, otherwise reserved)", HFILL }},
5166 { &hf_s7comm_szl_0091_0000_isttyp,
5167 { "Actual type", "s7comm.szl.0091.0000.acttype", FT_UINT16, BASE_HEX, NULL, 0x0,
5168 "Isttyp (PROFINET IO: actual type, otherwise reserved)", HFILL }},
5169 /* Field depends on the first byte of the SZL-ID */
5170 { &hf_s7comm_szl_0091_0000_res1,
5171 { "Reserved", "s7comm.szl.0091.0000.res1", FT_UINT16, BASE_HEX, NULL, 0x0,
5172 NULL, HFILL }},
5173 { &hf_s7comm_szl_0091_0000_res1_0c_4c_4d,
5174 { "Reserved (number of actually existing interface modules)", "s7comm.szl.0091.0000.res1_0c_4c_4d", FT_UINT16, BASE_DEC, NULL, 0x0,
5175 NULL, HFILL }},
5176 { &hf_s7comm_szl_0091_0000_res1_0d,
5177 { "Reserved (number of interface modules)", "s7comm.szl.0091.0000.res1_0d", FT_UINT16, BASE_DEC, NULL, 0x0,
5178 NULL, HFILL }},
5179 { &hf_s7comm_szl_0091_0000_eastat,
5180 { "I/O status", "s7comm.szl.0091.0000.eastat", FT_UINT16, BASE_HEX, NULL, 0x0,
5181 NULL, HFILL }},
5182 { &hf_s7comm_szl_0091_0000_eastat_0,
5183 { "Module error", "s7comm.szl.0091.0000.eastat.moderror", FT_BOOLEAN, 16, NULL, 0x0001,
5184 "Bit 0: Module error", HFILL }},
5185 { &hf_s7comm_szl_0091_0000_eastat_1,
5186 { "Module exists", "s7comm.szl.0091.0000.eastat.modexists", FT_BOOLEAN, 16, NULL, 0x0002,
5187 "Bit 1: Module exists", HFILL }},
5188 { &hf_s7comm_szl_0091_0000_eastat_2,
5189 { "Module not available", "s7comm.szl.0091.0000.eastat.modnotav", FT_BOOLEAN, 16, NULL, 0x0004,
5190 "Bit 2: Module not available", HFILL }},
5191 { &hf_s7comm_szl_0091_0000_eastat_3,
5192 { "Module disabled", "s7comm.szl.0091.0000.eastat.moddisabl", FT_BOOLEAN, 16, NULL, 0x0008,
5193 "Bit 3: Module disabled", HFILL }},
5194 { &hf_s7comm_szl_0091_0000_eastat_4,
5195 { "Station error", "s7comm.szl.0091.0000.eastat.staterr", FT_BOOLEAN, 16, NULL, 0x0010,
5196 "Bit 4: Station error", HFILL }},
5197 { &hf_s7comm_szl_0091_0000_eastat_5,
5198 { "CiR event busy", "s7comm.szl.0091.0000.eastat.cirbusy", FT_BOOLEAN, 16, NULL, 0x0020,
5199 "Bit 5: A CiR event at this module/station is busy or not yet completed", HFILL }},
5200 { &hf_s7comm_szl_0091_0000_eastat_6,
5201 { "Reserved", "s7comm.szl.0091.0000.eastat.res", FT_BOOLEAN, 16, NULL, 0x0040,
5202 "Bit 6: Reserved for S7-400", HFILL }},
5203 { &hf_s7comm_szl_0091_0000_eastat_7,
5204 { "Module in local bus segment", "s7comm.szl.0091.0000.eastat.modlocseg", FT_BOOLEAN, 16, NULL, 0x0080,
5205 "Bit 7: Module in local bus segment", HFILL }},
5206 { &hf_s7comm_szl_0091_0000_eastat_dataid,
5207 { "Data ID for logical address", "s7comm.szl.0091.0000.eastat.dataid", FT_UINT16, BASE_HEX, VALS(szl_0091_0000_eastat_dataid_names), 0xff00,
5208 "Bit 8 to 15: Data ID for logical address", HFILL }},
5209 { &hf_s7comm_szl_0091_0000_berbgbr,
5210 { "Ber_bgbr (Area ID/module width)", "s7comm.szl.0091.0000.berbgbr", FT_UINT16, BASE_HEX, NULL, 0x0,
5211 NULL, HFILL }},
5212 { &hf_s7comm_szl_0091_0000_berbgbr_0_2,
5213 { "Module width", "s7comm.szl.0091.0000.berbgbr.width", FT_UINT16, BASE_DEC, NULL, 0x0007,
5214 "Bit 0 to 2: Module width", HFILL }},
5215 { &hf_s7comm_szl_0091_0000_berbgbr_3,
5216 { "Reserved", "s7comm.szl.0091.0000.berbgbr.bit3_res", FT_BOOLEAN, 16, NULL, 0x0008,
5217 "Bit 3: Reserved", HFILL }},
5218 { &hf_s7comm_szl_0091_0000_berbgbr_areaid,
5219 { "Area ID", "s7comm.szl.0091.0000.berbgbr.areaid", FT_UINT16, BASE_DEC, VALS(szl_0091_0000_berbgbr_areaid_names), 0x0070,
5220 "Bit 4 to 6: Area ID", HFILL }},
5221 { &hf_s7comm_szl_0091_0000_berbgbr_7,
5222 { "Reserved", "s7comm.szl.0091.0000.berbgbr.bit7_res", FT_BOOLEAN, 16, NULL, 0x0080,
5223 "Bit 7: Reserved", HFILL }}
5225 proto_register_field_array(proto, hf, array_length(hf));
5228 /*----------------------------------------------------------------------------------------------------*/
5229 static uint32_t
5230 s7comm_decode_szl_id_xy91_idx_0000(tvbuff_t *tvb,
5231 proto_tree *tree,
5232 uint16_t id,
5233 uint32_t offset)
5235 proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_adr1, tvb, offset, 2, ENC_BIG_ENDIAN);
5236 offset += 2;
5237 proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_adr2, tvb, offset, 2, ENC_BIG_ENDIAN);
5238 offset += 2;
5239 proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_logadr, tvb, offset, 2, ENC_BIG_ENDIAN);
5240 offset += 2;
5241 proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_solltyp, tvb, offset, 2, ENC_BIG_ENDIAN);
5242 offset += 2;
5243 proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_isttyp, tvb, offset, 2, ENC_BIG_ENDIAN);
5244 offset += 2;
5245 switch (id) {
5246 case 0x0c91:
5247 case 0x4c91:
5248 case 0x4d91:
5249 proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_res1_0c_4c_4d, tvb, offset, 2, ENC_BIG_ENDIAN);
5250 break;
5251 case 0x0d91:
5252 proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_res1_0d, tvb, offset, 2, ENC_BIG_ENDIAN);
5253 break;
5254 default:
5255 proto_tree_add_item(tree, hf_s7comm_szl_0091_0000_res1, tvb, offset, 2, ENC_BIG_ENDIAN);
5256 break;
5258 offset += 2;
5259 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0091_0000_eastat,
5260 ett_s7comm_szl_0091_0000_eastat, s7comm_szl_0091_0000_eastat_fields, ENC_BIG_ENDIAN);
5261 offset += 2;
5262 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0091_0000_berbgbr,
5263 ett_s7comm_szl_0091_0000_berbgbr, s7comm_szl_0091_0000_berbgbr_fields, ENC_BIG_ENDIAN);
5264 offset += 2;
5266 return offset;
5269 /*******************************************************************************************************
5271 * SZL-ID: 0xxy92
5272 * Index: 0x0000
5273 * Content:
5274 * If you read the partial list SSL-ID W#16#xy92, you obtain information about the expected and the
5275 * current hardware configuration of centrally installed racks and stations of a DP master system.
5277 *******************************************************************************************************/
5278 static void
5279 s7comm_szl_xy92_xxxx_register(int proto)
5281 static hf_register_info hf[] = {
5282 { &hf_s7comm_szl_0092_0xxx_status_0,
5283 { "status_0", "s7comm.szl.0092.xxxx.status_0", FT_UINT8, BASE_HEX, NULL, 0x0,
5284 "status_0: Status of station 1..8", HFILL }},
5285 { &hf_s7comm_szl_0092_0xxx_status_1,
5286 { "status_1", "s7comm.szl.0092.xxxx.status_1", FT_UINT8, BASE_HEX, NULL, 0x0,
5287 "status_1: Status of station 9..16", HFILL }},
5288 { &hf_s7comm_szl_0092_0xxx_status_2,
5289 { "status_2", "s7comm.szl.0092.xxxx.status_2", FT_UINT8, BASE_HEX, NULL, 0x0,
5290 "status_2: Status of station 17..24", HFILL }},
5291 { &hf_s7comm_szl_0092_0xxx_status_3,
5292 { "status_3", "s7comm.szl.0092.xxxx.status_3", FT_UINT8, BASE_HEX, NULL, 0x0,
5293 "status_3: Status of station 25..32", HFILL }},
5294 { &hf_s7comm_szl_0092_0xxx_status_4,
5295 { "status_4", "s7comm.szl.0092.xxxx.status_4", FT_UINT8, BASE_HEX, NULL, 0x0,
5296 "status_4: Status of station 33..40", HFILL }},
5297 { &hf_s7comm_szl_0092_0xxx_status_5,
5298 { "status_5", "s7comm.szl.0092.xxxx.status_5", FT_UINT8, BASE_HEX, NULL, 0x0,
5299 "status_5: Status of station 41..48", HFILL }},
5300 { &hf_s7comm_szl_0092_0xxx_status_6,
5301 { "status_6", "s7comm.szl.0092.xxxx.status_6", FT_UINT8, BASE_HEX, NULL, 0x0,
5302 "status_6: Status of station 49..56", HFILL }},
5303 { &hf_s7comm_szl_0092_0xxx_status_7,
5304 { "status_7", "s7comm.szl.0092.xxxx.status_7", FT_UINT8, BASE_HEX, NULL, 0x0,
5305 "status_7: Status of station 57..64", HFILL }},
5306 { &hf_s7comm_szl_0092_0xxx_status_8,
5307 { "status_8", "s7comm.szl.0092.xxxx.status_8", FT_UINT8, BASE_HEX, NULL, 0x0,
5308 "status_8: Status of station 65..72", HFILL }},
5309 { &hf_s7comm_szl_0092_0xxx_status_9,
5310 { "status_9", "s7comm.szl.0092.xxxx.status_9", FT_UINT8, BASE_HEX, NULL, 0x0,
5311 "status_9: Status of station 73..80", HFILL }},
5312 { &hf_s7comm_szl_0092_0xxx_status_10,
5313 { "status_10", "s7comm.szl.0092.xxxx.status_10", FT_UINT8, BASE_HEX, NULL, 0x0,
5314 "status_0: Status of station 81..88", HFILL }},
5315 { &hf_s7comm_szl_0092_0xxx_status_11,
5316 { "status_11", "s7comm.szl.0092.xxxx.status_11", FT_UINT8, BASE_HEX, NULL, 0x0,
5317 "status_11: Status of station 89..96", HFILL }},
5318 { &hf_s7comm_szl_0092_0xxx_status_12,
5319 { "status_12", "s7comm.szl.0092.xxxx.status_12", FT_UINT8, BASE_HEX, NULL, 0x0,
5320 "status_12: Status of station 97..104", HFILL }},
5321 { &hf_s7comm_szl_0092_0xxx_status_13,
5322 { "status_13", "s7comm.szl.0092.xxxx.status_13", FT_UINT8, BASE_HEX, NULL, 0x0,
5323 "status_13: Status of station 105..112", HFILL }},
5324 { &hf_s7comm_szl_0092_0xxx_status_14,
5325 { "status_14", "s7comm.szl.0092.xxxx.status_14", FT_UINT8, BASE_HEX, NULL, 0x0,
5326 "status_14: Status of station 113..120", HFILL }},
5327 { &hf_s7comm_szl_0092_0xxx_status_15,
5328 { "status_15", "s7comm.szl.0092.xxxx.status_15", FT_UINT8, BASE_HEX, NULL, 0x0,
5329 "status_15: Status of station 121..128", HFILL }},
5331 proto_register_field_array(proto, hf, array_length(hf));
5334 /*----------------------------------------------------------------------------------------------------*/
5335 static uint32_t
5336 add_station_byte_with_bitinfo(tvbuff_t *tvb,
5337 proto_tree *tree,
5338 int hf,
5339 const char *info_text,
5340 uint32_t start,
5341 uint32_t offset)
5343 proto_item *pi = NULL;
5344 proto_item *pti = NULL;
5345 proto_tree *pt = NULL;
5346 uint32_t val;
5347 uint32_t i;
5348 pi = proto_tree_add_item_ret_uint(tree, hf, tvb, offset, 1, ENC_BIG_ENDIAN, &val);
5349 /* Add the rack/station number when information bit is set */
5350 if (val) {
5351 pt = proto_item_add_subtree(pi, ett_s7comm_szl_xx9x_station_info);
5352 for (i = 0; i < 8; i++) {
5353 if (val & 1) {
5354 pti = proto_tree_add_item(pt, hf_s7comm_szl_xx9x_station_info, tvb, offset, 1, ENC_NA);
5355 proto_item_set_text(pti, "%s: %d", info_text, start + i);
5357 val >>= 1;
5360 return offset + 1;
5363 static uint32_t
5364 s7comm_decode_szl_id_xy92_idx_xxxx(tvbuff_t *tvb,
5365 proto_tree *tree,
5366 uint16_t id,
5367 uint32_t offset)
5369 char *txt;
5370 switch (id) {
5371 case 0x0092:
5372 txt = "Rack/Station configured";
5373 break;
5374 case 0x4092:
5375 txt = "Station configured";
5376 break;
5377 case 0x0192:
5378 txt = "Station configured and activated";
5379 break;
5380 case 0x0292:
5381 txt = "Rack/Station exists, activated and not failed";
5382 break;
5383 case 0x0492:
5384 txt = "Station exists, activated and not failed";
5385 break;
5386 case 0x0692:
5387 txt = "Modules of a station in a expansion rack not OK or station deactivated";
5388 break;
5389 case 0x4692:
5390 txt = "Modules of a station not OK or station deactivated";
5391 break;
5392 default:
5393 txt = "Station info bit set";
5394 break;
5396 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_0, txt, 1, offset);
5397 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_1, txt, 9, offset);
5398 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_2, txt, 17, offset);
5399 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_3, txt, 25, offset);
5400 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_4, txt, 33, offset);
5401 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_5, txt, 41, offset);
5402 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_6, txt, 49, offset);
5403 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_7, txt, 57, offset);
5404 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_8, txt, 65, offset);
5405 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_9, txt, 73, offset);
5406 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_10, txt, 81, offset);
5407 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_11, txt, 89, offset);
5408 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_12, txt, 97, offset);
5409 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_13, txt, 105, offset);
5410 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_14, txt, 113, offset);
5411 offset = add_station_byte_with_bitinfo(tvb, tree, hf_s7comm_szl_0092_0xxx_status_15, txt, 121, offset);
5413 return offset;
5416 /*******************************************************************************************************
5418 * SZL-ID: 0x0x94
5419 * Index: 0x0000
5420 * Content:
5421 * Partial list SSL-ID W#16#0x94 contains information about the expected and actual
5422 * configuration of module racks in central configurations and stations of a
5423 * PROFIBUS DP mastersystem/PROFINET IO controller system.
5425 *******************************************************************************************************/
5426 static void
5427 s7comm_szl_0x94_xxxx_register(int proto)
5429 static hf_register_info hf[] = {
5430 { &hf_s7comm_szl_0094_xxxx_index,
5431 { "Index", "s7comm.szl.0094.xxxx.index", FT_UINT16, BASE_HEX, NULL, 0x0,
5432 "Index: 0=central module, 1-32=distributed module on PROFIBUS DP, 100-115=distributed module on PROFINET IO", HFILL }},
5433 { &hf_s7comm_szl_0094_xxxx_status_0,
5434 { "status_0 (Group information)", "s7comm.szl.0094.xxxx.status_0", FT_BOOLEAN, 8, NULL, 0x01,
5435 "status_0 (Group information): 1=at least one of the following status bis has the value 1", HFILL }},
5436 { &hf_s7comm_szl_0094_xxxx_status_1_2047,
5437 { "Status", "s7comm.szl.0094.xxxx.status_1_2047", FT_BYTES, BASE_NONE, NULL, 0x0,
5438 "Status of Station 1 to 2047", HFILL }},
5440 proto_register_field_array(proto, hf, array_length(hf));
5443 /*----------------------------------------------------------------------------------------------------*/
5444 static uint32_t
5445 s7comm_decode_szl_id_0x94_idx_xxxx(tvbuff_t *tvb,
5446 proto_tree *tree,
5447 uint16_t id,
5448 uint32_t offset)
5450 proto_item *pi = NULL;
5451 proto_item *pti = NULL;
5452 proto_tree *pt = NULL;
5453 uint8_t val;
5454 uint32_t i, j;
5455 uint32_t offset_tmp;
5456 uint32_t n;
5457 char *txt;
5459 proto_tree_add_item(tree, hf_s7comm_szl_0094_xxxx_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5460 offset += 2;
5461 proto_tree_add_item(tree, hf_s7comm_szl_0094_xxxx_status_0, tvb, offset, 1, ENC_BIG_ENDIAN);
5462 pi = proto_tree_add_item(tree, hf_s7comm_szl_0094_xxxx_status_1_2047, tvb, offset, 256, ENC_NA);
5463 offset_tmp = offset;
5464 val = tvb_get_uint8(tvb, offset_tmp);
5465 /* If first bit is set, there is at least one station with active information */
5466 if (val & 1) {
5467 switch (id) {
5468 case 0x0094:
5469 txt = "Rack/Station configured";
5470 break;
5471 case 0x0194:
5472 txt = "Station configured and deactivated";
5473 break;
5474 case 0x0294:
5475 txt = "Rack/Station exists, activated and not failed";
5476 break;
5477 case 0x0694:
5478 txt = "Rack/Station with at least one module disrupted or deactivated";
5479 break;
5480 case 0x0794:
5481 txt = "Rack/Station with problem and/or maintenance requirement/request";
5482 break;
5483 default:
5484 txt = "Station info bit set";
5485 break;
5487 pt = proto_item_add_subtree(pi, ett_s7comm_szl_xx9x_station_info);
5488 n = 0;
5489 /* Add the rack/station number when information bit is set */
5490 for (i = 0; i < 256; i++) {
5491 val = tvb_get_uint8(tvb, offset_tmp);
5492 if (val) {
5493 for (j = 0; j < 8; j++) {
5494 if ((val & 1) && !(n == 0 && j == 0)) { /* skip group information bit */
5495 pti = proto_tree_add_item(pt, hf_s7comm_szl_xx9x_station_info, tvb, offset_tmp, 1, ENC_NA);
5496 proto_item_set_text(pti, "%s: %d", txt, n + j);
5498 val >>= 1;
5501 n += 8;
5502 offset_tmp += 1;
5505 return offset + 256;
5508 /*******************************************************************************************************
5510 * SZL-ID: 0xxy96
5511 * Index: 0xxxxx
5512 * Content:
5513 * The partial list SSL-ID W#16#xy96 contains status information on all the modules assigned to the CPU.
5515 *******************************************************************************************************/
5516 static void
5517 s7comm_szl_xy96_xxxx_register(int proto)
5519 static hf_register_info hf[] = {
5520 { &hf_s7comm_szl_0096_xxxx_logadr_adr,
5521 { "logadr (Address of the module)", "s7comm.szl.xx96.xxxx.logadr.adr", FT_UINT16, BASE_HEX, NULL, 0x7fff,
5522 NULL, HFILL }},
5523 { &hf_s7comm_szl_0096_xxxx_logadr_area,
5524 { "logadr (Area)", "s7comm.szl.xx96.xxxx.logadr.area", FT_BOOLEAN, 16, TFS(&tfs_szl_0096_xxx_logadr_area), 0x8000,
5525 NULL, HFILL }},
5526 { &hf_s7comm_szl_0096_xxxx_system,
5527 { "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,
5528 "System: 0=central module, 1-32=distributed module on PROFIBUS DP, 100-115=distributed module on PROFINET IO", HFILL }},
5529 { &hf_s7comm_szl_0096_xxxx_api,
5530 { "API (Configured Application Profile)", "s7comm.szl.xx96.xxxx.api", FT_UINT32, BASE_HEX, NULL, 0x0,
5531 NULL, HFILL }},
5532 { &hf_s7comm_szl_0096_xxxx_station,
5533 { "Station (Rack no./station number/device number)", "s7comm.szl.xx96.xxxx.station", FT_UINT16, BASE_DEC, NULL, 0x0,
5534 NULL, HFILL }},
5535 { &hf_s7comm_szl_0096_xxxx_slot,
5536 { "Slot (Slot number)", "s7comm.szl.xx96.xxxx.slot", FT_UINT16, BASE_DEC, NULL, 0x0,
5537 NULL, HFILL }},
5538 { &hf_s7comm_szl_0096_xxxx_subslot,
5539 { "Subslot (Interface module slot)", "s7comm.szl.xx96.xxxx.subslot", FT_UINT16, BASE_DEC, NULL, 0x0,
5540 NULL, HFILL }},
5541 { &hf_s7comm_szl_0096_xxxx_offset,
5542 { "Offset (Offset in the user data address range of the associated module)", "s7comm.szl.xx96.xxxx.offset", FT_UINT16, BASE_DEC, NULL, 0x0,
5543 NULL, HFILL }},
5544 { &hf_s7comm_szl_0096_xxxx_solltyp1,
5545 { "Solltyp1 (Expected Type: Manufacturer no. or profile identification)", "s7comm.szl.xx96.xxxx.solltyp1", FT_UINT16, BASE_HEX, NULL, 0x0,
5546 NULL, HFILL }},
5547 { &hf_s7comm_szl_0096_xxxx_solltyp2,
5548 { "Solltyp2 (Device)", "s7comm.szl.xx96.xxxx.solltyp2", FT_UINT16, BASE_HEX, NULL, 0x0,
5549 NULL, HFILL }},
5550 { &hf_s7comm_szl_0096_xxxx_solltyp3,
5551 { "Solltyp3 (Sequential number or profile index)", "s7comm.szl.xx96.xxxx.solltyp3", FT_UINT16, BASE_DEC, NULL, 0x0,
5552 NULL, HFILL }},
5553 { &hf_s7comm_szl_0096_xxxx_solltyp4_5,
5554 { "Solltyp4_5 (Submodule identification)", "s7comm.szl.xx96.xxxx.solltyp4_5", FT_UINT32, BASE_HEX, NULL, 0x0,
5555 NULL, HFILL }},
5556 { &hf_s7comm_szl_0096_xxxx_solltyp6_7,
5557 { "Solltyp6_7 (Interface module identification)", "s7comm.szl.xx96.xxxx.solltyp6_7", FT_UINT32, BASE_HEX, NULL, 0x0,
5558 NULL, HFILL }},
5559 { &hf_s7comm_szl_0096_xxxx_expactid,
5560 { "Expected/actual identifier", "s7comm.szl.xx96.xxxx.expactid", FT_UINT16, BASE_HEX, NULL, 0x0,
5561 "Expected/actual identifier: Bit0=0 -> Expected the same as actual, Bit0=1 -> Expected not same as actual", HFILL }},
5562 { &hf_s7comm_szl_0096_xxxx_reserve1,
5563 { "Reserve 1", "s7comm.szl.xx96.xxxx.reserve1", FT_UINT16, BASE_HEX, NULL, 0x0,
5564 NULL, HFILL }},
5565 /* From here almost identical with ID 0x0091, but there are some differences and it's also convenient to have separate filter fields */
5566 { &hf_s7comm_szl_0096_xxxx_eastat,
5567 { "I/O status", "s7comm.szl.xx96.xxxx.eastat", FT_UINT16, BASE_HEX, NULL, 0x0,
5568 NULL, HFILL }},
5569 { &hf_s7comm_szl_0096_xxxx_eastat_0,
5570 { "Module disrupted", "s7comm.szl.xx96.xxxx.eastat.moddisrupt", FT_BOOLEAN, 16, NULL, 0x0001,
5571 "Bit 0: Module disrupted (detected over diagnostic interrupt)", HFILL }},
5572 { &hf_s7comm_szl_0096_xxxx_eastat_1,
5573 { "Module exists", "s7comm.szl.xx96.xxxx.eastat.modexists", FT_BOOLEAN, 16, NULL, 0x0002,
5574 "Bit 1: Module exists", HFILL }},
5575 { &hf_s7comm_szl_0096_xxxx_eastat_2,
5576 { "Module not available", "s7comm.szl.xx96.xxxx.eastat.modnotav", FT_BOOLEAN, 16, NULL, 0x0004,
5577 "Bit 2: Module not available", HFILL }},
5578 { &hf_s7comm_szl_0096_xxxx_eastat_3,
5579 { "Module disabled", "s7comm.szl.xx96.xxxx.eastat.moddisabl", FT_BOOLEAN, 16, NULL, 0x0008,
5580 "Bit 3: Module disabled", HFILL }},
5581 { &hf_s7comm_szl_0096_xxxx_eastat_4,
5582 { "Problem on station", "s7comm.szl.xx96.xxxx.eastat.statproblem", FT_BOOLEAN, 16, NULL, 0x0010,
5583 "Bit 4: Problem on station (representative slot only)", HFILL }},
5584 { &hf_s7comm_szl_0096_xxxx_eastat_5,
5585 { "CiR event active", "s7comm.szl.xx96.xxxx.eastat.ciractive", FT_BOOLEAN, 16, NULL, 0x0020,
5586 "Bit 5: A CiR event at this module/station is active or not yet completed", HFILL }},
5587 { &hf_s7comm_szl_0096_xxxx_eastat_6,
5588 { "Reserved", "s7comm.szl.xx96.xxxx.eastat.res", FT_BOOLEAN, 16, NULL, 0x0040,
5589 "Bit 6: Reserved for S7-400", HFILL }},
5590 { &hf_s7comm_szl_0096_xxxx_eastat_7,
5591 { "Module in local bus segment", "s7comm.szl.xx96.xxxx.eastat.modlocseg", FT_BOOLEAN, 16, NULL, 0x0080,
5592 "Bit 7: Module in local bus segment", HFILL }},
5593 { &hf_s7comm_szl_0096_xxxx_eastat_8,
5594 { "Module maintenance required", "s7comm.szl.xx96.xxxx.eastat.modmaintreq", FT_BOOLEAN, 16, NULL, 0x0100,
5595 "Bit 8: Module maintenance required (green)", HFILL }},
5596 { &hf_s7comm_szl_0096_xxxx_eastat_9,
5597 { "Module maintenance demand", "s7comm.szl.xx96.xxxx.eastat.modmaintdem", FT_BOOLEAN, 16, NULL, 0x0200,
5598 "Bit 9: Module maintenance demand (yellow)", HFILL }},
5599 { &hf_s7comm_szl_0096_xxxx_berbgbr,
5600 { "Ber_bgbr (Area ID/module width)", "s7comm.szl.xx96.xxxx.berbgbr", FT_UINT16, BASE_HEX, NULL, 0x0,
5601 NULL, HFILL }},
5602 { &hf_s7comm_szl_0096_xxxx_berbgbr_0_2,
5603 { "Module width", "s7comm.szl.xx96.xxxx.berbgbr.width", FT_UINT16, BASE_DEC, NULL, 0x0007,
5604 "Bit 0 to 2: Module width", HFILL }},
5605 { &hf_s7comm_szl_0096_xxxx_berbgbr_3,
5606 { "Reserved", "s7comm.szl.xx96.xxxx.berbgbr.bit3_res", FT_BOOLEAN, 16, NULL, 0x0008,
5607 "Bit 3: Reserved", HFILL }},
5608 { &hf_s7comm_szl_0096_xxxx_berbgbr_areaid,
5609 { "Area ID", "s7comm.szl.xx96.xxxx.berbgbr.areaid", FT_UINT16, BASE_DEC, VALS(szl_0091_0000_berbgbr_areaid_names), 0x0070,
5610 "Bit 4 to 6: Area ID", HFILL }},
5611 { &hf_s7comm_szl_0096_xxxx_berbgbr_7,
5612 { "Reserved", "s7comm.szl.xx96.xxxx.berbgbr.bit7_res", FT_BOOLEAN, 16, NULL, 0x0080,
5613 "Bit 7: Reserved", HFILL }},
5614 { &hf_s7comm_szl_0096_xxxx_reserve2,
5615 { "res (Reserved)", "s7comm.szl.xx96.xxxx.reserve2", FT_BYTES, BASE_NONE, NULL, 0x0,
5616 NULL, HFILL }}
5618 proto_register_field_array(proto, hf, array_length(hf));
5621 /*----------------------------------------------------------------------------------------------------*/
5622 static uint32_t
5623 s7comm_decode_szl_id_xy96_idx_xxxx(tvbuff_t *tvb,
5624 proto_tree *tree,
5625 uint32_t offset)
5627 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_logadr_adr, tvb, offset, 2, ENC_BIG_ENDIAN);
5628 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_logadr_area, tvb, offset, 2, ENC_BIG_ENDIAN);
5629 offset += 2;
5630 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_system, tvb, offset, 2, ENC_BIG_ENDIAN);
5631 offset += 2;
5632 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_api, tvb, offset, 4, ENC_BIG_ENDIAN);
5633 offset += 4;
5634 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_station, tvb, offset, 2, ENC_BIG_ENDIAN);
5635 offset += 2;
5636 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_slot, tvb, offset, 2, ENC_BIG_ENDIAN);
5637 offset += 2;
5638 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_subslot, tvb, offset, 2, ENC_BIG_ENDIAN);
5639 offset += 2;
5640 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
5641 offset += 2;
5642 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp1, tvb, offset, 2, ENC_BIG_ENDIAN);
5643 offset += 2;
5644 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp2, tvb, offset, 2, ENC_BIG_ENDIAN);
5645 offset += 2;
5646 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp3, tvb, offset, 2, ENC_BIG_ENDIAN);
5647 offset += 2;
5648 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp4_5, tvb, offset, 4, ENC_BIG_ENDIAN);
5649 offset += 4;
5650 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_solltyp6_7, tvb, offset, 4, ENC_BIG_ENDIAN);
5651 offset += 4;
5652 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_expactid, tvb, offset, 2, ENC_BIG_ENDIAN);
5653 offset += 2;
5654 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_reserve1, tvb, offset, 2, ENC_BIG_ENDIAN);
5655 offset += 2;
5656 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0096_xxxx_eastat,
5657 ett_s7comm_szl_0096_xxxx_eastat, s7comm_szl_0096_xxxx_eastat_fields, ENC_BIG_ENDIAN);
5658 offset += 2;
5659 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0096_xxxx_berbgbr,
5660 ett_s7comm_szl_0096_xxxx_berbgbr, s7comm_szl_0096_xxxx_berbgbr_fields, ENC_BIG_ENDIAN);
5661 offset += 2;
5662 proto_tree_add_item(tree, hf_s7comm_szl_0096_xxxx_reserve2, tvb, offset, 10, ENC_NA);
5663 offset += 10;
5665 return offset;
5668 /*******************************************************************************************************
5670 * SZL-ID: 0x0424
5671 * Index: 0x0000
5672 * Content:
5673 * If you read the system status list with SZL-ID W#16#xy24, you obtain
5674 * information about the modes of the module.
5676 *******************************************************************************************************/
5677 static void
5678 s7comm_szl_0424_0000_register(int proto)
5680 static hf_register_info hf[] = {
5681 { &hf_s7comm_szl_0424_0000_ereig,
5682 { "ereig", "s7comm.szl.0424.0000.ereig", FT_UINT16, BASE_HEX, NULL, 0x0,
5683 "Event ID", HFILL }},
5684 { &hf_s7comm_szl_0424_0000_ae,
5685 { "ae", "s7comm.szl.0424.0000.ae", FT_UINT8, BASE_HEX, NULL, 0x0,
5686 "ae (B#16#FF)", HFILL }},
5687 { &hf_s7comm_szl_0424_0000_bzu_id,
5688 { "bzu-id", "s7comm.szl.0424.0000.bzu_id", FT_UINT8, BASE_HEX, NULL, 0x0,
5689 "bzu-id (ID of the mode change divided into 4 bits, Bit 0 to 3: Requested mode, Bit 4 to 7: Previous mode)", HFILL }},
5690 { &hf_s7comm_szl_0424_0000_bzu_id_req,
5691 { "Requested mode", "s7comm.szl.0424.0000.bzu_id.req", FT_UINT8, BASE_HEX, VALS(szl_0424_0000_bzu_id_names), 0x0f,
5692 "bzu-id Requested mode", HFILL }},
5693 { &hf_s7comm_szl_0424_0000_bzu_id_pre,
5694 { "Previous mode", "s7comm.szl.0424.0000.bzu_id.pre", FT_UINT8, BASE_HEX, VALS(szl_0424_0000_bzu_id_names), 0xf0,
5695 "bzu-id Previous mode", HFILL }},
5696 { &hf_s7comm_szl_0424_0000_res,
5697 { "res (Reserved)", "s7comm.szl.0424.0000.res", FT_BYTES, BASE_NONE, NULL, 0x0,
5698 NULL, HFILL }},
5699 { &hf_s7comm_szl_0424_0000_anlinfo1,
5700 { "anlinfo1", "s7comm.szl.0424.0000.anlinfo1", FT_UINT8, BASE_HEX, NULL, 0x0,
5701 NULL, HFILL }},
5702 { &hf_s7comm_szl_0424_0000_anlinfo2,
5703 { "anlinfo2", "s7comm.szl.0424.0000.anlinfo2", FT_UINT8, BASE_HEX, VALS(szl_0424_0000_anlinfo2_names), 0x0,
5704 "Type of startup just exceeded", HFILL }},
5705 { &hf_s7comm_szl_0424_0000_anlinfo3,
5706 { "anlinfo3", "s7comm.szl.0424.0000.anlinfo3", FT_UINT8, BASE_HEX, NULL, 0x0,
5707 "Permissibility of startup types", HFILL }},
5708 { &hf_s7comm_szl_0424_0000_anlinfo4,
5709 { "anlinfo4", "s7comm.szl.0424.0000.anlinfo4", FT_UINT8, BASE_HEX, VALS(szl_0424_0000_anlinfo4_names), 0x0,
5710 "Last valid operation or setting of the automatic startup type at power on", HFILL }},
5711 { &hf_s7comm_szl_0424_0000_time,
5712 { "time", "s7comm.szl.0424.0000.time", FT_BYTES, BASE_NONE, NULL, 0x0,
5713 "time (Time stamp)", HFILL }}
5715 proto_register_field_array(proto, hf, array_length(hf));
5718 /*----------------------------------------------------------------------------------------------------*/
5719 static uint32_t
5720 s7comm_decode_szl_id_0424_idx_0000(tvbuff_t *tvb,
5721 proto_tree *tree,
5722 uint32_t offset)
5724 proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_ereig, tvb, offset, 2, ENC_BIG_ENDIAN);
5725 offset += 2;
5726 proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_ae, tvb, offset, 1, ENC_BIG_ENDIAN);
5727 offset += 1;
5728 proto_tree_add_bitmask(tree, tvb, offset, hf_s7comm_szl_0424_0000_bzu_id,
5729 ett_s7comm_szl_0424_0000_bzu_id, s7comm_szl_0424_0000_bzu_id_fields, ENC_BIG_ENDIAN);
5730 offset += 1;
5731 proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_res, tvb, offset, 4, ENC_NA);
5732 offset += 4;
5733 proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_anlinfo1, tvb, offset, 1, ENC_BIG_ENDIAN);
5734 offset += 1;
5735 proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_anlinfo2, tvb, offset, 1, ENC_BIG_ENDIAN);
5736 offset += 1;
5737 proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_anlinfo3, tvb, offset, 1, ENC_BIG_ENDIAN);
5738 offset += 1;
5739 proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_anlinfo4, tvb, offset, 1, ENC_BIG_ENDIAN);
5740 offset += 1;
5741 proto_tree_add_item(tree, hf_s7comm_szl_0424_0000_time, tvb, offset, 8, ENC_NA);
5742 offset += 8;
5744 return offset;
5747 /*******************************************************************************************************
5749 * Register SZL header fields
5751 *******************************************************************************************************/
5752 void
5753 s7comm_register_szl_types(int proto)
5755 static hf_register_info hf[] = {
5756 /*** SZL functions ***/
5757 { &hf_s7comm_userdata_szl_partial_list,
5758 { "SZL partial list data", "s7comm.param.userdata.szl_part_list", FT_BYTES, BASE_NONE, NULL, 0x0,
5759 NULL, HFILL }},
5760 /* SZL ID */
5761 { &hf_s7comm_userdata_szl_id,
5762 { "SZL-ID", "s7comm.data.userdata.szl_id", FT_UINT16, BASE_HEX, NULL, 0x0,
5763 "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 }},
5765 /* N.B. 2nd member of the bitfield test covers all 16 bits.. */
5766 { &hf_s7comm_userdata_szl_id_type,
5767 { "Diagnostic type", "s7comm.data.userdata.szl_id.diag_type", FT_UINT16, BASE_HEX, VALS(szl_module_type_names), 0xf000,
5768 NULL, HFILL }},
5769 { &hf_s7comm_userdata_szl_id_partlist_ex,
5770 { "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,
5771 NULL, HFILL }},
5772 { &hf_s7comm_userdata_szl_id_partlist_num,
5773 { "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,
5774 NULL, HFILL }},
5776 /* SZL index */
5777 { &hf_s7comm_userdata_szl_index,
5778 { "SZL-Index", "s7comm.data.userdata.szl_index", FT_UINT16, BASE_HEX, NULL, 0x0,
5779 "SZL-Index (System Status List)", HFILL }},
5780 { &hf_s7comm_userdata_szl_tree,
5781 { "SZL data tree", "s7comm.data.userdata.szl_data_tree", FT_NONE, BASE_NONE, NULL, 0x0,
5782 NULL, HFILL }},
5783 { &hf_s7comm_userdata_szl_id_partlist_len,
5784 { "SZL partial list length in bytes", "s7comm.data.userdata.szl_id.partlist_len", FT_UINT16, BASE_DEC, NULL, 0x0,
5785 NULL, HFILL }},
5786 { &hf_s7comm_userdata_szl_id_partlist_cnt,
5787 { "SZL partial list count", "s7comm.data.userdata.szl_id.partlist_cnt", FT_UINT16, BASE_DEC, NULL, 0x0,
5788 "SZL partial list count: the number of datasets in the results", HFILL }},
5790 { &hf_s7comm_szl_xy12_0x00_charac,
5791 { "Characteristic", "s7comm.szl.xy12.0x00.charac", FT_UINT16, BASE_HEX, VALS(szl_xy12_cpu_characteristic_names), 0x0,
5792 NULL, HFILL }},
5793 /* For general usage as a station information */
5794 { &hf_s7comm_szl_xx9x_station_info,
5795 { "Station", "s7comm.szl.xy12.xx9x.station_info", FT_NONE, BASE_NONE, NULL, 0x0,
5796 NULL, HFILL }}
5799 /* Register Subtrees */
5800 static int *ett[] = {
5801 &ett_s7comm_szl,
5802 &ett_s7comm_userdata_szl_id,
5803 &ett_s7comm_szl_xy22_00xx_al1,
5804 &ett_s7comm_szl_xy22_00xx_al2,
5805 &ett_s7comm_szl_0131_0002_funkt_0,
5806 &ett_s7comm_szl_0131_0002_funkt_1,
5807 &ett_s7comm_szl_0131_0002_funkt_2,
5808 &ett_s7comm_szl_0131_0002_trgereig_0,
5809 &ett_s7comm_szl_0131_0002_trgereig_1,
5810 &ett_s7comm_szl_0131_0003_funkt_0,
5811 &ett_s7comm_szl_0131_0003_funkt_1,
5812 &ett_s7comm_szl_0131_0003_funkt_2,
5813 &ett_s7comm_szl_0131_0003_funkt_3,
5814 &ett_s7comm_szl_0131_0004_funkt_0,
5815 &ett_s7comm_szl_0131_0004_funkt_1,
5816 &ett_s7comm_szl_0131_0004_funkt_2,
5817 &ett_s7comm_szl_0131_0004_funkt_3,
5818 &ett_s7comm_szl_0131_0004_funkt_4,
5819 &ett_s7comm_szl_0131_0005_funkt_0,
5820 &ett_s7comm_szl_0131_0006_funkt_0,
5821 &ett_s7comm_szl_0131_0006_funkt_1,
5822 &ett_s7comm_szl_0131_0006_funkt_2,
5823 &ett_s7comm_szl_0131_0006_funkt_3,
5824 &ett_s7comm_szl_0131_0006_funkt_6,
5825 &ett_s7comm_szl_0131_0006_funkt_7,
5826 &ett_s7comm_szl_0131_0006_zugtyp_0,
5827 &ett_s7comm_szl_0131_0006_zugtyp_1,
5828 &ett_s7comm_szl_0131_0006_zugtyp_2,
5829 &ett_s7comm_szl_0131_0006_zugtyp_3,
5830 &ett_s7comm_szl_0131_0006_zugtyp_6,
5831 &ett_s7comm_szl_0131_0006_zugtyp_7,
5832 &ett_s7comm_szl_0131_0007_funkt_0,
5833 &ett_s7comm_szl_0131_0007_obj_0,
5834 &ett_s7comm_szl_0131_0007_mode,
5835 &ett_s7comm_szl_0131_0009_sync_k,
5836 &ett_s7comm_szl_0131_0009_sync_mpi,
5837 &ett_s7comm_szl_0131_0009_sync_mfi,
5838 &ett_s7comm_szl_0131_0010_funk_1,
5839 &ett_s7comm_szl_0131_0010_ber_meld_1,
5840 &ett_s7comm_szl_0131_0010_ber_zus_1,
5841 &ett_s7comm_szl_0131_0010_typ_zus_1,
5842 &ett_s7comm_szl_0091_0000_eastat,
5843 &ett_s7comm_szl_0091_0000_berbgbr,
5844 &ett_s7comm_szl_0096_xxxx_eastat,
5845 &ett_s7comm_szl_0096_xxxx_berbgbr,
5846 &ett_s7comm_szl_xx9x_station_info,
5847 &ett_s7comm_szl_0424_0000_bzu_id,
5849 proto_register_subtree_array(ett, array_length (ett));
5850 proto_register_field_array(proto, hf, array_length(hf));
5852 /* Register the SZL fields */
5853 s7comm_szl_0000_0000_register(proto);
5854 s7comm_szl_0013_0000_register(proto);
5855 s7comm_szl_xy14_000x_register(proto);
5856 s7comm_szl_xy15_000x_register(proto);
5857 s7comm_szl_xy11_0001_register(proto);
5858 s7comm_szl_xy22_00xx_register(proto);
5859 s7comm_szl_0131_0001_register(proto);
5860 s7comm_szl_0131_0002_register(proto);
5861 s7comm_szl_0131_0003_register(proto);
5862 s7comm_szl_0131_0004_register(proto);
5863 s7comm_szl_0131_0005_register(proto);
5864 s7comm_szl_0131_0006_register(proto);
5865 s7comm_szl_0131_0007_register(proto);
5866 s7comm_szl_0131_0008_register(proto);
5867 s7comm_szl_0131_0009_register(proto);
5868 s7comm_szl_0131_0010_register(proto);
5869 s7comm_szl_0132_0001_register(proto);
5870 s7comm_szl_0132_0002_register(proto);
5871 s7comm_szl_0132_0004_register(proto);
5872 s7comm_szl_0132_0005_register(proto);
5873 s7comm_szl_0132_0006_register(proto);
5874 s7comm_szl_0132_0008_register(proto);
5875 s7comm_szl_0132_000b_register(proto);
5876 s7comm_szl_0132_000c_register(proto);
5877 s7comm_szl_xy1c_000x_register(proto);
5878 s7comm_szl_xy91_0000_register(proto);
5879 s7comm_szl_xy92_xxxx_register(proto);
5880 s7comm_szl_0x94_xxxx_register(proto);
5881 s7comm_szl_xy96_xxxx_register(proto);
5882 s7comm_szl_xy74_0000_register(proto);
5883 s7comm_szl_0424_0000_register(proto);
5886 /*******************************************************************************************************
5888 * PDU Type: User Data -> Function group 4 -> SZL functions
5890 *******************************************************************************************************/
5891 uint32_t
5892 s7comm_decode_ud_cpu_szl_subfunc(tvbuff_t *tvb,
5893 packet_info *pinfo,
5894 proto_tree *data_tree,
5895 uint8_t type, /* Type of data (request/response) */
5896 uint8_t ret_val, /* Return value in data part */
5897 uint32_t dlength,
5898 uint32_t offset)
5900 uint16_t id;
5901 uint16_t idx;
5902 uint16_t list_len;
5903 uint16_t list_count;
5904 uint16_t i;
5905 uint32_t start_offset;
5906 proto_item *szl_item = NULL;
5907 proto_tree *szl_item_tree = NULL;
5908 proto_item *szl_item_entry = NULL;
5909 const char* szl_index_description;
5910 bool szl_decoded = false;
5912 start_offset = offset;
5913 if (type == S7COMM_UD_TYPE_REQ) {
5914 id = tvb_get_ntohs(tvb, offset);
5915 proto_tree_add_bitmask(data_tree, tvb, offset, hf_s7comm_userdata_szl_id,
5916 ett_s7comm_userdata_szl_id, s7comm_userdata_szl_id_fields, ENC_BIG_ENDIAN);
5917 offset += 2;
5918 idx = tvb_get_ntohs(tvb, offset);
5919 szl_item_entry = proto_tree_add_item(data_tree, hf_s7comm_userdata_szl_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5920 offset += 2;
5921 szl_index_description = s7comm_get_szl_id_index_description_text(id, idx);
5922 if (szl_index_description != NULL) {
5923 proto_item_append_text(szl_item_entry, " [%s]", szl_index_description);
5925 proto_item_append_text(data_tree, " (SZL-ID: 0x%04x, Index: 0x%04x)", id, idx);
5926 col_append_fstr(pinfo->cinfo, COL_INFO, " ID=0x%04x Index=0x%04x" , id, idx);
5927 } else if (type == S7COMM_UD_TYPE_RES) {
5928 if (ret_val == S7COMM_ITEM_RETVAL_DATA_OK) {
5929 id = tvb_get_ntohs(tvb, offset);
5930 proto_tree_add_bitmask(data_tree, tvb, offset, hf_s7comm_userdata_szl_id,
5931 ett_s7comm_userdata_szl_id, s7comm_userdata_szl_id_fields, ENC_BIG_ENDIAN);
5932 offset += 2;
5933 idx = tvb_get_ntohs(tvb, offset);
5934 szl_item_entry = proto_tree_add_item(data_tree, hf_s7comm_userdata_szl_index, tvb, offset, 2, ENC_BIG_ENDIAN);
5935 offset += 2;
5936 szl_index_description = s7comm_get_szl_id_index_description_text(id, idx);
5937 if (szl_index_description != NULL) {
5938 proto_item_append_text(szl_item_entry, " [%s]", szl_index_description);
5940 proto_item_append_text(data_tree, " (SZL-ID: 0x%04x, Index: 0x%04x)", id, idx);
5941 col_append_fstr(pinfo->cinfo, COL_INFO, " ID=0x%04x Index=0x%04x" , id, idx);
5943 /* SZL-Data, 4 Bytes header, 4 bytes id/index = 8 bytes */
5944 list_len = tvb_get_ntohs(tvb, offset); /* Length of an list set in bytes */
5945 proto_tree_add_uint(data_tree, hf_s7comm_userdata_szl_id_partlist_len, tvb, offset, 2, list_len);
5946 offset += 2;
5947 list_count = tvb_get_ntohs(tvb, offset); /* count of partlists */
5948 proto_tree_add_uint(data_tree, hf_s7comm_userdata_szl_id_partlist_cnt, tvb, offset, 2, list_count);
5949 offset += 2;
5950 /* Check the listcount, as in fragmented packets some CPUs (firmware bug?) send 0xffff as list count */
5951 if (((uint32_t)list_count * (uint32_t)list_len) > (dlength - (offset - start_offset))) {
5952 /* TODO: Make entry in expert field */
5953 list_count = (dlength - (offset - start_offset)) / list_len;
5955 /* Add a Data element for each partlist */
5956 if (dlength > 8) { /* minimum length of a correct szl data part is 8 bytes */
5957 for (i = 1; i <= list_count && (list_count * list_len != 0); i++) {
5958 /* Add a separate tree for the SZL data */
5959 szl_item = proto_tree_add_item(data_tree, hf_s7comm_userdata_szl_tree, tvb, offset, list_len, ENC_NA);
5960 szl_item_tree = proto_item_add_subtree(szl_item, ett_s7comm_szl);
5961 proto_item_append_text(szl_item, " (list count no. %d)", i);
5962 szl_decoded = false;
5963 /* lets try to decode some known szl-id and indexes */
5964 switch (id) {
5965 case 0x0000:
5966 offset = s7comm_decode_szl_id_xy00(tvb, szl_item_tree, id, idx, offset);
5967 szl_decoded = true;
5968 break;
5969 case 0x0012:
5970 case 0x0112:
5971 proto_tree_add_item(szl_item_tree, hf_s7comm_szl_xy12_0x00_charac, tvb, offset, 2, ENC_BIG_ENDIAN);
5972 offset += 2;
5973 szl_decoded = true;
5974 break;
5975 case 0x0013:
5976 case 0x0113:
5977 if (idx == 0x0000) {
5978 offset = s7comm_decode_szl_id_0013_idx_0000(tvb, szl_item_tree, offset);
5979 szl_decoded = true;
5981 break;
5982 case 0x0014:
5983 case 0x0114:
5984 offset = s7comm_decode_szl_id_xy14_idx_000x(tvb, szl_item_tree, offset);
5985 szl_decoded = true;
5986 break;
5987 case 0x0015:
5988 case 0x0115:
5989 offset = s7comm_decode_szl_id_xy15_idx_000x(tvb, szl_item_tree, offset);
5990 szl_decoded = true;
5991 break;
5992 case 0x0011:
5993 case 0x0111:
5994 /* It's (almost) the same structure for all possible indexes */
5995 offset = s7comm_decode_szl_id_0111_idx_0001(tvb, szl_item_tree, offset);
5996 szl_decoded = true;
5997 break;
5998 case 0x0222:
5999 offset = s7comm_decode_szl_id_xy22_idx_00xx(tvb, szl_item_tree, offset);
6000 szl_decoded = true;
6001 break;
6002 case 0x00a0:
6003 case 0x01a0:
6004 case 0x04a0:
6005 case 0x05a0:
6006 case 0x06a0:
6007 case 0x07a0:
6008 case 0x08a0:
6009 case 0x09a0:
6010 case 0x0aa0:
6011 case 0x0ba0:
6012 case 0x0ca0:
6013 case 0x0da0:
6014 case 0x0ea0:
6015 /* the data structure is the same as used when CPU is sending online such messages */
6016 offset = s7comm_decode_ud_cpu_diagnostic_message(tvb, pinfo, false, szl_item_tree, offset);
6017 szl_decoded = true;
6018 break;
6019 case 0x001c:
6020 case 0x011c:
6021 case 0x021c:
6022 case 0x031c:
6023 offset = s7comm_decode_szl_id_xy1c_idx_000x(tvb, szl_item_tree, offset);
6024 szl_decoded = true;
6025 break;
6026 case 0x0131:
6027 switch (idx) {
6028 case 0x0001:
6029 offset = s7comm_decode_szl_id_0131_idx_0001(tvb, szl_item_tree, offset);
6030 szl_decoded = true;
6031 break;
6032 case 0x0002:
6033 offset = s7comm_decode_szl_id_0131_idx_0002(tvb, szl_item_tree, offset);
6034 szl_decoded = true;
6035 break;
6036 case 0x0003:
6037 offset = s7comm_decode_szl_id_0131_idx_0003(tvb, szl_item_tree, offset);
6038 szl_decoded = true;
6039 break;
6040 case 0x0004:
6041 offset = s7comm_decode_szl_id_0131_idx_0004(tvb, szl_item_tree, offset);
6042 szl_decoded = true;
6043 break;
6044 case 0x0005:
6045 offset = s7comm_decode_szl_id_0131_idx_0005(tvb, szl_item_tree, offset);
6046 szl_decoded = true;
6047 break;
6048 case 0x0006:
6049 offset = s7comm_decode_szl_id_0131_idx_0006(tvb, szl_item_tree, offset);
6050 szl_decoded = true;
6051 break;
6052 case 0x0007:
6053 offset = s7comm_decode_szl_id_0131_idx_0007(tvb, szl_item_tree, offset);
6054 szl_decoded = true;
6055 break;
6056 case 0x0008:
6057 offset = s7comm_decode_szl_id_0131_idx_0008(tvb, szl_item_tree, offset);
6058 szl_decoded = true;
6059 break;
6060 case 0x0009:
6061 offset = s7comm_decode_szl_id_0131_idx_0009(tvb, szl_item_tree, offset);
6062 szl_decoded = true;
6063 break;
6064 case 0x0010:
6065 offset = s7comm_decode_szl_id_0131_idx_0010(tvb, szl_item_tree, offset);
6066 szl_decoded = true;
6067 break;
6069 break;
6070 case 0x0132:
6071 switch (idx) {
6072 case 0x0001:
6073 offset = s7comm_decode_szl_id_0132_idx_0001(tvb, szl_item_tree, offset);
6074 szl_decoded = true;
6075 break;
6076 case 0x0002:
6077 offset = s7comm_decode_szl_id_0132_idx_0002(tvb, szl_item_tree, offset);
6078 szl_decoded = true;
6079 break;
6080 case 0x0004:
6081 offset = s7comm_decode_szl_id_0132_idx_0004(tvb, szl_item_tree, offset);
6082 szl_decoded = true;
6083 break;
6084 case 0x0005:
6085 offset = s7comm_decode_szl_id_0132_idx_0005(tvb, szl_item_tree, offset);
6086 szl_decoded = true;
6087 break;
6088 case 0x0006:
6089 offset = s7comm_decode_szl_id_0132_idx_0006(tvb, szl_item_tree, offset);
6090 szl_decoded = true;
6091 break;
6092 case 0x0008:
6093 offset = s7comm_decode_szl_id_0132_idx_0008(tvb, szl_item_tree, offset);
6094 szl_decoded = true;
6095 break;
6096 case 0x000b:
6097 offset = s7comm_decode_szl_id_0132_idx_000b(tvb, szl_item_tree, offset);
6098 szl_decoded = true;
6099 break;
6100 case 0x000c:
6101 offset = s7comm_decode_szl_id_0132_idx_000c(tvb, szl_item_tree, offset);
6102 szl_decoded = true;
6103 break;
6105 break;
6106 case 0x0019:
6107 case 0x0119:
6108 case 0x0074:
6109 case 0x0174:
6110 offset = s7comm_decode_szl_id_xy74_idx_0000(tvb, szl_item_tree, offset);
6111 szl_decoded = true;
6112 break;
6113 case 0x0091:
6114 case 0x0191:
6115 case 0x0291:
6116 case 0x0391:
6117 case 0x0491:
6118 case 0x0591:
6119 case 0x0991:
6120 case 0x0a91:
6121 case 0x0c91:
6122 case 0x4c91:
6123 case 0x0d91:
6124 case 0x0e91:
6125 offset = s7comm_decode_szl_id_xy91_idx_0000(tvb, szl_item_tree, id, offset);
6126 szl_decoded = true;
6127 break;
6128 case 0x0092:
6129 case 0x0192:
6130 case 0x0292:
6131 case 0x0392:
6132 case 0x0492:
6133 case 0x0592:
6134 case 0x0692:
6135 case 0x4092:
6136 case 0x4292:
6137 case 0x4692:
6138 offset = s7comm_decode_szl_id_xy92_idx_xxxx(tvb, szl_item_tree, id, offset);
6139 szl_decoded = true;
6140 break;
6141 case 0x0094:
6142 case 0x0194:
6143 case 0x0294:
6144 case 0x0694:
6145 case 0x0794:
6146 offset = s7comm_decode_szl_id_0x94_idx_xxxx(tvb, szl_item_tree, id, offset);
6147 szl_decoded = true;
6148 break;
6149 case 0x0696:
6150 case 0x0c96:
6151 offset = s7comm_decode_szl_id_xy96_idx_xxxx(tvb, szl_item_tree, offset);
6152 szl_decoded = true;
6153 break;
6154 case 0x0124:
6155 case 0x0424:
6156 if (idx == 0x0000) {
6157 offset = s7comm_decode_szl_id_0424_idx_0000(tvb, szl_item_tree, offset);
6158 szl_decoded = true;
6160 break;
6161 default:
6162 szl_decoded = false;
6163 break;
6165 if (szl_decoded == false) {
6166 proto_tree_add_item(szl_item_tree, hf_s7comm_userdata_szl_partial_list, tvb, offset, list_len, ENC_NA);
6167 offset += list_len;
6169 } /* ...for */
6171 } else {
6172 col_append_fstr(pinfo->cinfo, COL_INFO, " Return value:[%s]", val_to_str(ret_val, s7comm_item_return_valuenames, "Unknown return value:0x%02x"));
6175 return offset;
6179 * Editor modelines - https://www.wireshark.org/tools/modelines.html
6181 * Local variables:
6182 * c-basic-offset: 4
6183 * tab-width: 8
6184 * indent-tabs-mode: nil
6185 * End:
6187 * vi: set shiftwidth=4 tabstop=8 expandtab:
6188 * :indentSize=4:tabSize=8:noTabs=true: