aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Boye Petersen <martinboyepetersen@gmail.com>2017-09-21 17:04:23 +0200
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2017-09-23 14:22:17 +0000
commitcaa9b19107a097a64552e5fc071f4d7fd218b59e (patch)
treedacf1003cfb6c2629d1ef51ae8417a787440b839
parente7cc0279ab9a11319de521dfdf25057d1ff7ab7f (diff)
ZigBee ZCL SE Metering: Dissect functional notification flags and notification flags 2 to 5
Change-Id: Ia79c3e2609247846731a4b375b198702f06954de Reviewed-on: https://code.wireshark.org/review/23649 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
-rw-r--r--epan/dissectors/packet-zbee-zcl-se.c609
1 files changed, 602 insertions, 7 deletions
diff --git a/epan/dissectors/packet-zbee-zcl-se.c b/epan/dissectors/packet-zbee-zcl-se.c
index bfbb6cf..02c34dc 100644
--- a/epan/dissectors/packet-zbee-zcl-se.c
+++ b/epan/dissectors/packet-zbee-zcl-se.c
@@ -460,13 +460,13 @@ proto_reg_handoff_zbee_zcl_price(void)
#define zbee_zcl_met_attr_names_VALUE_STRING_LIST(XXX) \
/* Client: Notification AttributeSet / Server: Reading Information Set */ \
XXX(ZBEE_ZCL_ATTR_ID_MET_FUNC_NOTI_FLAGS_CUR_SUM_DEL, 0x0000, "Client: Functional Notification Flags / Server: Current Summation Delivered" ) \
- XXX(ZBEE_ZCL_ATTR_ID_MET_NOT_FLAGS2_CUR_SUM_RECV, 0x0001, "Client: Notification Flag 2 / Server: Current Summation Received" ) \
- XXX(ZBEE_ZCL_ATTR_ID_MET_NOT_FLAGS3_CUR_MAX_DE_DEL, 0x0002, "Client: Notification Flag 3 / Server: Current Max Demand Delivered" ) \
- XXX(ZBEE_ZCL_ATTR_ID_MET_NOT_FLAGS4_CUR_MAX_DE_RECV, 0x0003, "Client: Notification Flag 4 / Server: Current Max Demand Received" ) \
- XXX(ZBEE_ZCL_ATTR_ID_MET_NOT_FLAGS5_DFT_SUM, 0x0004, "Client: Notification Flag 5 / Server: DFTSummation" ) \
- XXX(ZBEE_ZCL_ATTR_ID_MET_NOT_FLAGS6_DAI_FREE_TIME, 0x0005, "Client: Notification Flag 6 / Server: Daily Freeze Time" ) \
- XXX(ZBEE_ZCL_ATTR_ID_MET_NOT_FLAGS7_POW_FAC, 0x0006, "Client: Notification Flag 7 / Server: Power Factor" ) \
- XXX(ZBEE_ZCL_ATTR_ID_MET_NOT_FLAGS8_READ_SNAP_TIME, 0x0007, "Client: Notification Flag 8 / Server: Reading Snapshot Time" ) \
+ XXX(ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_2_CUR_SUM_RECV, 0x0001, "Client: Notification Flags 2 / Server: Current Summation Received" ) \
+ XXX(ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_3_CUR_MAX_DE_DEL, 0x0002, "Client: Notification Flags 3 / Server: Current Max Demand Delivered" ) \
+ XXX(ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_4_CUR_MAX_DE_RECV, 0x0003, "Client: Notification Flags 4 / Server: Current Max Demand Received" ) \
+ XXX(ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_5_DFT_SUM, 0x0004, "Client: Notification Flags 5 / Server: DFTSummation" ) \
+ XXX(ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_6_DAI_FREE_TIME, 0x0005, "Client: Notification Flags 6 / Server: Daily Freeze Time" ) \
+ XXX(ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_7_POW_FAC, 0x0006, "Client: Notification Flags 7 / Server: Power Factor" ) \
+ XXX(ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_8_READ_SNAP_TIME, 0x0007, "Client: Notification Flags 8 / Server: Reading Snapshot Time" ) \
XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DEMAND_DEL_TIME, 0x0008, "Current Max Demand Delivered Time" ) \
XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DEMAND_RECV_TIME, 0x0009, "Current Max Demand Received Time" ) \
XXX(ZBEE_ZCL_ATTR_ID_MET_DEFAULT_UPDATE_PERIOD, 0x000A, "Default Update Period" ) \
@@ -651,6 +651,84 @@ 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);
+/* Functional Notification Flags */
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_OTA_FIRMWARE 0x00000001
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_CBKE_UPDATE_REQUESTED 0x00000002
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_TIME_SYNC 0x00000004
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_1 0x00000008
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_HAN 0x00000010
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_WAN 0x00000020
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET 0x000001C0
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET 0x00000E00
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER 0x00001000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_METERING_CLUSTER 0x00002000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER 0x00004000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_NETWORK_KEY_ACTIVE 0x00008000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_DISPLAY_MESSAGE 0x00010000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_CANCEL_ALL_MESSAGES 0x00020000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_CHANGE_SUPPLY 0x00040000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_LOCAL_CHANGE_SUPPLY 0x00080000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_SET_UNCONTROLLED_FLOW_THRESHOLD 0x00100000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_TUNNEL_MESSAGE_PENDING 0x00200000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SNAPSHOT 0x00400000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SAMPLED_DATA 0x00800000
+#define ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_2 0xFF000000
+
+/* Notification Flags 2 */
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE 0x00000001
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_PERIOD 0x00000002
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TARIFF_INFORMATION 0x00000004
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONVERSION_FACTOR 0x00000008
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CALORIFIC_VALUE 0x00000010
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CO2_VALUE 0x00000020
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BILLING_PERIOD 0x00000040
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONSOLIDATED_BILL 0x00000080
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE_MATRIX 0x00000100
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_THRESHOLDS 0x00000200
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CURRENCY_CONVERSION 0x00000400
+#define ZBEE_ZCL_NOTI_FLAG_2_RESERVED 0x00000800
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CREDIT_PAYMENT_INFO 0x00001000
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CPP_EVENT 0x00002000
+#define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TIER_LABELS 0x00004000
+#define ZBEE_ZCL_NOTI_FLAG_2_CANCEL_TARIFF 0x00008000
+#define ZBEE_ZCL_NOTI_FLAG_2_RESERVED_FUTURE 0xFFFF0000
+
+/* Notification Flags 3 */
+#define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_CALENDAR 0x00000001
+#define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SPECIAL_DAYS 0x00000002
+#define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SEASONS 0x00000004
+#define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_WEEK 0x00000008
+#define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_DAY 0x00000010
+#define ZBEE_ZCL_NOTI_FLAG_3_CANCEL_DAY 0x00000020
+#define ZBEE_ZCL_NOTI_FLAG_3_RESERVED 0xFFFFFFC0
+
+/* Notification Flags 4 */
+#define ZBEE_ZCL_NOTI_FLAG_4_SELECT_AVAILABLE_EMERGENCY_CREDIT 0x00000001
+#define ZBEE_ZCL_NOTI_FLAG_4_CHANGE_DEBT 0x00000002
+#define ZBEE_ZCL_NOTI_FLAG_4_EMERGENCY_CREDIT_SETUP 0x00000004
+#define ZBEE_ZCL_NOTI_FLAG_4_CONSUMER_TOP_UP 0x00000008
+#define ZBEE_ZCL_NOTI_FLAG_4_CREDIT_ADJUSTMENT 0x00000010
+#define ZBEE_ZCL_NOTI_FLAG_4_CHANGE_PAYMENT_MODE 0x00000020
+#define ZBEE_ZCL_NOTI_FLAG_4_GET_PREPAY_SNAPSHOT 0x00000040
+#define ZBEE_ZCL_NOTI_FLAG_4_GET_TOP_UP_LOG 0x00000080
+#define ZBEE_ZCL_NOTI_FLAG_4_SET_LOW_CREDIT_WARNING_LEVEL 0x00000100
+#define ZBEE_ZCL_NOTI_FLAG_4_GET_DEBT_REPAYMENT_LOG 0x00000200
+#define ZBEE_ZCL_NOTI_FLAG_4_SET_MAXIMUM_CREDIT_LIMIT 0x00000400
+#define ZBEE_ZCL_NOTI_FLAG_4_SET_OVERALL_DEBT_CAP 0x00000800
+#define ZBEE_ZCL_NOTI_FLAG_4_RESERVED 0xFFFFF000
+
+/* Notification Flags 5 */
+#define ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_TENANCY 0x00000001
+#define ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_SUPPLIER 0x00000002
+#define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_1_RESPONSE 0x00000004
+#define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_2_RESPONSE 0x00000008
+#define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_3_RESPONSE 0x00000010
+#define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_4_RESPONSE 0x00000020
+#define ZBEE_ZCL_NOTI_FLAG_5_UPDATE_SITE_ID 0x00000040
+#define ZBEE_ZCL_NOTI_FLAG_5_RESET_BATTERY_COUNTER 0x00000080
+#define ZBEE_ZCL_NOTI_FLAG_5_UPDATE_CIN 0x00000100
+#define ZBEE_ZCL_NOTI_FLAG_5_RESERVED 0XFFFFFE00
+
/*************************/
/* Function Declarations */
/*************************/
@@ -683,6 +761,78 @@ static int hf_zbee_zcl_met_srv_tx_cmd_id = -1;
static int hf_zbee_zcl_met_srv_rx_cmd_id = -1;
static int hf_zbee_zcl_met_attr_id = -1;
static int hf_zbee_zcl_met_attr_reporting_status = -1;
+
+static int hf_zbee_zcl_met_func_noti_flags = -1;
+static int hf_zbee_zcl_met_func_noti_flag_new_ota_firmware = -1;
+static int hf_zbee_zcl_met_func_noti_flag_cbke_update_request = -1;
+static int hf_zbee_zcl_met_func_noti_flag_time_sync = -1;
+static int hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han = -1;
+static int hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan = -1;
+static int hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set = -1;
+static int hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set = -1;
+static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster = -1;
+static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster = -1;
+static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster = -1;
+static int hf_zbee_zcl_met_func_noti_flag_network_key_active = -1;
+static int hf_zbee_zcl_met_func_noti_flag_display_message = -1;
+static int hf_zbee_zcl_met_func_noti_flag_cancel_all_messages = -1;
+static int hf_zbee_zcl_met_func_noti_flag_change_supply = -1;
+static int hf_zbee_zcl_met_func_noti_flag_local_change_supply = -1;
+static int hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold = -1;
+static int hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending = -1;
+static int hf_zbee_zcl_met_func_noti_flag_get_snapshot = -1;
+static int hf_zbee_zcl_met_func_noti_flag_get_sampled_data = -1;
+static int hf_zbee_zcl_met_func_noti_flag_reserved = -1;
+static int hf_zbee_zcl_met_noti_flags_2 = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_price = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_block_period = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_tariff_info = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_calorific_value = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_co2_value = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_billing_period = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_price_matrix = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_cpp_event = -1;
+static int hf_zbee_zcl_met_noti_flag_2_publish_tier_labels = -1;
+static int hf_zbee_zcl_met_noti_flag_2_cancel_tariff = -1;
+static int hf_zbee_zcl_met_noti_flag_2_reserved = -1;
+static int hf_zbee_zcl_met_noti_flags_3 = -1;
+static int hf_zbee_zcl_met_noti_flag_3_publish_calendar = -1;
+static int hf_zbee_zcl_met_noti_flag_3_publish_special_days = -1;
+static int hf_zbee_zcl_met_noti_flag_3_publish_seasons = -1;
+static int hf_zbee_zcl_met_noti_flag_3_publish_week = -1;
+static int hf_zbee_zcl_met_noti_flag_3_publish_day = -1;
+static int hf_zbee_zcl_met_noti_flag_3_cancel_calendar = -1;
+static int hf_zbee_zcl_met_noti_flag_3_reserved = -1;
+static int hf_zbee_zcl_met_noti_flags_4 = -1;
+static int hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit = -1;
+static int hf_zbee_zcl_met_noti_flag_4_change_debt = -1;
+static int hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup = -1;
+static int hf_zbee_zcl_met_noti_flag_4_consumer_top_up = -1;
+static int hf_zbee_zcl_met_noti_flag_4_credit_adjustment = -1;
+static int hf_zbee_zcl_met_noti_flag_4_change_payment_mode = -1;
+static int hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot = -1;
+static int hf_zbee_zcl_met_noti_flag_4_get_top_up_log = -1;
+static int hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level = -1;
+static int hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log = -1;
+static int hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit = -1;
+static int hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap = -1;
+static int hf_zbee_zcl_met_noti_flag_4_reserved = -1;
+static int hf_zbee_zcl_met_noti_flags_5 = -1;
+static int hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy = -1;
+static int hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier = -1;
+static int hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response = -1;
+static int hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response = -1;
+static int hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response = -1;
+static int hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response = -1;
+static int hf_zbee_zcl_met_noti_flag_5_update_site_id = -1;
+static int hf_zbee_zcl_met_noti_flag_5_reset_battery_counter = -1;
+static int hf_zbee_zcl_met_noti_flag_5_update_cin = -1;
+static int hf_zbee_zcl_met_noti_flag_5_reserved = -1;
static int hf_zbee_zcl_met_request_mirror_rsp_endpoint_id = -1;
static int hf_zbee_zcl_met_get_snapshot_start_time = -1;
static int hf_zbee_zcl_met_get_snapshot_end_time = -1;
@@ -717,6 +867,11 @@ static int hf_zbee_zcl_met_get_notified_msg_notification_flags = -1;
/* Initialize the subtree pointers */
static gint ett_zbee_zcl_met = -1;
+static gint ett_zbee_zcl_met_func_noti_flags = -1;
+static gint ett_zbee_zcl_met_noti_flags_2 = -1;
+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;
/*************************/
/* Function Bodies */
@@ -741,6 +896,152 @@ dissect_zcl_met_attr_data(proto_tree *tree, tvbuff_t *tvb, guint *offset, guint1
*offset += 1;
break;
+ case ZBEE_ZCL_ATTR_ID_MET_FUNC_NOTI_FLAGS_CUR_SUM_DEL:
+ if (data_type == ZBEE_ZCL_32_BIT_BITMAP) {
+ proto_item_append_text(tree, ", Functional Notification Flags");
+
+ static const int* func_noti_flags[] = {
+ &hf_zbee_zcl_met_func_noti_flag_new_ota_firmware,
+ &hf_zbee_zcl_met_func_noti_flag_cbke_update_request,
+ &hf_zbee_zcl_met_func_noti_flag_time_sync,
+ &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han,
+ &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan,
+ &hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set,
+ &hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set,
+ &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster,
+ &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster,
+ &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster,
+ &hf_zbee_zcl_met_func_noti_flag_network_key_active,
+ &hf_zbee_zcl_met_func_noti_flag_display_message,
+ &hf_zbee_zcl_met_func_noti_flag_cancel_all_messages,
+ &hf_zbee_zcl_met_func_noti_flag_change_supply,
+ &hf_zbee_zcl_met_func_noti_flag_local_change_supply,
+ &hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold,
+ &hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending,
+ &hf_zbee_zcl_met_func_noti_flag_get_snapshot,
+ &hf_zbee_zcl_met_func_noti_flag_get_sampled_data,
+ &hf_zbee_zcl_met_func_noti_flag_reserved,
+ NULL
+ };
+
+ proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_met_func_noti_flags, ett_zbee_zcl_met_func_noti_flags, func_noti_flags, ENC_LITTLE_ENDIAN);
+ *offset += 4;
+ }
+ else {
+ dissect_zcl_attr_data(tvb, tree, offset, data_type);
+ }
+ break;
+
+ case ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_2_CUR_SUM_RECV:
+ if (data_type == ZBEE_ZCL_32_BIT_BITMAP) {
+ proto_item_append_text(tree, ", Notification Flags 2");
+
+ static const int* noti_flags_2[] = {
+ &hf_zbee_zcl_met_noti_flag_2_publish_price,
+ &hf_zbee_zcl_met_noti_flag_2_publish_block_period,
+ &hf_zbee_zcl_met_noti_flag_2_publish_tariff_info,
+ &hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor,
+ &hf_zbee_zcl_met_noti_flag_2_publish_calorific_value,
+ &hf_zbee_zcl_met_noti_flag_2_publish_co2_value,
+ &hf_zbee_zcl_met_noti_flag_2_publish_billing_period,
+ &hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill,
+ &hf_zbee_zcl_met_noti_flag_2_publish_price_matrix,
+ &hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds,
+ &hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion,
+ &hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info,
+ &hf_zbee_zcl_met_noti_flag_2_publish_cpp_event,
+ &hf_zbee_zcl_met_noti_flag_2_publish_tier_labels,
+ &hf_zbee_zcl_met_noti_flag_2_cancel_tariff,
+ &hf_zbee_zcl_met_noti_flag_2_reserved,
+ NULL
+ };
+
+ proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_met_noti_flags_2, ett_zbee_zcl_met_noti_flags_2, noti_flags_2, ENC_LITTLE_ENDIAN);
+ *offset += 4;
+ }
+ else {
+ dissect_zcl_attr_data(tvb, tree, offset, data_type);
+ }
+ break;
+
+ case ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_3_CUR_MAX_DE_DEL:
+ if (data_type == ZBEE_ZCL_32_BIT_BITMAP) {
+ proto_item_append_text(tree, ", Notification Flags 3");
+
+ static const int* noti_flags_3[] = {
+ &hf_zbee_zcl_met_noti_flag_3_publish_calendar,
+ &hf_zbee_zcl_met_noti_flag_3_publish_special_days,
+ &hf_zbee_zcl_met_noti_flag_3_publish_seasons,
+ &hf_zbee_zcl_met_noti_flag_3_publish_week,
+ &hf_zbee_zcl_met_noti_flag_3_publish_day,
+ &hf_zbee_zcl_met_noti_flag_3_cancel_calendar,
+ &hf_zbee_zcl_met_noti_flag_3_reserved,
+ NULL
+ };
+
+ proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_met_noti_flags_3, ett_zbee_zcl_met_noti_flags_3, noti_flags_3, ENC_LITTLE_ENDIAN);
+ *offset += 4;
+ }
+ else {
+ dissect_zcl_attr_data(tvb, tree, offset, data_type);
+ }
+ break;
+
+ case ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_4_CUR_MAX_DE_RECV:
+ if (data_type == ZBEE_ZCL_32_BIT_BITMAP) {
+ proto_item_append_text(tree, ", Notification Flags 4");
+
+ static const int* noti_flags_4[] = {
+ &hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit,
+ &hf_zbee_zcl_met_noti_flag_4_change_debt,
+ &hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup,
+ &hf_zbee_zcl_met_noti_flag_4_consumer_top_up,
+ &hf_zbee_zcl_met_noti_flag_4_credit_adjustment,
+ &hf_zbee_zcl_met_noti_flag_4_change_payment_mode,
+ &hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot,
+ &hf_zbee_zcl_met_noti_flag_4_get_top_up_log,
+ &hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level,
+ &hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log,
+ &hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit,
+ &hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap,
+ &hf_zbee_zcl_met_noti_flag_4_reserved,
+ NULL
+ };
+
+ proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_met_noti_flags_4, ett_zbee_zcl_met_noti_flags_4, noti_flags_4, ENC_LITTLE_ENDIAN);
+ *offset += 4;
+ }
+ else {
+ dissect_zcl_attr_data(tvb, tree, offset, data_type);
+ }
+ break;
+
+ case ZBEE_ZCL_ATTR_ID_MET_NOTI_FLAGS_5_DFT_SUM:
+ if (data_type == ZBEE_ZCL_32_BIT_BITMAP) {
+ proto_item_append_text(tree, ", Notification Flags 5");
+
+ static const int* noti_flags_5[] = {
+ &hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy,
+ &hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier,
+ &hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response,
+ &hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response,
+ &hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response,
+ &hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response,
+ &hf_zbee_zcl_met_noti_flag_5_update_site_id,
+ &hf_zbee_zcl_met_noti_flag_5_reset_battery_counter,
+ &hf_zbee_zcl_met_noti_flag_5_update_cin,
+ &hf_zbee_zcl_met_noti_flag_5_reserved,
+ NULL
+ };
+
+ proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_met_noti_flags_5, ett_zbee_zcl_met_noti_flags_5, noti_flags_5, ENC_LITTLE_ENDIAN);
+ *offset += 4;
+ }
+ else {
+ dissect_zcl_attr_data(tvb, tree, offset, data_type);
+ }
+ break;
+
default: /* Catch all */
dissect_zcl_attr_data(tvb, tree, offset, data_type);
break;
@@ -1113,6 +1414,295 @@ proto_register_zbee_zcl_met(void)
{ "Attribute Reporting Status", "zbee_zcl_se.met.attr.attr_reporting_status",
FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } },
+ /* Functional Notification Flags */
+ { &hf_zbee_zcl_met_func_noti_flags,
+ { "Functional Notification Flags", "zbee_zcl_se.met.attr.func_noti_flag", FT_UINT32, BASE_HEX, NULL,
+ 0x00, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_new_ota_firmware,
+ { "New OTA Firmware", "zbee_zcl_se.met.attr.func_noti_flag.new_ota_firmware", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_OTA_FIRMWARE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_cbke_update_request,
+ { "CBKE Update Request", "zbee_zcl_se.met.attr.func_noti_flag.cbke_update_request", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_CBKE_UPDATE_REQUESTED, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_time_sync,
+ { "Time Sync", "zbee_zcl_se.met.attr.func_noti_flag.time_sync", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_TIME_SYNC, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han,
+ { "Stay Awake Request HAN", "zbee_zcl_se.met.attr.func_noti_flag.stay_awake_request_han", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_HAN, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan,
+ { "Stay Awake Request WAN", "zbee_zcl_se.met.attr.func_noti_flag.stay_awake_request_wan", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_WAN, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set,
+ { "Push Historical Metering Data Attribute Set", "zbee_zcl_se.met.attr.func_noti_flag.push_historical_metering_data_attribute_set", FT_UINT32, BASE_HEX, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set,
+ { "Push Historical Prepayment Data Attribute Set", "zbee_zcl_se.met.attr.func_noti_flag.push_historical_prepayment_data_attribute_set", FT_UINT32, BASE_HEX, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster,
+ { "Push All Static Data - Basic Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_basic_cluster", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster,
+ { "Push All Static Data - Metering Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_metering_cluster", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_METERING_CLUSTER, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster,
+ { "Push All Static Data - Prepayment Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_prepayment_cluster", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_network_key_active,
+ { "Network Key Active", "zbee_zcl_se.met.attr.func_noti_flag.network_key_active", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_NETWORK_KEY_ACTIVE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_display_message,
+ { "Display Message", "zbee_zcl_se.met.attr.func_noti_flag.display_message", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_DISPLAY_MESSAGE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_cancel_all_messages,
+ { "Cancel All Messages", "zbee_zcl_se.met.attr.func_noti_flag.cancel_all_messages", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_CANCEL_ALL_MESSAGES, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_change_supply,
+ { "Change Supply", "zbee_zcl_se.met.attr.func_noti_flag.change_supply", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_CHANGE_SUPPLY, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_local_change_supply,
+ { "Local Change Supply", "zbee_zcl_se.met.attr.func_noti_flag.local_change_supply", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_LOCAL_CHANGE_SUPPLY, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold,
+ { "Set Uncontrolled Flow Threshold", "zbee_zcl_se.met.attr.func_noti_flag.set_uncontrolled_flow_threshold", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_SET_UNCONTROLLED_FLOW_THRESHOLD, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending,
+ { "Tunnel Message Pending", "zbee_zcl_se.met.attr.func_noti_flag.tunnel_message_pending", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_TUNNEL_MESSAGE_PENDING, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_get_snapshot,
+ { "Get Snapshot", "zbee_zcl_se.met.attr.func_noti_flag.get_snapshot", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SNAPSHOT, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_get_sampled_data,
+ { "Get Sampled Data", "zbee_zcl_se.met.attr.func_noti_flag.get_sampled_data", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SAMPLED_DATA, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_func_noti_flag_reserved,
+ { "Reserved", "zbee_zcl_se.met.attr.func_noti_flag.reserved", FT_UINT32, BASE_HEX, NULL,
+ ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_1 | ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_2, NULL, HFILL } },
+
+ /* Notification Flags 2 */
+ { &hf_zbee_zcl_met_noti_flags_2,
+ { "Notification Flags 2", "zbee_zcl_se.met.attr.noti_flag_2", FT_UINT32, BASE_HEX, NULL,
+ 0x00, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_price,
+ { "Publish Price", "zbee_zcl_se.met.attr.noti_flag_2.publish_price", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_block_period,
+ { "Publish Block Period", "zbee_zcl_se.met.attr.noti_flag_2.publish_block_period", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_PERIOD, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_tariff_info,
+ { "Publish Tariff Information", "zbee_zcl_se.met.attr.noti_flag_2.publish_tariff_info", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TARIFF_INFORMATION, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor,
+ { "Publish Conversion Factor", "zbee_zcl_se.met.attr.noti_flag_2.publish_conversion_factor", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONVERSION_FACTOR, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_calorific_value,
+ { "Publish Calorific Value", "zbee_zcl_se.met.attr.noti_flag_2.publish_calorific_value", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CALORIFIC_VALUE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_co2_value,
+ { "Publish CO2 Value", "zbee_zcl_se.met.attr.noti_flag_2.publish_co2_value", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CO2_VALUE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_billing_period,
+ { "Publish Billing Period", "zbee_zcl_se.met.attr.noti_flag_2.publish_billing_period", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BILLING_PERIOD, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill,
+ { "Publish Consolidated Bill", "zbee_zcl_se.met.attr.noti_flag_2.publish_consolidated_bill", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONSOLIDATED_BILL, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_price_matrix,
+ { "Publish Price Matrix", "zbee_zcl_se.met.attr.noti_flag_2.publish_price_matrix", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE_MATRIX, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds,
+ { "Publish Block Thresholds", "zbee_zcl_se.met.attr.noti_flag_2.publish_block_thresholds", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_THRESHOLDS, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion,
+ { "Publish Currency Conversion", "zbee_zcl_se.met.attr.noti_flag_2.publish_currency_conversion", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CURRENCY_CONVERSION, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info,
+ { "Publish Credit Payment Info", "zbee_zcl_se.met.attr.noti_flag_2.publish_credit_payment_info", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CREDIT_PAYMENT_INFO, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_cpp_event,
+ { "Publish CPP Event", "zbee_zcl_se.met.attr.noti_flag_2.publish_cpp_event", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CPP_EVENT, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_publish_tier_labels,
+ { "Publish Tier Labels", "zbee_zcl_se.met.attr.noti_flag_2.publish_tier_labels", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TIER_LABELS, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_cancel_tariff,
+ { "Cancel Tariff", "zbee_zcl_se.met.attr.noti_flag_2.cancel_tariff", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_CANCEL_TARIFF, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_2_reserved,
+ { "Reserved", "zbee_zcl_se.met.attr.noti_flag_2.reserved", FT_UINT32, BASE_HEX, NULL,
+ ZBEE_ZCL_NOTI_FLAG_2_RESERVED | ZBEE_ZCL_NOTI_FLAG_2_RESERVED_FUTURE, NULL, HFILL } },
+
+ /* Notification Flags 3 */
+ { &hf_zbee_zcl_met_noti_flags_3,
+ { "Notification Flags 3", "zbee_zcl_se.met.attr.noti_flag_3", FT_UINT32, BASE_HEX, NULL,
+ 0x00, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_3_publish_calendar,
+ { "Publish Calendar", "zbee_zcl_se.met.attr.noti_flag_3.publish_calendar", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_CALENDAR, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_3_publish_special_days,
+ { "Publish Special Days", "zbee_zcl_se.met.attr.noti_flag_3.publish_special_days", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SPECIAL_DAYS, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_3_publish_seasons,
+ { "Publish Seasons", "zbee_zcl_se.met.attr.noti_flag_3.publish_seasons", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SEASONS, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_3_publish_week,
+ { "Publish Week", "zbee_zcl_se.met.attr.noti_flag_3.publish_week", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_WEEK, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_3_publish_day,
+ { "Publish Day", "zbee_zcl_se.met.attr.noti_flag_3.publish_day", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_DAY, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_3_cancel_calendar,
+ { "Cancel Calendar", "zbee_zcl_se.met.attr.noti_flag_3.cancel_calendar", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_3_CANCEL_DAY, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_3_reserved,
+ { "Reserved", "zbee_zcl_se.met.attr.noti_flag_3.reserved", FT_UINT32, BASE_HEX, NULL,
+ ZBEE_ZCL_NOTI_FLAG_3_RESERVED , NULL, HFILL } },
+
+ /* Notification Flags 4 */
+ { &hf_zbee_zcl_met_noti_flags_4,
+ { "Notification Flags 4", "zbee_zcl_se.met.attr.noti_flag_4", FT_UINT32, BASE_HEX, NULL,
+ 0x00, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit,
+ { "Select Available Emergency Credit", "zbee_zcl_se.met.attr.noti_flag_4.select_available_emergency_credit", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_SELECT_AVAILABLE_EMERGENCY_CREDIT, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_change_debt,
+ { "Change Debt", "zbee_zcl_se.met.attr.noti_flag_4.change_debt", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_CHANGE_DEBT, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup,
+ { "Emergency Credit Setup", "zbee_zcl_se.met.attr.noti_flag_4.emergency_credit_setup", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_EMERGENCY_CREDIT_SETUP, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_consumer_top_up,
+ { "Consumer Top Up", "zbee_zcl_se.met.attr.noti_flag_4.consumer_top_up", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_CONSUMER_TOP_UP, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_credit_adjustment,
+ { "Credit Adjustment", "zbee_zcl_se.met.attr.noti_flag_4.credit_adjustment", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_CREDIT_ADJUSTMENT, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_change_payment_mode,
+ { "Change Payment Mode", "zbee_zcl_se.met.attr.noti_flag_4.change_payment_mode", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_CHANGE_PAYMENT_MODE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot,
+ { "Get Prepay Snapshot", "zbee_zcl_se.met.attr.noti_flag_4.get_prepay_snapshot", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_GET_PREPAY_SNAPSHOT, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_get_top_up_log,
+ { "Get Top Up Log", "zbee_zcl_se.met.attr.noti_flag_4.get_top_up_log", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_GET_TOP_UP_LOG, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level,
+ { "Set Low Credit Warning Level", "zbee_zcl_se.met.attr.noti_flag_4.set_low_credit_warning_level", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_SET_LOW_CREDIT_WARNING_LEVEL, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log,
+ { "Get Debt Repayment Log", "zbee_zcl_se.met.attr.noti_flag_4.get_debt_repayment_log", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_GET_DEBT_REPAYMENT_LOG, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit,
+ { "Set Maximum Credit Limit", "zbee_zcl_se.met.attr.noti_flag_4.set_maximum_credit_limit", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_SET_MAXIMUM_CREDIT_LIMIT, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap,
+ { "Set Overall Debt Cap", "zbee_zcl_se.met.attr.noti_flag_4.set_overall_debt_cap", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_SET_OVERALL_DEBT_CAP, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_4_reserved,
+ { "Reserved", "zbee_zcl_se.met.attr.noti_flag_4.reserved", FT_UINT32, BASE_HEX, NULL,
+ ZBEE_ZCL_NOTI_FLAG_4_RESERVED, NULL, HFILL } },
+
+ /* Notification Flags 5 */
+ { &hf_zbee_zcl_met_noti_flags_5,
+ { "Notification Flags 5", "zbee_zcl_se.met.attr.noti_flag_5", FT_UINT32, BASE_HEX, NULL,
+ 0x00, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy,
+ { "Publish Change of Tenancy", "zbee_zcl_se.met.attr.noti_flag_5.publish_change_of_tenancy", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_TENANCY, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier,
+ { "Publish Change of Supplier", "zbee_zcl_se.met.attr.noti_flag_5.publish_change_of_supplier", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_SUPPLIER, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response,
+ { "Request New Password 1 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_1_response", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_1_RESPONSE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response,
+ { "Request New Password 2 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_2_response", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_2_RESPONSE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response,
+ { "Request New Password 3 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_3_response", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_3_RESPONSE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response,
+ { "Request New Password 4 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_4_response", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_4_RESPONSE, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_update_site_id,
+ { "Update Site ID", "zbee_zcl_se.met.attr.noti_flag_5.update_site_id", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_UPDATE_SITE_ID, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_reset_battery_counter,
+ { "Reset Battery Counter", "zbee_zcl_se.met.attr.noti_flag_5.reset_battery_counter", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_RESET_BATTERY_COUNTER, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_update_cin,
+ { "Update CIN", "zbee_zcl_se.met.attr.noti_flag_5.update_cin", FT_BOOLEAN, 32, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_UPDATE_CIN, NULL, HFILL } },
+
+ { &hf_zbee_zcl_met_noti_flag_5_reserved,
+ { "Reserved", "zbee_zcl_se.met.attr.noti_flag_5.reserved", FT_UINT32, BASE_HEX, NULL,
+ ZBEE_ZCL_NOTI_FLAG_5_RESERVED, NULL, HFILL } },
+
{ &hf_zbee_zcl_met_srv_tx_cmd_id,
{ "Command", "zbee_zcl_se.met.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_met_srv_tx_cmd_names),
0x00, NULL, HFILL } },
@@ -1249,6 +1839,11 @@ proto_register_zbee_zcl_met(void)
/* ZCL Metering subtrees */
gint *ett[] = {
&ett_zbee_zcl_met,
+ &ett_zbee_zcl_met_func_noti_flags,
+ &ett_zbee_zcl_met_noti_flags_2,
+ &ett_zbee_zcl_met_noti_flags_3,
+ &ett_zbee_zcl_met_noti_flags_4,
+ &ett_zbee_zcl_met_noti_flags_5
};
/* Register the ZigBee ZCL Metering cluster protocol name and description */