From 353e7065ff66b1e320733cc859cd6ce183d74bb6 Mon Sep 17 00:00:00 2001 From: Juergen Kosel Date: Fri, 16 Nov 2018 18:13:46 +0100 Subject: s7comm: Add additional syntax ids 0x83 and 0x84 for NCK data access Beside the standard NCK syntax id 0x82 the ids 0x83 and 0x84 are used for values with metric and inch units. Change-Id: I62bf2d2e583905c9fa90e4e7caa614a6fe6a7155 Signed-off-by: Juergen Kosel Reviewed-on: https://code.wireshark.org/review/30674 Petri-Dish: Anders Broman Petri-Dish: Alexis La Goutte Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- epan/dissectors/packet-s7comm.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'epan/dissectors/packet-s7comm.c') diff --git a/epan/dissectors/packet-s7comm.c b/epan/dissectors/packet-s7comm.c index d6bdca1acc..a15c27037f 100644 --- a/epan/dissectors/packet-s7comm.c +++ b/epan/dissectors/packet-s7comm.c @@ -436,10 +436,12 @@ static const value_string item_transportsizenames[] = { #define S7COMM_SYNTAXID_ALARM_ACKSET 0x19 /* Alarm acknowledge message dataset */ #define S7COMM_SYNTAXID_ALARM_QUERYREQSET 0x1a /* Alarm query request dataset */ #define S7COMM_SYNTAXID_NOTIFY_INDSET 0x1c /* Notify indication dataset */ +#define S7COMM_SYNTAXID_NCK 0x82 /* Sinumerik NCK HMI access (current units) */ +#define S7COMM_SYNTAXID_NCK_METRIC 0x83 /* Sinumerik NCK HMI access metric units */ +#define S7COMM_SYNTAXID_NCK_INCH 0x84 /* Sinumerik NCK HMI access inch */ #define S7COMM_SYNTAXID_DRIVEESANY 0xa2 /* seen on Drive ES Starter with routing over S7 */ #define S7COMM_SYNTAXID_1200SYM 0xb2 /* Symbolic address mode of S7-1200 */ #define S7COMM_SYNTAXID_DBREAD 0xb0 /* Kind of DB block read, seen only at an S7-400 */ -#define S7COMM_SYNTAXID_NCK 0x82 /* Sinumerik NCK HMI access */ static const value_string item_syntaxid_names[] = { { S7COMM_SYNTAXID_S7ANY, "S7ANY" }, @@ -449,10 +451,12 @@ static const value_string item_syntaxid_names[] = { { S7COMM_SYNTAXID_ALARM_ACKSET, "ALARM_ACK" }, { S7COMM_SYNTAXID_ALARM_QUERYREQSET, "ALARM_QUERYREQ" }, { S7COMM_SYNTAXID_NOTIFY_INDSET, "NOTIFY_IND" }, + { S7COMM_SYNTAXID_NCK, "NCK" }, + { S7COMM_SYNTAXID_NCK_METRIC, "NCK_M" }, + { S7COMM_SYNTAXID_NCK_INCH, "NCK_I" }, { S7COMM_SYNTAXID_DRIVEESANY, "DRIVEESANY" }, { S7COMM_SYNTAXID_1200SYM, "1200SYM" }, { S7COMM_SYNTAXID_DBREAD, "DBREAD" }, - { S7COMM_SYNTAXID_NCK, "NCK" }, { 0, NULL } }; @@ -2556,7 +2560,7 @@ s7comm_syntaxid_1200sym(tvbuff_t *tvb, /******************************************************************************************************* * * Addressdefinition for Sinumeric NCK access - * type == 0x12, length == 8, syntax-ID == 0x82 + * type == 0x12, length == 8, syntax-ID == 0x82 or == 0x83 or == 0x84 * *******************************************************************************************************/ static guint32 @@ -2661,7 +2665,10 @@ s7comm_decode_param_item(tvbuff_t *tvb, } else if (var_spec_type == 0x12 && var_spec_length >= 14 && var_spec_syntax_id == S7COMM_SYNTAXID_1200SYM) { /* TIA S7 1200 symbolic address mode */ offset = s7comm_syntaxid_1200sym(tvb, offset, item_tree, var_spec_length); - } else if (var_spec_type == 0x12 && var_spec_length == 8 && var_spec_syntax_id == S7COMM_SYNTAXID_NCK) { + } else if (var_spec_type == 0x12 && var_spec_length == 8 + && ((var_spec_syntax_id == S7COMM_SYNTAXID_NCK) + || (var_spec_syntax_id == S7COMM_SYNTAXID_NCK_METRIC) + || (var_spec_syntax_id == S7COMM_SYNTAXID_NCK_INCH))) { /* Sinumerik NCK access */ offset = s7comm_syntaxid_nck(tvb, offset, item_tree); } else if (var_spec_type == 0x12 && var_spec_length == 10 && var_spec_syntax_id == S7COMM_SYNTAXID_DRIVEESANY) { -- cgit v1.2.3