diff options
author | Petr Štetiar <petr.stetiar@gaben.cz> | 2014-07-10 13:08:34 +0200 |
---|---|---|
committer | Evan Huus <eapache@gmail.com> | 2014-07-12 00:34:35 +0000 |
commit | ea4b2f486d3da482c51dbbd399a41ee320ea49d7 (patch) | |
tree | aab86fe0a7de491e9e8fac8a29538ef1a2bfb07c /epan | |
parent | 6b898e6bbc40edb03165b05c97fe8bc5ffac42c5 (diff) |
dissectors/llrp: Add support for Impinj's Hub extension
Based on Impinj extension schema v1.4.
Change-Id: Ica9493a4527ae800d6e5daaf2d86b8cfdf479ed1
Signed-off-by: Petr Štetiar <petr.stetiar@gaben.cz>
Reviewed-on: https://code.wireshark.org/review/2981
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-llrp.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/epan/dissectors/packet-llrp.c b/epan/dissectors/packet-llrp.c index da667bdcf0..5a4fc0e56c 100644 --- a/epan/dissectors/packet-llrp.c +++ b/epan/dissectors/packet-llrp.c @@ -2,6 +2,7 @@ * Routines for Low Level Reader Protocol dissection * Copyright 2012, Evan Huus <eapache@gmail.com> * Copyright 2012, Martin Kupec <martin.kupec@kupson.cz> + * Copyright 2014, Petr Stetiar <petr.stetiar@gaben.cz> * * http://www.gs1.org/gsmp/kc/epcglobal/llrp * @@ -297,6 +298,9 @@ static int hf_llrp_retry_count = -1; static int hf_llrp_impinj_access_spec_ordering = -1; static int hf_llrp_impinj_gpo_mode = -1; static int hf_llrp_gpo_pulse_dur = -1; +static int hf_llrp_impinj_hub_id = -1; +static int hf_llrp_impinj_hub_fault_type = -1; +static int hf_llrp_impinj_hub_connected_type = -1; /* Initialize the subtree pointers */ static gint ett_llrp = -1; @@ -1022,6 +1026,9 @@ static value_string_ext impinj_msg_subtype_ext = VALUE_STRING_EXT_INIT(impinj_ms #define LLRP_IMPINJ_PARAM_ENABLE_OPTIM_READ 65 #define LLRP_IMPINJ_PARAM_ACCESS_SPEC_ORDERING 66 #define LLRP_IMPINJ_PARAM_ENABLE_RF_DOPPLER_FREQ 67 +#define LLRP_IMPINJ_PARAM_ARRAY_VERSION 1520 +#define LLRP_IMPINJ_PARAM_HUB_VERSIONS 1537 +#define LLRP_IMPINJ_PARAM_HUB_CONFIGURATION 1538 static const value_string impinj_param_type[] = { { LLRP_IMPINJ_PARAM_REQUESTED_DATA, "Requested Data" }, @@ -1071,6 +1078,9 @@ static const value_string impinj_param_type[] = { { LLRP_IMPINJ_PARAM_ENABLE_OPTIM_READ, "Enable optimized read" }, { LLRP_IMPINJ_PARAM_ACCESS_SPEC_ORDERING, "AccessSpec ordering" }, { LLRP_IMPINJ_PARAM_ENABLE_RF_DOPPLER_FREQ, "Enable RF doppler frequency" }, + { LLRP_IMPINJ_PARAM_ARRAY_VERSION, "Array specific HW and version info" }, + { LLRP_IMPINJ_PARAM_HUB_VERSIONS, "Hub specific HW and version info" }, + { LLRP_IMPINJ_PARAM_HUB_CONFIGURATION, "Hub connection and fault state" }, { 0, NULL } }; static value_string_ext impinj_param_type_ext = VALUE_STRING_EXT_INIT(impinj_param_type); @@ -1367,6 +1377,44 @@ static const value_string impinj_gpo_mode[] = { }; static value_string_ext impinj_gpo_mode_ext = VALUE_STRING_EXT_INIT(impinj_gpo_mode); +/* Impinj Hub connected type */ +#define LLRP_IMPINJ_HUB_CTYPE_UNKNOWN 0 +#define LLRP_IMPINJ_HUB_CTYPE_DISCONNECTED 1 +#define LLRP_IMPINJ_HUB_CTYPE_CONNECTED 2 + +static const value_string impinj_hub_connected_type[] = { + { LLRP_IMPINJ_HUB_CTYPE_UNKNOWN, "Unknown" }, + { LLRP_IMPINJ_HUB_CTYPE_DISCONNECTED, "Disconnected" }, + { LLRP_IMPINJ_HUB_CTYPE_CONNECTED, "Connected" }, + { 0, NULL } +}; +static value_string_ext impinj_hub_connected_type_ext = VALUE_STRING_EXT_INIT(impinj_hub_connected_type); + +/* Impinj Hub fault type */ +#define LLRP_IMPINJ_HUB_FTYPE_NO_FAULT 0 +#define LLRP_IMPINJ_HUB_FTYPE_RFPOWER 1 +#define LLRP_IMPINJ_HUB_FTYPE_RFPOWER_HUB1 2 +#define LLRP_IMPINJ_HUB_FTYPE_RFPOWER_HUB2 3 +#define LLRP_IMPINJ_HUB_FTYPE_RFPOWER_HUB3 4 +#define LLRP_IMPINJ_HUB_FTYPE_RFPOWER_HUB4 5 +#define LLRP_IMPINJ_HUB_FTYPE_NO_INIT 6 +#define LLRP_IMPINJ_HUB_FTYPE_SERIAL_OVERFLOW 7 +#define LLRP_IMPINJ_HUB_FTYPE_DISCONNECTED 8 + +static const value_string impinj_hub_fault_type[] = { + { LLRP_IMPINJ_HUB_FTYPE_NO_FAULT, "No fault" }, + { LLRP_IMPINJ_HUB_FTYPE_RFPOWER, "RF power" }, + { LLRP_IMPINJ_HUB_FTYPE_RFPOWER_HUB1, "RF power on hub 1" }, + { LLRP_IMPINJ_HUB_FTYPE_RFPOWER_HUB2, "RF power on hub 2" }, + { LLRP_IMPINJ_HUB_FTYPE_RFPOWER_HUB3, "RF power on hub 3" }, + { LLRP_IMPINJ_HUB_FTYPE_RFPOWER_HUB4, "RF power on hub 4" }, + { LLRP_IMPINJ_HUB_FTYPE_NO_INIT, "No init" }, + { LLRP_IMPINJ_HUB_FTYPE_SERIAL_OVERFLOW, "Serial overflow" }, + { LLRP_IMPINJ_HUB_FTYPE_DISCONNECTED, "Disconnected" }, + { 0, NULL }, +}; +static value_string_ext impinj_hub_fault_type_ext = VALUE_STRING_EXT_INIT(impinj_hub_fault_type); + /* Misc */ #define LLRP_ROSPEC_ALL 0 #define LLRP_ANTENNA_ALL 0 @@ -1484,6 +1532,7 @@ dissect_llrp_impinj_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *par case LLRP_IMPINJ_PARAM_ACCESS_SPEC_CONFIGURATION: case LLRP_IMPINJ_PARAM_TAG_REPORT_CONTENT_SELECTOR: case LLRP_IMPINJ_PARAM_GPS_NMEA_SENTENCES: + case LLRP_IMPINJ_PARAM_HUB_VERSIONS: /* Just parameters */ break; case LLRP_IMPINJ_PARAM_REQUESTED_DATA: @@ -1658,6 +1707,16 @@ dissect_llrp_impinj_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *par case LLRP_IMPINJ_PARAM_ENABLE_RF_DOPPLER_FREQ: PARAM_TREE_ADD(impinj_rf_doppler_mode, 2, ENC_BIG_ENDIAN); break; + case LLRP_IMPINJ_PARAM_ARRAY_VERSION: + suboffset = dissect_llrp_utf8_parameter(tvb, pinfo, param_tree, hf_llrp_serial_number, suboffset); + suboffset = dissect_llrp_utf8_parameter(tvb, pinfo, param_tree, hf_llrp_firm_ver, suboffset); + suboffset = dissect_llrp_utf8_parameter(tvb, pinfo, param_tree, hf_llrp_pcba_ver, suboffset); + break; + case LLRP_IMPINJ_PARAM_HUB_CONFIGURATION: + PARAM_TREE_ADD(impinj_hub_id, 2, ENC_BIG_ENDIAN); + PARAM_TREE_ADD(impinj_hub_connected_type, 2, ENC_BIG_ENDIAN); + PARAM_TREE_ADD(impinj_hub_fault_type, 2, ENC_BIG_ENDIAN); + break; default: return suboffset; break; @@ -3698,6 +3757,17 @@ proto_register_llrp(void) { "GPO pulse duration", "llrp.param.gpo_pulse_dur", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_llrp_impinj_hub_id, + { "Hub ID", "llrp.impinj_hub_id", FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + + { &hf_llrp_impinj_hub_fault_type, + { "Hub fault type", "llrp.param.impinj_hub_fault_type", FT_UINT16, BASE_DEC | BASE_EXT_STRING, &impinj_hub_fault_type_ext, 0, + NULL, HFILL }}, + + { &hf_llrp_impinj_hub_connected_type, + { "Hub connected type", "llrp.param.impinj_hub_connected_type", FT_UINT16, BASE_DEC | BASE_EXT_STRING, &impinj_hub_connected_type_ext, 0, + NULL, HFILL }}, }; /* Setup protocol subtree array */ |