ZBEE ZCL: updated ZCL Metering dissection.

Updated payload dissectors.

Change-Id: Ia800bba9f0b0d747a0926afb9bd833b2f3dc3666
Reviewed-on: https://code.wireshark.org/review/32144
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Nikita Ryaskin 2019-02-22 17:49:57 +03:00 committed by Anders Broman
parent 8fad9ba447
commit 5ea759974a
1 changed files with 229 additions and 36 deletions

View File

@ -4753,6 +4753,66 @@ VALUE_STRING_ARRAY(zbee_zcl_met_srv_rx_cmd_names);
VALUE_STRING_ENUM(zbee_zcl_met_srv_tx_cmd_names);
VALUE_STRING_ARRAY(zbee_zcl_met_srv_tx_cmd_names);
#define ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A 0x1
#define ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B 0x2
static const range_string zbee_zcl_met_mirror_rprt_attr_notification_scheme[] = {
{ 0x0, 0x0, "No Notification Scheme Defined" },
{ ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A, ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A, "Predefined Notification Scheme A" },
{ ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B, ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B, "Predefined Notification Scheme B" },
{ 0x3, 0x80, "Reserved" },
{ 0x81, 0xFF, "For MSP Requirements" },
{ 0xFF, 0xFF, "Reserved" },
{ 0, 0, NULL }
};
/* Snapshot Schedule Confirmation */
#define zbee_zcl_met_snapshot_schedule_confirmation_VALUE_STRING_LIST(XXX) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_ACCEPTED, 0x00, "Accepted" ) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_TYPE_NOT_SUPPORTED, 0x01, "Snapshot Type not supported") \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_CAUSE_NOT_SUPPORTED, 0x02, "Snapshot Cause not supported") \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_CURRENTLY_NOT_AVAILABLE, 0x03, "Snapshot Cause not supported") \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_NOT_SUPPORTED_BY_DEVICE, 0x04, "Snapshot Schedules not supported by device") \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_INSUFFICIENT_SPACE, 0x05, "Insufficient space for snapshot schedule")
VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_confirmation);
VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_confirmation);
/* Snapshot Schedule Frequency Type*/
#define zbee_zcl_met_snapshot_schedule_frequency_type_VALUE_STRING_LIST(XXX) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_DAY, 0x0, "Day" ) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_WEEK, 0x1, "Week" ) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_MONTH, 0x2, "Month" ) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_RESERVED, 0x3, "Reserved" )
VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_frequency_type);
VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_frequency_type);
/* Snapshot Schedule Wild-Card Frequency*/
#define zbee_zcl_met_snapshot_schedule_frequency_wild_card_VALUE_STRING_LIST(XXX) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_START_OF, 0x0, "Start of" ) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_END_OF, 0x1, "End of" ) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_NOT_USED, 0x2, "Wild-card not used" ) \
XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_RESERVED, 0x3, "Reserved" )
VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_frequency_wild_card);
VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_frequency_wild_card);
/* Snapshot Payload Type */
#define zbee_zcl_met_snapshot_payload_type_VALUE_STRING_LIST(XXX) \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_DELIVERED_REGISTERS, 0, "TOU Information Set Delivered Registers" ) \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_RECEIVED_REGISTERS, 1, "TOU Information Set Received Registers") \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_DELIVERED, 2, "Block Tier Information Set Delivered") \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_RECEIVED, 3, "Block Tier Information Set Received") \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_DELIVERED_NO_BILLING, 4, "TOU Information Set Delivered (No Billing)") \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_RECEIVED_NO_BILLING, 5, "TOU Information Set Received (No Billing)") \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_DELIVERED_NO_BILLING, 6, "Block Tier Information Set Delivered (No Billing)") \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_RECEIVED_NO_BILLING, 7, "Block Tier Information Set Received (No Billing)") \
XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_DATA_UNAVAILABLE, 128, "Data Unavailable")
VALUE_STRING_ENUM(zbee_zcl_met_snapshot_payload_type);
VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_payload_type);
/* Functional Notification Flags */
#define ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_OTA_FIRMWARE 0x00000001
#define ZBEE_ZCL_FUNC_NOTI_FLAG_CBKE_UPDATE_REQUESTED 0x00000002
@ -4868,6 +4928,8 @@ static void dissect_zcl_met_get_sampled_data_rsp (tvbuff_t *tvb, prot
static void dissect_zcl_met_configure_mirror (tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void dissect_zcl_met_get_notified_msg (tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void dissect_zcl_met_supply_status_response (tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void dissect_zcl_met_start_sampling_response (tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void dissect_zcl_met_notification_flags (tvbuff_t *tvb, proto_tree *tree, guint *offset, guint16 noti_flags_number);
/*************************/
/* Global Variables */
@ -4964,8 +5026,12 @@ static int hf_zbee_zcl_met_request_fast_poll_mode_fast_poll_update_period = -1;
static int hf_zbee_zcl_met_request_fast_poll_mode_duration = -1;
static int hf_zbee_zcl_met_schedule_snapshot_issuer_event_id = -1;
static int hf_zbee_zcl_met_schedule_snapshot_command_index = -1;
static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id = -1;
static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_start_time = -1;
static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule = -1;
static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type = -1;
static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause = -1;
static int hf_zbee_zcl_met_schedule_snapshot_total_number_of_commands = -1;
static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload = -1;
static int hf_zbee_zcl_met_take_snapshot_snapshot_cause = -1;
static int hf_zbee_zcl_met_get_snapshot_start_time = -1;
static int hf_zbee_zcl_met_get_snapshot_end_time = -1;
@ -4980,6 +5046,7 @@ static int hf_zbee_zcl_met_get_sampled_data_sample_id = -1;
static int hf_zbee_zcl_met_get_sampled_data_sample_start_time = -1;
static int hf_zbee_zcl_met_get_sampled_data_sample_type = -1;
static int hf_zbee_zcl_met_get_sampled_data_number_of_samples = -1;
static int hf_zbee_zcl_met_start_sampling_response_sample_id = -1;
static int hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme = -1;
static int hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n = -1;
static int hf_zbee_zcl_met_reset_load_limit_counter_provider_id = -1;
@ -5060,6 +5127,16 @@ static int hf_zbee_zcl_met_snapshot_cause_debt_payment = -1;
static int hf_zbee_zcl_met_snapshot_cause_scheduled_snapshot = -1;
static int hf_zbee_zcl_met_snapshot_cause_ota_firmware_download = -1;
static int hf_zbee_zcl_met_snapshot_cause_reserved = -1;
static int hf_zbee_zcl_met_snapshot_schedule_frequency = -1;
static int hf_zbee_zcl_met_snapshot_schedule_frequency_type = -1;
static int hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card = -1;
static const int* zbee_zcl_met_snapshot_schedule_bits[] = {
&hf_zbee_zcl_met_snapshot_schedule_frequency,
&hf_zbee_zcl_met_snapshot_schedule_frequency_type,
&hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card,
NULL
};
static const int* zbee_zcl_met_func_noti_flags[] = {
&hf_zbee_zcl_met_func_noti_flag_new_ota_firmware,
@ -5181,7 +5258,10 @@ static gint ett_zbee_zcl_met_noti_flags_3 = -1;
static gint ett_zbee_zcl_met_noti_flags_4 = -1;
static gint ett_zbee_zcl_met_noti_flags_5 = -1;
static gint ett_zbee_zcl_met_snapshot_cause_flags = -1;
static gint ett_zbee_zcl_met_snapshot_schedule = -1;
static gint ett_zbee_zcl_hf_zbee_zcl_met_schedule_snapshot_response_payload = -1;
static gint ett_zbee_zcl_hf_zbee_zcl_met_schedule_snapshot_payload = -1;
static gint ett_zbee_zcl_met_mirror_noti_flag = -1;
/*************************/
/* Function Bodies */
@ -5258,6 +5338,20 @@ dissect_zcl_met_attr_data(proto_tree *tree, tvbuff_t *tvb, guint *offset, guint1
}
} /*dissect_zcl_met_attr_data*/
/**
*This function manages the Start Sampling Response payload
*
*@param tvb pointer to buffer containing raw packet.
*@param tree pointer to data tree Wireshark uses to display packet.
*@param offset pointer to offset from caller
*/
static void dissect_zcl_met_start_sampling_response(tvbuff_t *tvb, proto_tree *tree, guint *offset)
{
/* Sample ID */
proto_tree_add_item(tree, hf_zbee_zcl_met_start_sampling_response_sample_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN);
*offset += 2;
} /*dissect_zcl_met_start_sampling_response*/
/**
*ZigBee ZCL Metering cluster dissector for wireshark.
*
@ -5433,7 +5527,7 @@ dissect_zbee_zcl_met(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
break;
case ZBEE_ZCL_CMD_ID_MET_START_SAMPLING_RESPONSE:
/* Add function to dissect payload */
dissect_zcl_met_start_sampling_response(tvb, payload_tree, &offset);
break;
default:
@ -5531,8 +5625,7 @@ dissect_zcl_met_request_fast_poll_mode(tvbuff_t *tvb, proto_tree *tree, guint *o
static void
dissect_zcl_met_schedule_snapshot(tvbuff_t *tvb, proto_tree *tree, guint *offset)
{
gint rem_len;
nstime_t start_time;
/* Issue Event ID */
proto_tree_add_item(tree, hf_zbee_zcl_met_schedule_snapshot_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN);
*offset += 4;
@ -5546,9 +5639,38 @@ dissect_zcl_met_schedule_snapshot(tvbuff_t *tvb, proto_tree *tree, guint *offset
*offset += 1;
/* Snapshot Schedule Payload */
rem_len = tvb_reported_length_remaining(tvb, *offset);
proto_tree_add_item(tree, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload, tvb, *offset, rem_len, ENC_NA);
*offset += rem_len;
proto_tree *payload_tree;
payload_tree = proto_tree_add_subtree(tree, tvb, *offset, 13,
ett_zbee_zcl_hf_zbee_zcl_met_schedule_snapshot_payload, NULL, "Snapshot Schedule Payload");
/* Snapshot Schedule ID */
proto_tree_add_item(payload_tree, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id,
tvb, *offset, 1, ENC_NA);
*offset += 1;
/* Snapshot Start Time */
start_time.secs = (time_t)tvb_get_letohl(tvb, *offset) + ZBEE_ZCL_NSTIME_UTC_OFFSET;
start_time.nsecs = 0;
proto_tree_add_time(tree, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_start_time, tvb, *offset, 4, &start_time);
*offset += 4;
/* Snapshot Schedule */
proto_tree_add_bitmask(payload_tree, tvb, *offset, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule,
ett_zbee_zcl_met_snapshot_schedule,
zbee_zcl_met_snapshot_schedule_bits, ENC_LITTLE_ENDIAN);
*offset += 3;
/* Snapshot Payload Type */
proto_tree_add_item(payload_tree, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type,
tvb, *offset, 1, ENC_NA);
*offset += 1;
/* Snapshot Cause */
proto_tree_add_bitmask(payload_tree, tvb, *offset, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause,
ett_zbee_zcl_met_snapshot_cause_flags, zbee_zcl_met_snapshot_cause_flags, ENC_LITTLE_ENDIAN);
*offset += 4;
} /*dissect_zcl_met_schedule_snapshot*/
/**
@ -5680,13 +5802,39 @@ dissect_zcl_met_get_sampled_data(tvbuff_t *tvb, proto_tree *tree, guint *offset)
static void
dissect_zcl_met_mirror_report_attribute_response(tvbuff_t *tvb, proto_tree *tree, guint *offset)
{
guint8 notif_scheme_type;
gint noti_flags_count;
notif_scheme_type = tvb_get_guint8(tvb, *offset);
/* Notification Scheme */
proto_tree_add_item(tree, hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme, tvb, *offset, 1, ENC_NA);
*offset += 1;
/* Notification Flags #N */
proto_tree_add_item(tree, hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n, tvb, *offset, 4, ENC_LITTLE_ENDIAN);
*offset += 4;
switch(notif_scheme_type) {
case ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A:
noti_flags_count = 1;
break;
case ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B:
noti_flags_count = 5;
break;
default:
noti_flags_count = -1;
break;
}
if (noti_flags_count > 0) {
for (guint16 noti_flags_number = 0; noti_flags_number < noti_flags_count; noti_flags_number++) {
dissect_zcl_met_notification_flags(tvb, tree, offset, noti_flags_number);
}
} else {
/* Notification Flag */
while (tvb_reported_length_remaining(tvb, *offset) > 0) {
proto_tree *notification_flag_tree;
notification_flag_tree = proto_tree_add_subtree(tree, tvb, *offset, 4, ett_zbee_zcl_met_mirror_noti_flag, NULL, "Notification Flags");
proto_tree_add_item(notification_flag_tree, hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n,
tvb, *offset, 4, ENC_LITTLE_ENDIAN);
*offset += 4;
}
}
} /*dissect_zcl_met_mirror_report_attribute_response*/
/**
@ -6062,27 +6210,9 @@ dissect_zcl_met_configure_mirror(tvbuff_t *tvb, proto_tree *tree, guint *offset)
*offset += 1;
} /*dissect_zcl_met_configure_mirror*/
/**
*This function manages the Get Notified Message payload
*
*@param tvb pointer to buffer containing raw packet.
*@param tree pointer to data tree Wireshark uses to display packet.
*@param offset pointer to offset from caller
*/
static void
dissect_zcl_met_get_notified_msg(tvbuff_t *tvb, proto_tree *tree, guint *offset)
dissect_zcl_met_notification_flags(tvbuff_t *tvb, proto_tree *tree, guint *offset, guint16 noti_flags_number)
{
guint16 noti_flags_number;
/* Notification Scheme */
proto_tree_add_item(tree, hf_zbee_zcl_met_get_notified_msg_notification_scheme, tvb, *offset, 1, ENC_NA);
*offset += 1;
/* Notification Flag attribute ID */
noti_flags_number = tvb_get_guint16(tvb, *offset, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_zbee_zcl_met_get_notified_msg_notification_flag_attribute_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN);
*offset += 2;
/* Notification Flags #N */
switch (noti_flags_number) {
case ZBEE_ZCL_ATTR_ID_MET_CLNT_FUNC_NOTI_FLAGS:
@ -6105,6 +6235,31 @@ dissect_zcl_met_get_notified_msg(tvbuff_t *tvb, proto_tree *tree, guint *offset)
break;
}
*offset += 4;
}
/**
*This function manages the Get Notified Message payload
*
*@param tvb pointer to buffer containing raw packet.
*@param tree pointer to data tree Wireshark uses to display packet.
*@param offset pointer to offset from caller
*/
static void
dissect_zcl_met_get_notified_msg(tvbuff_t *tvb, proto_tree *tree, guint *offset)
{
guint16 noti_flags_number;
/* Notification Scheme */
proto_tree_add_item(tree, hf_zbee_zcl_met_get_notified_msg_notification_scheme, tvb, *offset, 1, ENC_NA);
*offset += 1;
/* Notification Flag attribute ID */
noti_flags_number = tvb_get_guint16(tvb, *offset, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_zbee_zcl_met_get_notified_msg_notification_flag_attribute_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN);
*offset += 2;
dissect_zcl_met_notification_flags(tvb, tree, offset, noti_flags_number);
} /*dissect_zcl_met_get_notified_msg*/
/**
@ -6508,10 +6663,42 @@ proto_register_zbee_zcl_met(void)
{ "Total Number of Commands", "zbee_zcl_se.met.schedule_snapshot.total_number_of_commands", FT_UINT8, BASE_DEC, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload,
{ "Snapshot Schedule Payload", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload", FT_BYTES, BASE_NONE, NULL,
{ &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id,
{ "Snapshot Schedule ID", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_schedule_id", FT_UINT8, BASE_DEC, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_start_time,
{ "Snapshot Start Time", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule,
{ "Snapshot Schedule", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_schedule", FT_UINT24, BASE_HEX, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type,
{ "Snapshot Payload Type", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_payload_type",
FT_UINT8, BASE_DEC, VALS(zbee_zcl_met_snapshot_payload_type),
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause,
{ "Snapshot Cause", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_cause", FT_UINT32, BASE_HEX, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_snapshot_schedule_frequency,
{ "Snapshot Schedule Frequency", "zbee_zcl_se.met.snapshot_schedule.frequency",
FT_UINT24, BASE_DEC, NULL,
0x0FFFFF, NULL, HFILL } },
{ &hf_zbee_zcl_met_snapshot_schedule_frequency_type,
{ "Snapshot Schedule Frequency Type", "zbee_zcl_se.met.snapshot_schedule.frequency_type",
FT_UINT24, BASE_HEX, VALS(zbee_zcl_met_snapshot_schedule_frequency_type),
0x300000, NULL, HFILL } },
{ &hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card,
{ "Snapshot Schedule Frequency Wild Card", "zbee_zcl_se.met.snapshot_schedule.frequency_wild_card",
FT_UINT24, BASE_HEX,VALS(zbee_zcl_met_snapshot_schedule_frequency_wild_card),
0xC00000, NULL, HFILL } },
{ &hf_zbee_zcl_met_take_snapshot_snapshot_cause,
{ "Snapshot Cause", "zbee_zcl_se.met.take_snapshot.snapshot_cause", FT_UINT32, BASE_HEX, NULL,
0x00, NULL, HFILL } },
@ -6568,12 +6755,16 @@ proto_register_zbee_zcl_met(void)
{ "Number of Samples", "zbee_zcl_se.met.get_sampled_data.number_of_samples", FT_UINT16, BASE_DEC, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_start_sampling_response_sample_id,
{ "Sample ID", "zbee_zcl_se.met.start_sampling_response.sample_id", FT_UINT16, BASE_DEC, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme,
{ "Notification Scheme", "zbee_zcl_se.met.mirror_report_attribute_response.notification_scheme", FT_UINT8, BASE_DEC, NULL,
{ "Notification Scheme", "zbee_zcl_se.met.mirror_report_attribute_response.notification_scheme", FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(zbee_zcl_met_mirror_rprt_attr_notification_scheme),
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n,
{ "Notification Flags #N", "zbee_zcl_se.met.mirror_report_attribute_response.notification_flags_n", FT_UINT32, BASE_HEX, NULL,
{ "Notification Flag", "zbee_zcl_se.met.mirror_report_attribute_response.notification_flags_n", FT_UINT32, BASE_HEX, NULL,
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_reset_load_limit_counter_provider_id,
@ -6701,7 +6892,7 @@ proto_register_zbee_zcl_met(void)
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_confirmation,
{ "Snapshot Schedule Confirmation", "zbee_zcl_se.met.schedule_snapshot_response.snapshot_schedule_confirmation", FT_UINT8, BASE_HEX, NULL,
{ "Snapshot Schedule Confirmation", "zbee_zcl_se.met.schedule_snapshot_response.snapshot_schedule_confirmation", FT_UINT8, BASE_HEX, VALS(zbee_zcl_met_snapshot_schedule_confirmation),
0x00, NULL, HFILL } },
{ &hf_zbee_zcl_met_take_snapshot_response_snapshot_id,
@ -6880,7 +7071,10 @@ proto_register_zbee_zcl_met(void)
&ett_zbee_zcl_met_noti_flags_4,
&ett_zbee_zcl_met_noti_flags_5,
&ett_zbee_zcl_met_snapshot_cause_flags,
&ett_zbee_zcl_hf_zbee_zcl_met_schedule_snapshot_response_payload
&ett_zbee_zcl_met_snapshot_schedule,
&ett_zbee_zcl_hf_zbee_zcl_met_schedule_snapshot_response_payload,
&ett_zbee_zcl_hf_zbee_zcl_met_schedule_snapshot_payload,
&ett_zbee_zcl_met_mirror_noti_flag
};
/* Register the ZigBee ZCL Metering cluster protocol name and description */
@ -7259,7 +7453,6 @@ dissect_zcl_msg_get_cancel(tvbuff_t *tvb, proto_tree *tree, guint *offset)
} /* dissect_zcl_msg_get_cancel */
/**
*This function manages the Message Confirmation payload
*