From f3e27b8a3e369f2fb974c59062bdd32bee39aa9f Mon Sep 17 00:00:00 2001
From: Paul Zander
Date: Tue, 22 Jan 2019 08:29:22 +0100
Subject: [PATCH] Show manufacturer specific cluster
When the ZCL cluster id is in the range 0xFC00 .. 0xFFFF the cluster is a manufacturer specific cluster.
The information shown was 'Unknown' and should be 'Manufacturer Specific'.
Change-Id: Id3ae90aea65c6049c38df2029871fdcfc41ce565
Reviewed-on: https://code.wireshark.org/review/31668
Petri-Dish: Anders Broman
Reviewed-by: Kenneth Soerensen
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman
---
epan/dissectors/packet-gbcs.c | 2 +-
epan/dissectors/packet-zbee-aps.c | 185 ++++++++++----------
epan/dissectors/packet-zbee-aps.h | 5 +-
epan/dissectors/packet-zbee-nwk-gp.c | 2 +-
epan/dissectors/packet-zbee-zcl-general.c | 6 +-
epan/dissectors/packet-zbee-zdp-binding.c | 12 +-
epan/dissectors/packet-zbee-zdp-discovery.c | 8 +-
epan/dissectors/packet-zbee-zdp.c | 6 +-
8 files changed, 116 insertions(+), 110 deletions(-)
diff --git a/epan/dissectors/packet-gbcs.c b/epan/dissectors/packet-gbcs.c
index 59aa5af4ed..44e02f8dfc 100755
--- a/epan/dissectors/packet-gbcs.c
+++ b/epan/dissectors/packet-gbcs.c
@@ -778,7 +778,7 @@ void proto_register_gbcs_gbz(void)
},
{&hf_gbcs_gbz_extended_header_cluster,
{"Extended Header Cluster ID", "gbcs_gbz.extended_header_cluster",
- FT_UINT16, BASE_HEX, VALS(zbee_aps_cid_names), 0x0, NULL, HFILL}
+ FT_UINT16, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_aps_cid_names), 0x0, NULL, HFILL}
},
{&hf_gbcs_gbz_extended_header_length,
{"Extended Header Length", "gbcs_gbz.extended_header_length",
diff --git a/epan/dissectors/packet-zbee-aps.c b/epan/dissectors/packet-zbee-aps.c
index 73a3c5b337..f7a8a69ff5 100644
--- a/epan/dissectors/packet-zbee-aps.c
+++ b/epan/dissectors/packet-zbee-aps.c
@@ -533,117 +533,120 @@ const range_string zbee_aps_apid_abbrs[] = {
/* ZCL Cluster Names */
/* BUGBUG: big enough to hash? */
-const value_string zbee_aps_cid_names[] = {
+const range_string zbee_aps_cid_names[] = {
/* General */
- { ZBEE_ZCL_CID_BASIC, "Basic"},
- { ZBEE_ZCL_CID_POWER_CONFIG, "Power Configuration"},
- { ZBEE_ZCL_CID_DEVICE_TEMP_CONFIG, "Device Temperature Configuration"},
- { ZBEE_ZCL_CID_IDENTIFY, "Identify"},
- { ZBEE_ZCL_CID_GROUPS, "Groups"},
- { ZBEE_ZCL_CID_SCENES, "Scenes"},
- { ZBEE_ZCL_CID_ON_OFF, "On/Off"},
- { ZBEE_ZCL_CID_ON_OFF_SWITCH_CONFIG, "On/Off Switch Configuration"},
- { ZBEE_ZCL_CID_LEVEL_CONTROL, "Level Control"},
- { ZBEE_ZCL_CID_ALARMS, "Alarms"},
- { ZBEE_ZCL_CID_TIME, "Time"},
- { ZBEE_ZCL_CID_RSSI_LOCATION, "RSSI Location"},
- { ZBEE_ZCL_CID_ANALOG_INPUT_BASIC, "Analog Input (Basic)"},
- { ZBEE_ZCL_CID_ANALOG_OUTPUT_BASIC, "Analog Output (Basic)"},
- { ZBEE_ZCL_CID_ANALOG_VALUE_BASIC, "Analog Value (Basic)"},
- { ZBEE_ZCL_CID_BINARY_INPUT_BASIC, "Binary Input (Basic)"},
- { ZBEE_ZCL_CID_BINARY_OUTPUT_BASIC, "Binary Output (Basic)"},
- { ZBEE_ZCL_CID_BINARY_VALUE_BASIC, "Binary Value (Basic)"},
- { ZBEE_ZCL_CID_MULTISTATE_INPUT_BASIC, "Multistate Input (Basic)"},
- { ZBEE_ZCL_CID_MULTISTATE_OUTPUT_BASIC, "Multistate Output (Basic)"},
- { ZBEE_ZCL_CID_MULTISTATE_VALUE_BASIC, "Multistate Value (Basic)"},
- { ZBEE_ZCL_CID_COMMISSIONING, "Commissioning"},
- { ZBEE_ZCL_CID_PARTITION, "Partition"},
- { ZBEE_ZCL_CID_OTA_UPGRADE, "OTA Upgrade"},
- { ZBEE_ZCL_CID_POLL_CONTROL, "Poll Control"},
- { ZBEE_ZCL_CID_GP, "Green Power"},
+ { ZBEE_ZCL_CID_BASIC, ZBEE_ZCL_CID_BASIC, "Basic"},
+ { ZBEE_ZCL_CID_POWER_CONFIG, ZBEE_ZCL_CID_POWER_CONFIG, "Power Configuration"},
+ { ZBEE_ZCL_CID_DEVICE_TEMP_CONFIG, ZBEE_ZCL_CID_DEVICE_TEMP_CONFIG, "Device Temperature Configuration"},
+ { ZBEE_ZCL_CID_IDENTIFY, ZBEE_ZCL_CID_IDENTIFY, "Identify"},
+ { ZBEE_ZCL_CID_GROUPS, ZBEE_ZCL_CID_GROUPS, "Groups"},
+ { ZBEE_ZCL_CID_SCENES, ZBEE_ZCL_CID_SCENES, "Scenes"},
+ { ZBEE_ZCL_CID_ON_OFF, ZBEE_ZCL_CID_ON_OFF, "On/Off"},
+ { ZBEE_ZCL_CID_ON_OFF_SWITCH_CONFIG, ZBEE_ZCL_CID_ON_OFF_SWITCH_CONFIG, "On/Off Switch Configuration"},
+ { ZBEE_ZCL_CID_LEVEL_CONTROL, ZBEE_ZCL_CID_LEVEL_CONTROL, "Level Control"},
+ { ZBEE_ZCL_CID_ALARMS, ZBEE_ZCL_CID_ALARMS, "Alarms"},
+ { ZBEE_ZCL_CID_TIME, ZBEE_ZCL_CID_TIME, "Time"},
+ { ZBEE_ZCL_CID_RSSI_LOCATION, ZBEE_ZCL_CID_RSSI_LOCATION, "RSSI Location"},
+ { ZBEE_ZCL_CID_ANALOG_INPUT_BASIC, ZBEE_ZCL_CID_ANALOG_INPUT_BASIC, "Analog Input (Basic)"},
+ { ZBEE_ZCL_CID_ANALOG_OUTPUT_BASIC, ZBEE_ZCL_CID_ANALOG_OUTPUT_BASIC, "Analog Output (Basic)"},
+ { ZBEE_ZCL_CID_ANALOG_VALUE_BASIC, ZBEE_ZCL_CID_ANALOG_VALUE_BASIC, "Analog Value (Basic)"},
+ { ZBEE_ZCL_CID_BINARY_INPUT_BASIC, ZBEE_ZCL_CID_BINARY_INPUT_BASIC, "Binary Input (Basic)"},
+ { ZBEE_ZCL_CID_BINARY_OUTPUT_BASIC, ZBEE_ZCL_CID_BINARY_OUTPUT_BASIC, "Binary Output (Basic)"},
+ { ZBEE_ZCL_CID_BINARY_VALUE_BASIC, ZBEE_ZCL_CID_BINARY_VALUE_BASIC, "Binary Value (Basic)"},
+ { ZBEE_ZCL_CID_MULTISTATE_INPUT_BASIC, ZBEE_ZCL_CID_MULTISTATE_INPUT_BASIC, "Multistate Input (Basic)"},
+ { ZBEE_ZCL_CID_MULTISTATE_OUTPUT_BASIC, ZBEE_ZCL_CID_MULTISTATE_OUTPUT_BASIC, "Multistate Output (Basic)"},
+ { ZBEE_ZCL_CID_MULTISTATE_VALUE_BASIC, ZBEE_ZCL_CID_MULTISTATE_VALUE_BASIC, "Multistate Value (Basic)"},
+ { ZBEE_ZCL_CID_COMMISSIONING, ZBEE_ZCL_CID_COMMISSIONING, "Commissioning"},
+ { ZBEE_ZCL_CID_PARTITION, ZBEE_ZCL_CID_PARTITION, "Partition"},
+ { ZBEE_ZCL_CID_OTA_UPGRADE, ZBEE_ZCL_CID_OTA_UPGRADE, "OTA Upgrade"},
+ { ZBEE_ZCL_CID_POLL_CONTROL, ZBEE_ZCL_CID_POLL_CONTROL, "Poll Control"},
+ { ZBEE_ZCL_CID_GP, ZBEE_ZCL_CID_GP, "Green Power"},
/* */
- { ZBEE_ZCL_CID_POWER_PROFILE, "Power Profile"},
- { ZBEE_ZCL_CID_APPLIANCE_CONTROL, "Appliance Control"},
+ { ZBEE_ZCL_CID_POWER_PROFILE, ZBEE_ZCL_CID_POWER_PROFILE, "Power Profile"},
+ { ZBEE_ZCL_CID_APPLIANCE_CONTROL, ZBEE_ZCL_CID_APPLIANCE_CONTROL, "Appliance Control"},
/* Closures */
- { ZBEE_ZCL_CID_SHADE_CONFIG, "Shade Configuration"},
- { ZBEE_ZCL_CID_DOOR_LOCK, "Door Lock"},
+ { ZBEE_ZCL_CID_SHADE_CONFIG, ZBEE_ZCL_CID_SHADE_CONFIG, "Shade Configuration"},
+ { ZBEE_ZCL_CID_DOOR_LOCK, ZBEE_ZCL_CID_DOOR_LOCK, "Door Lock"},
/* HVAC */
- { ZBEE_ZCL_CID_PUMP_CONFIG_CONTROL, "Pump Configuration Control"},
- { ZBEE_ZCL_CID_THERMOSTAT, "Thermostat"},
- { ZBEE_ZCL_CID_FAN_CONTROL, "Fan Control"},
- { ZBEE_ZCL_CID_DEHUMIDIFICATION_CONTROL, "Dehumidification Control"},
- { ZBEE_ZCL_CID_THERMOSTAT_UI_CONFIG, "Thermostat User Interface Configuration"},
+ { ZBEE_ZCL_CID_PUMP_CONFIG_CONTROL, ZBEE_ZCL_CID_PUMP_CONFIG_CONTROL, "Pump Configuration Control"},
+ { ZBEE_ZCL_CID_THERMOSTAT, ZBEE_ZCL_CID_THERMOSTAT, "Thermostat"},
+ { ZBEE_ZCL_CID_FAN_CONTROL, ZBEE_ZCL_CID_FAN_CONTROL, "Fan Control"},
+ { ZBEE_ZCL_CID_DEHUMIDIFICATION_CONTROL, ZBEE_ZCL_CID_DEHUMIDIFICATION_CONTROL, "Dehumidification Control"},
+ { ZBEE_ZCL_CID_THERMOSTAT_UI_CONFIG, ZBEE_ZCL_CID_THERMOSTAT_UI_CONFIG, "Thermostat User Interface Configuration"},
/* Lighting */
- { ZBEE_ZCL_CID_COLOR_CONTROL, "Color Control"},
- { ZBEE_ZCL_CID_BALLAST_CONFIG, "Ballast Configuration"},
+ { ZBEE_ZCL_CID_COLOR_CONTROL, ZBEE_ZCL_CID_COLOR_CONTROL, "Color Control"},
+ { ZBEE_ZCL_CID_BALLAST_CONFIG, ZBEE_ZCL_CID_BALLAST_CONFIG, "Ballast Configuration"},
/* Measurement and Sensing */
- { ZBEE_ZCL_CID_ILLUMINANCE_MEASUREMENT, "Illuminance Measurement"},
- { ZBEE_ZCL_CID_ILLUMINANCE_LEVEL_SENSING, "Illuminance Level Sensing"},
- { ZBEE_ZCL_CID_TEMPERATURE_MEASUREMENT, "Temperature Measurement"},
- { ZBEE_ZCL_CID_PRESSURE_MEASUREMENT, "Pressure Measurement"},
- { ZBEE_ZCL_CID_FLOW_MEASUREMENT, "Flow Measurement"},
- { ZBEE_ZCL_CID_REL_HUMIDITY_MEASUREMENT, "Relative Humidity Measurement"},
- { ZBEE_ZCL_CID_OCCUPANCY_SENSING, "Occupancy Sensing"},
+ { ZBEE_ZCL_CID_ILLUMINANCE_MEASUREMENT, ZBEE_ZCL_CID_ILLUMINANCE_MEASUREMENT, "Illuminance Measurement"},
+ { ZBEE_ZCL_CID_ILLUMINANCE_LEVEL_SENSING, ZBEE_ZCL_CID_ILLUMINANCE_LEVEL_SENSING, "Illuminance Level Sensing"},
+ { ZBEE_ZCL_CID_TEMPERATURE_MEASUREMENT, ZBEE_ZCL_CID_TEMPERATURE_MEASUREMENT, "Temperature Measurement"},
+ { ZBEE_ZCL_CID_PRESSURE_MEASUREMENT, ZBEE_ZCL_CID_PRESSURE_MEASUREMENT, "Pressure Measurement"},
+ { ZBEE_ZCL_CID_FLOW_MEASUREMENT, ZBEE_ZCL_CID_FLOW_MEASUREMENT, "Flow Measurement"},
+ { ZBEE_ZCL_CID_REL_HUMIDITY_MEASUREMENT, ZBEE_ZCL_CID_REL_HUMIDITY_MEASUREMENT, "Relative Humidity Measurement"},
+ { ZBEE_ZCL_CID_OCCUPANCY_SENSING, ZBEE_ZCL_CID_OCCUPANCY_SENSING, "Occupancy Sensing"},
/* Security and Safety */
- { ZBEE_ZCL_CID_IAS_ZONE, "Intruder Alarm System Zone"},
- { ZBEE_ZCL_CID_IAS_ACE, "Intruder Alarm System ACE"},
- { ZBEE_ZCL_CID_IAS_WD, "Intruder Alarm System WD"},
+ { ZBEE_ZCL_CID_IAS_ZONE, ZBEE_ZCL_CID_IAS_ZONE, "Intruder Alarm System Zone"},
+ { ZBEE_ZCL_CID_IAS_ACE, ZBEE_ZCL_CID_IAS_ACE, "Intruder Alarm System ACE"},
+ { ZBEE_ZCL_CID_IAS_WD, ZBEE_ZCL_CID_IAS_WD, "Intruder Alarm System WD"},
/* Protocol Interfaces */
- { ZBEE_ZCL_CID_GENERIC_TUNNEL, "BACnet Generic Tunnel"},
- { ZBEE_ZCL_CID_BACNET_PROTOCOL_TUNNEL, "BACnet Protocol Tunnel"},
- { ZBEE_ZCL_CID_BACNET_ANALOG_INPUT_REG, "BACnet Analog Input (Regular)"},
- { ZBEE_ZCL_CID_BACNET_ANALOG_INPUT_EXT, "BACnet Analog Input (Extended)"},
- { ZBEE_ZCL_CID_BACNET_ANALOG_OUTPUT_REG, "BACnet Analog Output (Regular)"},
- { ZBEE_ZCL_CID_BACNET_ANALOG_OUTPUT_EXT, "BACnet Analog Output (Extended)"},
- { ZBEE_ZCL_CID_BACNET_ANALOG_VALUE_REG, "BACnet Analog Value (Regular)"},
- { ZBEE_ZCL_CID_BACNET_ANALOG_VALUE_EXT, "BACnet Analog Value (Extended)"},
- { ZBEE_ZCL_CID_BACNET_BINARY_INPUT_REG, "BACnet Binary Input (Regular)"},
- { ZBEE_ZCL_CID_BACNET_BINARY_INPUT_EXT, "BACnet Binary Input (Extended)"},
- { ZBEE_ZCL_CID_BACNET_BINARY_OUTPUT_REG, "BACnet Binary Output (Regular)"},
- { ZBEE_ZCL_CID_BACNET_BINARY_OUTPUT_EXT, "BACnet Binary Output (Extended)"},
- { ZBEE_ZCL_CID_BACNET_BINARY_VALUE_REG, "BACnet Binary Value (Regular)"},
- { ZBEE_ZCL_CID_BACNET_BINARY_VALUE_EXT, "BACnet Binary Value (Extended)"},
- { ZBEE_ZCL_CID_BACNET_MULTISTATE_INPUT_REG, "BACnet Multistage Input (Regular)"},
- { ZBEE_ZCL_CID_BACNET_MULTISTATE_INPUT_EXT, "BACnet Multistage Input (Extended)"},
- { ZBEE_ZCL_CID_BACNET_MULTISTATE_OUTPUT_REG, "BACnet Multistage Output (Regular)"},
- { ZBEE_ZCL_CID_BACNET_MULTISTATE_OUTPUT_EXT, "BACnet Multistage Output (Extended)"},
- { ZBEE_ZCL_CID_BACNET_MULTISTATE_VALUE_REG, "BACnet Multistage Value (Regular)"},
- { ZBEE_ZCL_CID_BACNET_MULTISTATE_VALUE_EXT, "BACnet Multistage Value (Extended)"},
+ { ZBEE_ZCL_CID_GENERIC_TUNNEL, ZBEE_ZCL_CID_GENERIC_TUNNEL, "BACnet Generic Tunnel"},
+ { ZBEE_ZCL_CID_BACNET_PROTOCOL_TUNNEL, ZBEE_ZCL_CID_BACNET_PROTOCOL_TUNNEL, "BACnet Protocol Tunnel"},
+ { ZBEE_ZCL_CID_BACNET_ANALOG_INPUT_REG, ZBEE_ZCL_CID_BACNET_ANALOG_INPUT_REG, "BACnet Analog Input (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_ANALOG_INPUT_EXT, ZBEE_ZCL_CID_BACNET_ANALOG_INPUT_EXT, "BACnet Analog Input (Extended)"},
+ { ZBEE_ZCL_CID_BACNET_ANALOG_OUTPUT_REG, ZBEE_ZCL_CID_BACNET_ANALOG_OUTPUT_REG, "BACnet Analog Output (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_ANALOG_OUTPUT_EXT, ZBEE_ZCL_CID_BACNET_ANALOG_OUTPUT_EXT, "BACnet Analog Output (Extended)"},
+ { ZBEE_ZCL_CID_BACNET_ANALOG_VALUE_REG, ZBEE_ZCL_CID_BACNET_ANALOG_VALUE_REG, "BACnet Analog Value (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_ANALOG_VALUE_EXT, ZBEE_ZCL_CID_BACNET_ANALOG_VALUE_EXT, "BACnet Analog Value (Extended)"},
+ { ZBEE_ZCL_CID_BACNET_BINARY_INPUT_REG, ZBEE_ZCL_CID_BACNET_BINARY_INPUT_REG, "BACnet Binary Input (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_BINARY_INPUT_EXT, ZBEE_ZCL_CID_BACNET_BINARY_INPUT_EXT, "BACnet Binary Input (Extended)"},
+ { ZBEE_ZCL_CID_BACNET_BINARY_OUTPUT_REG, ZBEE_ZCL_CID_BACNET_BINARY_OUTPUT_REG, "BACnet Binary Output (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_BINARY_OUTPUT_EXT, ZBEE_ZCL_CID_BACNET_BINARY_OUTPUT_EXT, "BACnet Binary Output (Extended)"},
+ { ZBEE_ZCL_CID_BACNET_BINARY_VALUE_REG, ZBEE_ZCL_CID_BACNET_BINARY_VALUE_REG, "BACnet Binary Value (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_BINARY_VALUE_EXT, ZBEE_ZCL_CID_BACNET_BINARY_VALUE_EXT, "BACnet Binary Value (Extended)"},
+ { ZBEE_ZCL_CID_BACNET_MULTISTATE_INPUT_REG, ZBEE_ZCL_CID_BACNET_MULTISTATE_INPUT_REG, "BACnet Multistage Input (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_MULTISTATE_INPUT_EXT, ZBEE_ZCL_CID_BACNET_MULTISTATE_INPUT_EXT, "BACnet Multistage Input (Extended)"},
+ { ZBEE_ZCL_CID_BACNET_MULTISTATE_OUTPUT_REG, ZBEE_ZCL_CID_BACNET_MULTISTATE_OUTPUT_REG, "BACnet Multistage Output (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_MULTISTATE_OUTPUT_EXT, ZBEE_ZCL_CID_BACNET_MULTISTATE_OUTPUT_EXT, "BACnet Multistage Output (Extended)"},
+ { ZBEE_ZCL_CID_BACNET_MULTISTATE_VALUE_REG, ZBEE_ZCL_CID_BACNET_MULTISTATE_VALUE_REG, "BACnet Multistage Value (Regular)"},
+ { ZBEE_ZCL_CID_BACNET_MULTISTATE_VALUE_EXT, ZBEE_ZCL_CID_BACNET_MULTISTATE_VALUE_EXT, "BACnet Multistage Value (Extended)"},
/* ZCL Cluster IDs - Smart Energy */
- { ZBEE_ZCL_CID_KEEP_ALIVE, "Keep-Alive"},
- { ZBEE_ZCL_CID_PRICE, "Price"},
- { ZBEE_ZCL_CID_DEMAND_RESPONSE_LOAD_CONTROL, "Demand Response and Load Control"},
- { ZBEE_ZCL_CID_SIMPLE_METERING, "Simple Metering"},
- { ZBEE_ZCL_CID_MESSAGE, "Message"},
- { ZBEE_ZCL_CID_TUNNELING, "Tunneling"},
- { ZBEE_ZCL_CID_PRE_PAYMENT, "Pre-Payment"},
- { ZBEE_ZCL_CID_ENERGY_MANAGEMENT, "Energy Management"},
- { ZBEE_ZCL_CID_CALENDAR, "Calendar"},
- { ZBEE_ZCL_CID_DEVICE_MANAGEMENT, "Device Management"},
- { ZBEE_ZCL_CID_EVENTS, "Events"},
- { ZBEE_ZCL_CID_MDU_PAIRING, "MDU Pairing"},
- { ZBEE_ZCL_CID_SUB_GHZ, "Sub-Ghz"},
- { ZBEE_ZCL_CID_DAILY_SCHEDULE, "Daily Schedule"},
+ { ZBEE_ZCL_CID_KEEP_ALIVE, ZBEE_ZCL_CID_KEEP_ALIVE, "Keep-Alive"},
+ { ZBEE_ZCL_CID_PRICE, ZBEE_ZCL_CID_PRICE, "Price"},
+ { ZBEE_ZCL_CID_DEMAND_RESPONSE_LOAD_CONTROL, ZBEE_ZCL_CID_DEMAND_RESPONSE_LOAD_CONTROL, "Demand Response and Load Control"},
+ { ZBEE_ZCL_CID_SIMPLE_METERING, ZBEE_ZCL_CID_SIMPLE_METERING, "Simple Metering"},
+ { ZBEE_ZCL_CID_MESSAGE, ZBEE_ZCL_CID_MESSAGE, "Message"},
+ { ZBEE_ZCL_CID_TUNNELING, ZBEE_ZCL_CID_TUNNELING, "Tunneling"},
+ { ZBEE_ZCL_CID_PRE_PAYMENT, ZBEE_ZCL_CID_PRE_PAYMENT, "Pre-Payment"},
+ { ZBEE_ZCL_CID_ENERGY_MANAGEMENT, ZBEE_ZCL_CID_ENERGY_MANAGEMENT, "Energy Management"},
+ { ZBEE_ZCL_CID_CALENDAR, ZBEE_ZCL_CID_CALENDAR, "Calendar"},
+ { ZBEE_ZCL_CID_DEVICE_MANAGEMENT, ZBEE_ZCL_CID_DEVICE_MANAGEMENT, "Device Management"},
+ { ZBEE_ZCL_CID_EVENTS, ZBEE_ZCL_CID_EVENTS, "Events"},
+ { ZBEE_ZCL_CID_MDU_PAIRING, ZBEE_ZCL_CID_MDU_PAIRING, "MDU Pairing"},
+ { ZBEE_ZCL_CID_SUB_GHZ, ZBEE_ZCL_CID_SUB_GHZ, "Sub-Ghz"},
+ { ZBEE_ZCL_CID_DAILY_SCHEDULE, ZBEE_ZCL_CID_DAILY_SCHEDULE, "Daily Schedule"},
/* ZCL Cluster IDs - Key Establishment */
- { ZBEE_ZCL_CID_KE, "Key Establishment"},
+ { ZBEE_ZCL_CID_KE, ZBEE_ZCL_CID_KE, "Key Establishment"},
/* ZCL Cluster IDs - Home Automation */
- {ZBEE_ZCL_CID_APPLIANCE_IDENTIFICATION, "Appliance Identification"},
- {ZBEE_ZCL_CID_METER_IDENTIFICATION, "Meter Identification"},
- {ZBEE_ZCL_CID_APPLIANCE_EVENTS_AND_ALERT, "Appliance Events And Alerts"},
- {ZBEE_ZCL_CID_APPLIANCE_STATISTICS, "Appliance Statistics"},
+ {ZBEE_ZCL_CID_APPLIANCE_IDENTIFICATION, ZBEE_ZCL_CID_APPLIANCE_IDENTIFICATION, "Appliance Identification"},
+ {ZBEE_ZCL_CID_METER_IDENTIFICATION, ZBEE_ZCL_CID_METER_IDENTIFICATION, "Meter Identification"},
+ {ZBEE_ZCL_CID_APPLIANCE_EVENTS_AND_ALERT, ZBEE_ZCL_CID_APPLIANCE_EVENTS_AND_ALERT, "Appliance Events And Alerts"},
+ {ZBEE_ZCL_CID_APPLIANCE_STATISTICS, ZBEE_ZCL_CID_APPLIANCE_STATISTICS, "Appliance Statistics"},
- {ZBEE_ZCL_CID_ZLL, "ZLL Commissioning"},
- { 0, NULL }
+ {ZBEE_ZCL_CID_ZLL, ZBEE_ZCL_CID_ZLL, "ZLL Commissioning"},
+
+/* ZCL Cluster IDs - Manufacturer Specific */
+ {ZBEE_ZCL_CID_MANUFACTURER_SPECIFIC_MIN, ZBEE_ZCL_CID_MANUFACTURER_SPECIFIC_MAX, "Manufacturer Specific"},
+ { 0, 0, NULL }
};
/* APS Test Profile #2 Cluster Names */
@@ -1879,8 +1882,8 @@ void proto_register_zbee_aps(void)
NULL, HFILL }},
{ &hf_zbee_aps_cluster,
- { "Cluster", "zbee_aps.cluster", FT_UINT16, BASE_HEX,
- VALS(zbee_aps_cid_names), 0x0, NULL, HFILL }},
+ { "Cluster", "zbee_aps.cluster", FT_UINT16, BASE_HEX | BASE_RANGE_STRING,
+ RVALS(zbee_aps_cid_names), 0x0, NULL, HFILL }},
{ &hf_zbee_aps_profile,
{ "Profile", "zbee_aps.profile", FT_UINT16, BASE_HEX | BASE_RANGE_STRING,
diff --git a/epan/dissectors/packet-zbee-aps.h b/epan/dissectors/packet-zbee-aps.h
index 63ce4ff2c9..53e64c3e89 100644
--- a/epan/dissectors/packet-zbee-aps.h
+++ b/epan/dissectors/packet-zbee-aps.h
@@ -223,6 +223,9 @@
#define ZBEE_ZCL_CID_ZLL 0x1000
+#define ZBEE_ZCL_CID_MANUFACTURER_SPECIFIC_MIN 0xFC00
+#define ZBEE_ZCL_CID_MANUFACTURER_SPECIFIC_MAX 0xFFFF
+
/* ZCL Test Profile #2 Clusters */
#define ZBEE_APS_T2_CID_TCP 0x0001
#define ZBEE_APS_T2_CID_RESPC 0x0002
@@ -306,7 +309,7 @@ enum {
**************************************
*/
-extern const value_string zbee_aps_cid_names[];
+extern const range_string zbee_aps_cid_names[];
extern const range_string zbee_aps_apid_names[];
#endif /* PACKET_ZBEE_APS_H*/
diff --git a/epan/dissectors/packet-zbee-nwk-gp.c b/epan/dissectors/packet-zbee-nwk-gp.c
index 09b73d7855..c4809e1627 100644
--- a/epan/dissectors/packet-zbee-nwk-gp.c
+++ b/epan/dissectors/packet-zbee-nwk-gp.c
@@ -2227,7 +2227,7 @@ proto_register_zbee_nwk_gp(void)
0x0, NULL, HFILL } },
{ &hf_zbee_nwk_gp_zcl_attr_cluster_id,
- { "ZigBee Cluster ID", "zbee_nwk_gp.zcl.attr.cluster_id", FT_UINT16, BASE_HEX, VALS(zbee_aps_cid_names),
+ { "ZigBee Cluster ID", "zbee_nwk_gp.zcl.attr.cluster_id", FT_UINT16, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_aps_cid_names),
0x0, NULL, HFILL }},
{ &hf_zbee_nwk_gp_cmd_channel_request_toggling_behaviour,
diff --git a/epan/dissectors/packet-zbee-zcl-general.c b/epan/dissectors/packet-zbee-zcl-general.c
index 35e28113c9..362fa2d91a 100644
--- a/epan/dissectors/packet-zbee-zcl-general.c
+++ b/epan/dissectors/packet-zbee-zcl-general.c
@@ -3071,7 +3071,7 @@ proto_register_zbee_zcl_scenes(void)
0x00, NULL, HFILL }},
{ &hf_zbee_zcl_scenes_extension_set_cluster,
- { "Cluster", "zbee_zcl_general.scenes.extension_set.cluster", FT_UINT16, BASE_HEX, VALS(zbee_aps_cid_names),
+ { "Cluster", "zbee_zcl_general.scenes.extension_set.cluster", FT_UINT16, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_aps_cid_names),
0x00, NULL, HFILL }},
{ &hf_zbee_zcl_scenes_extension_set_onoff,
@@ -9632,7 +9632,7 @@ void proto_register_zbee_zcl_part(void)
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_part_partitioned_cluster_id,
- { "Partitioned Cluster ID", "zbee_zcl_general.part.part_cluster_id", FT_UINT16, BASE_HEX, VALS(zbee_aps_cid_names),
+ { "Partitioned Cluster ID", "zbee_zcl_general.part.part_cluster_id", FT_UINT16, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_aps_cid_names),
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_part_ack_opt,
@@ -15316,7 +15316,7 @@ proto_register_zbee_zcl_gp(void)
{ "Number of Client clusters", "zbee_zcl_general.gp.pc.n_srv_clusters", FT_UINT8, BASE_DEC,
NULL, ZBEE_ZCL_GP_CLUSTER_LIST_LEN_CLI, NULL, HFILL }},
{ &hf_zbee_gp_gpd_cluster_id,
- { "Cluster ID", "zbee_zcl_general.gp.pc.cluster", FT_UINT8, BASE_HEX, VALS(zbee_aps_cid_names),
+ { "Cluster ID", "zbee_zcl_general.gp.pc.cluster", FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_aps_cid_names),
0x0, NULL, HFILL }},
/* GP Sink Table Request and GP Proxy Table Request commands */
diff --git a/epan/dissectors/packet-zbee-zdp-binding.c b/epan/dissectors/packet-zbee-zdp-binding.c
index 2687d06cf9..02d4bcce4b 100644
--- a/epan/dissectors/packet-zbee-zdp-binding.c
+++ b/epan/dissectors/packet-zbee-zdp-binding.c
@@ -170,7 +170,7 @@ dissect_zbee_zdp_req_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
offset += 1;
ti = proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_cluster, tvb, offset, sizeof_cluster, ENC_LITTLE_ENDIAN, &cluster);
offset += sizeof_cluster;
- proto_item_append_text(ti, " (%s)", val_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
+ proto_item_append_text(ti, " (%s)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
if (version >= ZBEE_VERSION_2007) {
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_addr_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN, &dst_mode);
@@ -201,7 +201,7 @@ dissect_zbee_zdp_req_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
zbee_append_info(tree, pinfo, ", Dst: %s", eui64_to_display(wmem_packet_scope(), dst64));
}
- zbee_append_info(tree, pinfo, ", %s (Cluster ID: 0x%04x)", val_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"), cluster);
+ zbee_append_info(tree, pinfo, ", %s (Cluster ID: 0x%04x)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"), cluster);
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -231,7 +231,7 @@ dissect_zbee_zdp_req_unbind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
offset += 1;
ti = proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_cluster, tvb, offset, sizeof_cluster, ENC_LITTLE_ENDIAN, &cluster);
offset += sizeof_cluster;
- proto_item_append_text(ti, " (%s)", val_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
+ proto_item_append_text(ti, " (%s)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
if (version >= ZBEE_VERSION_2007) {
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_addr_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN, &dst_mode);
@@ -262,7 +262,7 @@ dissect_zbee_zdp_req_unbind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
zbee_append_info(tree, pinfo, ", Dst: %s", eui64_to_display(wmem_packet_scope(), dst64));
}
- zbee_append_info(tree, pinfo, ", %s (Cluster ID: 0x%04x)", val_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"), cluster);
+ zbee_append_info(tree, pinfo, ", %s (Cluster ID: 0x%04x)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"), cluster);
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -339,7 +339,7 @@ dissect_zbee_zdp_req_store_bak_bind_entry(tvbuff_t *tvb, packet_info *pinfo, pro
offset += 1;
ti = proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_cluster, tvb, offset, sizeof_cluster, ENC_LITTLE_ENDIAN, &cluster);
offset += sizeof_cluster;
- proto_item_append_text(ti, " (%s)", val_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
+ proto_item_append_text(ti, " (%s)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_addr_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN, &dst_mode);
offset += 1;
@@ -357,7 +357,7 @@ dissect_zbee_zdp_req_store_bak_bind_entry(tvbuff_t *tvb, packet_info *pinfo, pro
zbee_append_info(tree, pinfo, ", Src: %s", eui64_to_display(wmem_packet_scope(), src64));
zbee_append_info(tree, pinfo, ", Src Endpoint: %d", src_ep);
- zbee_append_info(tree, pinfo, ", %s (Cluster ID: 0x%04x)", val_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"), cluster);
+ zbee_append_info(tree, pinfo, ", %s (Cluster ID: 0x%04x)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"), cluster);
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
diff --git a/epan/dissectors/packet-zbee-zdp-discovery.c b/epan/dissectors/packet-zbee-zdp-discovery.c
index 44b205abac..16b8644e78 100644
--- a/epan/dissectors/packet-zbee-zdp-discovery.c
+++ b/epan/dissectors/packet-zbee-zdp-discovery.c
@@ -198,7 +198,7 @@ dissect_zbee_zdp_req_match_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
for (i=0; i