forked from osmocom/wireshark
L&G 8979 Dissector - Add new function codes
- Added in support for Analog Group Change & Assignment codes (FC 2 and 35) - Modified RTU Configuration function code to support multiple chassis responses Change-Id: I64f14fa3c9b1bdfa3d815eb8756de80fb4c716b4 Reviewed-on: https://code.wireshark.org/review/17076 Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
parent
5ebfbf4fec
commit
26650355f2
|
@ -1,7 +1,7 @@
|
|||
/* packet-lg8979.c
|
||||
* Routines for Landis & Gyr (Telegyr) 8979 Protocol (lg8979) Dissection
|
||||
* By Chris Bontje (cbontje[AT]gmail.com
|
||||
* Copyright 2013-2014
|
||||
* Copyright 2013-2016
|
||||
*
|
||||
************************************************************************************************
|
||||
* Wireshark - Network traffic analyzer
|
||||
|
@ -125,6 +125,8 @@ static int hf_lg8979_pul_output_base = -1;
|
|||
static int hf_lg8979_pul_output_dur = -1;
|
||||
static int hf_lg8979_pul_output_rl = -1;
|
||||
static int hf_lg8979_ang_deadband = -1;
|
||||
static int hf_lg8979_ang_group = -1;
|
||||
static int hf_lg8979_ang_group_pts = -1;
|
||||
static int hf_lg8979_acc_preset = -1;
|
||||
static int hf_lg8979_rtucfg_num_chassis = -1;
|
||||
static int hf_lg8979_rtucfg_chassis_num = -1;
|
||||
|
@ -470,6 +472,7 @@ classify_lg8979_packet(tvbuff_t *tvb)
|
|||
case LG8979_FC_SBO_IMEXECUTE:
|
||||
case LG8979_FC_TIME_SYNC:
|
||||
case LG8979_FC_ANG_DEADBAND:
|
||||
case LG8979_FC_ANGGRP_DEFINE:
|
||||
case LG8979_FC_ACC_PRESET:
|
||||
case LG8979_FC_CONT_REQUEST:
|
||||
|
||||
|
@ -498,15 +501,15 @@ dissect_lg8979(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _
|
|||
{
|
||||
/* Set up structures needed to add the protocol subtree and manage it */
|
||||
proto_item *lg8979_item, *lg8979_flags_item = NULL, *lg8979_point_item = NULL;
|
||||
proto_item *lg8979_slot_item = NULL;
|
||||
proto_item *lg8979_slot_item = NULL, *lg8979_ang_group_pts_item = NULL;
|
||||
proto_tree *lg8979_tree, *lg8979_flags_tree = NULL, *lg8979_fc_tree = NULL;
|
||||
proto_tree *lg8979_point_tree = NULL, *lg8979_ts_tree = NULL;
|
||||
int offset = 0;
|
||||
guint8 rtu_addr, func, packet_type, data_len, ptnum8, tripclose, rl, exp_code;
|
||||
guint8 rtu_addr, func, packet_type, data_len, ptnum8, tripclose, rl, exp_code, num_chassis;
|
||||
guint8 ts_mon, ts_day, ts_hr, ts_min, ts_sec;
|
||||
guint16 ptnum, ptval, ana12_val;
|
||||
guint16 ts_ms;
|
||||
gint num_points = 0, cnt = 0;
|
||||
gint num_points = 0, cnt = 0, cnt1 = 0;
|
||||
gboolean shr, con, frz, ind, sch, slg, ack, comma_needed = FALSE, new_status, change;
|
||||
|
||||
/* Make entries in Protocol column on summary display */
|
||||
|
@ -585,6 +588,12 @@ dissect_lg8979(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _
|
|||
offset += 4;
|
||||
break;
|
||||
|
||||
/* Function Code 2 Analog Group Change Report */
|
||||
case LG8979_FC_ANGGRP_CHGRPT:
|
||||
proto_tree_add_item(lg8979_tree, hf_lg8979_ang_group, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
offset += 1;
|
||||
break;
|
||||
|
||||
/* Function Code 11 Digital Input Force Report */
|
||||
/* Function Code 13 Accumulator Force Report */
|
||||
case LG8979_FC_DIG_FRCRPT:
|
||||
|
@ -718,6 +727,23 @@ dissect_lg8979(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _
|
|||
|
||||
break;
|
||||
|
||||
/* Function Code 35 Analog Group Define */
|
||||
case LG8979_FC_ANGGRP_DEFINE:
|
||||
|
||||
proto_tree_add_item(lg8979_tree, hf_lg8979_ang_group, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_item(lg8979_tree, hf_lg8979_start_ptnum16, tvb, offset+1, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 3;
|
||||
|
||||
num_points = (data_len-3);
|
||||
|
||||
for (cnt=0; cnt<num_points; cnt++) {
|
||||
lg8979_ang_group_pts_item = proto_tree_add_item(lg8979_tree, hf_lg8979_ang_group_pts, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
proto_item_append_text(lg8979_ang_group_pts_item, " (%d - %d), ", (cnt*8), ((cnt*8)+7));
|
||||
offset += 1;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/* Function Code 36 Accumulator Preset */
|
||||
case LG8979_FC_ACC_PRESET:
|
||||
|
||||
|
@ -1132,18 +1158,21 @@ dissect_lg8979(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _
|
|||
case LG8979_FC_RTU_CONFIG:
|
||||
|
||||
/* Number of IO Chassis */
|
||||
num_chassis = tvb_get_guint8(tvb, offset);
|
||||
proto_tree_add_item(lg8979_tree, hf_lg8979_rtucfg_num_chassis, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
offset += 1;
|
||||
|
||||
/* Chassis Number */
|
||||
proto_tree_add_item(lg8979_tree, hf_lg8979_rtucfg_chassis_num, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
offset += 1;
|
||||
|
||||
/* Card Codes For Each Slot (0-15) */
|
||||
for (cnt=0; cnt<16; cnt++) {
|
||||
lg8979_slot_item = proto_tree_add_item(lg8979_tree, hf_lg8979_rtucfg_card_slot, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
proto_item_prepend_text(lg8979_slot_item, "Slot %d, ", cnt);
|
||||
for (cnt=0; cnt<num_chassis; cnt++) {
|
||||
/* Chassis Number */
|
||||
proto_tree_add_item(lg8979_tree, hf_lg8979_rtucfg_chassis_num, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
offset += 1;
|
||||
|
||||
/* Card Codes For Each Slot (0-15) */
|
||||
for (cnt1=0; cnt1<16; cnt1++) {
|
||||
lg8979_slot_item = proto_tree_add_item(lg8979_tree, hf_lg8979_rtucfg_card_slot, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
proto_item_prepend_text(lg8979_slot_item, "Slot %d, ", cnt1);
|
||||
offset += 1;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -1448,6 +1477,10 @@ proto_register_lg8979(void)
|
|||
{ "Raise/Lower", "lg8979.pul_output_rl", FT_UINT8, BASE_HEX, VALS(lg8979_pul_output_rl_vals), 0x80, NULL, HFILL }},
|
||||
{ &hf_lg8979_ang_deadband,
|
||||
{ "Deadband", "lg8979.ang_deadband", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_lg8979_ang_group,
|
||||
{ "Analog Group", "lg8979.ang_group", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_lg8979_ang_group_pts,
|
||||
{ "Analog Group Points Mask", "lg8979.ang_group_pts", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_lg8979_acc_preset,
|
||||
{ "Preset Value", "lg8979.acc_preset", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_lg8979_rtucfg_num_chassis,
|
||||
|
|
Loading…
Reference in New Issue