Added/extended handling of CPU message system

The message system includes mode-transition and alarm events by PLC
programmed blocks. The IDs in the mode-transition events are the same as
used in a SZL response, so I used the same decoding function.

Change-Id: If00990c21190ba0bed7933d6c8cfb590c6d8eab2
Reviewed-on: https://code.wireshark.org/review/13032
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Thomas Wiens 2016-01-03 18:40:22 +01:00 committed by Anders Broman
parent ea16a84ef5
commit 2030ed5e45
3 changed files with 1491 additions and 36 deletions

File diff suppressed because it is too large Load Diff

View File

@ -41,11 +41,19 @@
*/
#define S7COMM_UD_SUBF_CPU_READSZL 0x01
#define S7COMM_UD_SUBF_CPU_MSGS 0x02
#define S7COMM_UD_SUBF_CPU_TRANSSTOP 0x03
#define S7COMM_UD_SUBF_CPU_ALARMIND 0x11
#define S7COMM_UD_SUBF_CPU_ALARMINIT 0x13
#define S7COMM_UD_SUBF_CPU_ALARMACK1 0x0b
#define S7COMM_UD_SUBF_CPU_ALARMACK2 0x0c
#define S7COMM_UD_SUBF_CPU_DIAGMSG 0x03
#define S7COMM_UD_SUBF_CPU_ALARM8_IND 0x05
#define S7COMM_UD_SUBF_CPU_NOTIFY_IND 0x06
#define S7COMM_UD_SUBF_CPU_ALARM8LOCK 0x07
#define S7COMM_UD_SUBF_CPU_ALARM8UNLOCK 0x08
#define S7COMM_UD_SUBF_CPU_ALARMACK 0x0b
#define S7COMM_UD_SUBF_CPU_ALARMACK_IND 0x0c
#define S7COMM_UD_SUBF_CPU_ALARM8LOCK_IND 0x0d
#define S7COMM_UD_SUBF_CPU_ALARM8UNLOCK_IND 0x0e
#define S7COMM_UD_SUBF_CPU_ALARMSQ_IND 0x11
#define S7COMM_UD_SUBF_CPU_ALARMS_IND 0x12
#define S7COMM_UD_SUBF_CPU_ALARMQUERY 0x13
#define S7COMM_UD_SUBF_CPU_NOTIFY8_IND 0x16
/**************************************************************************
* Names of types in userdata parameter part
@ -56,6 +64,8 @@
extern const value_string s7comm_item_return_valuenames[];
guint32 s7comm_decode_ud_cpu_diagnostic_message(tvbuff_t *tvb, packet_info *pinfo, gboolean add_info_to_col, proto_tree *data_tree, guint32 offset);
#endif
/*

View File

@ -4048,6 +4048,23 @@ s7comm_decode_ud_cpu_szl_subfunc(tvbuff_t *tvb,
szl_decoded = TRUE;
}
break;
case 0x00a0:
case 0x01a0:
case 0x04a0:
case 0x05a0:
case 0x06a0:
case 0x07a0:
case 0x08a0:
case 0x09a0:
case 0x0aa0:
case 0x0ba0:
case 0x0ca0:
case 0x0da0:
case 0x0ea0:
/* the data structure is the same as used when CPU is sending online such messages */
offset = s7comm_decode_ud_cpu_diagnostic_message(tvb, pinfo, FALSE, szl_item_tree, offset);
szl_decoded = TRUE;
break;
case 0x0131:
if (idx == 0x0001) {
offset = s7comm_decode_szl_id_0131_idx_0001(tvb, szl_item_tree, offset);